在成功綜合之后蒿褂,必須對(duì)所得的網(wǎng)表進(jìn)行靜態(tài)時(shí)序分析以檢查時(shí)序違例,時(shí)序違例可包含建立和/保持時(shí)間違例暂衡。
綜合設(shè)計(jì)的重點(diǎn)在于最大化建立時(shí)間青自,因此會(huì)遇到非常少的建立時(shí)間違例(如果存在)。然而栽烂,保持時(shí)間違例通常會(huì)在這一階段發(fā)生躏仇,這是因?yàn)閿?shù)據(jù)相對(duì)于時(shí)鐘到達(dá)時(shí)序單元的輸入太快。
如果設(shè)計(jì)沒有達(dá)到建立時(shí)間的要求腺办,除了以違例路徑進(jìn)一步優(yōu)化為目標(biāo)重新綜合設(shè)計(jì)外焰手,別無其他選擇。這可包括組合違例路徑或過度約束具有違例的整個(gè)子模塊怀喉。然而书妻,如果設(shè)計(jì)沒有達(dá)到保持時(shí)間的要求,在布圖前階段修正這些違例磺送,或推遲這一步直到布圖后驻子。很多設(shè)計(jì)人員對(duì)小的保持時(shí)間違例傾向于使用后一種方法灿意,由于布圖前綜合和時(shí)序分析使用統(tǒng)計(jì)線載模型估灿,并且在布圖前階段修正保持時(shí)間違例可導(dǎo)致同一路徑布圖后建立時(shí)間違例。然而缤剧,如果線載模型真實(shí)地反映了布線后延遲馅袁,在這一步修正保持時(shí)間違例是明智的。
1 布圖前時(shí)鐘規(guī)范
在布圖前階段荒辕,網(wǎng)表中缺少時(shí)鐘樹信息汗销。因此,有必要在布圖前階段在前面估計(jì)布線后時(shí)鐘樹延遲抵窒,以進(jìn)行適當(dāng)?shù)腟TA弛针。此外,也應(yīng)定義估計(jì)的時(shí)鐘轉(zhuǎn)換以阻止PT為驅(qū)動(dòng)的門計(jì)算虛假延遲(通常較大)李皇。大延遲的根源通常源于時(shí)鐘網(wǎng)絡(luò)相關(guān)聯(lián)的高扇出削茁。高扇出導(dǎo)致未驅(qū)動(dòng)終點(diǎn)門的時(shí)鐘計(jì)算出緩慢輸入轉(zhuǎn)換時(shí)間,進(jìn)而導(dǎo)致PT為終點(diǎn)門計(jì)算出不尋常的大延遲值掉房。為了防止這一情形茧跋,建議在源頭指定一個(gè)固定的時(shí)鐘轉(zhuǎn)換值。
下面的命令用于在設(shè)計(jì)的布圖前階段定義時(shí)鐘:
2 布圖后
布圖后步驟包括用反標(biāo)注的實(shí)際延遲分析設(shè)計(jì)時(shí)序卓囚,這些延遲由提取版圖數(shù)據(jù)獲得瘾杭。分析是在含有時(shí)鐘樹信息的布線后網(wǎng)表上進(jìn)行的。
2.1 反標(biāo)注什么
最常見的問題之一是:應(yīng)給PT反標(biāo)注什么哪亿,以何種格式反標(biāo)注粥烁?
建議將布圖工具產(chǎn)生的下面的信息類型反標(biāo)注到PT進(jìn)行STA:
——SDF格式的連線RC延遲贤笆。
——set_load格式的容性連線負(fù)載值。
——DSPF讨阻、RSPF或SPEF文件格式的時(shí)鐘及其他關(guān)鍵連線的寄生信息苏潜。
下面的PT命令用于反標(biāo)注上面的信息:
read_sdf:該命令用來讀取SDF文件。
https://mp.weixin.qq.com/s?__biz=Mzg4OTIwNzE4Mg==&mid=2247483817&idx=1&sn=d09ceb26b336b7472fa84ec03dd5d370&chksm=cfee2148f899a85efeade1643abb59c11fe177cb074f1c87aed2f347838998938a40cbc0bf56&token=368408457&lang=zh_CN#rd
source:PT用這個(gè)命令讀取Tcl格式的外部文件变勇,可用于反標(biāo)注set_load文件格式的連線電容文件恤左。
read_parastics:PT利用這個(gè)命令反標(biāo)注DSPF、RSPF和SPEF格式的寄生參數(shù)搀绣。
2.2 布圖后時(shí)鐘規(guī)范
除了這次要通過整個(gè)時(shí)鐘網(wǎng)絡(luò)傳播時(shí)鐘外飞袋,布圖后時(shí)序分析與布圖前的類似,都使用同樣的命令链患。這是因?yàn)楝F(xiàn)在時(shí)鐘網(wǎng)絡(luò)包含時(shí)鐘樹緩沖器巧鸭,從而時(shí)鐘延遲和扭曲依賴于這些緩沖器。因此對(duì)布線后時(shí)鐘規(guī)范不再需要修正時(shí)鐘延遲和轉(zhuǎn)換到一個(gè)指定值麻捻。下列命令舉例說明了布線后時(shí)鐘規(guī)范:
pt_shell > create_clock -period 20 -waveform [list 0 10] [list CLK]
pt_shell > set_propagated_clock [get_clocks CLK]
set_propagated_clock用來命令時(shí)鐘網(wǎng)絡(luò)傳播時(shí)鐘纲仍。由于時(shí)鐘樹信息現(xiàn)在存于設(shè)計(jì)中,時(shí)鐘延遲贸毕、扭曲和轉(zhuǎn)換時(shí)間由PT從組成時(shí)鐘網(wǎng)絡(luò)的門計(jì)算求得郑叠。
2.3 時(shí)序分析
設(shè)計(jì)的時(shí)序主要依賴于時(shí)鐘延遲和扭曲,也就是說時(shí)鐘是設(shè)計(jì)中所有其他信號(hào)的參考明棍。與布圖前的STA類似乡革,差別僅在于時(shí)鐘規(guī)范(傳播時(shí)鐘)。此外摊腋,在布線后STA期間沸版,將從版圖數(shù)據(jù)庫提取的信息反標(biāo)注到設(shè)計(jì)中,并分別用最壞情況工作條件和最佳情況工作條件來分析設(shè)計(jì)的建立時(shí)間和保持時(shí)間違例兴蒸。
3 時(shí)序報(bào)告
可以使用report_timing命令生成時(shí)序報(bào)告视粮。當(dāng)指定-delay_type選項(xiàng)為max時(shí),對(duì)設(shè)計(jì)進(jìn)行建立時(shí)間分析橙凳;當(dāng)指定-delay_type選項(xiàng)為min時(shí)蕾殴,告知PT顯示最佳情況時(shí)序報(bào)告,用于進(jìn)行保持時(shí)間分析痕惋。
4 高級(jí)分析
4.1 單元交換
PT允許交換設(shè)計(jì)中的單元区宇,只要現(xiàn)有單元的引腳和替換單元的引腳完全相同。例如可以用較低驅(qū)動(dòng)強(qiáng)度的單元進(jìn)行替換以修正保持時(shí)間違例(驅(qū)動(dòng)強(qiáng)度減少導(dǎo)致轉(zhuǎn)換時(shí)間增加值戳,從而使門的增量延遲增加)议谷。例如可以使用下述的命令以另一個(gè)單元替換現(xiàn)有的單元:
pt_shell > swap_cell {U15} [get_lib_cell stdcell_lib/BUFF1X]
這就提供了在不終止pt_shell的情況下進(jìn)行調(diào)試設(shè)計(jì)并可視化單元效果的更快方法。
當(dāng)然也可以在進(jìn)行STA前手動(dòng)修改網(wǎng)表堕虹,這樣需要終止pt_shell卧晓,然后手動(dòng)進(jìn)行單元的替換芬首,最后再次調(diào)用pt_shell以重新分析先前的違例路徑段。如果對(duì)網(wǎng)表的修改沒有生成所需的結(jié)果逼裆,那么需要重復(fù)整個(gè)過程郁稍,這種方法當(dāng)然是冗長和費(fèi)時(shí)的。
需要注意的是:單元交換只發(fā)生在PT內(nèi)存中胜宇,物理網(wǎng)表保持不變耀怜。如果路徑段和設(shè)計(jì)的其他部分通過了STA,應(yīng)通過手動(dòng)修改網(wǎng)表以在網(wǎng)表中加入這一修改桐愉。
4.2 門控時(shí)鐘檢查
通常财破,低功耗設(shè)計(jì)包含僅當(dāng)需要時(shí)由門控邏輯使能的時(shí)鐘。對(duì)于這樣的設(shè)計(jì)从诲,應(yīng)分析用于門控時(shí)鐘單元的建立和保持時(shí)間違例左痢。
可以通過set_clock_gating_check命令來指定建立和保持時(shí)間要求。例如:
pt_shell > set_clock_gating_check -setup 0.5 -hold 0.02 tck
可采用下述命令生成報(bào)告:
pt_shell > report_constraints -clock_gating_setup -clock_gating_hold -all_violators -verbose
其中系洛,-all_violators可以用來報(bào)告違例的門俊性,-verbose選項(xiàng)以顯示完整的路徑報(bào)告。