文章目录

  • pre-layout constranints
  • Post-Layout constrain
  • pre-layout&post-layout clock constrains区别
  • clock source latency
  • generated clocks
  • keep clock clean
  • PVT

本篇文章介绍的详细地介绍在PT中如何下达constrain。

pre-layout constranints



如上图所示,我们需要设置的是
1、时钟周期
2、set_clock_uncertainty 包括了skew和jilter等不确定因素,同意放在uncertainty中
3、set_clock_latency 指的是network delay,也就是时钟线net的延迟。
4、set_input_delay/set_output_delay 也就是数据data到达端口的延迟delay,以及数据输出后,在端口外的延迟delay。
5、set_false_path 指的是不用去分析的false path,比如异步时钟之间,我们不需要去分析。
如上图,也就是时钟3和时钟1之间的,以及时钟2和时钟4之间的path我们都不需要计算。

关于setup的算法如上图所示:
也就是数据必须要要求在clk的capture之前多少ns到达

关于hold的算法如上图所示:
也就是数据到达reg FF2之后,数据需要保持一段时间。

对于异步的clk 3和clk 4我们无法去分析,但是clk1 和clk 2是同步的倍频关系的时钟,我们是可以分析的。

Post-Layout constrain



可以看到在post-layout中,无需再去定义时钟,uncertainty之类的参数,只需要读取sdf,然后通过set_propagated_clock就可以定义时钟。


如上图所示,通过加了选项full_clock,也就是会把latency那一部分也会报告出来。
如下图所示,当加了full_clock之后,从clock的source到reg/CP ,也就是下面红框的部分,也会被报告出来,也就是0.42,即上上图中红色的部分的0.42标记


如下是报告date require time

pre-layout&post-layout clock constrains区别

可以看到,在post-layout中,因为有真实的绕线存在,所以使用set_progated_clock即可。

clock source latency

如下图所示,我们上面定义的只是network latency,但是在外部,比如机台,我们还有source latency,我们也需要设置出来,没法预估。



如下图所示,我们也可以通过report_timing
然后看出是post-layout还是pre-layout


generated clocks

对于CRG,时钟分频器,因为工具不会内部产生clock,它只会认为这是数据,然后去分析timing path。
所以需要告诉PT,这是内部的一个时钟波形。



值得注意的是如果source时钟信息、频率之类的发生改变,那么与之关联的internal clock也会自动改变。


如上图例子,通过update_timing强制工具刷新1.5ns那一部分,所以最好是在generated clock之后update_timing

keep clock clean

clock gating

我们知道PT是去分析reg/D-->reg/Q
那现在我们要分析的是如下图所示,寄存器FF1/Q—》U1/A1
也就是说需要把U1当成一个寄存器来处理。

如下图所示,我们把Cgate当成一个reg1/Q数据输出,首先我们要求,数据需要在时钟至少0.5ns之前到来,因此建立setup时间,另外我们需要确保数据在时钟下降沿的时刻的hold时间为0.4ns,也就是在下降沿来了之后,数据仍然可以保持0.4ns。
分别对上升沿的setup要求,以及对下降沿的hold要求。
从而保证Cgate的输出是符合下图中的要求的。


如上图描述:
report_clock_gating_check 可以show出所有的clock gating check infomation
使用set_clock_gating_clock 来告诉PT工具,将ICG当成一条timing path去处理。

PVT

在得到sdf之后,然后根据PVT去跑timing

如下图所示,因为有两种不同的timing path,因此在计算的时候,为了保险起见,计算setup的时候,我就用最不利的arrive time以及最不利的require time,然后去计算,两者都是不利的,在这种情况下setup都可以满足,那么当然实际也可以满足。

CRP【clock reconvergence pessimism】

但是上述会出现一个问题,也就是说arrive time我用最差的,require time我也用最差的。但是对于上面的U1 作为common clock and data path
实际上我们计算了两次。
在我计算setup slack的时候,
那么data arrive time 我希望越迟越worst,因此,我选用0.84。
但是对于require time来说,我希望clock越快越worst,因此我选用0.64.
但是实际上,一个cell,不可能说同时取两个不同的值。因此这里需要把这个差值补充上来,这个值的我们称之为CRP【clock reconvergence pessimism】,也就是修复悲观。

set timing_remove_clock_reconvergence_pessimism true
report_timing

如上图所示:我们从report_timing中可以看到,data arrival time 中的clock network delay为1.4 (这个数值1.4是选用的最worst的值,0.8+0.6=1.4)
但是对于data require time来讲,我也会选用最worst的值,因此是1.16(0.64+0.52=1.16)
然后通过clock recovergence adjustment加回来。

走进Prime Time系列 - PT的constraint - 02相关推荐

  1. 走进Prime Time系列 - PT的Timing exception 03

    文章目录 Using Timing Exception multicycle path 本篇文章,介绍的是timing exception Using Timing Exception 有一些path ...

  2. 走进Prime Time系列 - 走进PT - 01

    文章目录 PT是什么 STA Basic Static Timing Analysis Flow timing report 由于项目中需要我去接手STA方面的知识,因此需要赶紧补一下Primetim ...

  3. 《走进git时代系列一》 你该怎么玩?

    首先,这篇分享不是git命令操作大全,不是某代码托管服务的硬广, 只是希望激发仍然在使用中世纪时期版本管理系统的同学们,能够放弃你手里的SVN,转向更先进的思路. 所以,大家不会看到非常多的Comma ...

  4. 走进COM组件系列(一)

    说明: COM组件的接口,都需实现IUnknown接口,实现其中的AddRef,Release,QueryInterface等方法. 每一个接口都拥有自己的唯一标识符,使得其通过这个标识符能够唯一的找 ...

  5. 走进COM组件系列(三)

    前面介绍了,走进COM组件系列(二),在此基础上,我们构建参数在模块之间的传递. 其他内容请浏览COM+分类 首先修改idl文件,在接口方法中加入参数 interface IY : IUnknown ...

  6. 走进诺奖大师系列:科斯(Ronald H.Coase)

    文章来源@管理学季刊 走进诺奖大师系列:科斯(Ronald H.Coase) 受伯烈特教授的邀请在这一系列讲座发表演说之后,我拜读了先前各篇演讲的内容,才发现讲演题目是"我成为经济学者的演化 ...

  7. 【381天】我爱刷题系列140(2018.02.21)

    @(一只心中无码的程序员)专栏 叨叨两句 ~ SQL习题035 1 题目描述 film表 字段 说明 film_id 电影id title 电影名称 description 电影描述信息 CREATE ...

  8. 【372天】我爱刷题系列131(2018.02.12)

    叨叨两句 ~ SQL习题026 1 本题的批量插入数据要求在一条语句内完成,以下有两种方法供参考: 方法一:利用VALUES(value1, value2, ...), (value1, value2 ...

  9. 【黑金ZYNQ7000系列原创视频教程】02.视频接口mdash;mdash;hdmi编码输出实验

    黑金论坛地址: http://www.heijin.org/forum.php?mod=viewthread&tid=36636&extra=page%3D1 爱奇艺地址: http: ...

最新文章

  1. 微信小程序页面之间数据传递
  2. 今天分享个用Python爬虫爬取Bilibili弹幕的小例子解析
  3. 从编程基础到系统设计,这份数据工程师面试宝典全都有 | 资源
  4. iOS --- DIY文件名批量修改
  5. android sd大小,android用户的SD卡相同容量是否完全一样的大小
  6. To B生意的私域流量,你应该知道的10件事儿
  7. 深入了解scanf() getchar()和gets()等函数之间的区别
  8. MongoDB的使用技巧(转)
  9. 用EL表达式显示客户端使用的浏览器
  10. Git工作笔记003---Git常用命令总结
  11. 解析mysqlbinlog日志_关于mysql-binlog日志解析框架
  12. TP-Link C2和C20i产品出现命令注入、DoS等多个漏洞 绿盟科技发布安全威胁通告
  13. 如何限制计算机游戏,如何禁止玩电脑游戏、屏蔽网络游戏方法
  14. pcie gen3 bios设置_性价比无敌or搞笑? A卡传统回来了!(附刷bios教程)
  15. 破解百词斩单词数据之旅
  16. 《REWORK》读记
  17. 第二届中国大数据安全高层论坛在贵阳举行
  18. AutoCAD VBA 通过选择集 删除图层上所有对象和图层
  19. Oracle中国CEO胡伯林:管理就是沟通
  20. 哪些云主机值得推荐?

热门文章

  1. 一夜爆火的《羊了个羊》,开发竟这么简单!
  2. 学计算机是否加速掉发,你的电脑是否经常发生卡顿?让程序员来教你几个提速妙招...
  3. material-design-icons-iconfont 图标引入
  4. nest 模拟器_如何使用Nest恒温器根据湿度为房屋降温
  5. Cty的Linux学习笔记(一)
  6. Cty的Linux学习笔记(十)
  7. css实现圆形渐变色边框
  8. ListView中插广告栏兼DoubleClick For Publishers (DFP) Banner Ads demo
  9. Android 下载库 TigerDownload Rxjava2,retrofit2
  10. [笔记]What is HDBaseT