總結兩個問題:
一,
在PR后仿時,經常會遇到討厭的紅色X(不定態)。而debug不定態的起因又很麻煩,有可能用Verdi調試半天還是沒能找到根本的原因。
今天我們就來分析一下異步D觸發器采樣不穩定(setup或hold時序不滿足)引起的不定態,及后仿時的處理方法。跨時鍾域采樣或者時鍾域同步電路的第一級D觸發器,就是典型的可能會出現不定態的情況。
而設計中似乎又沒法避免這種電路。由於clk_a和clk_b是異步的,所以圖中的DFF2就無法保證setup和hold時序關系。所以在后仿時就需要設置DFF2為notimingcheck。假設DFF2的路徑為tb.dut.u_dff2_reg。
編譯器 | 解決步驟 |
cadence的NC | 1. NC仿真增加參數 -tfile notimingcheck.tfile。 2. 編輯notimingcheck.tfile文件 PATH tb.dut.u_dff2_reg –tcheck |
synopsys的vcs | 1. vcs仿真增加參數 +optconfigfile+notimingcheck.cfg。 2. 編輯notimingcheck.cfg文件 instance {tb.dut.u_dff2_reg} {noTiming}; |
另外還可以通過 module, tree指定對象,但只能是module name,不能有層次。
如果有多個異步D觸發器,就寫多行,一行寫一條約束。
二、
在項目PR網表仿真時,遇到很多SDF反標的Timing check Warning,幾乎全是D觸發器內部時序找不到CP和D的時序檢查。查看了一下D觸發器模型文件,發現仿真時沒有打開NTC和RECRAM宏,導致走的分支不對。
解決方法:VCS選項打開NTC和RECRAM宏定義。