静态时序分析—脉冲宽度检查(Pulse Width Check)
min pulse width直譯為“最小脈沖寬度”,脈沖寬度檢查用來確保時序單元輸入引腳的脈沖寬度滿足最小要求。如果時鐘引腳上的脈沖寬度小于指定的最小值,時鐘可能沒有正確的鎖存數據。
1.約束方式
1)sdc?
set_min_pulse_width -low/-high 2.0 [get_clocks clk]
2)timing library
2.計算方法
脈沖寬度檢查分為高電平和低電平脈沖寬度檢查兩部分。
1)高電平脈沖寬度檢查
close edge clock latency - open edge clock latency - required pulse width(high) =
(時鐘初始下降沿時間?+ 下降沿到達clock pin的clock network latency + CPPR - uncertainty(hold) ) - (時鐘初始上升沿時間?+ 上升沿到達clock pin的clock network latency) - required pulse width(high)?
舉例如下:
這里:
時鐘源頭起始下降時間=59 ns
時鐘源頭起始上升時間=0 ns
這里:
下降沿到達時序邏輯clock pin 的時間=1.77ns
上升沿到達時序邏輯clock pin 的時間=2.06ns
CPPR (clock reconvergence pessimism)=0.19ns
hold uncertainty=0.22ns
required pulse width(high)=0.12ns
所以高電平脈沖寬度檢查的值為(59+1.77 +0.19?-0.22) - (0+2.06)-0.12=58.57
2)低電平脈沖寬度檢查
open edge clock latency - close edge clock latency - required pulse width(low) =
(時鐘周期 + 時鐘初始上升沿時間?+ 上升沿到達clock pin的clock network latency + CPPR - uncertainty(hold) ) - (時鐘初始下降沿時間?+ 下降沿到達clock pin的clock network latency) - required pulse width(low)?
舉例如下:
這里時鐘周期+初始上升沿時間,即為第二個周期上升沿時間,等于531ns。
下降沿到達時序邏輯clock pin 的時間=1.84ns
上升沿到達時序邏輯clock pin 的時間=1.74ns
CPPR (clock reconvergence pessimism)=0.18ns
hold uncertainty=0.22ns
required pulse width(high)=0.12ns
所以低電平脈沖寬度檢查的值為(531+1.74+0.18?-0.22) - (295+1.84)-0.12=235.74
3.解決方法
針對clock path可以:
1)縮短clock path(換LVT,修transition,調整clock pin靠近clock root);?
2)換inverter長tree(成對的inverter上升時間與下降時間相互補償)或者balance buffer(上升時間和下降時間幾乎相等);
3)修crosstalk的Delta delay(主要的min pulse width問題來源就是crosstalk,Delta delay讓一邊latency更短,另一邊更長)
4)用非對稱cell 如normal buffer 來修只對high-pulse width或low-pulse witdh 一個方向的violation。
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的静态时序分析—脉冲宽度检查(Pulse Width Check)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bootstrap蓝白色单页个人网站模板
- 下一篇: 如何使OKR可衡量