如前文所述,CTS(不包括post-cts)主要包含三個部分:一是config setting,二是create_clock_tree_spec(長樹),三是ccopt_design(時鐘網(wǎng)絡(luò)優(yōu)化)。
下文是我從cts log中截取的一些選段,摘的不全,也不定對,主要是為了說明一下cts的過程。
PnR分place、cts、post-cts、route、post-route等步驟;但其實(shí)這些過程都是交錯在一起的。例如在logic synthesis和place階段可以使用early cts去評估ppa的;在place階段工具也會使用early global route進(jìn)行ppa評估優(yōu)化;cts階段其實(shí)也涉及place和route;route階段也會進(jìn)行place和route;cts階段還會單獨(dú)繞時鐘net。
config setting
1、設(shè)置active的path group(默認(rèn)不修IO path的hold)。
2、設(shè)置ocv系數(shù)和clock uncertain等
3、設(shè)置是否開啟useful skew
4、設(shè)置cts的ndr rule規(guī)則使用和clock tree的transition約束
5、設(shè)置長樹的cell策略
6、設(shè)置長樹的mode和corner
7、復(fù)位clock latency
8、設(shè)置don’t use, size_only等
9、report所有的config設(shè)置并生成報告,方便user檢查和回顧
create_clock_tree_spec
1、檢查power domain等信息
2、cts開始前做check_place設(shè)置,因?yàn)閜lace如果質(zhì)量不好,cts長樹看的ppa是準(zhǔn)確的
3、報告長樹的setting
4、報告長cts上的sink point數(shù)量和gate數(shù)量
ccopt_design
1、將樹重新合成到netlist中
2、將樹上的cell place好
3、開始early route
5、進(jìn)行place
6、更新route和place后RC參數(shù)
7、優(yōu)化wns
8、優(yōu)化tns
9、重新leagalize
10、優(yōu)化靜態(tài)功耗
11、優(yōu)化drv
12、重新leagalize
13、重新early route
14、完成優(yōu)化
15、寫出data base