innovus中path group 的策略和應(yīng)用(下)
時間:2025-11-17 23:08:00
手機看文章
掃描二維碼
隨時隨地手機看文章
BPG(basic path group)和PG(path group)的異同
INVS默認使用了BPG,但是基于SDC理論下PG(path group)也是天然存在,兩者在數(shù)據(jù)庫里邊有各自存在的方式,也可以共融共生中,通過其中的異同,看到INVS的一些有趣的處理。BPG (basic path group)timeDesign報告簡析
如果用戶沒有在SDC里邊使用任何的group_path命令,INVS默認就會是使用BGP進行分組(PS:這點和S家的有區(qū)別)。用戶在導(dǎo)入數(shù)據(jù)庫后,通過timeDesign就可以看到類似下面的分組關(guān)系:
【圖1】timeDesign summary這個分組表達了BGP的基本理念,但是注意,這里的數(shù)量有些許差異:
(default – reg2reg – reg2cgate) - all = (125024+787+479) - 125882 = 408。所有BGP的path總量竟然要比all 要多!
這個是因為:all 是基于EP的path核算,一個EP點就對應(yīng)1,如果某個EP有路徑展開,譬如:FF1 -> FF0 和 INPUT -> FF0 ,這樣在default里邊就會再出現(xiàn)以FF0為EP的path。這里稱為:EP展開為了驗證這個理論,嘗試做一下IO的set_false_path操作,然后再用timeDesign
【圖2】disable IO timing
【圖3】timeDesign summary with IO timing disable這里的default=0說明所有的EP都沒有二次展開,可以明確的看到:
reg2reg + reg2cgate = 125024 + 787 = all = 125811PS:無論用戶是否通過group_path調(diào)整分組,timeDesign的all的值是不會發(fā)生變化的??梢岳眠@個信息,查看用戶EP展開路徑的數(shù)量:
EP展開路徑 = all – [user_group_path_count_sum | BGP_path_count_sum]
BPG和PG(path group)的兼容
雖然INVS擁有自己獨創(chuàng)的BGP,但是在兼容傳統(tǒng)SDC的大前提下,INVS當然也支持了用戶自定義的path group。通過下圖理解BPG和PG的關(guān)系:
【圖4】BPG/PG with INVS DB可以看到,通過group_path命令定義PG的優(yōu)先級是大于BPG的,任何時候用戶使用了group_path命令,那么原始的BGP就會被完全替代,(PS:兩個系統(tǒng)只能居其一,不能同時存在)。無論用戶的group path定義是否完備,都可以讓INVS從BPG進入到PG系統(tǒng):譬如下例:這里用戶只使用了group_path 定義了一個組
【圖5】timeDesign with user PG可以看到,由于用戶定義的組沒有timing path,所以整個系統(tǒng)的path都歸集為了default,此時,系統(tǒng)已經(jīng)切換到PG了。盡管如此,用戶依然可以通過all path數(shù)量來評估自己的EP展開問題,這個和BPG是一樣的,無論是在那個系統(tǒng),all的信息是一致的,INVS的底層邏輯其實并沒有發(fā)生改變。
但是,如果用戶定義的分組很多,這個在做place_opt_design的時候,INVS采用了更多的iteration進行收斂,這個和INVS基于BGP EP 的優(yōu)化方式是類似的不同,只不過分組變多會直接導(dǎo)致iteration變多。也會簡介導(dǎo)致時序收斂的問題。
【圖6】datapath optimization per-HEPG工具會把所有的HEPG (high effort path group)在這里描述一下TNS/WNS,同時,后續(xù)的正常修復(fù)也是集中在HEPG組的(如Active Path Group行所示),所以HEPG越多,工具的考慮就會越多。PS:這里注意,default帶了一個*,其實他也是一個high effort組,
report_timing對BPG和 PG 的支持
由于BPG是系統(tǒng)默認的分組方式,INVS把BPG設(shè)定為為隱性的(implicit),而把用戶使用group_path的分組定義為顯性的(explicit)。無論是那個系統(tǒng),data path optimization的工作方式是沒有區(qū)別的,甚至在timeDesign的時候也是看不出來區(qū)別的。但是對于report_timing命令系統(tǒng),INVS處理還是略有不同:
BGP下的report_timing 命令使用
report_timing后面跟的-group選項,需要制定的是顯性組(explicit),如果這里用戶使用了BPG的隱性組(implicit),工具返回錯誤:
【圖7】BPG下,report_timing不能指定的非default組那這里問題來了,數(shù)據(jù)庫里的group都去哪里了。INVS使用了BPG和PG里邊都有的一個公共組:default 巧妙的處理了這個問題:
【圖8】BGP下defaut組的形態(tài)可以看到,在BPG下,所有的path對應(yīng)于report_timing的path_group都回歸到了default。可以視為對隱性組的一個簡單管理方法。但是,這里還有一個點需要探究:INVS用戶都知道,一個timing path里邊會有很多屬性,如果在BPG下,report_timing借用了default組,那么這個屬性何去何從呢?
-
如果是使用-path_group指定 default組,這個會返回設(shè)計里邊所有的timing path
-
如果用戶去query這個某個path的path_group_name屬性,這個會立刻現(xiàn)實類似S家的策略:所有的EP都是基于clock domain的,同時你也可以看到S家里邊熟悉的異步和clock gating 組,譬如下面的統(tǒng)計結(jié)果
【圖9】BGP按照clock domain進行隱性分組所以這個時候,用戶又可以用上述的path_group進行report_timing報告了,盡管你在get_path_group得不到上述的組。INVS這里有一次巧妙地利用了implicit的語境。
report_timing -path_group CLK_1
這個可以被是為BPG的隱形福利,這種處理方式較為方便用戶在使用BPG的時候查驗數(shù)據(jù)。
PG下的report_timing 命令使用
PG下,由于用戶都是使用了SDC標準的group_path命令,這個時候所有定義的組,在data path optimization和report_timing下都是完全統(tǒng)一的,這里就不做過多的贅述了。BPG對實現(xiàn)人員的啟發(fā)
INVS的BPG對于multi-clock per FF給出了比較好的解決方法。相較而言,后端工具更善于對單純的數(shù)據(jù)進行分析和優(yōu)化,過于復(fù)雜的環(huán)境處理的結(jié)果,經(jīng)測試明顯會變差不少,并且runtime 和area都變得更差一點。譬如下面的示例:
【圖10】設(shè)計里的timing path舉例FF0-> FF1/2/3 三條路徑都比較critical,直接的感官印象就是到FF1/2/3的timing 很差,如果只是簡單的基于FF1/2/3 三個EP分別做組,其實是不利于優(yōu)化的因為INVS每一次對HEPG的優(yōu)化都會把common path和local path推進一次,但是這兩類path是會互相牽制的。所以,簡單的單分組,并不能很好的解決這類問題。用戶還是需要順應(yīng)工具的特點進行約束規(guī)劃,從而得到自己期望的結(jié)果。
BPG和PG的融合使用
BPG符合INVS原生策略。但是由于INVS兼顧了SDC里的group_path的一些設(shè)定,所以會對用戶的report_timing系統(tǒng)帶來一些困惑,知識星球會提供一個具體腳本,使用一個腳本,可以在使用BPG的便利性的同時,也可以在兼顧report_timing報告的使用便利性【敲黑板劃重點】
BPG可以視為INVS的data path optimization的一個基礎(chǔ)起點,在大部分情況下會更好的體現(xiàn)INVS的優(yōu)勢,用戶需要理解其中的奧秘,靈活使用/切換BPG和PG系統(tǒng),找到適合自己設(shè)計的方式/流程。





