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


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

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

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

 

 

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

 

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

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

1、扇出太大;

2、連線太長;

 

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

對於第二種情況,可以采用手工ECO或者用PT進行ECO,在net中間插入buffer。

在ECO的時候要注意物理上的一些問題,例如是否存在filler,是否有足夠的空間來size,如何連線等等,詳見ICC的ECO流程。

下面給出一個手工查找max_cap發生原因並手工ECO解決該問題的例子。如下為ICC報告的一個net的max_cap的違反:

可以在gui中highlight該net:

發現的確是由於net太長導致的,那么可以在中間插入buffer,注意buffer的驅動一定要合適,否則可能會引起max_tran的違反。

>insert_buffer[get_nets {mimo_inst/n819}] [get_lib_cells */BUFV8_9TUH35]

>legalize_placement-cells {mimo_inst/eco_cell}或者用legalize_placement -eco

>route_zrt_eco -reroutemodified_nets_first_then_others

>report_constraint-all_violators -scenarios [all_active_scenarios] -significant_digits 4 >../rpts/all_violators.rpt

>update_timing

>create_qor_snapshot-clock_tree -name $ICC_CHIP_FINISH_CEL

修完之后就沒有max_cap違反了:

 


免責聲明!

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



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