后仿
相對于RTL仿真,門級仿真占用的計算資源雖然很多,但是在靜態(tài)時序檢查(STA)工具普遍應(yīng)用之前,帶時序的動態(tài)門級仿真幾乎可以說是唯一的timing sign-off手段了。
那么在STA工具已經(jīng)成熟的現(xiàn)在,門級仿真還有存在的必要嗎?為什么有些公司的設(shè)計流程中還包括門級仿真這個必需的步驟呢?
可能存在以下幾個原因:
檢查時序約束(SDC)的完備性— 防止約束的遺漏
檢查異步電路的時序—STA工具無能為力,異步處理部分在SDC約束文件中做的是fath_path處理,所以這部分時序是否滿足,STA工具并不會檢查也不會報出violation;
檢查網(wǎng)表的完備性—防止綜合、布局布線過程中的意外
為后續(xù)流程如功耗(Power)分析、壓降(IR Drop)分析提供波形—更準確
測試向量的仿真—只有門級網(wǎng)表才包含掃描鏈,DFT邏輯的插入是否導(dǎo)致功能出現(xiàn)問題;
門級仿真分為兩種:
一種是不帶時序反標的門級仿真(零延時仿真,綜合的網(wǎng)表就可以做,因為在布局布線之前,所以也叫前仿,這時由于hold沒有修,所以會出現(xiàn)不少時序違例的情況);
一種是帶時序反標(back-annotation)的門級仿真(布局布線之后的仿真,也叫后仿,這時的網(wǎng)表是后端做完布局布線,修補完timing的網(wǎng)表);
進行PR網(wǎng)表的后仿真時,我們需要告知仿真工具cell與cell之間的延遲,D端到Q端的延遲,這里就需要SDF文件!
前仿選項
+nospeicy
在仿真時忽略庫文件中指定的延時。
+delay_mode_zero
將標準庫單元中定義的延時替換為0。testbench中的 #延時也都被消除。
+notimingcheck時序檢查開關(guān),比如setup/hold/width檢查等等,如使用了該option,則仿真時不檢查時序,行為類似于RTL仿真。
在PR未結(jié)束,sdf反標文件還沒準備好時,可用該選項忽略延時,可用于功能性的粗略檢查。
但真正跑后仿真時,不可使用該選項,否則仿真有效性大大降低。
后仿選項
+sdfverbose
顯示所有的sdf反標錯誤;
+no_notifier
可以關(guān)掉時序檢查產(chǎn)生的不定態(tài)。通過這個命令參數(shù)可以使時序檢查任務(wù)中檢測到時序違例后,不影響其參數(shù)列表中的notifier的值,從而避免了notifier變化引起udp輸出不定態(tài)的情況,該命令僅對notifier的值有影響,對于時序檢查任務(wù)檢測到的時序違例不產(chǎn)生任何影響;
+neg_tchk若要使用負延時檢查,在編譯設(shè)計時必須包含+neg_tchk選項。如果省略此選項,VCS將所有負延遲更改為0。
-negdelay
用于SDF文件中有負延遲,如果省略此選項,VCS將所有負延遲更改為0。
sdf文件反標
方法一
在makefile中調(diào)用,使用如下命令:
vcs+neg_tchk-negdelay-sdfmin|typ|maxfile.sdf
啟用SDF反標。在file.sdf中指定的最小值、類型或最大值中的一種,在實例instance_name上進行反標。
方法二 $sdf_annotate
使用$sdf_annotate將SDF文件反標到網(wǎng)表中:
$sdf_annotate("sdf_file"[,module_instance][,"sdf_configfile"][,"sdf_logfile"][,"mtm_spec"] [,"scale_factors"][,"scale_type"]);
sdf_file:指定指向SDF文件的路徑;
module_instance:調(diào)用$sdf_annotate模塊實例的范圍。
sdf_configfile:指定SDF配置文件。
sdf_logfile:指定SDF log文件,可以使用+sdfverbose顯示所有的sdf反標錯誤。
mtm_spec:指定哪一種延遲類型,通常有三種min:typ:max,它的可能值是"MINIMUM", "TYPICAL", "MAXIMUM", or "TOOL_CONTROL"(默認值)。在仿真器讀入SDF的時候,要指定使用哪一組。避免出現(xiàn)指定的組的時序信息不存在的情況。
scale_factors:指定min:typ:max的縮放因子,默認為三個正實數(shù)“1.0:1.0:1.0”。
scale_type:指定SDF文件中在縮放前使用的延遲值。它可能的值是“FROM_TYPICAL”、“FROM_MIMINUM”、“FROM_MAXIMUM”和“FROM_MTM”(默認);
在tb中加載sdf文件
`ifdefSDF initial begin $sdf_annotate("../../rtl/post_sim/file.sdf",tb,,"sdf.log",); end `endif
確認成功反標
打印出Doing SDF annotation ...... Done
其他
初始化寄存器的值
在vcs編譯選項里添加+vcs+initreg +random隨機化賦初值,可用于對初始狀態(tài)是x的寄存器。
導(dǎo)出VCD文件
VCD是不壓縮的文本格式,兼容性好,缺點是文件太大。因此后仿先寫出高壓縮比的FSDB文件,再轉(zhuǎn)成VCD。可指定轉(zhuǎn)換起止時間、結(jié)束時間。這樣一次后仿,就可以為不同的應(yīng)用生成不同的VCD文件。
FSDB轉(zhuǎn)VCD的工具通常在Verdi的安裝目錄,用法:
fsdb2vcdxxx.fsdb-oxxx.vcd-bt100ns-et200ns
其中,-bt是begin time,-et是end time;
關(guān)閉某些寄存器的時序檢查notiming.list
后仿過程中可能有一些不必要或者不想檢查的時序,尤其是跨時鐘域的兩級同步的第一級DFF出現(xiàn)所謂的時序違例,這是一種假的時序違例所以通常不關(guān)心它們是否有時序違例。
instance{tb.U_TOP.reg}{noTiming};
VCS +optconfigfile+notiming.list
可以用上面方法加載這個文件,這樣在后仿過程中將不對這些寄存器做時序檢查,避免不必要的時序問題而引起X態(tài)傳遞。
Note:
1.后仿開始前,一定要把詳細的SDF反標報告打印出來仔細檢查。需要把錯誤全部解決掉,警告視情況要解決大部分。帶時序的后仿,一定要注意仿真器是否關(guān)閉了notimingcheck和nospecify的選項。如果有nospecify,那么SDF中的時序信息就反標不到仿真模型中(仿真模型的時序類型定義在specify block中);如果有notimingcheck,那么后仿過程中就不檢查時序違例,后仿就失去了最大的意義。
2.帶時序的后仿開始階段,建議dump一些波形出來,看看波形上的延時和SDF中的延時信息是否保持一致,這有助于對反標過程的理解和后仿整體進度的把握。
-
芯片
+關(guān)注
關(guān)注
459文章
52119瀏覽量
435642 -
仿真
+關(guān)注
關(guān)注
51文章
4231瀏覽量
135273 -
RTL
+關(guān)注
關(guān)注
1文章
388瀏覽量
60624 -
異步電路
+關(guān)注
關(guān)注
2文章
48瀏覽量
11293 -
時序約束
+關(guān)注
關(guān)注
1文章
118瀏覽量
13614
原文標題:后仿
文章出處:【微信號:芯司機,微信公眾號:芯司機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
我后仿出現(xiàn)了10種警告。。。求助
Cadence 16.5 Concept HDL原理圖反標后每個元件出現(xiàn)CDS_PART_NAME信息
Cadence 16.5 Concept HDL原理圖打包反標后電源、地網(wǎng)絡(luò)顯示為紅色
運行后實現(xiàn)時序仿真后重新生成sdf文件
金橙子打標卡labview打標開發(fā)沒頭緒?c#封裝成dll后labview調(diào)用真香!
如何將PT產(chǎn)生的SDF文件反標設(shè)計進行后仿真?
Python在IC中的應(yīng)用——文本處理
什么是數(shù)字后仿?淺談芯片數(shù)字后仿的那些事
解析SDF的Header Section信息與Cell Entries信息

詳解芯片SDF文件 MCU芯片全流程設(shè)計

芯片后仿之SDF 3.0解析

芯片后仿真要點

評論