HFNS
HFNS即(Hign fanout net syntheis),在開始cts之前需要做這個步驟(這一步包含在placement之中)。
為什么要做這一步, tool做tree也會盡可能讓timing 收斂;在route之前tool使用early global route的方式去評估繞線對timing的影響;fanout會影響繞線的RC以及輸入Cap,這對timing有較大影響,如果不提前做HFNS,可能導致cts看的timing不準,后續(xù)修復難度大。
optimize directive
長樹cell策略:使用BUF(包括普通BUF和CKBUF)還是INV(包括普通INV和CKINV);還是INV和BUF混合使用。
Don’t use:禁用某些lib cell,例如驅動過大過小的cell,或者某些容易引起IR drop(或者某些物理DRC)的cell。
Size only:一般繼承自前端,針對某些提前例化的cell。
CTS routing rule
時鐘樹從root到leaf可以分為三部分,可以分別設置不同的NDR rule。另外,同一個design中不同的clock也可使用不同的NDR rule。
NDR rule可以使時鐘樹對EM更不敏感、對cross talk更不敏感、可以減少insertion delay(net delay大幅減?。?/p>
Clock tree synthesis
CTS幾乎是PnR中最重要的一個step,這直接關乎整個design的timing質量和power情況。因為時鐘樹是以一個較長的cell鏈的形式存在,那么相對于reg2reg路徑本身不那么長,而且比較容易被gating??;所以時鐘樹上的power消耗比較大,一般約占整個design power的30%-40%。一般可以通過cloc gating和clock結構調整等方法優(yōu)化時鐘樹質量。
CTS的輸入件
庫文件:tech file(或tech lef)、Netlist & Placement def(或者placement database)、SDC、libarary files(.lib & .lef )、TLU+ file(或cap table 或qrc tech file)。
Clock spec file:insertion delay、target skew、clock transition、clock cell、NDR rule、CTS tree type、CTS exception(例如stop pin等);等。
CTS目標
CTS Latency & Dealy
CTS主要關注的指標
Skew:分為global skew和local skew,體現(xiàn)時鐘是否做平。
Power:時鐘樹power決定了design的能效情況。
Noise:時鐘樹對noise敏感,因為時鐘樹如果電平不穩(wěn),可能導致大量reg的狀態(tài)不確定。
Delay:滿足spec和timing情況下,clock不宜太長。
Clock uncertain
包括clock skew和clock jitter。
Clock tree Exception
Non-Stop pin、Exclude pin、Float pin、Stop pin、Don’t touch sub-tree 、Don’t buffer net、don’t size net。
CTS策略
CTS輸出件
Timing 報告、Congestion 報告、skew report、Insertion delay report、latecny report、CTS def file等。
CTS核心命令
以Innovus為例。
create_clock_tree_spec:根據(jù)user設置的各種configuration settings生成design的clock network。
ccopt_design:在前述步驟的基礎上進行時鐘網絡優(yōu)化。
為什么有時要帶多corner做tree
因為不同corner的delay計算是不一樣的,在某個corner下做平的tree換成另一個corner可能就不平了;如果critical corner不止一個,那么顯然用單corner做tree是有風險的。
部分參考文獻
https://ivlsi.com/clock-tree-synthesis-cts-vlsi-physical-design/
https://chipedge.com/what-is-clock-tree-synthesis/