发布时间:2025-12-10 11:24:08 浏览次数:4
min pulse width直译为“最小脉冲宽度”,脉冲宽度检查用来确保时序单元输入引脚的脉冲宽度满足最小要求。如果时钟引脚上的脉冲宽度小于指定的最小值,时钟可能没有正确的锁存数据。
1)sdc
set_min_pulse_width -low/-high 2.0 [get_clocks clk]
2)timing library
脉冲宽度检查分为高电平和低电平脉冲宽度检查两部分。
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
针对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。