靜態(tài)時序分中的case analysis傳播分析
掃描二維碼
隨時隨地手機看文章
在使用靜態(tài)時序分析工具的時候,通常會遇到case analysis的情形,但是由于時序分析工具的靜態(tài)分析屬性,工具會自動傳播case value,常規(guī)的時序分析命令不能很好的表達case value的形態(tài),這里介紹一種比較簡潔的方法來處理這類情形,閑言少敘,ICer GO!
case value的配置和傳播(propagation )
靜態(tài)時序分析工具對于SDC里邊的case analysis配置(set_case_analysis)會進行靜態(tài)傳播:
- 組合邏輯:Z <= A * B (與門)
- 如果A==0,B沒有case,則Z=0,case 傳播
- 如果A==1,B沒有case,則Z不確定,case 不傳播
- 時序邏輯:Q <= CP_edge * D
- 由于Q是一個CP的edge來傳遞D,并非直接的靜態(tài)傳播,所以無論CP/D被配置成何種case,都不會傳播到Q上。
基于上述原理,工具在對SDC進行分析的時候,會先把SDC里的case analysis進行傳播分析,而后會得到每一個被確定的case value,用戶可以使用使用下面兩種方法獲得設(shè)計中的case value (這里以S家的工具為例)
- report_case_analysis -all: 獲得數(shù)據(jù)庫中所有被施加(case analysis或者靜態(tài)傳播)的pin 和對應(yīng)的case value
- get_attribute [get_pin $pin] case_value: 獲得制定pin ($pin)上的case value
case value對于report_timing的影響
但是,基于靜態(tài)時序分析的原理,如果一個pin具了case value的屬性(0/1/rise/fall etc.),那么它就不具備時序傳播的屬性了。簡言之就是:case value會把timing arc的傳播結(jié)果所復(fù)寫,這樣會導(dǎo)致常規(guī)的時序分析命令沒法去報告具備case value上的路徑信息了(PS:這個也也符合常理,你都擁有靜態(tài)的case value了,那么時序分析也就沒有意義了)。如果用戶嘗試去報告這樣一個節(jié)點,通常會遇到下面的No paths的情形:

這個是因為EP上的常值導(dǎo)致的:
分析case value傳播(propagation )的正確方式
但是對于某些情形,用戶對pin上的case value有了疑問,這個時候就需要去查驗這個pin上的case 的傳播源頭(propagation source),用戶就需要跳脫傳統(tǒng)的report_timing指令,而換為使用下面的方法進行追溯了(trace)
對于需要當前數(shù)據(jù)庫中的某一個點的case value來源的需求,通常常值傳播是不能使用report_timing來報告路徑的,
- all_fanin -trace_arc enabled -to $input_pin:剔除case analysis影響下,返回所有enabled fanin 信息的一個集合
-
report_transitive_fanin -to $input_pin -trace_arc enabled:剔除case analysis影響下,返回enabled fanin 傳播路徑的細節(jié)
如果是為了追溯case value的傳播路徑,這里推薦使用第二個命令,示例如下:


對應(yīng)的transitive類似下圖:
當然,PT默認的報告只是打印了case的傳播路徑,但還不是很明顯的看到case的傳播影響,這里使用一個proc就可以生成下列的一個對用戶更為友好的報告:
從上圖可看到,這個case的源頭是來自于:mode/O的這個case,具體到transitive連接如下圖所示:
所以可以看到,PT提供了這個命令可以很好的trace case value的傳播,從而抵達實際驅(qū)動ff節(jié)點,對于用戶分析case value提供了跟多的選項,當然,proc的作用也是可以讓每個節(jié)點的case value直接輸出到report里邊,這樣就可以很好的去判斷case 的傳播路徑。
類似的,除過查看扇入fanin,PT也有提供扇出fanout的類似如下命令:
- all_fanout -trace_arc enabled -from $output_pin:剔除case analysis影響下,返回所有enabled fanout 信息的一個集合
- report_transitive_fanout -from $output_pin -trace_arc enabled:剔除case analysis影響下,返回enabled fanout 傳播路徑的細節(jié)
PS:具體PT的proc腳本會上傳到星球,請各位按需取拿
【敲黑板劃重點】
在大型芯片里邊的case 傳播會非常的復(fù)雜,很多時候不是很好分析,利用PT的命令結(jié)合自研proc,可以很好的追溯出case value的傳播路徑,以前可能需要用verdi查看的問題,從現(xiàn)在開始,就可以使用靜態(tài)工具進行高效分析了





