免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

Innovus修復Short的腳本分享(附腳本思路詳細講解)

 mzsm 2022-06-22 發(fā)布于湖北


好消息

星球創(chuàng)建了一個專屬Q(mào)Q交流群,上傳了積累多年的IC后端筆記,最近剛上傳2萬字125頁的ICC2教程,同時也會不定時發(fā)一些紅包,感興趣的可以加入。我相信這絕對是你能找到的最全的后端設計資料(理論+實踐操作+腳本),沒有之一??!

目前已上傳的筆記有:

  • 低功耗設計技術總結(jié)-3萬字,129頁

  • IR drop的分析與修復總結(jié)-4.3千字,20頁

  • 數(shù)字后端理論及實踐-ICC干貨筆記-11萬字,423頁

  • 數(shù)字后端理論及實踐-Innouvs教程-5.7萬字,316頁

  • ICC2教程-星球精編版-2萬字,125頁(最新上傳)

......

Innovus修復Short的腳本分享
(附腳本思路詳細講解)

01


星球相關精華推文


本文選自知識星球,同時星球里面分享了ICC2/ICC/Innovus解決Short問題的腳本,這里分享一下相應的鏈接:

《ICC/ICC2/Innovus 短路(Short)問題該如何解決?附tcl腳本》
https://t./03ynmyb62
《ICC2教程 - 超實用DRC LVS檢查、修復命令及腳本分享》
https://t./03iE2FYJM 
《Innovus修復Short的腳本分享(附腳本思路詳細講解)》
https://t./036EUF6au 
《ICC教程 - 超實用DRC LVS修復命令及腳本分享》
https://t./03UVVZR3b


02


正文

在設計中有一些short,跑幾輪ecoRoute -fix_drc都無法解決的情況下,我們可以刪除一些short的shape來讓工具重新ecoRoute來解決,如果數(shù)量有幾十甚至上百個,那么手工操作就不太現(xiàn)實了,可以用腳本來實現(xiàn),這里分享的就是這樣一個腳本。

注意:如果short數(shù)量非常多且比較集中(hotspot)的情況下,就需要去看你的congestion狀態(tài)了,如果congestion狀態(tài)很差,那么這些short多半是無法完全解決的,必須從congestion上入手。
這里分享一個自己編寫的腳本,腳本可以根據(jù)error browser里面verify_drc的結(jié)果來找到short的shape,然后刪除它,由于Clock nets對timing的影響比較大,所以這里并未刪除clock shape,只刪除signal的shape,再之后運行ecoRoute修復open即可。

前面星球里面寫了個推文是講解如何用dbGet來得到error browser里面的結(jié)果并寫腳本解決一些overlap的問題(能熟練掌握的話那么你的innovus腳本水平就比較溜了),這里我們換一種方法用get_db來講解一下如何去實現(xiàn)。
《Tcl練習題答案 - CTS之后發(fā)現(xiàn)clock cell和tap cell有overlap的問題,如何寫腳本解決?》
https://t./02MJM7iYr

同時星球里面分享了get_db/set_db的詳細教程,感興趣的也可以看下:
《get_db命令教程 與 Innovus Stylus Common UI教程》
https://t./02JIMfub6

首先運行下面的命令來報出所有的DRC:
#Verify Route DRC
set_verify_drc_mode -check_only all \
-report DTMF_CHIP.drc.rpt \
-limit 1000 -ignore_cell_blockage true
verify_drc
圖片
命令get_db current_design .markers.subtype 可以得到當前設計中error browser里面的所有subtype,比如Metal_Short, Parallel_Run_Length_Spacing等。
[DEV]innovus 63> get_db current_design .markers.subtype
Metal_Short
可以用-if來篩選出Metal_Short:
[DEV]innovus 64> get_db current_design .markers -if {.subtype==Metal_Short}
marker:0x7ffeda4d2200
下面的命令可以報出short發(fā)生的層:
[DEV]innovus 65> get_db marker:0x7ffeda4d2200 .layer.name
Metal5
下面的命令可以報出error browser里面的message:
[DEV]innovus 66> get_db marker:0x7ffeda4d2200 .message
Regular Wire of Net DTMF_INST/TDSP_DS_CS_INST/CTS_2 & Regular Wire of Net tdsp_portO[9]
圖片
下面的命令可以報出error發(fā)生的坐標:
[DEV]innovus 67> get_db marker:0x7ffeda4d2200 .bbox
{810.67 664.72 810.95 665.28}
下面的命令可以報出error發(fā)生位置的wire,如果其他層的wire也落在這個bbox里面的話可能會干擾我們,所以我們可以用-layers來只報告有short的layer:
[DEV]innovus 68> dbQuery -area {810.67 664.72 810.95 665.28} -objType wire -layers Metal5
0x7fff7a5e3718 0x7fff7a0f8058
[DEV]innovus 69> get_db [dbQuery -area {810.67 664.72 810.95 665.28} -objType wire -layers Metal5] .net.name
tdsp_portO[9] DTMF_INST/TDSP_DS_CS_INST/CTS_2

再之后,我們可以在short發(fā)生的box區(qū)域內(nèi)找到不是clock nets的那段wire,是否是clock可以通過下面的命令來識別:
[DEV]innovus 75> get_db [dbQuery -area {810.67 664.72 810.95 665.28} -objType wire -layers Metal5] .net.use
scan clock
[DEV]innovus 82> get_db [get_db [dbQuery -area {810.67 664.72 810.95 665.28} -objType wire -layers Metal5] .net] -if {.use != clock}
{net:DTMF_CHIP/tdsp_portO[9]}
之后刪除那段signal wire之后用ecoRoute重新繞即可。

完整的腳本:
proc hq_fix_shorts {} {
setMultiCpuUsage -localCpu 16

#fix short
get_db current_design .markers -if {.subtype == Metal_Short} -foreach {
set box [get_db $object .bbox]
set layer_name [get_db $object .layer.name]
select_obj [get_db [dbQuery -area $box -layers $layer_name -objType wire] -if {.net.use != clock}]
editDelete -selected
}

}
define_proc_arguments hq_fix_shorts -info 'Fix shorts based on DRC results'
執(zhí)行proc hq_fix_shorts之后的結(jié)果:
圖片
之后執(zhí)行ecoRoute并檢查DRC和Open即可。

有星粉反映工具有下面的命令可以實現(xiàn)相似的目的:
19版:editDeleteViolation
20版:editDelete -regular_wire_with_drc
這個命令會去解所有的DRC,而不止是Short,可是我們一般用刪除shape去解short,而非所有DRC,并且這個命令會去刪除整個net的繞線,動作非常大,所有不推薦大家直接使用。
我來分享一下兩者之間的區(qū)別,并推薦大家使用分享的腳本而非直接使用這個命令,原因也會講一下。

editDelete -regular_wire_with_drc:
優(yōu)點:只會刪regular net,因此不會動PG。
缺點:整個net都刪掉了,一個net可能好幾百um(示例中一個500+的net整個刪除了),因為一個地方的小short導致整個net刪除,對timing影響比較大,而腳本分析的方法不存在這種問題。
還有就是如果發(fā)現(xiàn)sigal nets和clock nets short了,那么兩個net全部會被刪掉。而clock nets對timing影響很大,所以如果要用這種方法最好把cts nets全部fix住。

腳本分享的方法:
優(yōu)點:只會刪short的area里面的data signal nets,不會動PG和clock nets,因此比較有保證,不會對timing和IR drop等有大的影響。
缺點:某些情況下,只刪除局部的short shape可能無法解決這個short,工具可能還是會在那個地方去繞。這個時候就需要刪除更多的shape了,可以手工來選擇性刪除。如果net所在的path的timing非常寬裕,那么完全刪掉它重新繞也沒有問題。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多