输入引脚时钟约束_最强干货分享 | 时钟树例外(exclude pin、stop pin、non_stop pin、float pin)...
《最強(qiáng)干貨分享
時(shí)鐘樹(shù)例外(exclude pin、stop pin、
non_stop pin、float pin)》
研究生畢業(yè)之前曾發(fā)過(guò)這篇推文,現(xiàn)在在原來(lái)的基礎(chǔ)上進(jìn)行了修正,又添加了一些內(nèi)容,幾乎是壓箱底的,現(xiàn)在拿出來(lái)分享一下,如果覺(jué)得好的話(huà)麻煩多多~~點(diǎn)贊~~分享~~喲。
眾所周知,時(shí)鐘樹(shù)綜合(CTS)是除了Floorplan階段之外手工干預(yù)最多的部分,也是數(shù)字后端中非常令人頭疼的一個(gè)部分,這里講解一下CTS階段的一些時(shí)鐘樹(shù)例外的Pin(引腳例外)吧。如果時(shí)鐘樹(shù)綜合階段Skew出現(xiàn)了問(wèn)題,那么多半是這些引腳沒(méi)有指定好,可以看一下下面的內(nèi)容來(lái)debug自己的設(shè)計(jì)吧。
時(shí)鐘樹(shù)例外(clock tree exceptions)
ICC中可以用該命令指定時(shí)鐘樹(shù)例外:
set_clock_tree_exceptions
這里主要講解引腳例外(Pin exceptions),大致分為以下幾種類(lèi)型:
Pin結(jié)點(diǎn)的類(lèi)型
即:
1、不間斷引腳(-non_stop_pins)
2、排除引腳(-exclude_pins)
3、浮動(dòng)引腳(-float_pins)
4、停止引腳(-stop_pins)
此外還有一種:
5、勿觸碰子樹(shù)(-dont_touch_subtrees)
時(shí)鐘樹(shù)異常的優(yōu)先級(jí)
如果同一個(gè)引腳多次發(fā)出set_clock_tree_exceptions命令,
引腳保持最高優(yōu)先級(jí)的異常。該工具按以下順序優(yōu)先考慮時(shí)鐘樹(shù)引腳異常:
1、不間斷引腳
2、排除引腳
3、浮動(dòng)引腳
4、停止引腳
其中5和上面四種是不沖突的,可以重復(fù)定義
下面將對(duì)1~5分別做以介紹:
1、Nonstop pins(不間斷引腳)
不間斷引腳是通常被認(rèn)為時(shí)鐘樹(shù)端點(diǎn)的引腳,但I(xiàn)CC會(huì)穿過(guò)它們以跟蹤查找真正的時(shí)鐘樹(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),并穿過(guò)該時(shí)序單元以追蹤定位真正的時(shí)鐘樹(shù)端點(diǎn),如下圖所示。另外,ICC認(rèn)為集成時(shí)鐘門(mén)控(integrated clock-gating, ICG)單元的時(shí)鐘輸入引腳是隱式不間斷引腳,因此不用手動(dòng)對(duì)其進(jìn)行重復(fù)設(shè)置。
如果要指定不間斷引腳,可以使用命令:
set_clock_tree_exceptions -non_stop_pins
2、Exclude pins(排除引腳)
排除引腳是從時(shí)鐘樹(shù)時(shí)序計(jì)算和優(yōu)化中排除的時(shí)鐘樹(shù)端點(diǎn)。ICC僅在計(jì)算和優(yōu)化設(shè)計(jì)規(guī)則約束時(shí)使用排除引腳。除了ICC推斷的排除引腳(隱式排除引腳)外,ICC還支持用戶(hù)定義(或顯式)排除引腳。例如,您可以定義一個(gè)排除引腳來(lái)排除從某些組合邏輯引出的時(shí)鐘樹(shù)的所有分支(如下圖所示),或者排除隱式停止引腳。
在時(shí)鐘樹(shù)綜合(CTS)期間,ICC通過(guò)在排除引腳(隱式和顯式排除引腳)之前插入guide buffer來(lái)從時(shí)鐘樹(shù)中隔離這些引腳。對(duì)于排除引腳,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ì)生成如下類(lèi)似結(jié)構(gòu)的時(shí)鐘樹(shù):
硬宏單元(Hard Macro)的內(nèi)部延遲在單元的時(shí)序模型中表示。ICC工具使用該時(shí)序模型來(lái)確定Hard Macro的外部時(shí)鐘引腳,并將這些引腳用作時(shí)鐘匯點(diǎn)。在時(shí)鐘樹(shù)綜合期間,ICC會(huì)對(duì)這些Macro外部時(shí)鐘引腳平衡Skew并最小化插入延遲。因此對(duì)于硬宏單元不需要額外的指定。
如果沒(méi)有硬宏單元的時(shí)序模型,或者想要修改硬宏單元的時(shí)序特征,需要使用浮動(dòng)引腳來(lái)指定硬宏單元內(nèi)部時(shí)鐘樹(shù)的時(shí)序特征。可以通過(guò)指定從浮動(dòng)引腳看到宏單元內(nèi)部的時(shí)鐘匯點(diǎn)的最小和最大插入延遲到來(lái)定義時(shí)序特征。
4、Stop pins(停止引腳)
Stop pins是用于平衡時(shí)鐘樹(shù)延遲的時(shí)鐘樹(shù)端點(diǎn)。在時(shí)鐘樹(shù)綜合期間,ICC在計(jì)算和優(yōu)化設(shè)計(jì)規(guī)則約束(邏輯DRC)和時(shí)鐘樹(shù)時(shí)序(skew和insertion delay)時(shí)使用Stop pins。
默認(rèn)時(shí)鐘匯點(diǎn)是隱式停止引腳。此外,ICC支持用戶(hù)定義(或顯式)停止引腳。例如,可以定義一個(gè)停止引腳來(lái)結(jié)束在組合單元輸入上的分支,或者使用隱式排除引腳作為時(shí)鐘匯點(diǎn)。
ICC為所有停止引腳(隱式和顯式)分配零相位延遲,并在延遲平衡期間使用此延遲。
要指定停止引腳,可以使用命令:
set_clock_tree_exceptions -stop_pins
關(guān)于用戶(hù)定義的stop pin或者顯示的stop pin,篇幅太長(zhǎng)了,這里就不介紹了。
5、Dont_touch_subtrees(勿觸碰子樹(shù))
在某些情況下,希望保留現(xiàn)有時(shí)鐘樹(shù)的一部分,需要這樣設(shè)置。例如,當(dāng)兩個(gè)時(shí)鐘網(wǎng)絡(luò)共享多路選擇器后面的某些時(shí)鐘邏輯的一部分時(shí)。保留的時(shí)鐘樹(shù)的部分稱(chēng)為不觸碰子樹(shù)。要指定不觸碰子樹(shù),可以使用如下命令指定不觸碰子樹(shù)的根引腳:
set_clock_tree_exceptions -dont_touch_subtrees
關(guān)于dont_touch_subtrees的應(yīng)用,感興趣的可以看之前發(fā)過(guò)的一篇非常火的推文:
深度好文 | 一個(gè)考慮了Scan、Boundary Scan、分頻時(shí)鐘、門(mén)控時(shí)鐘的CTS的分析設(shè)計(jì)示例(含腳本)
雖然該工具在時(shí)鐘樹(shù)綜合期間沒(méi)有對(duì)不接觸子樹(shù)進(jìn)行任何修改,但它會(huì)傳播時(shí)鐘樹(shù)屬性和非默認(rèn)布線(xiàn)規(guī)則(NDR)到不要觸碰的子樹(shù)。為了防止時(shí)鐘屬性和非默認(rèn)布線(xiàn)規(guī)則的傳播,請(qǐng)將cts_traverse_dont_touch_subtrees變量設(shè)置為false。
ICC在平衡時(shí)鐘延遲和計(jì)算時(shí)鐘偏移時(shí),會(huì)考慮到不碰觸子樹(shù)中的時(shí)鐘匯點(diǎn)。
要?jiǎng)h除某個(gè)引腳上的dont_touch_subtrees屬性,可以使用命令:
remove_clock_tree_exceptions -dont_touch_subtrees
# 本公眾號(hào)有個(gè)紅包和資料福利微信群?##? 可以先加我微信,我拉你進(jìn)群? ##? 加我微信 請(qǐng)備注下面問(wèn)題的答案? ##? ? ? ?ASIC的全稱(chēng)? ? ? ?#如果喜歡本公眾號(hào)也請(qǐng)多多分享喲,謝謝您的關(guān)注
總結(jié)
以上是生活随笔為你收集整理的输入引脚时钟约束_最强干货分享 | 时钟树例外(exclude pin、stop pin、non_stop pin、float pin)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C语言函数class,C语言--7-cl
- 下一篇: C语言第一行为N以下N行,C语言每日小练