数字后端实现静态时序分析STA Timing Signoff之min period violation

今天给大家分享一个在高性能数字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.727
     Clock 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,可以拆地址和数据位

相关推荐
IC拓荒者17 小时前
数字后端零基础入门系列 | Innovus零基础LAB学习Day7
数字后端·数字ic后端·数字后端培训·innovus零基础lab·ic后端·时钟树综合·clock tree spec
IC拓荒者8 天前
数字IC后端实现Innovus |给各种IP子模块添加port buffer和antenna diode万能脚本
数字ic后端·ic后端实现·数字后端培训·antenna effect·ip guide buffer·io port buffer·innovus自动化脚本
IC拓荒者9 天前
数字后端零基础入门系列 | Innovus零基础LAB学习Day2
芯片设计·数字ic后端·innovus·ic培训·数字后端入门·innovus零基础lab
IC拓荒者12 天前
数字后端零基础入门系列 | Innovus零基础LAB学习Day1
芯片设计·数字ic后端·innovus·ic培训·数字后端入门
IC拓荒者1 个月前
英伟达NVIDIA数字IC后端笔试真题(ASIC Physical Design Engineer)
nvidia·数字ic后端·ic后端实现·ic秋招笔试·ic秋招·ic笔试真题·physical design
日晨难再4 个月前
静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(一)
数字ic·sta·静态时序分析
IC拓荒者5 个月前
数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析
数字ic后端·物理验证·数字后端设计·ic后端培训·calibre drc·drc violation·低功耗upf
IC拓荒者6 个月前
低功耗数字IC后端设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?
芯片设计·数字ic后端·数字后端培训·innovus·低功耗设计·ic培训·upf flow
日晨难再8 个月前
静态时序分析:SDC约束命令set_disable_timing详解
fpga开发·数字ic·sta·静态时序分析