本公眾號秉承「越分享越有價值,越分享越幸運」的理念,致力於數字IC後端實現方面(涉及邏輯綜合,布局布線,靜態時序分析,物理驗證等)的技術經驗交流和分享。目前短期計劃是每周更新兩篇技術乾貨分享,年度目標是實現2018年度發表100+篇技術原創文章。
同時,小編也開通了知識星球,滿足部分粉絲特別的需求(比如平時技術上或者職業規劃等方面有比較多的困惑)。歡迎有興趣的朋友加入。另外明天星球上會發布高性能CPU模塊的設計實現教程。
吾愛IC社區公眾號之前推送過一篇文章,簡單分享過LOCKUP LATCH的概念及其應用。今天將帶大家深入來了解Lockup latch實際的應用。
聽說Latch可以高效修hold違例(Timing borrowing及其應用)
如下圖所示,DOMAIN1和DOMAIN2分別為兩個clock domain,在func mode下兩個domain不存在相互交互的path。因此,在做時鐘樹綜合(CTS)時,會各自獨立長clock tree,即他們之間的clock latency可能存在較大的差異。在func模式下不會有任何問題。
但是,在做DFT的時候,我們將DOMAIN1和DOMAIN2的寄存器串在一條鏈上了。在scan shift時是有問題的。他們之間是需要做hold check(比如DOMAIN2的clock latency比較長)。對應的setup和hold檢查波形圖如下圖所示。從波形圖中得知,hold violation比較大。為了解決這個較大的hold violation,需要在DOMAIN1和DOMAIN2之間插入LOCKUP LATCH,從而改善較大的hold violations。
Positive or Negative Level Latch?這種情況需要加一個低電平傳輸的Lockup Latch。也是最常見的case。
這種情況無需加Lockup Latch。
這種情況需要加一個高電平傳輸的Lockup Latch。
這種情況留給各位思考,自己畫波形圖就可以知曉
深入淺出講透set_multicycle_path,從此徹底掌握它
這裡以第一種情況為例(即Launch flipflop和capture flipflop均是正沿觸發的情況)。通過以上的分析得知,需要在這兩個domain之間加Lockup latch,才能夠顯著減少hold violations。那麼問題來了,這個Lockup latch應該加在靠近Domain1,還是靠近Domain 2?
將Lockup latch加在靠近Domain2中後的簡易電路結構如下圖所示。由於時鐘樹綜合階段工具會做將 Lockup latch和Domain2中的寄存器做balance,因此clock skew會比較小,這裡假設skew為0。對應的setup和hold檢查波形如下圖所示。
從波形圖中得知,Domain1中的DFF到Lockup latch的並沒有改善(與之前Domain1中DFF和Domain2中DFF的hold一樣大)。因此,這種Lockup latch加的方式是不正確的。
將Lockup latch加在靠近Domain1中後的簡易電路結構和波形圖如下圖所示。
從波形圖得知,Domain1中的DFF到Lockup latch的hold明顯得到了改善。同樣Lockup latch到Domain2中的DFF的hold也沒有問題。雖然setup檢查變嚴格了,但是由於scan模式下,scan clock 是低速的。所以setup也沒有問題。
眾所周知,傳統修hold violation的方法就是插buffer。理論上當你的hold violations比較大的情況,都可以採用insert Lockup latch的方法來解決(Func下慎重,需要確認不影響邏輯功能)。比如在某個endpoint點存在1ns hold violation,此時你可能需要在這個endpoint上插幾十個甚至上百個hold buffer。這種方式解決hold violation存在以下幾方面的弊端。
Hold buffer太多,可能導致routing congestion問題
Hold buffer太多,可能導致power consume問題
由於large skew和OCV效應,timing在各個corner下variation會比較大,容易導致setup和hold衝突
關於setup和hold衝突的解法方法,會推送在小編的知識星球上。有需要的可以關注起來。
Clock skew特別大,往往是由於前端設計時,時鐘結構規劃不合理導致的。比如scan clock和func clock太早分開。一方面可以通過前期更改時鐘電路結構。另一方面可以後期Timing fixing階段通過ECO方式加入Lockup latch。關於如何做這種ECO留給各位思考,其實很簡單。
在吾愛IC社區之前推送的關於時鐘樹綜合的分享中,提到想得到一個比較好的,比較小的clock skew,一定要將uncommon clock path做到最短。Uncommon clock path越長,受OCV的影響越大,不同corner下variation越大,hold越不好收斂。
數字後端設計實現之時鐘樹綜合實踐篇
小編知識星球簡介:
在這裡,目前已經規劃並正著手做的事情:
在這裡,各位可以提問(支持匿名提問,提問從此不再害羞),小編會在24小時內給予解答(也可以發表你對數字後端設計實現中某個知識點的看法,項目中遇到的難點,困惑或者職業發展規劃等)。
反正它是一個縮減版的論壇,增強了大家的互動性。更為重要的是,微信有知識星球的小程序入口。星球二維碼如下,可以掃描或者長按識別二維碼進入。目前已經有十八位星球成員,感謝這十八位童鞋的支持!歡迎各位鐵桿粉絲加入!(星球的門檻將越來越高,成員滿20後,由目前的128元調整為168元)
相關文章推薦(不看保證後悔)
深度解析Create_clock與Create_generated_clock的區別
盤點數字後端設計實現用到的各種文件
clock jitter是否對hold time有影響?(文末有福利)
為什麼時鐘樹上要用clock inverter(min pulse width check)
LVS 就是這麼簡單!(數字後端物理驗證篇)
揭秘為何net delay是負值(數字後端實現時序篇)
PBA(Path Base Analysis)想說愛你不容易(靜態時序分析基礎篇)
一網打盡時鐘樹綜合Clock Skew
數字後端設計實現之時鐘樹綜合實踐篇
【驚呆了!】你居然還在用flatten方式進行timing signoff
數字後端面試問答No.16-18
合理的時鐘結構能夠加速Timing收斂(時鐘樹綜合中級篇)
數字後端面試問答No.13-15(每日三問)
【機密】從此沒有難做的floorplan(數字後端設計實現floorplan篇)
數字後端面試問答No.10-12(每日三問)
數字後端面試問題No.7-9(每日三問)
聽說Latch可以高效修hold違例(Timing borrowing及其應用)
15天零基礎入門到精通python-最全的視頻教程
數字後端面試問答No.4-6(每日三問)
IR Drop分析之Redhawk分析流程
CRPR能補償crosstalk嗎?
原來電路最高工作頻率是這麼算出來的(STA基礎篇)
數字後端面試問答No.1-3(每日三問)
秒殺數字後端實現中clock gating使能端setup violation問題
教你輕鬆調DCT和ICC之間Timing與Congestion的一致性
數字晶片設計實現中修復setup違例的方法匯總
數字IC設計中ECO的那些事,其實並不是事!
Scan chain reordering 怎麼用你知道嗎?
如何評價數字後端設計中floorplan的好壞?
數字後端實現時congestion比較嚴重,你hold得住嗎?
數字後端實現place過程進階
Final netlist release前,你應該做好哪些工作?
基於Physical Aware的動態功耗優化實現方案
深入淺出講透set_multicycle_path,從此徹底掌握它
【大師必備】最全的數字IC設計經典書籍電子版下載
你與數字後端大神的差距在這裡,快來瞧瞧!
數字後端實現時congestion比較嚴重,你hold得住嗎?
時鐘樹綜合(clock tree synthesis)基礎篇
【福利】數字IC後端各種Userguide下載
好了,今天的碼字就到這裡了,原創不容易,喜歡的可以幫忙轉發和讚賞,你的轉發和讚賞是我不斷更新文章的動力。小編在此先謝過!與此同時,吾愛IC社區(52-ic.com)也正式上線了。吾愛IC社區(52-ic.com)是一個專業交流和分享數字IC設計與實現技術與經驗的IC社區。如果大家在學習和工作中有碰到技術問題,歡迎在微信公眾號給小編留言或者添加以下幾種聯繫方式進行提問交流。
打賞的朋友,請長按下方二維碼,識別小程序進行打賞,歡迎砸錢過來!小編晚飯能不能加個雞腿,全靠它了,呵呵!
作者微信: