數(shù)字電路門級仿真及SDF反標(biāo)
從概念上來說,數(shù)字驗(yàn)證包含兩方面的內(nèi)容,一個(gè)是驗(yàn)證功能,另一個(gè)是驗(yàn)證時(shí)序。對應(yīng)的仿真模型(不論是model,standard cell等)也不外乎這兩個(gè)部分,功能部分由邏輯,udp元件或gate構(gòu)成,時(shí)序部分則包括了時(shí)序反標(biāo)和時(shí)序檢查兩小塊。
平時(shí)我們所說的功能驗(yàn)證,也就是前仿真,實(shí)現(xiàn)了對功能進(jìn)行驗(yàn)證的目的,時(shí)序被默認(rèn)為理想情況,不包含延遲信息。門級仿真,也稱為后仿真,除了功能驗(yàn)證外,最主要就是用來檢查時(shí)序是否滿足,有沒有時(shí)序違例的情形。
門級仿真根據(jù)網(wǎng)表不同,又可以分為綜合后仿真,以及pnr后仿真。前者是用綜合后的網(wǎng)表進(jìn)行仿真,這時(shí)由于hold沒有修,所以會(huì)出現(xiàn)不少時(shí)序違例的情況,真正timing clean的網(wǎng)表是后端做完布局布線,修修補(bǔ)補(bǔ)完timing的網(wǎng)表,我們稱為pnr網(wǎng)表。
? ? ? ?進(jìn)行pnr網(wǎng)表的后仿真時(shí),我們需要告知仿真工具cell與cell之間的延遲,D端到Q端的延遲,這里,我們就要請出主角SDF文件,閃亮登場!
SDF(Standard delay file)文件是把布局布線過程中器件延時(shí)和線延時(shí)的信息保留下來,據(jù)此就可以在路徑時(shí)序分析時(shí)將整條路徑的時(shí)序計(jì)算出來,再判斷時(shí)序約束條件就能知道是否滿足時(shí)序要求了。
? ? ? ?反標(biāo)SDF文件有兩種方法,一種作為elaboration的選項(xiàng)指定,另一種是在bench中調(diào)用系統(tǒng)函數(shù)$sdf_annotate()來完成。
-sdfmin|typ|max:instance_name:file.sdf
如vcs-sdf min:top.i_test.:test.sdf
使用系統(tǒng)函數(shù)$sdf_annotate
$sdf_annotate (“sdf_file”[, module_instance] [,“sdf_configfile”][,“sdf_logfile”][,“mtm_spec”]
[,“scale_factors”][,“scale_type”]);
這里除了sdf_file必須給出外,其他參數(shù)可以使用默認(rèn)值,如:$sdf_annotate(“test.sdf”);
要說明下參數(shù)scale_type,sdf文件中時(shí)序信息都會(huì)由3個(gè)數(shù)字組成,分別對應(yīng)是minimum,typical,maximum三種情形下的延遲(當(dāng)然,有時(shí)候會(huì)只有minimum和maximum的情況,那么typical的延遲沒有就省略)。scale_type的可取值為:
FROM_MINIMUX
選擇SDF文件中mininum timing
FROM_TYPICAL
選擇SDF文件中typical timing
FROM_MAXIMUM
選擇SDF文件中maximum timing
FROM_MTM
系統(tǒng)默認(rèn)
反標(biāo)完成后,可以從log中看到這樣一句話:
例子
這樣我們就反標(biāo)完成了,接下來讓我們通過后仿波形,驗(yàn)證下設(shè)計(jì)中延遲和sdf文件中延遲是否一致。我們在i_test中例化了一個(gè)DLY4類型的名為i_delay的cell。
從庫文件中我們能夠找到DLY4這個(gè)cell
可以看到DLY4這個(gè)cell里面包含了一個(gè)buf,功能是將輸入A 延遲一點(diǎn)時(shí)間輸出到Y(jié),這個(gè)module里面包含了specify塊,里面定義了A到Y(jié)的延遲。那么,我們在后仿過程中會(huì)使用這里specify的延遲么?
看下SDF文件中對DLY4如何定義的?
從SDF文件中,我們可以看到對于上升沿而言,A到Y(jié)的延遲分別是0.225(min),0.226(max)
將SDF反標(biāo)進(jìn)后仿網(wǎng)表,通過仿真我們來驗(yàn)證下A到Y(jié)的延遲值
至此,我們完成了一個(gè)cell的反標(biāo),并驗(yàn)證了后仿波形中信號的實(shí)際延遲和sdf中定義的相一致。再回到剛才提出的問題,在反標(biāo)SDF后,specify塊中定義的延遲值不再有用,取代的將是SDF文件中的延遲。
原文鏈接:https://blog.csdn.net/gsjthxy/article/details/126774342