DDR 驗證是任何 SoC 中最關鍵和最復雜的任務之一,因為它涉及位于 DUT 內部的控制器和位于板載 DUT 外部的外部 DDR 存儲器。在這里,我們將討論 DDR VIP 模型的快速初始化。
根據 JEDEC 標準 JESD79-4 第 3.3.1 節,RESET_n需要至少維護 200us。在模擬時間中,此值很長。此外,如果用戶的測試平臺違反此時間,Memory VIP 會將其標記為UVM_ERROR并失敗模擬。即使此沖突被標記為錯誤,也不會影響 VIP 模型的行為。
有許多方法可以繞過此違規行為。在本博客中,我們將討論其中一種方式。
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 |
審核編輯:郭婷
-
控制器
+關注
關注
112文章
16398瀏覽量
178544 -
存儲器
+關注
關注
38文章
7514瀏覽量
164001 -
DDR
+關注
關注
11文章
712瀏覽量
65402
發布評論請先 登錄
相關推薦
評論