PrimeTime指南——合理设置约束
完整的STA需要满足以下两点:
- 完整的设计约束(完整并不意味着正确)
- 运行所有需要的时序检查
可以用以下两条命令来进行完整性的检查:
check_timing // 检查是否缺少了约束条件
report_analysis_coverage // 检查是否是否对时序进行check
一、检查约束的完整性
check_timing 这一命令会检查设计中的每个现有约束,如果有缺失的约束,则会发出警告,我们可以根据警告对设置的约束进行检查。
check_timing的完整检查项目如下,粗体表示默认选项:
我们以下图所示电路为例,对check_timing的检查内容进行说明。
1、No input delay
这类警告是默认关闭的,你需要设置变量:
pt_shell>set_app_var timing_input_port_default_clock true
收到这种警告信息,我们需要知道:这个输入引脚和什么相连?哪条路径会受到这条警告的影响(或者此case缺少输入端口的分析)?
我们需要检查是否有必要约束这个port,一些情况下,是不需要为input port添加约束的
- 假设这个端口应该由set_case_analysis 命令设置,驱动一个固定的信号比如
- 假设以这个port为起点的路径在当前模式的分析中是不存在的;
2、No output delay
收到这类警告需要去知道:输出端口连接的是什么,寄存器还是输入端口?这条警告所影响的路径是哪一条,他是否是一个输出的时钟端口?
输出端口必须被output delay 所约束;
如果这个端口是一个输出的时钟端口,我们不需要为端口定义output_delay,创建所需要的generate_clock 然后忽略这条警告;
3、No clock
收到这类警告需要去知道:哪里需要创建一个时钟去驱动受影响的端口;
检查时钟信号是否由于某些时序弧的禁用或用户使用set_sense命令手动停止信号而在时钟端口的扇出中被阻断。
二、检查执行的完整性
report _ analysis _coverage 这一命令会检查设计中的每个现有时序检查,如果有任何未执行,则会发出警告和原因。我们需要决定这个时序检查是否有必要,还有检查什么原因导致时序检查没有被执行。
导致时序检查未执行的原因由下面这些:
我们以下图为例,对这些原因进行具体的说明。
1、False path
false_path一般是用户使用set_false_paths指定,异步或者专用的时钟组;
收到此类的警告,我们需要去知道:1.这条时序路径包含哪个时钟?2.F1的上一级触发器是什么?3.哪条false_path的命令或者clock_group的命令与此warning相关
设置false path使用的命令为
pt_shell > set_false_path -from F2/CLK -to F1/D
2、user disabled
出现此类的warning,我们需要去知道:这个时序检查只是对指定cell(F1)无效还是定义在cell库中,对所有instance都无效?这两者在命令的书写上是不同的:
pt_shell > set_disable_timing -from CLK -to D F1
pt_shell > set_disable_timing -from CLK -to D {get_lib_cell core_slow.db/fdesf2a15}
3、constant_disable
这种警告一般出现在:
- 用户指定 set_case_analysis
- 信号固定为高电平或低电平;
出现此警告我们需要确认,这个timing的disable是不是由于用户指定的case或者恒高或者恒低电平的信号导致的;用户哪条约束导致了 timing的disable。
pt_shell > set_case_analysis 0 scan_en
三、Debug命令
当使用check_timing 和 report_analysis_coverage 命令对约束进行检查时,按上文所述,有可能出现一些warning,这时我们需要对出现的warning进行检查,最常用的debug命令如下图:
这些命令可以让我们快速定位问题所在。
1、all_fanin
如上图,当F1的clk端发出no clock warning,我们可以使用以下命令
pt_shell > all_fanin -startpoints -flat -to F1/CLK
即可以找到CLK的起始点,溯源问题发生的原因。
all_fanin的用法如下:
如例子中的图所示,all_fanin会追踪时序弧,最后在三种端口停下:
- 输入端口(input port)
- CLK flop pins ,锁存器的G和D pins
- 时序弧被disable或missing的cell 的输出pins
2、report_cell
如果我们定位到了问题的所在,可以使用report_cell命令查看该单元的详细信息。
report_cell的用法如下:
3、get_attribute
PrimeTime中,针对每一个设计对象(design objects)的信息都存储在attribute中,我们可以利用get_attribute命令来获取单独的设计对象的信息。
上图中,指定的clocks这一attribute存储了所有穿过该pin的时钟信息。
4、report_disable_timing
report_disable_timing这一命令会检查disable的时序弧,并给出原因。
其具体用法如下:
5、report_case_propagation
我们可以使用 report_case_propagation命令来查找用户定义的值。
其用法如下
6、all_fanout
这一命令与all_fanin类似:
用法也基本一致:
合理利用PT提供的命令,我们可以很快地找到问题的所在,快速修改时序约束不合理的地方。
PrimeTime指南——合理设置约束相关推荐
- iOS之路10-给xib设置约束注意
2019独角兽企业重金招聘Python工程师标准>>> refreshView是Xib,,用UINib加载Xib let nib = UINib(nibName: "Ref ...
- 求偏移量并且设置约束
当前点-最原始的点 #define oriOfftY -244; #define oriHeight 200; //偏移量 CGFloat offset = scrollView.contentOff ...
- PrimeTime指南——概述和基本流程
PrimeTime(PT)是Synopsys的sign-off quality的静态时序分析工具.PrimeTime可以集成于逻辑综合和物理综合的流程,让设计者分析并解决复杂的时序问题,并提高时序收敛 ...
- mysql设置约束l命令_2、MYSQL 基本数据库命令及约束
[注]sql语句注意不要忘了后面的 " : ",表示结束符 1.如何登陆数据库服务器 C:\Users\zhg>mysql -uroot -p Enter passwo ...
- 用mansard对cell的子控件设置约束,并且自动计算cell高度的问题,ios7警告
mansory设置cell子控件自上而下把cell的contentview撑开,就计算可以自动计算高度了,但是ios7会报下面的警告 Probably at least one of the cons ...
- android界面设计字体大小,Andoird用户界面设计上手指南:设置字体大小
教程详解 技术应用: AndroidOS / Android SDK 难易程度: 简单 预计完成时间: 15分钟 [51CTO译文]在本文中,我们将介绍一些简单的处理方式,帮助开发人员轻松编写出能够应 ...
- Cadence设置——约束实现差分线动态等长
我使用的Cadence是16.6版本的,其他版本的大同小异,大家可以参考一下,欢迎评论,欢迎转发,转发请加链接. 一.首先找到最长的那根线,看一下他的长度,一般要求不是很严格可以按照5%设置等长要求, ...
- Apache Flink-编程指南-项目设置
Java项目模板 前提条件:Maven3.0.4或更高,Java8 使用如下命令创建Maven项目: $ mvn archetype:generate \-DarchetypeGroupId=org. ...
- mysql设置约束l命令_mysql建表约束,sql
–mysql建表约束,sql –主键约束 它能够唯一确定一张表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得改字段不重复且不为空. mysql> create table user( ...
最新文章
- 资料分享:数学建模资料分享 -- 神经网络部分
- SAP QM 含有Long-term检验特性的检验批UD完成后还能继续录入检验结果?
- pyrMeanShiftFiltering函数
- Python: strip()和split()的用法与区别
- SAP CRM Fiori应用My Opportunity标题显示不正确的问题分析
- chrome自动提交文件_实用!8个 chrome插件玩转GitHub,单个文件下载小意思
- java对jar包的复制_Java安全之jar包调试技巧
- 为什么dubbo的调用重试不建议设置成超过1
- C语言第一个字节地址,C语言字节对齐详解
- 【元胞自动机】基于matlab元胞自动机晶体生长【含Matlab源码 232期】
- Keil uVison4下载、安装、使用说明
- pc端html转换手机端,一种兼容PC端和手机端WEB界面的实现方法与流程
- 第6章 分支语句和逻辑运算符
- C++、Java、JavaScript中的正则表达式
- Invalid parameter passed to C runtime function.
- 好好说话之ret2csu
- linux常用命令_Linux常用命令总结
- Java基础(适合新学者和架构师阅读)
- java8获取本周本月第一天和最后一天
- “全面集中管控”企业信息化体系建设的思考