当前位置: 首页 > news >正文

数字后端实现静态时序分析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.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,可以拆地址和数据位

http://www.lryc.cn/news/462263.html

相关文章:

  • phpstorm+phpstudy 配置xdebug(无需开启浏览器扩展)
  • AI赋能安全运营 | 赛宁网安深度参与四川省网络安全沙龙
  • R语言中,.RData 和 .rds 的区别
  • python实现录屏功能
  • 酷克数据出席2024金融业数据库技术大会
  • find_library、pkg_check_modules、pkg_search_module的区别
  • 多jdk版本环境下,jenkins系统设置需指定JAVA_HOME环境变量
  • Java mybatis day1015
  • 音乐播放器项目专栏介绍​
  • 如何修改SpringBoot内置容器默认上下文
  • R语言详解predict函数
  • QT 实现随机码验证
  • 集合框架12:Set集合概述、Set接口使用
  • 如何打开荣耀手机的调试模式?
  • Meta新模型Dualformer:融合快慢思维,推理能力媲美人脑
  • CDGA|数据治理:如何让传统行业实现数据智能
  • Spring源码5.2.9 编译踩坑
  • 【前端】如何制作一个自己的网页(5)
  • Unity实战案例全解析 类宝可梦回合制的初级案例 源码分析(加了注释和流程图)
  • AI绘图大模型 Stable Diffusion 使用详解
  • es索引库操作和使用RestHignLevelClient客户端操作es
  • 安卓数据共享
  • Gin框架操作指南02:JSON渲染
  • 【随手记】MySQL单表访问方法
  • 机器学习:情感分析的原理、应用场景及优缺点介绍
  • 基于SSM的医院药品管理系统
  • 特征融合篇 | YOLOv10 引入动态上采样模块 | 超过了其他上采样器
  • 【Linux系列】写入文本到文件
  • 【踩坑随笔】Tensorflow-GPU训练踩坑
  • 【云岚到家】-day07-4-实战项目-优惠券活动-项目准备