對綜合產生的門級網表(Gate-level)進行編譯仿真
一:什么是后仿
前仿不包括時序信息,即當作理想的器件看待,僅僅驗證代碼的功能;后仿,在有時序信息,有延遲情況下(器件自身的延遲,傳輸線上的延時等,與工藝器件有關)的仿真;后仿主要關注Toggle覆蓋率,因為門級網表里面沒有RTL級代碼,沒有if,case等,都是與或非門等。
RTL級通過DC綜合得到門級網表,布局布線得到門級網表,將兩個門級網表加起來才是真正的網表文件;在本文中,我們只關注DC吐出來的網表以說明后仿。
+rad可以對仿真進行優化。
DC后不僅生成門級網表(也是.v文件),還產生.sdf文件(standard delay format,記錄單元的時序的信息)。
二:后仿流程
三:SDF文件主要內容
Delays(module,device,interconnect,port)
Timing checks(setup,hold,setuphold,recovery,removal,recrem)
Timing constrains(pathconstraint,skewconstraint,sum,diff)
Timing environment(arrival,departure,slack,waveform)
包括design,時間,工藝,版本,電壓,溫度,延時信息,基本單元延時信息等。
四:綜合后在vcs后仿具體步驟
1: 將綜合后的網表文件.v拷貝到rtl代碼文件夾里(即源文件夾里),並將原源文件(也是.v)改成.v.bak文件,防止make找不到正確的.v文件;
將綜合后的SDF文件拷貝到tb文件夾(即testbench文件夾里);
2: 在top層文件里(即testbench文件夾)反標添加SDF;
例如:
3: 在makefile里添加說明(compile里)
#vcs dut_gate.v -v sim_lib.v //.v是網表文件,工藝庫-v
4: make com->make sim->make dve->在dve文件上觀察波形,發現后仿波形不純凈
五:其他
1: 若SDF文件很大,可以進行預編譯,dut.sdf文件變為dut.sdf_c
2: 選中delay方式:在compile開關選項上加+mindelays/+typedelays/+maxdelays
或者在compile開關選項上加+allmtm,在simulate在加+mindelays/+typedelays/+maxdelays
3: 慣性延遲(器件自帶),傳輸延遲
4: 若使用預編譯方式,則+rad失效