FPGA的设计艺术(5)STA实战之时钟偏斜对建立保持时间的影响以及时序报告分析
前言
本文首发:FPGA的设计艺术(5)STA实战之时钟偏斜对建立保持时间的影响以及时序报告分析。
STA回顾
70年代的时序是通过Spice仿真执行的。80年代的时序包括在Verilog仿真中,以确定设计是否足够快。两种方法都存在两个问题(动态时序):
1)分析仅与仿真一样–仅在仿真执行的情况下才发现问题
2)逻辑仿真慢5到10倍
静态时序更全面,通过计算设计中每个可能逻辑路径的延迟。最坏情况下的路径确定最大频率。
更多STA的基本问题,可以参考:
FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算
FPGA的设计艺术(3)静态时序分析
STA基本参数回顾
flop to flop
Setup Timing:Setup Timing的定义是在时钟有效沿到达之前数据需要保持稳定的时间。它的意义是检查信号是否及时到达。
如:
如果setup timing未能满足要求,则可以从以下方面处理:
- 1)降低时钟频率,
- 2)减少触发器之间的逻辑延迟
- 3)使用更快的触发器,即缩短上图中的时钟到数据输出延迟
关于setup timing的计算,链接:
FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算
已经给出了四种路径下的建立和保持时间要求计算。
下面为了内容的完整性,还是以不同的例子给出理解:
setup timing 要求是数据在捕获时钟沿之前应保持有效(稳定)的时间。计算所需的到达时间(RAT)和实际到达时间。
实际应在要求之前。你的裕量是多少。
上图中的裕量恰好为0.
RAT = T - Tsetup
实际到达时间根据实际情况:
Tcq + Tcomb
这里是理想模型,不考虑时钟偏斜,以及布线延迟,或者时钟偏斜为0,布线延迟在Tcomb中。
Hold Timing:Hold Timing的定义指的是在时钟有效沿之后,数据必须保持的最小时间。
保持时间要求是指数据应保持有效沿的时间后,计算所需的到达时间(RAT)和实际到达时间。实际应在要求之后。你的裕量是多少。
- 仅在时钟偏斜时发生。
- 与时钟周期或频率无关。
- 逻辑延迟通常只是启动触发器的启动延迟。
- 最坏的情况是触发器之间没有逻辑的移位寄存器。
1+3<2+4
数字代表编号
flop to output
寄存器到输出的建立时间要求类似于触发器到触发器,其意义都是检查信号是否及时到达时钟。
如上图,最小时钟周期为:
Tmin = Tcq + Tcomb + Toutdelay + Tsetup
也就意味着,这些参数需满足:
Tclk > Tcq + Tcomb + Toutdelay + Tsetup
如果不满足,即建立时序违规,可通过如下方式解决:
1)降低时钟频率,即增大时钟周期
2)减少逻辑延迟
3)减少外部建立时间要求
input to flop
其含义仍然是检查信号是否及时到达时钟。
不多解释,如果不满足建立时间,即external margin:
可以通过以下方法解决:
1)降低时钟频率
2)减少逻辑延迟
3)改善输入引脚上的到达时间
clock skew对setup以及hold timing的影响
时钟偏斜会伤害或帮助setup时间。
负时钟偏斜会减少整个工作周期,因此会损害建立时间,并且Xilinx的最大频率会忽略正偏,以进行建立时间计算。
如上,负时钟偏斜Tskew,注意Tskew是一个常数。
Tmin - Tskew = Tcq + Tcomb + Tsetup
可以推论:
Tclk- Tskew > Tcq + Tcomb + Tsetup
Tcq + Tcomb + Tsetup固定,Tskew越大,Tclk就要去越大。
如下图,实际分析下负时钟偏斜对建立的影响:
Bad for setups
Case 1 – Slow path
Launch = 1ns
Logic delay = 7ns slow
Setup = 1ns
Hold = 0ns (not used)
Skew = 2ns
Period = 10ns
Setup Slack = -1 nS
Good for holds
Case 2 – Fast path
Launch = 1ns
Logic delay = 0ns fast
Setup = 1ns (not used)
Skew = +3ns
Hold Slack = +4 nS
上面的Launch可认为是Tcq。
下面考虑对保持时间的影响:
保持时间的关系是:
Tcq + Tcomb > Thold + Tskew
可见,保持时间裕量可以为:
Thold slack = Tcq + Tcomb - Tskew - Thold
如果Tskew变大,则裕量越来越少。
- 由于正时钟偏斜,才有可能违反保持时间。
- 糟糕的问题是无法通过减慢时钟来固定预制芯片。(与时钟周期无关)
- 最糟糕的情况是具有低逻辑延迟的路径,例如移位寄存器。
在制造之前通过平衡时钟树或在逻辑中引入缓冲延迟来修复。
下面实际分析一个例子:
Good for setups:
Launch = 1ns
Logic = 9ns
Setup = 1ns
Skew = 2ns
Period = 10ns
Setup Slack = +1nS
Bad for holds:
Launch = 1ns
Logic = 1ns
Skew = 3ns
Hold Slack = -1 nS
利用时钟偏斜解决时序违规
时钟偏斜理论上可以利用起来解决建立时间违规问题,如下:
保持时间同样调节,通过调节时钟偏斜,如何做呢?
插入时钟buffer。
时钟扇出–一个来源–数百万个触发器需要缓冲树以减少扇出和平衡
时钟延迟,从时钟引入到到达触发器之间的时间-对于与其他芯片同步很重要
时钟偏斜:任何两个触发器之间的时钟有效沿到达差异
时钟功耗:时钟速度快,负载最大的最活跃信号很容易消耗20-30%的功率
时序报告
给出Cadence的时序报告页面参考:
脚本(完整综合脚本的一部分):
define_clock –nam vclk -period 50 clk
external_delay –input 0 –clock vclk [find / -prot ports_in/*]
external_delay –output 0 –clock vclk [find / -prot ports_out/*]
report timing > timing.rpt
生成报告。
报告列出了时序路径的延迟,最终存在时序裕量。
再看下图:
时序裕量就是负的,时序违规。
如上图,时钟给到了1GHz:
情况很极端,时序不过很正常。
在参考Xilinx的SP6的时序报告:
SP6的时序约束使用的是UCF文件。
假如给一个如下功能的逻辑:
如下为UCF文件截图:
时序约束,周期约束为100MHz。
综合后,查看时序报告:
可见,裕量充足。
如果约束时钟周期为1GHz,则:
时序裕量不足,差很远。
最后想说的是,可以通过综合工具提供的时序分析报告来查看,哪条路径的时序不满足需求,之后通过各种方式来解决时序违规,或更改设计,减小延迟,或减小时钟频率,大致如此。
上面还说了,可以通过改进时钟偏斜,这都是工具的事情,人工不用插手。还说了,使用更快的触发器,这个选定了器件,速率就定了,一般也不用插手。
邀请路径
FPGA/IC Technology Exchange
FPGA的设计艺术(5)STA实战之时钟偏斜对建立保持时间的影响以及时序报告分析相关推荐
- FPGA的设计艺术(6)STA实战之SmartTime时序约束及分析示例(I)
前言 FPGA进行时序分析通常使用厂家的编译工具,进行时序分析,但是万变不离其宗,时序分析的知识通常都是通用的,原理都是一致的.下面根据SmartTime的资料来看下时序分析的实际操作是如何的,这在其 ...
- FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算
前言 本文首发:FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算 STA定义 STA定义为:时序验证,可确保各种电路时序是否满足各种时序要求. ASIC / FPGA设计流程中最重要 ...
- FPGA的设计艺术(7)STA实战之SmartTime时序约束及分析示例(II)
前言 本文续FPGA的设计艺术(6)STA实战之SmartTime时序约束及分析示例(I),分析了时钟的不确定性,多周期路径,以及门控时钟的STA分析方法.可以使用各大厂家的时序分析工具,大多数都自带 ...
- FPGA的设计艺术(11)FPGA的构建过程
前言 本文讨论FPGA的构建过程,由于FPGA的过程太多了,恐怕会有歧义,这个过程,不是开发过程,不是开发流程,而是实实在在的FPGA编译的过程,使用编译恐怕不是太合适,但是大家都叫习惯了,也知道FP ...
- FPGA的设计艺术(3)静态时序分析
前言 本文首发:FPGA的设计艺术(3)静态时序分析,我的易百纳技术社区专栏. 同行邀请消息:FPGA/IC Technology Exchange 什么是静态时序分析(STA)? 静态时序分析介绍 ...
- FPGA的设计艺术(17)如何搭建一个简易的逻辑测试平台?
前言 提到FPGA逻辑的仿真,一般指的是行为仿真或者功能仿真,还有人会称为前仿,不包含时间延迟信息,只验证逻辑功能.对于小模块的仿真,需要写一个测试文件,英文是testbench,即测试平台.在tes ...
- FPGA的设计艺术(8)最佳的FPGA开发实践之严格遵循过程
文章目录 前言 如何花费更少的时间去调试? 为什么使用过程? 需要多少过程? 最小的过程 明确需求 数字设计方案 逻辑设计 功能仿真 板上验证 版本控制 编码指南:简短的技术组合,可最大程度地减少错误 ...
- FPGA的设计艺术(2)FPGA开发流程
前言 注:本文首发易百纳技术社区,文章链接:FPGA的设计艺术(2)FPGA开发流程 本文介绍整个FPGA设计流程以及设计FPGA所需的各个步骤-从一开始到可以将设计下载到FPGA的阶段.但是在此之前 ...
- FPGA的设计艺术(9)FPGA开发技巧与工程管理
文章目录 前言 设计技巧和常见错误 PCB设计 数字设计 同步设计计数器示例:纹波计数器 减少编码时的不确定性. Verilog/VHDL编码 仿真 为什么仿真? 工程管理 管理工程师 前言 阅读一段 ...
最新文章
- 对话科大讯飞刘聪:深度学习在中国是否“过火”?
- JVM对象分配回收算法
- window.event
- Mac系统的终端显示git当前分支
- php拉取公众号所有关注的人,微信公众平台开发获取关注者列表
- javafx窗体程序_JavaFX真实世界应用程序:欧洲电视网广播联盟
- 腾讯 2017 年投资项目榜单 TOP 10,与阿里死磕到底?
- linux上安装openssl的步骤
- java与python结合使用_Java与Python使用grpc跨平台调用
- vb6 怎么把一个数组的 0 值 去掉_解决逆向查找问题?VLOOKUP、CHOOSE、IF,索引数组,轻松解决...
- oracle学习资料pdf
- python爬取同花顺_python 同花顺
- Springboot毕设项目公共机房的值班管理系统wyz7b(java+VUE+Mybatis+Maven+Mysql)
- java中使用activiti(工作流)
- adb 连接某个wifi_adb通过wifi连接android设备的方法(根据网络中大神的提示加上自我摸索得到):...
- 怎么在css中定义字体颜色,css中怎么设置字体颜色
- 高级密码学复习1-HUST版
- NOIP2020游记
- 研究显示,技术学习成本高已成科学、技术、工程和数学类职业发展最大障碍 | 美通社头条...
- 铜陵新松工业机器人项目_首期投资约12亿元 新松机器人(苏州)未来科技城项目在苏州相城开工奠基...
热门文章
- NHibernate Step By Step(10)-常用的配置属性
- 开发人员最喜爱的十大免费的Visual Studio插件
- 永远的Macromedia, Macromedia Forever
- mysql中tonumber函数_Oracle数据库之oracle的TO_NUMBER函数
- python 如何建立图形用户界面_python(五)图形用户界面easyGUI入门
- html权重值_HTML标签权重分值排列
- linux 监控多台机器人,在钉钉群中创建机器人并设置安全策略
- java高效编程_Java高效编程
- Java学习之Iterator(迭代器)的一般用法
- java线程 打印_java多线程实现 5秒一次打印当前时间