数字后端实现静态时序分析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拓荒者1 天前
数字IC后端设计实现之Innovus place报错案例 (IMPSP-9099,9100三种解决方案)
数字后端·数字ic后端·ic后端培训·innovus零基础lab·innovus place·innovus零基础·scan chain
IC拓荒者2 天前
TSMC12nm工艺数字IC后端实现难点都有哪些?
数字ic后端·数字后端培训·calibre lvs·物理验证lvs·tsmc12nm·t12nm数字后端·double pattern
IC拓荒者5 天前
数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用
数字ic后端·数字后端培训·calibre drc·drc·innovus零基础入门·innovus drc·物理验证drc
IC拓荒者10 天前
数字IC后端设计实现之Innovus自动修复Min Step DRC Violation方案
数字ic后端·数字后端培训·calibre drc·innovus零基础lab·数字后端innovus·数字后端零基础·min step drc
IC拓荒者10 天前
Innovus Flexible H-tree and Multi-tap Clock Flow Lab实操系列教程(Day1)
数字ic后端·数字后端培训·时钟树综合·innovus零基础入门·flexible htree·clock tree·multi-tap clock
IC拓荒者11 天前
物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?
lvs·数字ic后端·物理验证·ic后端培训·calibre lvs·vnw vpw·衬底接触
IC拓荒者16 天前
数字后端零基础入门系列 | Innovus零基础LAB学习Day9
数字ic后端·数字后端培训·innovus零基础lab·数字后端innovus·数字后端零基础·后端零基础入门·innovus走线
IC拓荒者16 天前
物理验证Calibre LVS Debug案例之通过deleteEmptyModule解决LVS问题
数字ic后端·数字后端培训·数字后端入门·calibre lvs·empty module·t12nm lvs案例·物理验证lvs
IC拓荒者20 天前
数字后端零基础入门系列 | Innovus零基础LAB学习Day8
数字ic后端·数字后端培训·innovus·drc violation·数字后端入门·innovus零基础lab·route drc
IC拓荒者22 天前
DDRPHY数字IC后端设计实现系列专题之后端设计导入,IO Ring设计
数字ic后端·数字后端培训·ddrphy后端实现·ddr控制器·ddr接口dfi·数字后端实现