【 Vivado 】基本的时序约束、分析的概念
目录
时序路径:
Clock Setup Check:
Clock Hold Check:
Timing Report in Vivado:
时序路径:
关于时序路径,曾也有几篇博文讲到:【 FPGA 】时序分析中的基本概念和术语
时序路径分为四种,下面这张图明明白白我的心。
图1中包含了主要的时序分析路径:
1. 输入端口到FPGA内部时序单元的路径
2. FPGA内部时序单元间的路径
3. FPGA内部时序单元到输出端口的路径
4. 输入端口到输出端口的路径
(图1)(看不清看开头的第一张图)
不管时序单元是在FPGA内部还是外部,除了第4条路径,它是从输入端口到输出端口,其间没有锁存,其它3条路径的时序分析都以2个时序单元间的路劲进行分析,如图2所示。
(图2)
第一个时序单元上的时钟称为source clock(启动时钟),第二个时序单元上的时钟称为destination clock(锁存时钟),时序分析从source clock的上升沿开始,到之后的destination clock的上升沿结束,时序分析的过程就是检验数据在两个上升沿时间差内经过数据路径传输后是否满足要求,数据到达时需要满足后一级时序单元的setup/hold要求,其本质上是需要数据在到达后一级时序单元时不发生亚稳态,数据能够被稳定地采集到并且稳定地输出。
Clock Setup Check:
检验Setup是否满足要求,这边引入setup slack概念,只要setup slack的值大于零即Setup检查满足要求,其计算公式如下:
setup slack = data required time – data arrival time
其中:
data required time=destination clock edge time + destination clock path delay- clock uncertainty- setup time
data arrival time = source clock edge time + source clock path delay+ clock to output time + data path delay
公式代入可得到:
setup slack = (destination clock edge time - source edge time)+ (destination clock path delay - source clock path delay)
- clock uncertainty - setup time - clock to output time - data path delay
= Tdestination_to_source + (Tclk-D2 – Tclk-D1) – Tclk_uncertainty – Tsetup – Tco - Tdata_path_delay
在Setup检查中source clock一定超前于destination clock。
其中第一部分Tdestination_to_source,当source clock和destination clock为异步时钟时,如图3中实例,source clock的周期等于6ns,destination clock的周期等于4ns,首先假定2个时钟的相位差为0,图中在这种情况下有2个setup关系,setup1下Tdestination_to_source = 4ns,setup2下Tdestination_to_source = 2ns,在实际分析中应该选取最严格的情况,即选取setup2这种。
(图3)
而当source clock和destination clock为同一个时钟时,Tdestination_to_source的值很显然就是时钟周期Tclk_period,这也是时序分析最多的情况了,进一步推导
setup slack = Tclk_period+ (Tclk-D2– Tclk-D1) – Tclk_uncertainty - Tsetup – Tco -Tdata_path_delay > 0,可以得到:
Tclk_period > Tclk_uncertainty + Tsetup + Tdata_path_delay + Tco - (Tclk-D2 – Tclk-D1)
Tclk_period、Tclk_uncertainty可以通过时序约束确定其值,Tco, Tsetup是时序单元的属性值,(Tclk-D2 – Tclk-D1)在布局布线后其值也能确定,剩下Tdata_path_delay对Tclk_period影响最大,一个设计Setup检查中的关键路径往往是Tdata_path_delay值最大的一条路径,影响其值有很多原因,如逻辑级数过多,扇出导致布线延时过大…
Clock Hold Check:
对应Hold检查,也有hold slack,其计算公式如下:
hold slack = data arrival time – data required time
其中
data required time = destination clock edge time + destination clock path delay + clock uncertainty + hold time
data arrival time = source edge time + source clock path delay+ clock to output time + data path delay
代入公式得到:
hold slack = (source clock edge time - destination edge time)+(source clock path delay - destination clock path delay)
- clock uncertainty - hold time + clock to output time + data path delay
=Tsource_to_destination + (Tclk-D1 – Tclk-D2) – Tclk_uncertainty – Thold + uTco + Tdata_path_delay
与Setup检查不同,在Hold检查下destination clock超前于source clock。在Setup检查中,Tdestination_to_source的值选取destination clock和source clock相差最小的情况下进行分析;而Hold检查中Tsource_to_destination的值选取所有Setup关系分别进行分析,每一种Setup关系对应有两种情况,然后选取所有情况中Tdestination_to_source值大的计算对应的Tsource_to_destination
a. 取Setup关系的前一个destination clock沿,如图4中Hold1a和Hold2a
b. 取Setup关系的destination clock沿,如图4中Hold1b和Hold2b
(图4)
根据图4中实例计算得到:
Hold1a:Tdestination_to_source= 0ns
Hold1b:Tdestination_to_source= -2ns
Hold2a:Tdestination_to_source= -2ns
Hold2b:Tdestination_to_source= -4ns
显然选取Hold1a,对应Tsource_to_destination值为0ns
当source clock和destination clock为同一个时钟时,可以计算得到:
Tsource_to_destination值为0ns,进一步推导
hold slack = Tsource_to_destination + (Tclk-D1 – Tclk-D2) – Tclk_uncertainty – Thold+ Tdata_path_delay > 0可以得到:
Tdata_path_delay >Tclk_uncertainty + Thold + (Tclk-D2 – Tclk-D1)
由上得出数据路径的延时也不能过短,与Setup检查是矛盾对立的存在;在FPGA设计或者数字前端开发时,工程师考虑最多的是Setup是否满足要求,而Hold检查的工作主要交给工具或者负责数字后端的工程师解决。
Timing Report in Vivado:
下面通过简单的实例说明一下vivado中的时序分析,当FPGA设计经过综合实现后,通过Report Timing Summary打开时序报告,如图5、6所示。
(图5)
(图6)
图中有红色部分表示设计中有时序不满足要求,此例中是Setup。选择Setup中未满足要求的Path,打开Path Properties,如图7所示。
(图7)
Setup关键路径的时序报告如图8所示,报告由四部分组成:Summary, Source Clock Path, Data Path和Destination Clock Path,其中由Source Clock Path和Data Path得出Arrival Time,由Destination Clock Path得出Required Time。
(图8)
Hold检查的报告也类似,如图9所示。
【 Vivado 】基本的时序约束、分析的概念相关推荐
- vivado 如何添加时序约束
vivado 如何添加时序约束 一个 FPGA 设计除了管脚分配以外,还有一个重要的约束,那就是时序约束,这里通过向 导方式演示如果进行一个时序约束 点击"Run Synthesis&quo ...
- vivado 亚稳态_VIVADO时序约束及STA基础
一.前言 无论是FPGA应用开发还是数字IC设计,时序约束和静态时序分析(STA)都是十分重要的设计环节.在FPGA设计中,可以在综合后和实现后进行STA来查看设计是否能满足时序上的要求.本文阐述基本 ...
- 时序约束优先级_XILINX-时序约束使用指南中文.pdf
XILINX-时序约束使用指南中文 XILINX 时序约束使用指南笔记 第一章 时序约束介绍 第二章 时序约束方法 第三章 时序约束原则 第四章 在 XST 中指定时序约束 第五章 在 Synplif ...
- FPGA的设计艺术(6)STA实战之SmartTime时序约束及分析示例(I)
前言 FPGA进行时序分析通常使用厂家的编译工具,进行时序分析,但是万变不离其宗,时序分析的知识通常都是通用的,原理都是一致的.下面根据SmartTime的资料来看下时序分析的实际操作是如何的,这在其 ...
- FPGA时序案例分析【Vivado版】
时序问题一直是一个难以理解的难点,这里通过一个简单的实际案例来学习下时序分析,以及解决的方案. 本博文使用Vivado来进行测试分析. 下面给出测试代码: `timescale 1ns / 1ps / ...
- TIMING_06 VIVADO环境下的时序约束 之 输入延迟约束
由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此: https://blog.csdn.net/qq_33486907/ ...
- VIVADO时序约束及STA基础
一.前言 无论是FPGA应用开发还是数字IC设计,时序约束和静态时序分析(STA)都是十分重要的设计环节.在FPGA设计中,可以在综合后和实现后进行STA来查看设计是否能满足时序上的要求.本文阐述基本 ...
- FPGA时序约束(一)基本概念入门及简单语法
文章目录 一.建立时间和保持时间是什么? 二.时序分析分类 三.时钟约束方法 3.1 时钟约束 3.2 输入延时约束 3.3输出延时约束 3.4时序例外 四.时序约束语法补充 文章目前大部分参考明德扬 ...
- FPGA设计-时序约束(中篇-实例分析)
最近想要同步CSDN和微信公众号的内容,各位看客们可以两边都关注一下,方便获取最新的信息.请扫描下面的的二维码添加关注,谢谢支持. 上一篇已经简单的介绍了时序,本文将会以一个ADC实例简单粗暴的进行分 ...
最新文章
- 2013.11.13
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- postman post gin 接收不到_golang web开发——gin实战入门
- 实验1 开发环境的熟悉
- Camel 2.11 –没有Spring的Camel Web应用程序
- Android 系统(126)---Android的死机、重启问题分析方法
- 【网络】为什么我执行了发布操作,但是线上的资源并没有更新?
- windows邮件绑定谷歌邮箱
- java spi 热插拔_利用SPI机制实现责任链模式中的处理类热插拔
- mysql表文件与结构_MySQL文件结构、逻辑架构及sql执行流程分析
- SpringBoot如何整合BBoss Elasticsearch呢
- 一分钟搞懂X86架构
- 跟着做react项目(至P44)
- Bad owner or permissions on C:\\Users\\XX/.ssh/config
- 独立站fp怎么规避Paypal封号?AB站跳转支付 + Paypal轮换收款
- python中的imp模块——让引用模块更加简单
- 聊城中考计算机试题及答案,2016年聊城中考语文试题及答案
- mac Hadoop安装
- word试卷每页设置不同页脚
- 一款带 Wi-Fi 功能的产品/模组可能需要通过哪些认证?
热门文章
- 企业开展网络营销的六个阶段
- linux kernel and user space通信机制,Linux内核与用户空间通信机制研究.pdf
- android system 分区大小,Android System分区大小异常
- 划分微型计算机的标志是,划分微型计算机的标志为
- if null 锁 java_史上最全 Java 中各种锁的介绍
- pyBoard定时器中断中不能够做什么操作? MicroPython,pyBoard
- 报错:java.lang.IllegalArgumentException: non null key required 错误
- python中用来捕获异常的是_python – 在一行中捕获多个异常(块除外)
- android 设置自动弹框,安卓开发 弹出对话框,然后自动消失
- 数字电路技术可能出现的简答题_技术货:模拟电路和数字电路PCB设计的区别