本文轉自:自己的微信公眾號《集成電路設計及EDA教程》
里面主要講解數字IC前端、后端、DFT、低功耗設計以及驗證等相關知識,並且講解了其中用到的各種EDA工具的教程。
考慮到微信公眾平台上面發布的很多推文百度搜索不到,所以以后的推文也會在這里進行轉載。
《數字IC后端布局階段對Tie-high和Tie-low Net的處理》
布局階段ICC對於時鍾網絡和恆0/1網絡(Constant Net)的行為:
在布局階段,在默認情況下,對於時鍾網絡和恆0/1網絡(也就是Tie-high和Tie-low的net),ICC是不會做邏輯DRC(Design RuleConstraint)的檢查與修復的。這也意味着在執行place_opt時,ICC不會在這些net上插入Buffer。在布局階段我們也不想在時鍾網絡上插入Buffer,但是對於Tie-high和Tie-low的Net,如果軟件不在上面插入Buffer,可能會產生一些問題。在默認設置下工具在place_opt時對tie-high和tie-low的net的行為:會用tie-high和tie-low的Cell去驅動盡量多的Cell。
邏輯DRC(Design Rule Constraint):
即max_transition, max_capacitance, max_fanout。這些規則決定布局布線引擎是否需要在這些Net上插入Buffer。
Constant Net上面不插入Buffer的缺點:
其信號容易受到串擾的影響,如下圖所示:
在離Tie-high的Net比較近的地方,如果有個高速時鍾信號(兩條線並行走了很長的距離),那么它的恆定電平會受到串擾的影響而產生毛刺。
而對於加了Buffer的Tie-high網絡,它不容易受到串擾的影響,原因如下:
1、由於互連線長度縮短了,因此耦合電容大幅降低,串擾會大大降低;
2、由於Buffer有非常好的電平保持和恢復能力,與Tie-high Cell相比,抗串擾能力更好。
Constant Net上面插入Buffer的缺點:
以面積為代價,Tie-high/low的net扇出越大(也就是說設計中固定0/1輸入比較多),加的Buffer越多。
如何使能Constant Net Buffering呢?
ICC命令:set_auto_disable_drc_nets -constant false
set_app_varphysopt_new_fix_constants true
set_attribute[...] max_fanout 12
set_attribute[...] max_capacitance 0.2 -type float
設置完成后工具的行為:
用tie-high和tie-low盡量驅動更多的單元,同時滿足指定的最大扇出和最大電容約束。
set_auto_disable_drc_nets命令可以在常量網絡上啟用DRC修復。
physopt_new_fix_constants變量設置為true會使得工具在優化期間注意最大電容約束。最大電容約束由max_capacitance屬性確定,該屬性使用set_max_capacitance或set_attribute命令設置。 set_attribute命令用於明確指定設計中對象的最大扇出和最大電容約束。
## 為了方便大家交流討論 ##
## 建了一個QQ群 ##
## 集成電路設計及EDA教程 ##
## 加群請備注:EDA ##
## 群二維碼如下 ##