DDR VIP模型的无缝快速初始化

描述

DDR 验证是任何 SoC 中最关键和最复杂的任务之一,因为它涉及位于 DUT 内部的控制器和位于板载 DUT 外部的外部 DDR 存储器。在这里,我们将讨论 DDR VIP 模型的快速初始化。

根据 JEDEC 标准 JESD79-4 第 3.3.1 节,RESET_n需要至少维护 200us。在模拟时间中,此值很长。此外,如果用户的测试平台违反此时间,Memory VIP 会将其标记为UVM_ERROR并失败模拟。即使此冲突被标记为错误,也不会影响 VIP 模型的行为。

DDR

有许多方法可以绕过此违规行为。在本博客中,我们将讨论其中一种方式。

Synopsys Memory VIP 具有称为快速初始化的初始化功能,也称为按比例缩小初始化。此功能的目的是允许控制覆盖初始化参数以加快初始化过程。新值(无论是默认设置还是由用户自定义)都可以缩短初始化时间,而不会断言任何检查器冲突。此外,它不会影响模型的初始化行为。此功能仅适用于前门访问 - 与后门访问相比。我们将在后续的博客文章中讨论内存 VIP 访问的类型。

有两种方法可以缩小初始化参数。一个是使用默认值设置的,另一个是自定义设置的。

根据标准,以下是预期值:

min_cke_high_after_reset_deasserted_in_pu_and_res_init_time_ps = 500000000
min_reset_pulse_width_in_pu_ps = 200000000

使用默认方法,可以从配置对象的build_phase调用函数“set_scaled_initialization_timings()”。该函数调用会将计时参数缩小到下面分配的值,而不会触发检查器冲突:

min_cke_high_after_reset_deasserted_in_pu_and_res_init_time_ps = 500000
min_reset_pulse_width_in_pu_ps = 200000

要自定义值,用户可以设置自己的自定义值,然后设置标志“scaled_timing_flag”。VIP 将配置为用户提供的值。因此:

对于分立器件:

 

// cfg handle of the svt_ddr_configuration class
// Pass the cfg to the DDR Discrete Device component by using // the config_db mechanism.
cfg.timing_cfg.min_cke_high_after_reset_deasserted_in_pu_and_res_init_time_ps = 500000;
cfg.timing_cfg.min_reset_pulse_width_in_pu_ps = 200000;
cfg.timing_cfg. tPW_RESET_ps = 100000;
cfg.timing_cfg.scaled_timing_flag = 1;

 

对于内存型号:

 

// dimm_cfg is handle of svt_ddr_dimm_configuration
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].timing_cfg.min_cke_high_after_reset_deasserted_in_pu_and_res_init_time_ps = 500000;
    dimm_cfg.data_lane_cfg[i].rank_cfg[j].timing_cfg.min_reset_pulse_width_in_pu_ps = 200000;
    dimm_cfg.data_lane_cfg[i].rank_cfg[j].timing_cfg.tPW_RESET_ps = 100000;
    dimm_cfg.data_lane_cfg[i].rank_cfg[j].timing_cfg.scaled_timing_flag = 1;
  end
end

 

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分