完整的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添加约束的

  1. 假设这个端口应该由set_case_analysis 命令设置,驱动一个固定的信号比如
  2. 假设以这个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

这种警告一般出现在:

  1. 用户指定 set_case_analysis
  2. 信号固定为高电平或低电平;

出现此警告我们需要确认,这个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指南——合理设置约束相关推荐

  1. iOS之路10-给xib设置约束注意

    2019独角兽企业重金招聘Python工程师标准>>> refreshView是Xib,,用UINib加载Xib let nib = UINib(nibName: "Ref ...

  2. 求偏移量并且设置约束

    当前点-最原始的点 #define oriOfftY -244; #define oriHeight 200; //偏移量 CGFloat offset = scrollView.contentOff ...

  3. PrimeTime指南——概述和基本流程

    PrimeTime(PT)是Synopsys的sign-off quality的静态时序分析工具.PrimeTime可以集成于逻辑综合和物理综合的流程,让设计者分析并解决复杂的时序问题,并提高时序收敛 ...

  4. mysql设置约束l命令_2、MYSQL 基本数据库命令及约束

    [注]sql语句注意不要忘了后面的   "  : ",表示结束符 1.如何登陆数据库服务器 C:\Users\zhg>mysql -uroot -p Enter passwo ...

  5. 用mansard对cell的子控件设置约束,并且自动计算cell高度的问题,ios7警告

    mansory设置cell子控件自上而下把cell的contentview撑开,就计算可以自动计算高度了,但是ios7会报下面的警告 Probably at least one of the cons ...

  6. android界面设计字体大小,Andoird用户界面设计上手指南:设置字体大小

    教程详解 技术应用: AndroidOS / Android SDK 难易程度: 简单 预计完成时间: 15分钟 [51CTO译文]在本文中,我们将介绍一些简单的处理方式,帮助开发人员轻松编写出能够应 ...

  7. Cadence设置——约束实现差分线动态等长

    我使用的Cadence是16.6版本的,其他版本的大同小异,大家可以参考一下,欢迎评论,欢迎转发,转发请加链接. 一.首先找到最长的那根线,看一下他的长度,一般要求不是很严格可以按照5%设置等长要求, ...

  8. Apache Flink-编程指南-项目设置

    Java项目模板 前提条件:Maven3.0.4或更高,Java8 使用如下命令创建Maven项目: $ mvn archetype:generate \-DarchetypeGroupId=org. ...

  9. mysql设置约束l命令_mysql建表约束,sql

    –mysql建表约束,sql –主键约束 它能够唯一确定一张表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得改字段不重复且不为空. mysql> create table user( ...

最新文章

  1. 资料分享:数学建模资料分享 -- 神经网络部分
  2. SAP QM 含有Long-term检验特性的检验批UD完成后还能继续录入检验结果?
  3. pyrMeanShiftFiltering函数
  4. Python: strip()和split()的用法与区别
  5. SAP CRM Fiori应用My Opportunity标题显示不正确的问题分析
  6. chrome自动提交文件_实用!8个 chrome插件玩转GitHub,单个文件下载小意思
  7. java对jar包的复制_Java安全之jar包调试技巧
  8. 为什么dubbo的调用重试不建议设置成超过1
  9. C语言第一个字节地址,C语言字节对齐详解
  10. 【元胞自动机】基于matlab元胞自动机晶体生长【含Matlab源码 232期】
  11. Keil uVison4下载、安装、使用说明
  12. pc端html转换手机端,一种兼容PC端和手机端WEB界面的实现方法与流程
  13. 第6章 分支语句和逻辑运算符
  14. C++、Java、JavaScript中的正则表达式
  15. Invalid parameter passed to C runtime function.
  16. 好好说话之ret2csu
  17. linux常用命令_Linux常用命令总结
  18. Java基础(适合新学者和架构师阅读)
  19. java8获取本周本月第一天和最后一天
  20. “全面集中管控”企业信息化体系建设的思考

热门文章

  1. acdream 1023 xor按位思考
  2. node.js Lordofpomelo点击登录(login)终端提示成功,页面不跳转无反应
  3. maskView与CAGradientLayer详解
  4. iOS开发 蓝牙技术4.0详解
  5. java运算符 —(9)
  6. Process和ProcessBuilder入门【原】
  7. zbb20171108 tomcat 性能优化
  8. mybatis实战教程(mybatis in action)之二:以接口的方式编程
  9. MFC BCGControlBar 库 使用方法
  10. angularjs学习曲线