0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

我們如何來修復setup violation?

數字后端IC芯片設計 ? 來源:未知 ? 作者:李倩 ? 2018-10-04 15:06 ? 次閱讀

對于setup violation,大家一定都非常熟悉,網上也有很多相關的資料。今天我們來介紹下對于項目后期ECO階段,我們如何來修復setup violation.

首先我們來回顧一下setup的定義,簡單來說,setup檢查是為了檢查數據傳輸不能太慢,否則,在目的寄存器的capture edge不能正確的鎖存數據。如下圖所示:

用公式簡單表示為:

Tlaunch為launch clock path delay

Tcapture為capture clock path delay

Tdp為data path delay

Tcycle為時鐘周期

詳細公式可以查看下列文章

【時序分析基本概念介紹

上述公式成立就代表setup沒有violation,因此我們可以知道修復setup的主要方法有以下三種:

1. 減小data path的delay

這是我們經常使用的修復setup的方法,但實際上,setup不好修的原因也是在于我們需要在data path上做減法,和hold相反,一般來說,把path變短總是要比把path變長困難許多,這邊列舉了一些經常使用到一些減小path delay的方法。

1) Vt Swap

通常是指選用Vt更小或者channel length, 一般的,同一種cell會分為HVT, RVT, LVT, SLVT。他們的速度大小按快到慢依次排列為SLVT, LVT, RVT, HVT。 功耗大小正好相反。每種VT cell又會分為不同的channel length,比如C20, C24, C28,C32。 數值越高,速度越慢。因此,在項目功耗允許的前提下,我們可以采用Low Vt的cell來替換High Vt的cell,或者選用小的channel length的cell。 這是修復setup最簡單也最常用的方法。

2)插入BUF

Setup violation其實絕大部分原因是由于drv造成的,我們知道,cell的delay其實是根據它的input transition,以及output load查表計算得來。因此,我們解決了cap和slew的問題,timing其實自然也得到了解決。那drv的問題,很多一部分我們可以通過插入buf來修復,比如net連接得太長導致驅動變弱,可以插入buf打斷net,來提高驅動;fanout太大,也可以通過插入buf來減少fanout數目。

3)Size up cell

這其實也是一種修復drv的手段,如果某個cell的驅動能力太弱,比較容易產生比較大的delay,因此我們可以通過size up這個cell來提高驅動能力,比如X1的BUF換成X4, X8的等。

但是我們在size up cell前也需要注意該cell的輸入/輸出transition的變化情況,因為驅動能力強的cell,它本身的load會比較大,可能會造成前一級cell驅動不了它的情況,所以實際的data path情況會比較復雜,不一定換大驅動的cell,delay就會變小。

一般情況下,如果我們看到某個cell的output transition比input transition大很多,那說明這個cell的驅動不夠,我們可以嘗試size up一下。如下圖所示:第一個X1的INV input transition是18.051,而輸出transition是66.328。明顯地時X1的INV推不動下面的14個fanout,可以考慮提高將X1的INV換成驅動更強的cell。

4)Layer assignment

這也是經常使用的一種手段,通常來說,高層金屬電阻較小,net delay也較小。這種現象在先進工藝中更常出現。我們可以將繞在低層的net,刪除wire后,設置繞線屬性,讓它繞在高層。

2. 增加capture clock path delay

這也是經常使用的一種修復setup的方法,也就是我們經常說的手動useful skew的方法。如果我們發(fā)現在data path上沒有可以明顯減小delay的地方時,我們可以采用在capture clock前墊clock buf的手段來增加capture clock path delay,從而起到修復setup violation的目的。

但是,由于這樣會動到clock path,所以我們墊buf前還是需要很謹慎的。首先我們得確保從capture clock出發(fā)的下一級path是不是有setup slack margin,同時,檢查一下到當前該級register的input pin上的有沒有hold margin。

3. 減小launchclock path delay

這也是動clock path來修復setup violation的一種方法,不同的我們需要減小launchclock path delay。 這類方法在平時是很少使用到的,原因也是因為減小path delay是很困難的,更何況clock path上用得一般都是最快的cell。理論上我們可以減小clock path的級數來實現,但實際操作起來還是要分析清楚clock的結構。

上述就是一些修復setup violation的理論手段,在實際的ECO過程中,我們考慮得更多的是,如何提高修timing的效率? 畢竟如果timing path fail較多的話,手動修復是極其費力費時的一件事情。

一般signoff工具或者第三方的ECO工具都會自帶timing eco的功能,可以先做幾輪。 到工具修不動時,可以分析下timing報告,同時應該要通過腳本處理自動產生一個Vt Swap的ECO腳本。因為,Vt Swap動的東西最少,甚至不需要重新eco route和抽spef,直接在signoff工具可以重新報timing看修復結果。

至于剩余的需要手修的path,照著timing report修復時,需要注意以下幾點:

1)檢查timing path的hold margin。 需要注意的是,一般setup的violation在SS corner下,而hold則出現在FF的corner下面,兩者之間有3倍左右的timing variation。所以,檢查margin時需要考慮不同的corner影響。如果設計頻率過高的話,可能會出現setup和hold相互打架的情況,這時可以考慮提高net delay占的比重,修出margin。

2)盡量動靠近endpoint的cell。因為越往path后面的cell,影響的path數目越少。但有時還是需要考慮path分叉情況再決定修復的方法。

3)修完所有path后,需要在PR工具中對動過的cell重新擺放以及route。

相比hold來說,setup要難修很多,大家在掌握修復方法以后,應該進一步考慮如何通過腳本來提高工作的效率。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5271

    瀏覽量

    119648
  • Setup
    +關注

    關注

    0

    文章

    30

    瀏覽量

    11953

原文標題:Less is more——如何修復setup violation?

文章出處:【微信號:IC_Physical_Design,微信公眾號:數字后端IC芯片設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    積分如何來的啊

    積分如何來的啊
    發(fā)表于 02-05 18:39

    2018年IC設計企業(yè)筆試題01英偉達Nvidia

    筆試真題:1、什么是建立時間、保持時間,如果setup time violation或者hold time violation 應該怎么做?(10分)答案:建立時間:是指在觸發(fā)器的時鐘信號采樣邊沿
    發(fā)表于 11-26 14:39

    如何使用良好的RTL設計實踐進行修復

    the concepts of timing analysis such as setup hold time, skew , transport delay, other timing violation etc.
    發(fā)表于 02-14 08:16

    FPGA編譯在place步驟顯示“unusual high hold time violation detected”

    如題,FPGA編譯在place步驟顯示“unusual high hold time violation detected”,在place步驟會持續(xù)數小時,具體提示有"
    發(fā)表于 10-26 18:18

    MATLAB如何來設計濾波器

    MATLAB如何來設計濾波器,今天我們先來設計一些FIR濾波器。首先,我們打開MATLAB的help窗口,點擊Help->product Help1.jpg (72.14 KB, 下載次數
    發(fā)表于 08-17 07:29

    什么是Setup 和Holdup時間?

    什么是Setup 和Holdup時間? a) 什么是Setup 和Holdup時間?    建立時間(setup time)是指在觸發(fā)器的時鐘信號上升沿到來以前,數據穩(wěn)定不變的時間,如果建立時間不夠,數
    發(fā)表于 09-11 22:53 ?1.1w次閱讀

    net_framwork_setup

    net_framwork_setup,有興趣的同學可以下載學習
    發(fā)表于 04-27 17:12 ?9次下載

    pdf_setup

    pdf_setup bbv
    發(fā)表于 04-29 10:52 ?0次下載

    如何解決“access violation at address”錯誤

    “access violation at address”的意思是“在地址訪問沖突”,雖然具體意思不是這樣,但這個問題是Access Violation計算機用戶在運行的應用程序試圖存取時未被指定使用的存儲區(qū)出現的問題。
    發(fā)表于 09-14 18:01 ?3.6w次閱讀

    何來手動修復max transition和max capacitance

    對于這種情況,我們可以選擇在該instance的右邊插入一個buffer,由于buffer的驅動較強,所以讓它來驅動右邊的10幾個instance,這樣就能顯著降低fanout的數目,修復max transition的violation
    的頭像 發(fā)表于 11-02 17:06 ?2.2w次閱讀
    如<b class='flag-5'>何來</b>手動<b class='flag-5'>修復</b>max transition和max capacitance

    Setup軟件安裝可執(zhí)行程序工具免費下載

    消失的情況,一般是由于系統(tǒng)缺少此文件,下載setup.exe進行修復即可。setup.exe程序是對某些軟件、游戲、程序進行安裝時的必備工具!
    發(fā)表于 11-13 08:00 ?11次下載

    如何修復ECO階段的Noise Violation

    如下圖所示,有時候,這個毛刺信號比較小,可以忽略;但是,當毛刺信號足夠高而且持續(xù)時間較長,這就有可能導致邏輯功能發(fā)生變化,破壞了門電路所保存的狀態(tài),使得電路發(fā)生故障。因此,在最后timing signoff中,noise引起的glitch是我們必須要修復
    的頭像 發(fā)表于 01-14 13:55 ?7157次閱讀
    如何<b class='flag-5'>修復</b>ECO階段的Noise <b class='flag-5'>Violation</b>

    圖形界面介紹:GUI上的按鍵是Violation Browser

    我們可以通過Layout上的快捷菜單按鈕或者Tools下面的Violation Browser按鍵來打開它。如下圖所示:左邊layout圖中白色部分就是violation, 右邊f(xié)orm圖中就是對它的介紹
    的頭像 發(fā)表于 05-19 16:53 ?2544次閱讀
    圖形界面介紹:GUI上的按鍵是<b class='flag-5'>Violation</b> Browser

    通過解剖一個邊沿觸發(fā)器簡要說明setup和hold產生原因

    在后仿真過程中經常會遇到關于setup和hold violation的問題,但是關于setup和hold time的產生原因和由來很多人還比較朦朧,為此本文通過解剖一個邊沿觸發(fā)器簡要說明set
    的頭像 發(fā)表于 07-04 09:32 ?1437次閱讀
    通過解剖一個邊沿觸發(fā)器簡要說明<b class='flag-5'>setup</b>和hold產生原因

    什么是Setup和Hold時間?

    時鐘的上升沿之前,輸入信號需要穩(wěn)定在有效的數據值上的最小時間間隔。Hold時間指的是在時鐘的上升沿之后,輸入信號需要保持在有效的數據值上的最小時間間隔。這兩個時間要求是保證數據在電路中的正確傳輸和處理的關鍵。 首先,讓我們更深入地了解一下Setup時間
    的頭像 發(fā)表于 11-17 14:11 ?1866次閱讀