數字IC前后端設計中的時序收斂(五)--Max Transition違反的修復方法


 本文轉自:自己的微信公眾號《數字集成電路設計及EDA教程》

里面主要講解數字IC前端、后端、DFT、低功耗設計以及驗證等相關知識,並且講解了其中用到的各種EDA工具的教程。

考慮到微信公眾平台上面發布的很多推文百度搜索不到,所以以后的推文也會在這里進行轉載。

 

數字IC設計中max_cap和max_tran這類邏輯DRC或者說時序DRC是在設計中必須修復的問題,到最后版圖完成,這些問題都是要clean的。他們的分析與優化貫穿前后端設計中。下面按照從前到后的流程逐一講解每個階段如果出現max_tran違反該如何解決。下面用到的命令,主要針對的是Synopsys公司的綜合工具DC以及布局布線工具ICC。

 

如果設計中報告存在max transision的違反,首先看一下最大違反是多少,違反的路徑多不多,然后去分析出現違反的原因。

這種問題出現的原因無非三種:

1、扇出太大;

2、連線太長;

3、驅動強度太弱;

 

對於第一種情況,如果出現違反的net很多,那么很有可能是由於高扇出網絡很多導致的,可以在sdc時序約束文件中將max_fanout的值設置的小一些,加緊約束;

對於第二種情況,可以采用手工ECO或者用PT進行ECO。對於長連線net可以增大前級的驅動能力,但是最常用的應該是在net中間插入buffer了。

對於第三種情況,同樣可以采用手工ECO或者用PT進行ECO。可以增大net前一級cell的驅動能力,即用size_cell命令修復。

 

如果設計中存在一些非常小的違反,也可以采用工具自帶的一些命令去讓軟件自動進行優化,以此減少設計者的工作量。下面依次講解數字IC設計前后端中一些修復max_transition的命令。

 

1、邏輯綜合階段:同樣,和修復Max Cap一樣可以用compile_ultra來修復:compile_ultra -only_design_rule,如果是dont_touch的net,可以忽略。

 

2、布局之后,CTS之前:

2.1 命令讓軟件自動修復psynopt -only_design_rule

2.2 如果是高扇出引起的,那么可以在布局之前將max_fanout的值設置的小一些;如果高扇出的問題只發生在某個集中的地方,那么可以手動調整它的扇出。

2.3 加緊約束,set_max_transition xxx [current_design],這個值可以比庫里面的值稍微小10%(約束更緊一些),同時留一定的裕量。

 

3、CTS階段

如果CTS之后發現在時鍾網絡的dont_touch net上存在max_transition的違反,那么可以將CTS階段時鍾樹的fanout設置的小一些,例如:

>set_clock_tree_options -target_skew 0 -max_fanout 30

Max_cap問題如果出現在這些net上,也可以用這種方法修復。

 

還有一種是在CTS的時候讓軟件去修復邏輯DRC違反,不過這種方法會特別耗時,不建議使用:

>set_clock_tree_options-advanced_drc_fixing true

>setcts_enable_drc_fixing_on_data true

 

4、CTS之后(PosCTS):

>psynopt -only_design_rule

 

5、布線階段

>route_opt -incremental -only_design_rule

 

6、chipfinish階段

在這里,相比於上一步,只做了一下DFM的操作,如果這里存在max_transition的違反,那么應該也是極其少量的,可以簡單的通過focal_opt即可修復,命令如下:

>focal_opt -drc_nets all -effort high

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM