客户案例 网站设计wordpress的文件说明
今天给大家分享一个在高性能数字IC后端实现timing signoff阶段经常遇到的min period violation。大部分时候出现memory min period问题基本上都是需要返工重新生成memory的。这是非常致命的错误,希望大家在做静态时序分析时一定要查看min period violation。
什么是Min Period检查?
在.lib中,触发器、latch、Memory这些时序逻辑cell的clock input pin上会定义min_period属性来规定它上面时钟的最小周期。在这个例子中,时钟到达CLK pin的最小周期是1.258。
pin(CLK) {direction : input;capacitance : 0.046 ;clock         : true;min_pulse_width_low   : 0.126;min_pulse_width_high  : 0.056;min_period            : 1.258;
}
 
minimum_period的定义也可以在时序库lib中通过下面的方式来定义。
minimum_period() {
 constraint : 9.5; /* min_period */
 when : “SE”;
 sdf_cond : “SE == 1’B1”;
 }
在Innovus和Tempus中可以用命令report_constraint -check_type clock_period来检查min period问题,如果想得到详细的报告,我们可以加上-verbose选项
tempus > report_constraint -check_type clock_period -verbose
Check type : clock_period
---------------------------
Path 1: MET ClockPeriod Check with Pin ROM_512x16_0_INST/CLK
Ending Clock Edge:    ROM_512x16_0_INST/CLK (v) checked with trailing edge of 'm_clk'
Beginning Clock Edge: ROM_512x16_0_INST/CLK (v) triggered by trailing edge of 'm_clk'
Path Groups: {m_clk}
Other End Arrival Time         20.911
- ClockPeriod                   1.258
+ Phase Shift                  40.000
= Required Time                59.653
- Arrival Time                 20.926
= Slack Time                   38.727Clock Fall Edge                 20.000+ Clock Network Latency (Prop)  0.926= Beginpoint Arrival Time       20.926--------------------------------------------------------Pin                    Cell         Delay  Arrival  Edge  Time       --------------------------------------------------------ROM_512x16_0_INST/CLK  rom_512x16A  -      20.926   v  -------------------------------------------------------- 

Min Period Slack的计算公式如下:
Skew = launch edge arrival – capture edge arrival
 Skew = 20.926-20.911=0.015
Slack = Clock_period – min_period constraint – Skew + CPPR
Slack = 40 - 1.258 - (0.926 - 0.911) + 0
 Slack = 38.727ns
这个报告也可以通过下面的命令指定Clock pin来得到:
report_timing -check_type clock_period -to $sequetial_cell/CLK
Innovus/Tempus中Pin/port上的clock-period检查
report_constraint命令对于指定Pin/Port的检查只支持DRV的检查,如果report_constraint后边制定了特定的Pin/Port而没有加drv_violation_type 选项,那么工具会报告下面的Warning:
**WARN: (TCLCMD-1470): Pins/ports are only supported with ‘-drv_violation_type’ option
Min Period Violation如何修复?
在STA 阶段如果有clock min period 的violation, 可以从以下几方面入手:
1)check 是否有clock 的分叉点,如果有是否可以尽量把分叉后的path 做短;
 2)修clock transition, 更小的transition 对应的clock min period 要求更小;
 3)check clock path 上是否有crosstalk, 如果有,修干净;
 4)使用HS Memory替代HD Memory(使用Low VT的Memory);
 5)把一颗Memory拆成若干颗小的Memory,可以拆地址和数据位
