入门资料:FPGA时序分析报告基础与时钟约束实例
FPGA时序分析基础

FPGA时序分析基础首先,我们需要了解什么是时序。
时序是指在一个电路中各个信号的传输时间和时序关系。
对于FPGA设计来说,时序关系通常是由时钟信号驱动的。
时序分析就是通过分析这些时钟信号和数据信号之间的关系,来验证设计的正确性和可靠性。
在FPGA设计中,时序分析的一个重要步骤是确定电路中各个时钟域。
时钟域是指在一个电路中由同一个时钟信号驱动的一组逻辑电路。
不同的时钟域可能有不同的时钟频率和相位关系。
在时序分析中,需要确定时钟域之间的时序关系,以确保数据在不同时钟域之间的正确传输。
时序分析还包括对时序约束的分析和验证。
时序约束是用来指定设计中各个信号的传输时间和时序关系的一组规则。
时序约束包括时钟频率、时钟间隔、输入输出延迟等信息。
在时序分析中,需要验证设计是否满足这些时序约束的要求,并对不满足要求的部分进行优化和修复。
时序分析还包括对时钟信号的稳定性分析。
时钟信号的稳定性指的是时钟信号的上升沿和下降沿之间的时钟偏差。
时钟偏差可能导致数据的不稳定性和传输错误。
在时序分析中,需要对时钟信号的稳定性进行分析和优化,以确保数据的传输准确和可靠。
在时序分析中,还需要考虑到时钟信号的抖动和时钟漂移。
时钟抖动是指时钟信号在传输过程中的波动情况。
时钟漂移是指时钟信号在长时间使用过程中的频率和相位变化。
时序分析中需要对时钟抖动和时钟漂移进行评估和优化,以确保时钟信号的稳定性和可靠性。
总结起来,FPGA时序分析是在设计和验证FPGA电路时非常重要的一项技术。
它通过分析时序关系、时钟信号稳定性和时序约束,来验证设计的正确性和可靠性。
时序分析涉及到时钟域的划分和时序关系的分析,时序约束的验证和优化,以及时钟信号稳定性和时序抖动的分析和优化。
通过进行有效的时序分析,可以帮助设计者实现高效、可靠的FPGA电路设计。
入门资料:FPGA时序分析基础与时钟约束实例

入门:FPGA时序分析基础与时钟约束实例2013-07-16何谓静态时序分析(STA,Static Timing Analysis)?首先,设计者应该对FPGA内部的工作方式有一些认识。
FPGA的内部结构其实就好比一块PCB板,FPGA的逻辑阵列就好比PCB板上的一些分立元器件。
PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。
PCB板上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。
PCB 的信号走线有延时,FPGA的信号走线也有延时。
这就带来了一系列问题,一个信号从FPGA 的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理后从FPGA的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输时间的不一致,不仅会影响FPGA本身的性能,而且也会给FPGA之外的电路或者系统带来诸多问题。
言归正传吧,之所以引进静态时序分析的理论也正是基于上述的一些思考。
它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。
分析的最终结果当然是要求系统时序满足设计者提出的要求。
下面举一个最简单的例子来说明时序分析的基本概念。
假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。
系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图所示的一些可能的布局布线方式。
那么,怎样的布局布线能够达到系统的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、15ns、16ns、17ns、18ns,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。
静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。
时序分析基础与时钟约束实例3

时序分析基础与时钟约束实例(3)文中实例配套SF-CY3开发套件。
更多内容请参考《SF-CY3 FPGA套件开发指南》。
接着,我们要来实际应用这些理论,看看实际工程中如何对这些错综复杂的关系进行分析和处理。
如图所示,我们这个例程的分频计数实验中使用了一个时钟信号clk,每一次计数都是基于这个时钟的上升沿。
这个时钟哪里来?它的时钟频率如何确定?拍脑袋随便设?非也,咱做事一定要有依有据。
如图所示,我们的SF-CY3板载了一颗25MHz的有源晶振,通过管脚分配,我们便将这个时钟引入了设计中。
因此,我们这个设计的时钟便要约束为25MHz,即40ns的时钟周期。
好,下面我们就动手为这个实例添加时序约束。
如图所示,我们点击工具栏的一个闹钟模样的图标便可打开Quartus II内嵌的时序设计TimeQuest,我们接下来的时钟约束设置便是在该工具中完成的。
TimeQuest的主界面如图所示,首先需要新建一个sdc文件,然后在该文件中输入时钟约束脚本,或者使用GUI进行约束设置更新到sdc文件中。
点击菜单栏Netlist→Create Timing Netlisk,弹出的菜单中使用默认设置,点击OK便可。
接着进行时钟约束,点击菜单栏Constraints→Create Clock。
Clock name是我们随便给约束的信号起的名字,没有特别限制;Period为时钟周期,我们的时钟晶振是25MHz的,即40ns;Targets选择实际被约束的时钟管脚,点击改行最后面的按钮可以选择相应的管脚信号;SDC command无须设置,自动根据前面的设置生成,Waveform edges也无须设置,我们采用默认设置,即0ns时钟上升,20ns下降。
点击Run完成约束设置。
接下来,我们要依次点击主界面右下方task栏里的Update Timing Netlist和Write SDC File 选项,弹出的Write SDC File窗口如图所示,我们更改SDC file name为ex0.sdc,接着点击OK。
FPGA中IO时序约束分析

第1章FPGA中IO口时序分析作者:屋檐下的龙卷风博客地址:/linjie-swust/日期:2012.3.11.1 概述在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛。
因此,FPGA时序约束中IO口时序约束也是一个重点。
只有约束正确才能在高速情况下保证FPGA和外部器件通信正确。
1.2 FPGA整体概念由于IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个整体分析,其中包括FPGA的建立时间、保持时间以及传输延时。
传统的建立时间、保持时间以及传输延时都是针对寄存器形式的分析。
但是针对整个系统FPGA的建立时间保持时间可以简化。
图1.1 FPGA整体时序图如图1.1所示,为分解的FPGA内部寄存器的性能参数:(1) Tdin为从FPGA的IO口到FPGA内部寄存器输入端的延时;(2) Tclk为从FPGA的IO口到FPGA内部寄存器时钟端的延时;(3) Tus/Th为FPGA内部寄存器的建立时间和保持时间;(4) Tco为FPGA内部寄存器传输时间;(5) Tout为从FPGA寄存器输出到IO口输出的延时;对于整个FPGA系统分析,可以重新定义这些参数:FPGA建立时间可以定义为:(1) FPGA建立时间:FTsu = Tdin + Tsu – Tclk;(2) FPGA保持时间:FTh = Th + Tclk;(3) FPGA数据传输时间:FTco = Tclk + Tco + Tout;由上分析当FPGA成为一个系统后即可进行IO时序分析了。
FPGA模型变为如图1.2所示。
图1.2 FPGA系统参数1.3 输入最大最小延时外部器件发送数据到FPGA系统模型如图1.3所示。
对FPGA的IO口进行输入最大最小延时约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。
FPGA时序分析时序约束知识

FPGA时序分析时序约束知识一、FPGA时序分析的基本概念1.时序分析的定义时序分析是指通过计算和模拟来评估数字电路在不同条件下的时序要求是否能够满足。
它主要包括时钟周期、时钟偏移、时钟抖动、信号传输延迟等方面的考虑。
2.时序要求时序要求是指数字电路在设计中必须满足的时序条件。
常见的时序要求包括时钟频率、最小信号保持时间、最小信号恢复时间等。
3.时序路径时序路径是指数字电路中信号从输入到输出所经过的所有逻辑门和寄存器。
4.时序违规时序违规是指数字电路在设计中无法满足时序要求的情况。
时序违规可能导致电路功能失效,甚至硬件故障。
二、FPGA时序分析的关键步骤1.时序约束的设置时序约束是在FPGA设计中非常重要的一部分,它用于定义时钟频率、时钟边沿以及其他关键参数。
时序约束通常以SDC(Synopsys Design Constraints)的格式提供。
时序约束的设置需要综合考虑到电路的功能需求、时钟分频、时钟域划分以及时钟边沿和信号的传输延迟等各种因素。
时序约束应该准确地描述信号的起始时间、到达时间和关系,以确保设计满足时序要求。
2.时序路径分析时序路径分析是指通过分析不同信号路径的延迟和时间关系来评估设计是否满足时序要求。
时序路径分析可以通过静态分析和动态仿真两种方式进行。
静态分析主要是利用逻辑综合工具对电路的时序路径进行分析和计算。
动态仿真则是通过对电路进行时钟驱动的行为级仿真来评估时序路径。
两种方法都可以获得电路的路径延迟和时间关系,以判断设计是否满足时序要求。
3.时序修复当时序分析发现设计存在时序违规时,需要进行时序修复来解决问题。
时序修复主要包括时钟域划分、时钟频率调整、逻辑重构等方法。
时钟域划分是指将设计划分为不同的时钟域,确保时钟边沿的一致性。
时钟频率调整是通过逻辑优化和时序约束调整来改善设计的时序性能。
逻辑重构则是通过改变电路的结构和时序路径,以使设计满足时序要求。
三、时序约束的知识1.时钟频率设置时钟频率设置是指设置时钟的工作频率,以控制电路的运行速度和性能。
FPGA时序约束、时序分析

FPGA设计之——时序设计FPGA设计一个很重要的设计是时序设计,而时序设计的实质就是满足每一个触发器的建立(Setup)/保持(Hold)时间的要求。
建立时间(Setup Time):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(Hold Time):是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。
FPGA设计分为异步电路设计和同步电路设计,然而很多异步电路设计都可以转化为同步电路设计,在设计时尽量采用同步电路进行设计。
对于同步电路可以转化的逻辑必须转化,不能转化的逻辑,应将异步的部分减到最小,而其前后级仍然应该采用同步设计。
为了让同步电路可靠地运行,就要对时钟偏差进行控制,以使时钟偏差减小到可用的范围。
影响时钟偏差的主要有以下几个因素:o用于连接时钟树的连线o钟树的拓扑结构o时钟的驱动o时钟线的负载o时钟的上升及下降时间在通常的FPGA设计中对时钟偏差的控制主要有以下几种方法:o控制时钟信号尽量走可编程器件的的全局时钟网络。
在可编程器件中一般都有专门的时钟驱动器及全局时钟网络,不同种类、型号的可编程器件,它们中的全局时钟网络数量不同,因此要根据不同的设计需要选择含有合适数量全局时钟网络的可编程器件。
一般来说,走全局时钟网络的时钟信号到各使用端的延时小,时钟偏差很小,基本可以忽略不计。
o若设计中时钟信号数量很多,无法让所有的信号都走全局时钟网络,那么可以通过在设计中加约束的方法,控制不能走全局时钟网络的时钟信号的时钟偏差。
o异步接口时序裕度要足够大。
局部同步电路之间接口都可以看成是异步接口,比较典型的是设计中的高低频电路接口、I/O接口,那么接口电路中后一级触发器的建立-保持时间要满足要求,时序裕度要足够大。
o在系统时钟大于30MHz时,设计难度有所加大,建议采用流水线等设计方法。
FPGA_时序约束和分析

FPGA_时序约束和分析FPGA时序约束和分析是指在FPGA设计中,对时序关键路径进行约束以满足设计要求,并通过时序分析验证设计的时序正确性。
时序关键路径是指在时钟周期内所经过的最长的路径,也是影响设计稳定性和工作频率的最重要因素。
时序约束的目的是为了确保设计在给定的时钟频率下能够正常工作。
通过对设计中的时序关键路径进行约束,可以指导综合和布局布线工具生成满足时序要求的设计。
常见的时序约束包括时钟频率、时钟信号和数据信号的时钟偏移、时钟与数据的延迟等。
在进行时序分析之前,需要进行综合和布局布线操作。
综合是将RTL (Register Transfer Level)级别的设计代码转换为门级电路实现的过程,其中包括对代码进行语法检查、逻辑优化和功能映射等操作。
布局布线是指将综合结果进行物理实现的过程,其中包括对门电路进行布局和连线的操作。
时序分析是指通过对设计进行时钟域划分和时序路径的分析,来验证设计是否满足时序要求。
时钟域划分是将设计中的电路元件(即时钟域)划分为不同的时钟域,并通过域间缓存或时钟同步电路解决时钟跨域问题。
时序路径分析是指对设计中的时序关键路径进行定位和分析,包括时钟路径、数据路径和控制路径等。
在进行时序分析时,通常会使用静态时序分析工具对设计进行检查。
静态时序分析工具可以对设计进行计时模拟和约束检查,验证设计是否能够满足时序要求。
常见的静态时序分析工具有Synopsys PrimeTime、Cadence Encounter Timing System等。
1.时钟频率:时钟频率是指设计中所使用的时钟信号的速度。
时钟频率越高,设计的工作速度越快。
时钟频率的选择应该根据设计需求和硬件资源进行权衡,并通过时序分析验证是否能够满足设计要求。
2.时钟偏移:时钟偏移是指时钟信号和数据信号之间的时间差。
时钟偏移应该保持在一定范围内,以确保数据在时钟边沿稳定传输。
时钟偏移的约束可以通过对时钟和数据路径设置合适的延迟来实现。
FPGA设计中关于时序约束(转)

FPGA设计中关于时序约束(转)FPGA设计中关于时序约束关于FPGA设计中,时序约束的定义的总结说明1.全局时序约束1.1 PERIOD约束用于约束同一时间域中同步逻辑单元之间的时序关系,PERIOD 约束会自动处理寄存器时钟端的反相问题,即,如果相邻同步元件时钟相位取反,那么它们之间的延时将被默认PERIOD约束值的一半。
NET “net_name” PERIOD = period {HIGH|LOW} [high_or_low_time];最小时钟周期的计算: Tclk = Tcko + Tnet +Tlogic + Tsetup -Tclk_skew; 其中,Tcko为从时钟输入到DFF输出端的时钟输出时间,Tnet为网线延时,Tlogic为同步元件之间的组合逻辑延时,Tsetup为同步元件的建立时间。
1.2 OFFSET约束用于约束数据的建立时间和保持时间,主要是输入PAD到同步单元和同步单元到输出PAD的时序关系OFFSET_IN_BEFORE用于定义输入数据比有效时钟沿提前多长时间准备好,其芯片内部与输入引脚相连的组合逻辑的延时不能大于该时间,否则,输入的数据就达不到要求的建立时间。
OFFSET_IN_AFTER用于定义输入数据在有效时钟沿后多长时间到达芯片的输入引脚,其作用和BEFORE是一样的,不过BEFORE的时钟沿是AFTER的下一个沿,如果一起定义的话。
上述约束用于设定在数据输入时,保证有效时钟沿到来时,数据已经达到稳定。
OFFSET_OUT_AFTER用于定义了输出数据在有效时钟沿之后多长时间之内保持稳定,其实是定义了输出的最大的数据保持时间,芯片内部的输出延时必须小于这个值。
OFFSET_OUT_BEFORE用于定义在下一个时钟信号到来之前的某个时间,必须输出数据,以供下一级器件使用。
这些约束用于对设计输出端的数据输出进行约束,以满足下一级器件的建立时间的要求,保证下一级的采样数据是稳定可靠的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
入门:FPGA时序分析基础与时钟约束实例2013-07-16何谓静态时序分析(STA,Static Timing Analysis)?首先,设计者应该对FPGA内部的工作方式有一些认识。
FPGA的内部结构其实就好比一块PCB 板,FPGA的逻辑阵列就好比PCB板上的一些分立元器件。
PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。
PCB板上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。
PCB的信号走线有延时,FPGA的信号走线也有延时。
这就带来了一系列问题,一个信号从FPGA的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理后从FPGA的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输时间的不一致,不仅会影响FPGA本身的性能,而且也会给FPGA之外的电路或者系统带来诸多问题。
言归正传吧,之所以引进静态时序分析的理论也正是基于上述的一些思考。
它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。
分析的最终结果当然是要求系统时序满足设计者提出的要求。
下面举一个最简单的例子来说明时序分析的基本概念。
假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。
系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图所示的一些可能的布局布线方式。
那么,怎样的布局布线能够达到系统的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、15ns、16ns、17ns、18ns,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。
静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。
若设计者不添加时序约束,那么时序分析就无从谈起。
特权同学常常碰见一些初学者在遇到问题时不问青红皂白就认为是时序问题,实际上只有在添加了时序约束后,系统的时序问题才有可能暴露出来。
下面我们再来看一个例子,我们假设有4个输入信号,经过FPGA内部一些逻辑处理后输出。
FPGA内部的布线资源有快有慢之分,好比国道和高速公路。
通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时则>10ns。
默认情况下,离高速通道较近的din_2和din_3路径被布线到了高速通道上,当前的4个信号在FPGA内部的延时为:din1 = 15ns, din2 = 4ns, din3 = 6ns, din4 = 13ns。
但是,我们实际的系统需求是这样的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。
按照前面给出的4个输入信号的默认布局布线情况来看,din1是无法满足时序要求的。
如果我们按照实际的需求对FPGA进行如下的时序约束:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。
此时,FPGA将重新进行布局布线。
由于添加了时序约束,因此,FPGA的布局布线工具会根据这个实际需求,重新做布局布线后,我们看到,重新布局布线后的路径延时如下:din1 = 7ns, din2 = 4ns, din3 = 18ns, din4 = 13ns。
此时,FPGA内部的时序全部都能够满足要求。
关于约束,我们要稍微提一下两种不恰当的约束方法,即欠约束和过约束。
我们假设下面提到的两种情况下的原始系统实际时序要求都是一样的,即前面我们所说的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns但是下面这两种情况的约束不是完全按照实际系统时序需求来约束,我们来看看这些情况下会出现什么问题。
欠约束的情况(din1和din2过约束):如果对本实例添加约束为 din1 < 20ns, din2 < 20ns, din3 < 20ns, din4 < 20ns。
此时,由于4条路径的延时都能够控制在20ns要求之内,所以当前的约束都能够达到目标。
但是,相对于实际的情况,有两种情形:A. din1和din2走了高速通道,那么当前约束也能够满足实际的时序要求;B. din1和din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的,整个系统的时序无法满足要求。
过约束的情况(din3和din4过约束):如果对本实例添加约束为: din1 < 10ns, din2 < 10ns, din3 < 10ns, din4 < 10ns。
此时,由于能够走高速通道使得路径延时<10ns的路径只有2条,那么无论如何当前的约束都有2条无法达到目标。
但是,相对于实际的情况,有两种情形:A. din1和din2走了高速通道,那么当前约束也能够满足实际的时序要求;B. din1和din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的,整个系统的时序无法满足要求。
这个简单的例子当然不会是FPGA内部实际的情况,但是FPGA内部的各种资源若要得到均衡的分配,设计者就必须添加一定的约束(时序约束),将设计的需求传达给工具,那么才有可能指导工具进行资源的合理分配,保证系统的基本性能要求得以实现。
时序欠约束和时序过约束都是不可取的,设计者应该根据实际的系统时序要求,添加合适的时序要求(可以稍微过约束),帮助设计工具达到最佳的时序性能。
下面我们再来认识一些时序分析的几个最基本的概念,即时钟和建立时间、保持时间的关系。
时钟这个并不陌生的词汇,特权同学也不大做文章,就先举个最典型的时钟模型献给大家。
如图所示,理想的时钟模型是一个占空比为50%且周期固定的方波。
为一个时钟周期,为高脉冲宽度,为低脉冲宽度,=+。
占空比定义为高脉冲宽度与周期之比,即/。
所谓建立时间(),是指在时钟上升沿到来之前数据必须保持稳定的时间;所谓保持时间(),是指在时钟上升沿到来以后数据必须保持稳定的时间。
一个数据需要在时钟的上升沿被锁存,那么这个数据就必须在这个时钟上升沿的建立时间和保持时间内保持稳定。
这里,我们举一个二输入与功能的时序设计模型,如图所示。
输入数据data1和data2会在时钟的上升沿被分别锁存到reg2和reg1的输出端,然后这两个信号分别经过各自的路径到达与门and的输入端,他们相与运算后信号传送到下一级寄存器reg3的输入端,对应他们上一次被锁存后的下一个时钟上升沿,reg3的输入端数据被锁存到了输出端。
这个过程是一个典型的寄存器到寄存器的数据传输。
下面我们就要以此为基础来探讨他们需要满足的建立时间和保持时间关系。
下面这个波形,clk表示时钟源发出的时钟波形,它要分别达到上面例子中的源寄存器reg1和reg2,以及达到目的寄存器reg3,所经过的时间是不一样的,因此我们看到波形中给出的时钟达到reg3的波形clk_r3相对于基准时钟clk的波形会略有一些偏差(稍微延时一些,这是真实情况的模拟)。
Reg1out和reg2out分别是数据data1和data2被锁存到各自寄存器的输出端的波形,reg3in则是reg1out和reg2out的波形经过路径延时和门延时后到达reg3in的波形,而reg3out则是在clk_r3的上升沿来到并锁存好有效的数据后,其寄存器输出端的波形。
在这个波形中,我们看到clk_r3的前后各有一条虚线,前一条虚线到clk_r3的上升沿这段时间即建立时间,clk_r3的上升沿到后一条虚线即保持时间。
前面对建立时间和保持时间下定义时提到过,在这段时间内不能够有数据的变化,数据必须保持稳定。
而在这个波形中,也确实没有看到建立时间和保持时间内,reg3in的数据有任何的变化,因此我们可以稳定的将reg3in的数据锁存到reg3的输出reg3out中。
我们再来看下面这个波形,同样的一些信号,但我们发现reg3in在clk_r3的建立时间内发生了变化,这带来的后果就是clk_r3上升沿锁存到的reg3in数据不确定,那么随后的reg3out值也会处于一个不确定状态。
比如第一个时钟周期,原本reg3in应该是稳定的低电平,但是由于真个路径上的延时时间过长,导致了reg3in在clk_r3的建立时间数据还未能稳定下来,在建立时间内出现了电平正处于从高到低的变化,即不稳定的状态,那么导致的后果就是reg3out的最终输出要么是高电平要么是低电平,而不是原本期望的低电平。
我们再来看看保持时间违规的情况,如图所示,这次是数据传输得太快了,原本应该下一个时钟周期到达clk_r3的数据竟然在clk_r3的前一个时钟周期后的保持时间还未过去就来到了。
因此,它出现的最终危害也是后端输出的reg3out处于不确定的状态。
对于FPGA内部而言,通常我们把它的时序路径分为三类基本的约束路径,即:●输入信号 pin2reg●内部信号 reg2reg●输出信号 reg2pin我们逐个来看这三类基本路径分别约束的是那个部分的时序。
reg2reg路径约束的对象是路径起始的源寄存器以及最终结束的目的寄存器都在FPGAn内部的路径。
如图所示,红色部分是从一个FPGA内部的寄存器到FPGA内部的另一个寄存器的路径,他们共用一个时钟(当然也有不共用一个时钟的reg2reg路径,这种路径的分析会复杂一些,这里不做深入讨论)。
对于reg2reg路径,我们只要告诉FPGA 时序分析工具他们所使用时钟的频率(或时钟周期),那么FPGA内部通常就“心领神会”的让这条reg2reg的路径总延时不超过这个时钟频率。
我们再来看pin2reg的路径模型,如图所示。
虽然和FPGA连接的外部芯片内部寄存器的状态我们无从知晓(一般芯片也不会给出这么detail的内部信息),但是一般芯片都会给出针对于这个芯片管脚的一些时序信息,如Tco、Tsu和Th等,我们其实也是用图示的这个模型来分析的。
在这个模型中,红色的大圈所覆盖的路径代表了和FPGA内部reg2reg分析一样的模型,pin2reg原则上只是reg2reg分析的一部分。
绿色圆圈则表示我们实际要告诉FPGA的pin2reg约束信息,或者应该这样说,我们希望进行路径延时控制的路径就是这段绿色圆圈覆盖的路径,但是我们需要通过整个reg2reg路径的情况,即根据绿色圆圈以外、红色圆圈以内这部分路径的延时情况去告诉FPGA内部pin2reg路径延时可以在什么样一个范围。