什麽是CTS?
為什麽妳想做CTS?
什麽時候做CT?
怎麽做CTS?如何對CTS結果進行質量保證?
以上問題看似簡單,但真正能回答好的工程師並不多。CTS是面試官在招聘數字IC後端工作時比較喜歡問的壹塊,因為從應聘者回答問題的廣度和深度可以看出,他們壹般都知道對方的水平。
PS:正處於壹年壹度的跳槽高峰期。如果妳有技術問題或者工作選擇問題,可以私信我(ic-backend2018),免費。能幫忙的會盡力幫忙(知識星球會員特權)。
所以,希望妳能多思考壹下上面的問題,尤其是最後壹個問題,如何做好中旅?千萬不要告訴面試官妳設置了哪些參數,執行了哪個命令。
時鐘插入延遲(時鐘樹延遲)最短。
時鐘樹越長,時鐘樹系列越長,系列越長,樹上的功率越大。同時,受OCV效應的影響,時間安排更加難以滿足。
以上圖為例。如果PLL位於右下角,而觸發器位於左上角,則觸發器的時鐘樹延遲將是最長的物理延遲。因為它必須與其他觸發器保持平衡,所以其他寄存器也會被加長。
問題:假設核心中間區域有壹堆翻牌樹,會有什麽影響?
如果把PLL放在中間位置,左上角的壹部分標上軟塊,如下圖所示,整個時鐘樹延遲會降低很多。
最近知識星球上有個星友問,內存之間狹窄的通道能不能放寄存器。理論上各種通道都可以放寄存器,但是在深內存文件的情況下,從CTS的角度來說,最好不要放寄存器,因為通道中的寄存器可能會拖累整個時鐘樹。
因此,CTS友好的平面布置和布局非常重要,它直接決定了CTS的質量。
時鐘偏斜最小值
請參閱本文了解時鐘偏差的概念。為什麽要註意時鐘偏差?如何讓小時鐘歪斜?時鐘偏斜如何影響建立和保持?
大多數情況下,我們希望時鐘偏斜盡可能小,因為這有利於建立和保持。
但是有時候我們會想,引入壹定的時鐘偏斜,比如S tools的CCD,可以充分利用前後的時序余量來改善時序。例如,從IR Drop的角度來看,我們不希望寄存器同時翻轉。
違反設計規則(DRV)
DRV主要指max_transition、max_cap和max_fanout。前兩個是硬性條件,必須在簽署階段滿足。
公共時鐘路徑盡可能長。
當時鐘樹延遲的長度固定時,公共時鐘路徑應該盡可能長,以便CRPR補償越多,就越有利於定時。
非公共時鐘路徑應盡可能短。
多級時鐘門控
從功耗的角度來看,我們希望時鐘門控單元盡可能靠近根,並且大部分寄存器應該由時鐘門控單元控制。然而,當ICG被放置在根端附近時,ICG使能端的設置很容易出現問題。
時鐘門控克隆/時鐘門控分裂
在做CTS時,PR工具不僅可以做時鐘門控的合並操作,還可以做克隆和拆分操作。上面,我們討論了CTS階段的最短非公共時鐘路徑,因此在許多情況下可以通過克隆時鐘門控來實現。
時鐘占空比
占空比問題的主要原因是單元的上升延遲和下降延遲之間的不平衡。所以我們在做CTS綜合的時候,經常使用時鐘反相器作為時鐘樹。
時鐘信號完整性
為了保證時鐘信號的質量,在信號路由前會纏繞時鐘網,並為其設置NDR。必要時,時鐘網絡將被屏蔽。
定制時鐘樹綜合
簡單設計的話,也許clock_opt -cts或者ccopt_design -cts可以把樹做好。但是對於時鐘結構復雜的SOC設計,是否可以直接執行命令做壹棵樹?
顯然妳不能。
壹般中等規模及以上SOC芯片的時鐘樹綜合需要編寫時鐘樹約束文件。因為時鐘太多,工具很難處理,尤其是壹堆時鐘mux操作的時候,工具往往會把樹做得很長。工具難做,樹做不好的主要原因是時鐘結構比較復雜,其復雜程度超出了它的能力。
CTS約束的編寫方法
如果我們可以拆分時鐘結構,並清楚地告訴工具,那麽它仍然可以做得非常漂亮。當然這個前提是妳得了解整個芯片的時鐘結構。
畫時鐘結構圖和寫時鐘約束文件都是數字IC後端工程師的必備技能,當然也是非常核心的技能。如果能很好的掌握這個技能,是不是整個數字IC後端的設計和實現難度更大了?
這裏結合上圖所示的案例,分析壹下如何寫壹個時鐘約束文件。
首先,整個芯片的時鐘路徑可以分為三個部分。第壹部分是->晶體振蕩器;PLL,第二部分是PLL->;時鐘GEN,第三部分是分頻器的輸出->;各功能模塊。
其次,明確了CLOCK Gen模塊是用來產生各種分頻時鐘信號的,它不會和其他邏輯直接交互。因此,該模塊中的寄存器與其他寄存器是異步的。
最後,整理出每個時鐘路徑的端點和時鐘異常,比如浮動管腳、排除管腳、不停止管腳、斷開壹些不需要經過mux的時鐘等等。
轉自:數字IC後端時鐘樹集成CTS技術經驗分享(高薪必備!)-智虎(zhihu.com)