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

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


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





