Dc綜合是基于路徑,每個(gè)路徑上都有Cell和net,所以基于路徑的綜合就是計(jì)算路徑上的delay和rc(dc是使用互連線模型進(jìn)行估算)。
在了解delay和rc的計(jì)算時(shí),我們要先了解一下一個(gè)cell對于drive(前級)和driven(后級)所用到的模型是什么。如下圖,一個(gè)buffer,從前級看過來是一個(gè)load(capacitance,想獲得這個(gè)load,可以通過load_of buffer/a獲得),從后級看來是一個(gè)drive(resistance)。電路的的驅(qū)動(dòng)能力是上一級的1/R,即電阻的倒數(shù),驅(qū)動(dòng)能力大,說明看過去的電阻小,也說明這個(gè)器件比較大(大器件有較大的驅(qū)動(dòng)能力)。電路的負(fù)載能力是下一級的load(即電容)總和,負(fù)載能力大,說明能驅(qū)動(dòng)下級的期間就很多。
大器件是大電容,小電阻,而小器件是小電容,大電阻。理解這些,對于dc綜合以及后端apr版圖都有很好的操作。
對于cell的延遲,dc是根據(jù)input_transition和out_load對應(yīng)的查找表來計(jì)算的。
對于net的延遲,dc是根據(jù)wire_load_model中的fanout_length和resistance,capacitance,area的查找表計(jì)算的。
例如:
Wire_load(small){
Resistance: 0.2;
Capacitance: 1.0;
Area:0;
Slop:1.0;
Fanout_length(1,0.022);
Fanout_length(2,0.046);
Fanout_length(3,0.070);
Fanout_length(4,0.095);
}
比如現(xiàn)在扇出是2,
根據(jù)fanout_length(2,0.046)可以知道這個(gè)互連線的長度是0.046,然后再根據(jù)capacitance,resistence可以得出這個(gè)互連線的電容為:0.046x1.0,互連線電阻為:0.046x0.02。
如果扇出是5,在查找表中沒有找到fanout_length為5的項(xiàng),互連線長度將會(huì)是=fanout_length(4,0.095)+(5-4)*slop=0.095+1*1.0=1.095
得出了rc就可以計(jì)算出信號的transition時(shí)間=2.2RC。
實(shí)際的互聯(lián)線如下:
扇出線上的轉(zhuǎn)換時(shí)間根據(jù)在版圖之后提取的rc參數(shù)信息求得:
2.2RC=(Rnet+Rout)×(Cnet+Cin)
無論如何,要記住的就是dc是基于路徑分析的(怎么劃分路徑請參考另一篇:),每個(gè)路徑上有cell延遲和net延遲,而cell延遲是根據(jù)input_transition和out_lod得出的,net延遲是根據(jù)fanout_length,resistance,capacitanc得出的。驅(qū)動(dòng)和電阻成反比,負(fù)載和電容成正比。
由上面可以知道fanout影響到load(capacitance),transition,delay。了解了上面,我們來理解下dc中對design建模,所用到的一些跟fanout有關(guān)的參數(shù)。
Dc中的約束,其實(shí)就是給chip設(shè)計(jì)一個(gè)環(huán)境,比如驅(qū)動(dòng)這個(gè)chip輸入端口的cell,或者這個(gè)chip輸出端口驅(qū)動(dòng)了那些單元或者端口接入了哪些負(fù)載,以及這個(gè)芯片的工藝,電壓,溫度,等等。。。
對于一個(gè)cell來說,輸出端口具有max_fanout屬性,輸入端口有fanout_load屬性。
例如將一個(gè)AND2作為design的驅(qū)動(dòng)cell(set_driving_cell),這樣就把AND2的max_fanout屬性加在了輸入端口上。如果一個(gè)AND2的輸出端口max_fanout是5,輸入端口fanout_load是2。一個(gè)buffer輸入端口的fanout_load是3。那么這個(gè)AND2的輸出端可以接2個(gè)AND2,或者可以接一個(gè)buffer,或者可以接一個(gè)buffer和一個(gè)AND2。如上圖所示,則會(huì)引起DC產(chǎn)生DRC錯(cuò)誤。因?yàn)檩斎攵丝诘膄anout_load=2XAND2+buffer=7,超過了AND2的max_fanout2.如果使用了系統(tǒng)提供的set_max_fanout 5 [all_inputs],將會(huì)忽略set_driving_cell中cell的max_fanout屬性,而使用set_max_fanout屬性
如果將一個(gè)AND2作為design的負(fù)載,那么這個(gè)輸出端口上的fanout_load屬性將會(huì)為2.dc中一般的做法是set_fanout_load [expr [get_attribute slow/and2/a fanout_load] *xxx] [all_outputs],來設(shè)置輸出端口的fanout_load屬性。
這樣dc就可以根據(jù)這些設(shè)置,選擇優(yōu)化端口處的器件,以及時(shí)序。
說道fanout,所以順帶說明一下容易混淆的max_fanout,max_capacitance。如上圖所示,
輸入端口的fanout_load=2個(gè)與門的fanout_load和一個(gè)buffer的fanout_load。
輸入端口的load(capacitance)=2個(gè)與門的load_of和一個(gè)buffer的load_of。(如果通過set_load設(shè)置了輸入端口,另外還要加上set_load的值)。
Max_fanout檢查的是輸入端口的fanout_load最大值,
Max_capacitance檢查的是輸入端口load值。
兩者概念不同。
下面講下fanout與delay,看如下一個(gè)例子:
到buffer的net延遲是2,buffer延遲是1,fanout為1時(shí)net延遲為3,每增加一個(gè)扇出,net延遲增加2.如果一個(gè)信號經(jīng)過這個(gè)扇出網(wǎng)絡(luò)后,那么延遲為:2+1+(3+(8-1)×2)=20;
如果把扇出結(jié)構(gòu)優(yōu)化成如下形式:
那么信號經(jīng)過這個(gè)網(wǎng)絡(luò)后,延遲為:2+1+2+1+(3+(4-1)×2)=15.
那么延遲減少了5。
接下來講一下skew,既然知道了fanout對于delay的影響,下面看一個(gè)例子:
由于時(shí)鐘到每個(gè)觸發(fā)器的互連線長短不一樣,造成信號到達(dá)clock pin的時(shí)間也不一樣,觸發(fā)器也不會(huì)同時(shí)翻轉(zhuǎn)。Skew的定義就是最長路徑減去最短路徑的值。
根據(jù)時(shí)鐘域以及路徑關(guān)系,skew可以分為global skew,local skew,interclock skew。
Global skew是指,同一時(shí)鐘域,任意路徑的最大skew。
Local skew是指,同一時(shí)鐘域,任意2個(gè)有邏輯關(guān)聯(lián)關(guān)系的路徑最大skew。
interClock skew是指,不同時(shí)鐘域之間路徑的最大skew
另外還有一個(gè)useful skew。本來打算在setup time和hold time中講解。這里先大概說下
如下圖:時(shí)鐘周期為10ns,各時(shí)鐘路徑延遲如下:可以看到有一條路徑的slack為-1,說明這條路徑違規(guī)。可以看到與這條路徑相關(guān)的skew是T3-T2=-1ns。
下面我們利用useful skew向前面一個(gè)slack比較充裕的路徑(slack=2ns)借點(diǎn)time,來修正現(xiàn)在這條路徑。如下圖:
經(jīng)過useful skew,修正了原來的violation。
這就是useful skew的作用,可以向前,或者向后接time來修正violation
-
RC
+關(guān)注
關(guān)注
0文章
236瀏覽量
49721 -
Delay
+關(guān)注
關(guān)注
0文章
10瀏覽量
11095
發(fā)布評論請先 登錄
元器件在電路中的作用以及使用方法
示波器的使用方法

Skew Correction Using Delay Li

什么是參比電極_參比電極使用方法_參比電極的作用是什么
時(shí)序分析之useful skew的作用分析

評論