通过前面几期sdc的介绍,相信大家都对最基本的sdc命令有了一个简单的认识。可以说,sdc是整个设计中最重要的文件,它的正确与否直接决定了PR能否顺利进行以及timing的最终sign off。很多设计团队经常只有等到做完综合,STA,PR后才发现到sdc上的问题,再去修改sdc重新run job。这样就浪费了项目宝贵的schedule。而且,不同的工具,不同的design team处理约束的方式都不尽相同。这些因素,都要求我们必须在设计前期尽早的完成sdc的检查。

sdc的问题有很多种,我大致罗列了以下一些:

Missing clock definition

和clock相关的问题都要引起特别大的重视,因为它会严重影响到timing还有CTS的质量。有没有正确地定义generate clock, 关键节点上的时钟有没有传过去,哪些地方应该stop clock propagation......这些问题我们都应该第一时间去检查确认。

Unconstrained endpoint

这也是很严重的一点问题,unconstrained就代表着工具不会去检查该条timing path,也就不会发现潜在的时序问题了。有的endpoint确实可能是静态信号,但也不排除我们遗漏input/output delay或者错误地设置了false path。因此,这也值得我们重点检查。

No input/output delay

理论上,每个端口上都需要设置端口约束。因此,我们必须正确地检查它有没有遗漏,以及挂在正确的clock上。

set_case_analysis conflict

通常我们会在DFT模式切换时设置case analysis值。因此,需要和DFT team确认值的正确性。因为设了case analysis的port就不会再去检查该条timing path了。

Incorrect timing exception

timing exception也是很重要的,false path和multicycle path的设定也需要和前端team确认,设置完以后也要检查一下是否正确运行,或是被别的exception覆盖。


那我们如何在前期去做sdc的检查呢?

方法有很多,首先最基本的需要做到以下几点:

Log

首先,检查zero wire load阶段的timing log是最重要的一点,我们需要确保没有任何的Error,每个warning也要逐条分析,有合理的解释,记得需要把message条数的限制关掉,工具默认报出的条数有限。

set_message_info –id UITE-123 –limit 10000

check_timing

这也是普遍常用的一个命令,它能检查出No clock,Unconstrained endpoint,No input/output delay等最基本的约束问题。完整的检查列表如下所示:

STA和PR工具里都能使用,而且建议两边都检查一下,因为PR工具里会用ETM model, 而STA工具通常都是flatten运行,检查的数据有所不同。为了便于区分,通常把function mode和DFT mode分开检查。

可以使用以下命令检查:

check_timing -verbose > func_check_timing.rpt

report_analysis_coverage

这是个检查timing check覆盖率的命令。可以报出当前约束下,各种timing check (setup, hold,min_period,min_pulse_width等) 的覆盖率,报告如下所示:

我们主要关注报告中的Untested这一栏,它说明我们约束没有覆盖的点,造成untested的原因有很多,主要有以下几点。因此我们必须逐条归纳分析原因,如果是sdc造成的,那就要修改sdc。

如果要看那么多文件的话,也许会很麻烦,而且总会觉得遗漏了一些。其实,很多公司也是有专门检查sdc的小工具。学会用这些工具,会专业方便得多,起到事半功倍的效果。这边推荐Galaxy Constraint AnalyzerSpyGlass这两个专门检查sdc的工具。具体介绍可以本期的后面两篇文章。


最后,对于上述检查出来的这些问题,有很多是可以waive的,那我们如何去分析呢?

工具本身提供很多很方便的debug命令

all_fanin/all_fanout

这两个命令可以很容易的trace timing path的起点和终点,大家可以对应对IO设计表格和sdc,来检查一下约束是否有错。

pt_shell> all_fanin –only_cells –flat –startpoints –to F1/CLK

get_attribute

这个db的命令大家一定很熟悉,我们可以使用它来得到pin上的clock,arrival window等信息,来检查clock有没有正确propagation

还有以下一些常用命令也可以帮我们报出各种有用的信息,不分别介绍了

report_cell

report_case_propagation

report_disable_timing

讲到这,大家对该如何检查sdc有个简单认识了吧,一定要记住,sdc很重要,一定要好好写。后面还有两篇关于GCA和SpyGlass的介绍,欢迎收看~~


公司招聘

各大IC公司招聘各类IC工程师

简历请戳邮箱:taozhang3260@163.com

时序分析基本概念介绍sdc检查相关推荐

  1. 时序分析基本概念介绍——SDC概述

    今天我们要介绍的时序概念是设计约束文件SDC. 全称Synopsys design constraints. SDC是一个设计中至关重要的一个文件.它对电路的时序,面积,功耗进行约束,它是设计的命脉, ...

  2. 时序分析基本概念介绍--Timing Arc

    原标题:时序分析基本概念介绍--Timing Arc 今天我们要介绍的时序基本概念是Timing arc,中文名时序弧.这是timing计算最基本的组成元素,在昨天的lib库介绍中,大部分时序信息都以 ...

  3. 时序分析基本概念介绍<Slew/Transition>

    今天要介绍的时序分析基本概念是Slew,信号转换时间,也被称为transition time.是指电压从10%VDD上升到90%VDD所需要的时间,或者是从90%VDD下降到10%VDD所需要的时间, ...

  4. 时序分析基本概念介绍ILM

    今天我们要介绍的时序分析基本概念是ILM, 全称Interface Logic Model.是一种block的结构模型.主要用在top level的timing/SI收敛. ILM是一种比ETM mo ...

  5. 时序分析基本概念介绍Sequential logic

    今天我们要介绍的时序分析基本概念是Sequential logic.中文名,时序逻辑单元.时序逻辑单元是数字IC设计中另一类重要器件,它的特点是任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的 ...

  6. 时序分析基本概念介绍Skew

    今天要介绍的时序分析基本概念是skew,我们称为偏差.由于时钟到每个寄存器的路径延迟不一样,造成信号到达 clock pin 的时间也不一样,我们把时钟信号到达不同寄存器的时间偏差称为skew.一直以 ...

  7. 时序分析基本概念介绍MMMC分析

    今天我们要介绍的时序分析基本概念是MMMC分析(MCMM).全称是multi-mode, multi-corner, 多模式多端角分析模式.这是在先进工艺下必须要使用的一种时序分析模式. 为什么需要这 ...

  8. 时序分析基本概念介绍——时钟sdc

    上次介绍了sdc的基本概念,那接下来几期,我们来讲解一些比较常用的sdc命令.虽然sdc大大小小有上百条命令,但实际常用的其实就那么10几条.今天我们来介绍下与时钟相关的命令.主要有以下命令: cre ...

  9. 时序分析基本概念介绍<系统接口sdc>

    今天要介绍的基本sdc是系统接口sdc.主要包括 set_drive set_driving_cell set_input_transition set_load 这四条命令,都是和端口上的驱动负载有 ...

最新文章

  1. JavaScript(转载)
  2. 桌面虚拟化之iPad客户端大比拼
  3. 充血模型的ORM能做什么?——ORM组件XCode(十八般武艺)
  4. java des zero_android----Java DES加密算法工具类
  5. github建立静态网站,域名解析和跳转
  6. Pytorch教程(十九)torch.cat与torch.stack的区别
  7. mysql ehcache_MyBatis使用Ehcache作为二级缓存
  8. procyon java8_java jdk 8反编译工具JD-GUI、procyon-decompiler、luyten、crf下载使用简介
  9. 1.7 编程基础之字符串 14 大小写字母互换 python
  10. 高并发中,那些不得不说的线程池与ThreadPoolExecutor类
  11. JDK+MyEclipse+Tomcat的配置(修改Tomcat 6.x的端口)
  12. dijkstra 算法_路径规划算法总结
  13. PHP仿网易云原创音乐分享平台网站源码
  14. vim全文替换字符串
  15. 厦门市大专计算机学校有哪些,2021厦门公办大专学校有哪些 【教育部专科院校名单】...
  16. ddr3ddr4 lpddr4速率_LPDDR4和LPDDR3性能差别多少 LPDDR4和LPDDR3参数对比
  17. 【弹出USB大容量存储设备时出问题】两步搞定
  18. 无线网卡、以太网驱动消失,“没网络”并且重新下载驱动仍然出现感叹号(windows仍在设置此设备的类配置,代码56)解决方法,绝对绝对有效
  19. ASCII码值是怎么计算的,怎么计算arccos的值
  20. 8.2.1-elasticsearch内置分词器之standard/simple

热门文章

  1. Vue.js构建用户界面的渐进式框架(前端学习笔记1.0)
  2. 我的深圳面试体验--艾默生/西门子/华为/中兴/索尼/富士施乐/长城国际/ 马士基/SGS/宜家/
  3. HTML5 canvas 画布
  4. j2me上面实现图片的特效 (缩放,裁剪,调整大小,镜像,对比度亮度调整,黑白,线条,粉笔画,蒙版)等功能
  5. c语言packed,结构体声明当中 __attribute__ ((__packed__))关键字
  6. Docker搭建php本地开发环境 - 保姆教程
  7. 【2022计算机夏令营】同济电信、哈工大(威海)、南开人工智能
  8. 计算用户的平均次日留存率
  9. 概率论笔记5.2中心极限定理
  10. 统计相关的分析(表格)