https://alidocs.dingtalk.com/i/nodes/Xzr6RBgD3LYJnLZm0LM9WZPnyElvd7e9# 「Hold Violation位置轉移大法」 這篇時鐘樹綜合干貨已經分享五年了,而且自2018年小編在公眾號和知識星球上也分享過無數個時鐘樹綜合的經典案例。不知道各位老讀者朋友,當你們拿到一個設計時你是否可以很輕松把設計的時鐘結構圖畫出來,并編寫好你的CTS Constraint(Clock Tree Spec)? 針對設計中不合理的時鐘結構,你們是否可以在早期發現并讓他們做相應的修改呢? 如果你認真研究這個方向,五年時間真的足夠讓你成為這個方向或專題的專家了。 最近收到社區很多會員的提問,發現很多同學對當年的這份教程仍然存在一定的困惑。今天小編特地抽空整理了兩個時鐘樹綜合的案例,對整個長tree的細節做一些討論,希望能夠幫助到大家。如果覺得有用,請幫忙分享給更多需要幫助的朋友。 【案例一】設計中有三組寄存器組,分別是Register Set1,Register Set2和Register3。func時鐘和測試時鐘tck1通過MUX1來進行時鐘切換,然后再經過一個二分頻電路,再送到后面的Register Set2。 很顯然,Register Set2的時鐘邏輯路徑是最長的。這里我們假定這些寄存器也是被擺放至離時鐘root最遠的位置。 想成為數字IC時鐘樹綜合(clock tree synthesis)專家,建議好好看看這個! 所以,當我們長func時鐘的clock tree時,物理位置最遠的clock path一定就是func到Register Set2中某個寄存器時鐘端的路徑。而且Register Set1的clock tree也會因為clock balance需求,工具會在MUX1的輸出端和Register1之間加入較多的Clock Inverter Pair。 https://alidocs.dingtalk.com/i/nodes/QjXmLRyz4G5VGbkaLzq7WZpaD19v6NK2# 「Innovus中獲取物理位置最遠的clock tree path腳本」 【思考題】工具能否在MUX1的D0端插balance inverter呢?為什么? 我們發現這樣做之后tck1的clock tree就會比較長。那我們提出了一個改進的方案,即克隆一個Clock Mux,具體如下圖所示。 改進后的方案當長func時鐘時,Register Set1因balance需求可以在Clock MUX的D0端插clock inverter pair。而長tck1的clock tree時走的是Clock Mux的D1端。 另外,有同學問到,克隆Clock Mux的S端是不是和原來的Clock Mux接同一個信號?當built func_clock_tree時候,應該也會將寄存器組2和寄存器組3做平衡? S端是需要接同一根信號。其實func時鐘只帶了Register1和Register2。所以在func模式下只有它們兩個寄存器組需要做balance。而Register3和它們是異步的關系。 這個案例中如果我們長tree時是在分頻寄存器Q端定義的create_clock,那么結果一定是災難性的——Register Set2的所有clock tree都會missing掉。 關于如何在設計中去自動化檢查missing clock tree的情況,小編提供了一個自動化的檢查腳本,具體看下面這份教程。 https://alidocs.dingtalk.com/i/nodes/7NkDwLng8Zz74aAPFgeGjpzk8KMEvZBY# 「Innovus檢查遺漏clock tree的golden腳本」 【案例二】設計中有三大數字IP,分別為IP1,IP2和IP3。其中SCAN_MUX的I1端被我們設置了set_clock_sense -stop_propgation(設置disable pin也是類似效果)。 關于clock sense命令的用法和工具是如何把clock sense轉換成clock tree spec文件,可以查看上周公眾號的技術推文。 數字IC后端實現時鐘樹綜合專家必備(第十九期IC訓練營3月15號開營) https://alidocs.dingtalk.com/i/nodes/7Y36k14mK9AV34zO7lw1J5NqapjblR2D# 「SDC約束和Clock Tree Spec到底是如何關聯的?」 對于這個案例我們應該如何長clock tree呢? 首先,在考慮如何長時鐘樹前,我們需要有下面幾點的認知: 第一,這個時鐘結構圖必須是我們后端工程師自己trace畫出來的。 第二,從結構圖上得知,三大數字IP是需要做同步的。 第三,IP1的clock tree長度很可能會直接決定CLOCK ROOT這個時鐘的時鐘平均長度。 第四,SCAN_MUX的D0和D1的clock tree長度大概率會不一樣長,這就會出現func和scan mode下IP1的clock tree長度不等長的情況。 有了上面幾點認知后,我們接著分享小編一直推崇的分段長tree法。 我們把整個Clock Tree拆分成兩大端。第一段是從Clock ROOT到各個ICG的時鐘端,第二段是從ICG的輸出端到達各個IP的時鐘端。具體如下圖所標注。 這里需要注意的是第二段做tree時需要給IP2和IP3設置一個特殊的insertion delay值。 https://alidocs.dingtalk.com/i/nodes/Z0LYK27vwxp80jZEbo5nVo5Olb4md9eP# 「如何做短某段clock tree path(快速時鐘樹綜合方法)?」 手把手教你分析時鐘樹綜合的log(附社區歷史干貨合集等福利) 而且SCAN MUX的D1端的insertion delay值需要根據上面第四點得知的clock tree差值來設置。這樣就可以確保整個設計中無論在func或scan模式下,setup和hold的timing都是比較理想的。 考慮到很多工程師在時鐘樹綜合CTS這塊還是比較薄弱,小編計劃近期開設社區的第三個訓練營課程——復雜時鐘結構的時鐘樹綜合訓練營。這個課程中的時鐘結構會比咱們公眾號上分享的還要復雜得多。這樣大家就可以有機會把小編平時分享的這些技術干貨應用到實際復雜項目中去。社區訓練營項目仍然是一如既然的干貨滿滿,而且項目本身都是公司實際項目。 另外,應部分讀者要求,小編今年計劃招收若干名弟子班學員啦!全網只招募5個學員,所有學員需要通過一次電話面試才可以報名,報名有審核機制。服務有效期為一年時間,一整年均可以使用我們提供的服務器。弟子班具體權益見下方介紹。這其中的每個課程都可都是一個訓練營課程。 1)八大課程權益
2)一年10次一對一線上/線下技術指導,每次2小時 3)鏈接更多行業資深專家 4)就業推薦及資源對接 目前正在開的有第一個和第三個課程。這里面的八個課程都可以單獨報名,有需要的都可以私信小編(微信:ic-backend2018)進行預約。社區第二期低功耗頂層設計實現訓練營正在火爆預約中! 頂層Top Hierarchy Flow中的IO時序優化(高端IC后端訓練營即將開營啦?) |
|