VIP Central

 

Skip Initialization for DDR VIP Models

In the blog Seamless Fast Initialization for DDR VIP Models, we discussed how important it is for Memory VIP simulations to have the option of going through the process of Reset and Initialization fast, and get to the IDLE state and start reading and writing to memory location. We presented one way to achieve this by scaling down the timings required while going thru all the JEDEC standard steps required for Reset and Initialization.

In this blog, we will discuss how Synopsys Memory VIP allows skipping initialization altogether while maintaining the proper behavior of the model.

You can learn more about Synopsys Memory VIP here.

Using the Synopsys Memory VIP’s Skip Initialization feature ensures that the model will be in an IDLE state, bypassing the requirements for the reset process. In that state, the VIP is ready to accept commands like REF, MRS, and ACT. The allowed commands are illustrated below in Figure 1 – The DDR3 SDRAM JEDEC standard JESD79-3F State Diagram, and Figure 2 – The DDR4 SDRAM JEDEC Standard JESD79-4 State Diagram.

DDR3-JEDEC

Figure 1 – The DDR3 SDRAM JEDEC standard JESD79-3F State Diagram

DDR4-JEDEC

Figure 2 – The DDR4 SDRAM JEDEC Standard JESD79-4 State Diagram

The Skip Initialization feature is applicable for DDR3, DDR4. It should be noted that a reset after backdoor settings using skip init will wipe out all the settings and set back to default.

For Discrete devices, we can use the following to set the VIP to skip initialization mode:

// dram_cfg is handle of class svt_ddr_confitugation
dram_cfg.skip_init = 1

For DIMM devices, we can use the following steps to set the VIP to skip the initialization sequence on a DIMM Model:

// dimm_cfg is handle of svt_ddr_dimm_configuration and
// configuring the skip_init setting for individual DRAM
// configurations with DIMM structure
foreach(dimm_cfg.data_lane_cfg[i]) begin
   foreach(dimm_cfg.data_lane_cfg[i].rank_cfg[j]) begin
      dimm_cfg.data_lane_cfg[i].rank_cfg[j].skip_init = 1;
   end
end
// Skip initialization setting for RCD component within an
// RDIMM and LRDIMM
dimm_cfg.ca_buffer_cfg.skip_init = 1;

Skip initialization setting for Discrete as well as DIMM models should be done in the build phase before passing the configuration object through the config_db mechanism.

Also, these settings can be done after build phase but user will have to call reconfigure() method to update the settings in the model. This has to be done prior to any command on the interface.

The following is the syntax for reconfigure() method call:

// For Discrete Device Model
env.mem_agent.reconfigure(dram_cfg);

// For DIMM Model
env.dimm_env.reconfigure(dimm_cfg);

In subsequent blogs, we will discuss how Mode Registers can be set using Frontdoor and Backdoor accesses. So do come back and check it out.

Authored by Nasib Naser

You can learn more about Synopsys Memory VIP here.