前面兩周介紹了如何修復(fù)setup和hold violation, 這次我們接著來講下另外一個(gè)十分重要的violation——drv的修復(fù)。
首先,我們來了解下drv的基本概念,drv全稱design rule violation,設(shè)計(jì)規(guī)則違反,主要包括max transition,maxcapacitance, max fanout, max length。 分別對pin的轉(zhuǎn)換時(shí)間,電容,扇出,wire長度有要求。其中,max transition和capacitance的violation是我們必須要修復(fù)的,因?yàn)檫^大的slew和load都會(huì)造成lookup table查找表的數(shù)值較大且不精確。fanout和length并不是必須要修復(fù)的,但是數(shù)值過大的話,會(huì)影響前兩者。接下來,我們來看看在ECO階段時(shí),如何來手動(dòng)修復(fù)max transition和maxcapacitance。
首先來看max transition,通常我們也稱為slew,可以看下概念介紹。
【時(shí)序分析基本概念介紹
有很多原因會(huì)造成slew的violation,但最主要的分為以下幾類:
1)cell的驅(qū)動(dòng)能力太弱
2)fanout數(shù)目過大
3)net長度太長
Cell驅(qū)動(dòng)能力太弱
這是最常見的一類slew的violation,如果某個(gè)cell的驅(qū)動(dòng)能力太弱,無法驅(qū)動(dòng)下一級的cell,則比較容易產(chǎn)生比較大的delay。
如何來修呢? 也很簡單,我們可以通過size up這個(gè)cell來提高驅(qū)動(dòng)能力,比如X1的BUF換成X4, X8的等。
一般情況下,如果我們看到某個(gè)cell的output transition比input transition大很多,那說明這個(gè)cell的驅(qū)動(dòng)不夠,我們可以嘗試size up一下。如下圖所示:第一個(gè)X1的INV input transition是18.051,而輸出transition是66.328。明顯的是X1的INV推不動(dòng)下面的14個(gè)fanout,可以考慮將X1的INV換成驅(qū)動(dòng)更強(qiáng)的cell。
Fanout數(shù)目過大
這也是常見的一類容易造成slew violation的情況。過多的fanout會(huì)顯著惡化pin的transition。
對于這種情況,我們可以通過插入buffer來減少fanout數(shù)目。如下圖所示:
中間的output pin驅(qū)動(dòng)了15個(gè)instance,分布在左右兩邊,如果該cell的驅(qū)動(dòng)能力不強(qiáng),整體的net長度又比較長的話,則比較容易引起max transition的violation。
對于這種情況,我們可以選擇在該instance的右邊插入一個(gè)buffer,由于buffer的驅(qū)動(dòng)較強(qiáng),所以讓它來驅(qū)動(dòng)右邊的10幾個(gè)instance,這樣就能顯著降低fanout的數(shù)目,修復(fù)max transition的violation。如下圖所示:原來的instance的fanout由15個(gè)變成了4個(gè)。
這邊推薦一個(gè)比較實(shí)用的小功能,在ECO窗口中,我們可以選擇Listed terminals旁邊的框框,然后在GUI界面上框住添加的buffer所需要驅(qū)動(dòng)的cell的pin,工具就會(huì)自動(dòng)會(huì)讓buffer驅(qū)動(dòng)這些pin,比我們通過命令抓取這些pin更簡單快捷。
net長度太長
過長的net長度也會(huì)惡化slew,造成max transition的violation。如下圖所示:
對于這種情況,我們可以在net的中間插入一個(gè)buffer來打斷這根net,就可以解掉這個(gè)max transition的violation。
maxcapacitance代表pin的load(負(fù)載)太大了,超過了約束或者library里面的設(shè)置,同樣會(huì)造成timing數(shù)據(jù)的不準(zhǔn)確。修復(fù)的方法和transition一樣,對于輸出pin上的maxcapacitance來說,一般是fanout數(shù)目過大,或者下一級net太長;對于輸入pin上的maxcapacitance來說,一般是上一級cell的驅(qū)動(dòng)不夠,或者輸入的net太長等等,基本情況和max transition一樣,這邊就不過多介紹了。
修復(fù)drv并不困難,我們首先要做的事搞清楚violation的出現(xiàn)的原因,對癥下藥,才能更好地解決問題。
-
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1812瀏覽量
85047 -
DRV
+關(guān)注
關(guān)注
0文章
18瀏覽量
20627
原文標(biāo)題:對癥下藥,方能藥到病除——如何修復(fù)drv?
文章出處:【微信號:IC_Physical_Design,微信公眾號:數(shù)字后端IC芯片設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論