Innovus ICC or IC Compiler DC or Design Compiler PT or PrimeTime User Guide or UG Leda VCS Formality 工藝節(jié)點(diǎn) 低功耗 CTS ...
續(xù)前文:
干貨放送 - 時(shí)鐘路徑的端點(diǎn)(Stop pins磁餐、Exclude pins)
眾所周知违崇,時(shí)鐘樹綜合(CTS)是除了Floorplan階段之外手工干預(yù)最多的部分,也是數(shù)字后端中非常令人頭疼的一個(gè)部分诊霹,這里講解一下CTS階段的一些時(shí)鐘樹例外的Pin(引腳例外)吧羞延。如果時(shí)鐘樹綜合階段Skew出現(xiàn)了問題,那么多半是這些引腳沒有指定好畅哑,可以看一下下面的內(nèi)容來debug自己的設(shè)計(jì)吧肴楷。
時(shí)鐘樹例外(clock tree exceptions)
ICC中可以用該命令指定時(shí)鐘樹例外:
set_clock_tree_exceptions
這里主要講解引腳例外(Pin exceptions),大致分為以下幾種類型:
Pin結(jié)點(diǎn)的類型
即:
1荠呐、不間斷引腳(-non_stop_pins)
2赛蔫、排除引腳(-exclude_pins)
3、浮動(dòng)引腳(-float_pins)
4泥张、停止引腳(-stop_pins)
此外還有一種:
5呵恢、勿觸碰子樹(-dont_touch_subtrees)
時(shí)鐘樹異常的優(yōu)先級
如果同一個(gè)引腳多次發(fā)出set_clock_tree_exceptions命令,
引腳保持最高優(yōu)先級的異常媚创。該工具按以下順序優(yōu)先考慮時(shí)鐘樹引腳異常:
1渗钉、不間斷引腳
2、排除引腳
3钞钙、浮動(dòng)引腳
4鳄橘、停止引腳
其中5和上面四種是不沖突的,可以重復(fù)定義
下面將對1~5分別做以介紹:
1芒炼、Nonstop pins(不間斷引腳)
不間斷引腳是通常被認(rèn)為時(shí)鐘樹端點(diǎn)的引腳瘫怜,但I(xiàn)CC會(huì)穿過它們以跟蹤查找真正的時(shí)鐘樹端點(diǎn)。驅(qū)動(dòng)生成時(shí)鐘的時(shí)序單元的時(shí)鐘引腳是隱式不間斷引腳本刽。
如果你不知道什么是Implicit nonstop pins(隱式不間斷引腳)鲸湃,可以看前面的推文:
干貨放送 - 時(shí)鐘路徑的端點(diǎn)(Stop pins、Exclude pins)
或者看下面的介紹:
如果時(shí)序單元的扇出驅(qū)動(dòng)的是生成時(shí)鐘(即該時(shí)序單元用于分頻之用子寓,用于產(chǎn)生生成時(shí)鐘)暗挑,則ICC將該時(shí)序單元的時(shí)鐘引腳視為隱式不間斷引腳(implicit nonstop pins),并穿過該時(shí)序單元以追蹤定位真正的時(shí)鐘樹端點(diǎn)斜友,如下圖所示炸裆。另外,ICC認(rèn)為集成時(shí)鐘門控(integrated clock-gating, ICG)單元的時(shí)鐘輸入引腳是隱式不間斷引腳鲜屏,因此不用手動(dòng)對其進(jìn)行重復(fù)設(shè)置烹看。
如果要指定不間斷引腳,可以使用命令:
set_clock_tree_exceptions -non_stop_pins
2墙歪、Exclude pins(排除引腳)
排除引腳是從時(shí)鐘樹時(shí)序計(jì)算和優(yōu)化中排除的時(shí)鐘樹端點(diǎn)听系。ICC僅在計(jì)算和優(yōu)化設(shè)計(jì)規(guī)則約束時(shí)使用排除引腳。除了ICC推斷的排除引腳(隱式排除引腳)外虹菲,ICC還支持用戶定義(或顯式)排除引腳靠胜。例如,您可以定義一個(gè)排除引腳來排除從某些組合邏輯引出的時(shí)鐘樹的所有分支(如下圖所示)毕源,或者排除隱式停止引腳浪漠。
在時(shí)鐘樹綜合(CTS)期間,ICC通過在排除引腳(隱式和顯式排除引腳)之前插入guide buffer來從時(shí)鐘樹中隔離這些引腳霎褐。對于排除引腳址愿,ICC不會(huì)執(zhí)行Skew或插入延遲優(yōu)化,而是執(zhí)行設(shè)計(jì)規(guī)則修復(fù)冻璃。
要指定排除引腳响谓,可以使用命令:
set_clock_tree_exceptions -exclude_pins
3损合、Float pins(浮動(dòng)引腳)
Float Pins是具有特殊插入延遲要求的時(shí)鐘引腳。工具在計(jì)算到該Float Pins的插入延時(shí)(Insertion delay)時(shí)娘纷,將把Float Pin延遲(正或負(fù))添加到計(jì)算Insertion delay中去嫁审。要指定Float Pins及其時(shí)序特性,可以使用以下命令:
set_clock_tree_exceptions
選項(xiàng):set_clock_tree_exceptions選項(xiàng):
? -float_pins [get_pins pin_list]
? -float_pin_max_delay_fall max_delay_fall_value
? -float_pin_max_delay_rise max_delay_rise_value
? -float_pin_min_delay_fall min_delay_fall_value
? -float_pin_min_delay_rise min_delay_rise_value
? -float_pin_logic_level logic_level_value
注意:
如果使用-float_pins選項(xiàng)赖晶,則必須至少指定一個(gè)浮動(dòng)引腳延遲選項(xiàng)否則將發(fā)生錯(cuò)誤律适。
Float pin實(shí)例:
# Specifying anegative float pin
icc_shell>set_clock_tree_exceptions -float_pins U1/CLK \
-float_pin_max_delay_rise -0.5 -float_pin_max_delay_fall -0.5
# Specifying apositive float pin
icc_shell>set_clock_tree_exceptions -float_pins U4/CLK \
-float_pin_max_delay_rise 0.5 -float_pin_max_delay_fall 0.5
浮動(dòng)引腳延遲值可以是正或負(fù),取決于具體的時(shí)序要求:
要增加引腳的insertion delay遏插,需要指定負(fù)引腳延遲(如下圖所示的Negative float pin)捂贿;
要減小引腳的insertion delay,需要指定正引腳延遲(如下圖所示的Positive float pin)胳嘲。
上述的命令將會(huì)生成如下類似結(jié)構(gòu)的時(shí)鐘樹:
硬宏單元(Hard Macro)的內(nèi)部延遲在單元的時(shí)序模型中表示厂僧。ICC工具使用該時(shí)序模型來確定Hard Macro的外部時(shí)鐘引腳逼肯,并將這些引腳用作時(shí)鐘匯點(diǎn)炕檩。在時(shí)鐘樹綜合期間,ICC會(huì)對這些Macro外部時(shí)鐘引腳平衡Skew并最小化插入延遲辑舷。因此對于硬宏單元不需要額外的指定白魂。
如果沒有硬宏單元的時(shí)序模型汽纤,或者想要修改硬宏單元的時(shí)序特征,需要使用浮動(dòng)引腳來指定硬宏單元內(nèi)部時(shí)鐘樹的時(shí)序特征福荸≡唐海可以通過指定從浮動(dòng)引腳看到宏單元內(nèi)部的時(shí)鐘匯點(diǎn)的最小和最大插入延遲到來定義時(shí)序特征。
4敬锐、Stop pins(停止引腳)
Stop pins是用于平衡時(shí)鐘樹延遲的時(shí)鐘樹端點(diǎn)背传。在時(shí)鐘樹綜合期間,ICC在計(jì)算和優(yōu)化設(shè)計(jì)規(guī)則約束(邏輯DRC)和時(shí)鐘樹時(shí)序(skew和insertion delay)時(shí)使用Stop pins台夺。
默認(rèn)時(shí)鐘匯點(diǎn)是隱式停止引腳径玖。此外,ICC支持用戶定義(或顯式)停止引腳颤介。例如梳星,可以定義一個(gè)停止引腳來結(jié)束在組合單元輸入上的分支,或者使用隱式排除引腳作為時(shí)鐘匯點(diǎn)滚朵。
ICC為所有停止引腳(隱式和顯式)分配零相位延遲冤灾,并在延遲平衡期間使用此延遲。
要指定停止引腳辕近,可以使用命令:
set_clock_tree_exceptions -stop_pins
關(guān)于用戶定義的stop pin或者顯示的stop pin韵吨,篇幅太長了,這里就不介紹了移宅。
5归粉、Dont_touch_subtrees(勿觸碰子樹)
在某些情況下椿疗,希望保留現(xiàn)有時(shí)鐘樹的一部分,需要這樣設(shè)置盏浇。例如变丧,當(dāng)兩個(gè)時(shí)鐘網(wǎng)絡(luò)共享多路選擇器后面的某些時(shí)鐘邏輯的一部分時(shí)芽狗。保留的時(shí)鐘樹的部分稱為不觸碰子樹绢掰。要指定不觸碰子樹,可以使用如下命令指定不觸碰子樹的根引腳:
set_clock_tree_exceptions -dont_touch_subtrees
關(guān)于dont_touch_subtrees的應(yīng)用童擎,感興趣的可以看之前發(fā)過的一篇非车尉ⅲ火的推文:
深度好文 | 一個(gè)考慮了Scan、Boundary Scan顾复、分頻時(shí)鐘班挖、門控時(shí)鐘的CTS的分析設(shè)計(jì)示例(含腳本)
雖然該工具在時(shí)鐘樹綜合期間沒有對不接觸子樹進(jìn)行任何修改,但它會(huì)傳播時(shí)鐘樹屬性和非默認(rèn)布線規(guī)則(NDR)到不要觸碰的子樹芯砸。為了防止時(shí)鐘屬性和非默認(rèn)布線規(guī)則的傳播萧芙,請將cts_traverse_dont_touch_subtrees變量設(shè)置為false。
ICC在平衡時(shí)鐘延遲和計(jì)算時(shí)鐘偏移時(shí)假丧,會(huì)考慮到不碰觸子樹中的時(shí)鐘匯點(diǎn)双揪。
要?jiǎng)h除某個(gè)引腳上的dont_touch_subtrees屬性,可以使用命令:
remove_clock_tree_exceptions -dont_touch_subtrees
原文鏈接:https://blog.csdn.net/weixin_35390379/article/details/112771592