文章目錄
- 前言
- 一、什么是 min pulse width?
- 二、為什么檢查 min pulse width?
- 三、如何設置 min pulse width約束?
- 1. 在sdc里面定義
- 2. library里面定義
- 四、如何檢查 min pulse width?
- 五、如何修復 min pulse width?
- 總結
前言
min pulse width 是對信號高電平或低電平脈沖最小寬度的衡量,通常都只針對clock path 做min pulse width 檢查。
一、什么是 min pulse width?
min pulse width ,全稱為最小脈沖寬度檢查。min pulse width用于檢查時鐘信號的波形是否處在一個合理的狀態。時序單元對時鐘的高電平和低電平的脈沖寬度有一定的要求,經過min pulse width檢查可以獲悉時鐘信號的最小脈沖寬度是否滿足了時序單元的要求。
二、為什么檢查 min pulse width?
一般情況下,由于cell本身的差異,rise和fall delay不相同,這樣可能會造成時鐘信號脈沖寬度減小。
如下圖一個周期為1ns,duty cycle 為50%的clock信號:
在經過一個buffer(rise delay: 0.05, fall delay:0.03):
clock信號波形變成如下圖所示:
假設一個占空比為50%的時鐘穿過一個buffer,該buffer的rise delay大于fall delay,則經過buffer后的脈沖寬度要比輸入時鐘小。如果時鐘信號經過一系列相同類型的單元,則時鐘信號的脈沖寬度將會持續減小。如果小于某個最小寬度,可能會導致器件不能正常的捕獲數據。
因此,在做timing分析時,我們是必須對cell的pin做min pulse width檢查。
三、如何設置 min pulse width約束?
min pulse width檢查設置通常有兩類方法:在sdc里面重新設置min pulse width約束或者直接使用library里面的設置。
1. 在sdc里面定義
指令如下(示例):
set_min_pulse_width 1.25 [get_clocks *]
或者指令如下(示例):
set_timing_derate -min_pulse_width 1.25
2. library里面定義
EDA工具也可以通過查找單元庫來獲取 min pulse width的閾值,在單元庫中,一般是以input transition 為index 的一張一維表。
一般情況下,如果要設置比lib里面更為嚴格的min pulse width檢查,需要在sdc里面重新設置min pulse width約束。
四、如何檢查 min pulse width?
因為library 中相應clock pin 上定義了min pulse width 屬性,或用命令set_min_path_width 設了約束,因此在做了CTS之后,則可以使用命令report_min_pulse_width 可以報出相應min pulse width check。
如上電路圖,我們想要計算ff2的clock pin的min pulse width check,采用report_min_pulse_width -path_type full_clock_expanded [get_pin ff2/CP],得到下面path路徑slack。
如果想要報出所有的min pulse width violation可以使用report_min_pulse_width -all_violators命令。
五、如何修復 min pulse width?
1.由于普通buffer上升和下降的delay不一樣,如果經過一連串的buffer的話,有時候會發生min pulse width的violation。因此,更加推薦采用clock inverter來取代buffer,相比buffer來說,inverter的上升和下降時間會相互補償,這樣就更容易避免min pulse width violation的產生;
2. 檢查是否有比較大的transition, 因為min pulse width的閾值在單元庫中一般是以input transition 為index 的一張一維表;
3. 檢查時鐘路徑是否用了相同閾值電壓(Vt)的的單元,是否用了時鐘單元(一般以CK或DCCK開頭),另外,對于先進工藝電路,一般時鐘路徑會使用低閾值電壓單元(ULVT);
4. 檢查是否有串擾,消除或者減少串擾引起的delta delay。
總結
最小脈沖寬度對數字電子設備的功能和性能至關重要,它直接影響設備的穩定度和精度,因此設計數字電子設備時,必須仔細考慮最小脈沖寬度,并確保信號始終保持在可接受范圍內。