FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算
前言
本文首发:FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算
STA定义
STA定义为:时序验证,可确保各种电路时序是否满足各种时序要求。
ASIC / FPGA设计流程中最重要和最具挑战性的方面之一是时序收敛。时序收敛可以看作是数字电路的时序验证。为时序而闭合的数字电路将以指定的频率工作(由设计人员在时序约束中定义),因此可以实现预期的PPA(性能,功率和面积)。静态时序分析是一种方法,通过该方法,可以通过对数字电路中的所有路径进行时序分析来确定是否实现时序收敛。顾名思义,这种对数字电路的验证是静态完成的(不需要对数字逻辑进行仿真)。静态时序分析利用了数字电路所有起点和终点之间的时序弧(由技术库定义)。必须意识到,由于不涉及仿真,因此静态时序分析将不会检查功能的正确性,而只会关注时序。
STA术语
在深入研究静态时序分析的工作原理之前,获得一些稍后使用的术语的基础知识非常有价值。
- 时序弧:定时弧是在技术库中为每个单元(cell)定义的参数,这些参数定义了单元在不同PVT拐角处的延迟。静态时序分析使用这些参数来计算通过任何库单元的最大和最小延迟。例如,对于D型触发器,技术库将包含定义建立时间,保持时间和C(时钟)至Q(输出)时间(TCQ)的参数。
TCQ:TCQ定义为一旦触发时钟C(正沿或负沿)数据出现在输出Q上所花费的时间。
建立时间:定义输入D在时钟C触发之前必须稳定的时间(上升沿或下降沿)定义为建立时间。 如果数据至少在时钟沿之前的建立时间之前不稳定,则输出将不确定。
保持时间:触发时钟C后(上升沿或下降沿)输入D必须保持稳定的时间。 如果数据至少在时钟沿之后的保持时间内不稳定,则不确定输出。
静态时序分析可以在设计的时序部分和组合部分中进行。 在任何时序设计路径中,总会有一个发射触发器(驱动数据)和一个锁存触发器(捕获数据)。 通过假设一个虚拟时钟驱动一个虚拟发射或虚拟锁存,也可以将组合路径视为时序路径。
建立时间约束:任何数字电路的建立时间约束都定义为时序约束,因此设计中最慢的路径必须满足锁存触发器的建立时间。
保持时间约束:将任何数字电路的保持时间约束定义为时序约束,以便设计中最快的路径必须满足锁存触发器的保持时间。
如果设计同时满足建立和保持约束,则称该设计已实现时序收敛。 静态时序分析将通过分析设计中的所有时序路径来证明建立和保持时间约束。
STA路径介绍
任何数字设计均可分为静态时序分析的四类路径。
- 输入到输出(I2O)
- 输入到寄存器(I2R)
- 寄存器到寄存器(R2R)
- 寄存器到输出(R2O)
在所有这些路径上一一完成静态时序分析。 通过定义该路径的起点和终点来分别分析每个路径。
R2R
让我们首先考虑R2R路径的静态时序分析。 它们很简单,并成为其他途径的基础。
setup计算
对于R2R路径,起点是启动触发器的时钟输入引脚,终点是捕获触发器的D输入引脚。 对于建立时间约束,目标是确保从起点到终点的延迟至少是寄存器的建立时间小于寄存器时钟的时钟周期。 这意味着
TCQ + comb_delay(max)<时钟延迟路径(时钟偏斜)+ T(时钟的时钟周期)– Latch FF的建立时间
下图中的comb_delay应该是通过组合逻辑的最大延迟。
为了有助于理解上述公式,我们给出时序图:
该公式:
TCQ + comb_delay(max)<时钟延迟路径(时钟偏斜)+ T(时钟的时钟周期)– Latch FF的建立时间
根据上图参数可以改写为:
Tcq + Tcomb(max)+ Tsetup <Tskew+ Tclk 继续改写 Tcq + Tcomb(max)<Tskew+ Tclk - Tsetup
为什么要满足这样的关系呢?
建立时间的定义简单来说,就是时钟有效沿到达之前数据必须保持稳定的时间。
数据在什么时候就应该到达呢?在 Tcq + Tcomb(max)时就到达了。那么在这个时间之前,捕获寄存器就应该捕获到稳定的数据了。
根据上图可知,数据周期必须满足条件是:Tskew+ Tclk - Tsetup大于 Tcq + Tcomb(max)。
我继续自问几个不太聪明的问题:
为什么要减去Tsetup?
- 因为这是时钟周期需要预留的裕量。
为什么Tcomb要取最大延迟路径?
- 因为最大的延迟路径都满足了,其他延迟路径的建立时间也一定能满足。
hold计算
对于保持约束,目标是确保通过起点和终点的延迟至少大于相同时钟周期中锁存器的保持时间。
TCQ + comb_delay(min)>锁存器FF的保持时间+时钟延迟路径(时钟偏斜)。
下图中的comb_delay应该是通过组合逻辑的最小延迟。 可以看到,保持时间不取决于时钟的时钟周期。
如下,需满足保持时间的几个时间参数如下图示意:
上面说需要满足:
TCQ + comb_delay(min)>锁存器FF的保持时间+时钟延迟路径(时钟偏斜)。
换成上面的图中参数为:
Tcq + Tcomb > Thd + Tskew
这是为什么呢?
通俗地理解,可以这样解释:
首先解释为什么分析目的时钟(捕获时钟)以及源时钟(发射时钟)的同一个沿?
根据保持时间的定义可知,保持时间就是数据在时钟到达之后需要保持稳定的最大时间。数据达到触发器(或其他时序单元)保持稳定的时间在Tcq(时钟有效沿到数据有效的时间)加组合逻辑延迟以及布线延迟总和之内,在这个时间内为了不让捕获时钟的同一时钟沿采样到数据,保持时间Thd与时钟偏斜之和就必须小于数据稳定时间,这样就满足了保持时间的定义。
这样一不小心解释了同沿分析问题,又解释了为什么满足如下公式:
Tcq + Tcomb > Thd + Tskew
I2R
对于I2R路径,起点将是输入端口,终点将是寄存器的D引脚。 可以假设从输入端口到组合逻辑的输入延迟如下所示。 输入延迟可以包括端口延迟或任何布线延迟。
如果输入端口与外部时钟同步,则可以将路径约束为:
input_delay + comb_delay(max)<时钟延迟路径(时钟偏斜)+ T(时钟的时钟周期)–寄存器FF的建立时间
并且对于保持约束为
input_delay + comb_delay(min)>寄存器FF的保持时间+时钟延迟路径(时钟偏斜)。
如果输入与时钟不同步,则该路径可能受到从输入端口到寄存器FF D引脚的路径的最大和最小延迟的约束。 通常,在这种情况下(时钟锁定的同步路径)需要两个背靠背的FF来消除亚稳性问题。
input_delay + comb_delay(max)<max_delay(必须)input_delay + comb_delay(min)> min_delay(必须)
R2O
对于R2O路径,起点将是启动触发器的时钟引脚,终点将是输出端口。 可以从组合逻辑的输出中假设输出延迟,如下所示。 输出延迟可以包括从组合逻辑到引脚的布线延迟。
如果输出端口与时钟同步,则可以设置以下路径:
TCQ + comb_delay(最大值)+ output_delay < 时钟延迟路径(时钟偏斜)+ T(时钟的时钟周期)– 寄存器FF的建立时间
并且对于保持约束为
TCQ + comb_delay(min)> 寄存器FF的保持时间+时钟延迟路径(时钟偏斜)。
如果输出路径与时钟不同步,则数据路径可能受到最小和最大延迟的限制。
TCQ + comb_delay(max)+ output_delay <max_delay(必需)TCQ + comb_delay(min)+ output_delay> min_delay(必需)
I2O
对于I2O路径,起点是输入端口,终点是输出端口。 可以假设输入端口的输入延迟和输出端口的输出延迟。 通常,输入和输出端口之间的组合路径受到约束,以便满足最小和最大延迟约束。
input_delay + comb_delay (max) + output_delay < max_delay (required)input_delay + comb_delay (min) + output_delay > min_delay (required)
还可以假设虚拟发射触发器驱动输入端口,而虚拟捕获触发器锁存输出端口。 在这种情况下,可以像R2R路径一样进行分析。
静态时序分析技巧和窍门
通过定义时钟开始约束您的设计。
始终为所有主要输入(输入延迟)和主要输出(输出延迟)定义约束。
约束设计中的所有路径。 如果约束文件不完整,则静态时序分析将无法完成。 请记住,静态时序分析适用于垃圾回收原理。
如果从时序角度来看路径不是关键,则可以为这些路径定义时序例外(错误路径,多循环路径等)。
- 通过定义时钟开始约束您的设计。
- 始终为所有主输入(输入延迟)和主输出(输出延迟)定义约束。
- 对设计中的所有路径进行约束。如果约束文件不完整,静态时序分析分析将不完整。请记住,静态时序分析的工作原理是垃圾进垃圾出。
- 如果某条路径从时序角度看并不关键,可以为这些路径定义时序例外(伪路径、多周期路径等)。
邀请路径
同行交流地址:FPGA/IC Technology Exchange
FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算相关推荐
- FPGA的设计艺术(5)STA实战之时钟偏斜对建立保持时间的影响以及时序报告分析
前言 本文首发:FPGA的设计艺术(5)STA实战之时钟偏斜对建立保持时间的影响以及时序报告分析. STA回顾 70年代的时序是通过Spice仿真执行的.80年代的时序包括在Verilog仿真中,以确 ...
- FPGA的设计艺术(6)STA实战之SmartTime时序约束及分析示例(I)
前言 FPGA进行时序分析通常使用厂家的编译工具,进行时序分析,但是万变不离其宗,时序分析的知识通常都是通用的,原理都是一致的.下面根据SmartTime的资料来看下时序分析的实际操作是如何的,这在其 ...
- 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编码 仿真 为什么仿真? 工程管理 管理工程师 前言 阅读一段 ...
最新文章
- python循环中append_[Python]list.append()在for循环中每次添加的都是最后的一个元素
- wdtree简介、使用
- C# winfrom listView
- oracle dump enq hw,经典故障分析 - ASSM引发的索引争用与 enq HW -contentio
- 6421B Lab5 路由和远程访问的配置与故障排除
- 归纳偏置是什么?从现实生活中观察到的现象中归纳出一定的规则,然后对模型做一定的约束,从而可以起到“模型选择”的作用
- 华为将推出智能显示屏产品:不同于传统电视机
- 别再被三次握手和四次挥手所支配!把TCP这玩意儿给你掰开了说
- 某软件圣天诺加密狗破解过程
- shiro整合ehcache Cannot resolve reference to bean 'securityManager' while setting bean property 'secur
- 从COD着陆页设计优化谈起
- 微信公众号里的视频下载
- PCA与2DPCA及2D-2DPCA零基础理解(上)
- 企业考勤,用开源协同办公OA系统来管理!
- Visual Hull基于序列图像的三维重建
- 计算机和互联网的英语演讲,英语演讲---关于互联网
- P7776 【模板】特征多项式 题解
- Kali Linux中显示“仓库没有数字签名”的解决方法
- import导包方法和路径问题和init方法调用流程
- 平面设计资源网站,码住!
热门文章
- 采访Jesús Fernandes(QA主管)
- .Net Remoting 1
- 如何修改安装包程序的产品描述和版权信息
- java 反射深度克隆_C#使用反射(Reflection)实现深复制与浅复制
- 奇瑞a3中控按键图解_纷纷亮相,奇瑞众多黑科技悄然现身,焦点全在星途VX智能座舱上...
- python编译成exe速度会变快吗_python如何编译成exe
- termux python 打开摄像头_【图片】将termux打造成合格的python环境(假装是教程贴)_termux吧_百度贴吧...
- 4天快速入门python数据挖掘_4天快速入门Python数据挖掘
- python3.8 pyinstaller3.5安装出错_Pyinstaller 无法正常打包脚本 Python 3.5
- python 百度词典_用 Python 3 写的命令行百度词典