FPGA静态时序分析模型——寄存器到寄存器
- 格式:doc
- 大小:1.86 MB
- 文档页数:11
FPGA静态时序分析——IO口时序(InputDelayoutputDelay)FPGA静态时序分析——IO口时序(Input Delay /output Delay)1.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数据传输时间:FT co = Tclk + Tco + Tout;由上分析当FPGA成为一个系统后即可进行IO时序分析了。
FPGA模型变为如图1.2所示。
图1.2 FPGA系统参数1.3 输入最大最小延时外部器件发送数据到FPGA系统模型如图1.3所示。
对FPGA的IO口进行输入最大最小延时约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。
FPGA静态时序分析在FPGA设计中,静态时序分析是一个非常重要的步骤,用于评估电路在不同工作条件下的时序要求是否能够满足。
本文将介绍FPGA静态时序分析的概念、步骤、工具以及常见的优化技术,以帮助读者更好地理解和应用静态时序分析。
1.概念静态时序分析是指在FPGA设计中,通过分析电路中各个时序元素(如时钟、延迟等)之间的关系,来确定电路是否能够满足设计要求的一种分析方法。
它能够预测电路在各种工作条件下的最快和最慢工作频率,从而保证电路能够正确运行。
2.步骤静态时序分析通常包括以下几个步骤:(1)设计综合:首先将设计描述(如Verilog或VHDL)综合成门级电路表示,得到与FPGA相关的逻辑网表。
(2)时钟约束设置:设置设计中的时钟频率和时钟边沿等约束条件。
时钟约束对于时序分析非常关键,它告诉工具如何处理时钟信号以及如何计算时钟间的延迟等。
(3)路径分析:对电路中的各个时序路径进行分析,包括从时钟到寄存器的路径(称为注册路径)和从寄存器到输出的路径(称为组合路径)。
路径分析主要用于确定时序路径上的关键路径和最长路径。
(4)时序缺陷检测:对设计中存在的潜在时序缺陷进行检测,例如时序冒险、信号捕获问题等。
时序缺陷可能导致电路不能按照设计要求正确工作,因此在分析过程中需要及时检测和解决这些问题。
(5)时序优化:根据静态时序分析的结果,对电路进行优化,以满足设计要求。
常见的优化技术包括添加额外的时钟约束、优化逻辑电路结构、调整时钟频率等。
3.工具在进行FPGA静态时序分析时,通常使用专门的时序分析工具,如Xilinx的TimeQuest和Altera的TimeQuest等。
这些工具能够自动识别设计中的时序路径和时序要求,并进行全面的时序分析和优化。
4.优化技术静态时序分析的结果可以指导电路的优化,以满足设计要求。
常见的优化技术包括:(1)添加额外的时钟约束:通过设置更严格的时钟约束,可以减小时钟间的延迟、提高时钟频率,并且可以帮助工具更准确地评估时序关系。
FPGA时序分析FPGA (Field-Programmable Gate Array) 是一种可编程逻辑门阵列芯片,它通过配置在其内部的逻辑门和可编程连线实现不同的逻辑功能。
FPGA 在数字电路设计中广泛应用,其灵活性和可重构性使其成为快速原型设计和现场配置电路的理想选择。
然而,FPGA设计和时序分析是一个复杂的过程。
时序分析是验证设计电路的正确性以及保证其能够在时钟信号的驱动下按照预期的时间顺序工作的过程。
下面将重点介绍FPGA时序分析的基本原理和关键概念。
在FPGA设计中,时序分析主要关注以下几个方面:时钟,时钟延迟,组合逻辑路径和寄存器。
1.时钟:时钟信号在FPGA设计中起到重要作用,它用于同步各个电路模块的操作。
时钟的频率和占空比对电路实现的性能和功耗都有很大的影响。
2.时钟延迟:时钟信号在从原始源头传达到特定电路元件的过程中会有一定的延迟。
这个延迟可以由时钟发生器的性能以及时钟信号在FPGA中传输的路径和电路元件的特性决定。
3.组合逻辑路径:组合逻辑路径是指信号从输入到输出经过的一系列逻辑门的路径。
每个逻辑门都会引入一定的延迟,而组合逻辑路径的时序分析主要关注延迟和信号传播的时间约束。
4.寄存器:FPGA中的寄存器用于存储电路的中间结果或暂存数据,它们可以在时钟上升沿或下降沿触发。
寄存器的时序分析包括确定数据到达寄存器的时间以及寄存器中数据对输出的影响。
时序分析主要用于验证和优化FPGA电路设计。
通过分析时钟频率、时钟延迟和电路路径延迟,可以确定电路是否满足设计规范和时间约束。
时序分析还可以帮助设计人员优化电路以达到更好的性能,如降低时钟频率、优化组合逻辑路径、调整寄存器设置等。
在进行 FPGA 时序分析时,通常使用的工具是时序分析器。
时序分析器是一种软件工具,可以输入 FPGA 设计的网络描述、时钟频率、时钟源等信息,利用相关算法和模型计算出电路的时序性能。
常见的时序分析器包括 Xilinx 的 Vivado 和 Altera 的 Quartus。
一、填空题:1、 FPGA结构一般分为三部分:可编程逻辑块(CLB)、可编程I/O模块和可编程内部连线。
2、 CPLD的内部连线为连续式布线互连结构,任意一对输入、输出端之间的延时是固定;FPGA的内部连线为分段式布线互连结构,各功能单元间的延时不定(不可预测)。
3、大规模可编程器件主要有CPLD和FPGA两类,其中CPLD通过可编程乘积项逻辑实现其逻辑功能。
基于SRAM的FPGA器件,每次上电后必须进行一次配置。
FPGA内部阵列的配置一般采用在电路可重构技术,编程数据保存在静态存储器(SRAM) ,掉电易失。
4、目前世界上有十几家生产CPLD/FPGA的公司,最大的两家是:Altera,Xilinx。
5、硬件描述语言(HDL)是EDA技术的重要组成部分,是电子系统硬件行为描述、结构描述、数据流描述的语言,它的种类很多,如VHDL、Verilog HDL、AHDL6、 WHEN_ELSE条件信号赋值语句和 IF_ELSE顺序语句的异同:* WHEN_ELSE条件信号赋值语句中无标点,只有最后有分号;必须成对出现;是并行语句,必须放在结构体中。
* IF_ELSE顺序语句中有分号;是顺序语句,必须放在进程中7、可编程逻辑器件设计输入有原理图输入、硬件描述语言输入和波形输入三种方式。
原理图输入方式是一种最直接的设计描述方式,波形设计输入适用于时序逻辑和有重复性的逻辑函数。
硬件描述语言的突出优点是:* 语言与工艺的无关性;语言的公开可利用性,便于实现大规模系统的设计;* 具有很强逻辑描述和仿真功能,而且输入效率高,在不同设计输入库之间的转换非常方便,用不着对底层的电路和PLD结构的熟悉。
8、用VHDL/Veilog HDL语言开发可编程逻辑电路的完整流程:文本编辑→功能仿真→逻辑综合→布局布线→时序仿真。
*所谓综合,就是根据设计功能和实现该设计的约束条件(如面积、速度、功耗和成本等),将设计输入转换成满足要求的电路设计方案,该方案必须同时满足与其的功能和约束条件。
何谓静态时序分析(Static Timing Analysis,简称STA)何谓静态时序分析(Static Timing Analysis,简称STA)?它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。
分析的最终结果当然是要求系统时序满足设计者提出的要求。
下面举一个最简单的例子来说明时序分析的基本概念。
假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。
我们的系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图4.1所示的一些可能的布局布线方式。
那么,怎样的布局布线能够达到我们的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、14ns、16ns、17ns、18ns,有两条路径能够满足要求,布局布线就会选择满足要求的两条路径之一。
1.静态时序分析模型因此,有些说法是错误的,不分什么情况就说时序不收敛,其实在不加约束的情况下谈时序约束是没有意义的。
附加约束的基本作用1.提高设计的工作频率对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。
通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。
2.获得正确的时序分析报告几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对设计的性能做出评估。
静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。
3.指定FPGA/CPLD引脚位置与电气标准FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从而节省了系统开发时间。
这样,电路板加工完成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。
非常详细的静态时序分析教程静态时序分析是电子设计自动化领域中的重要方法之一,用于评估数字电路中的时序性能。
本教程将介绍静态时序分析的基本概念、方法和步骤,并提供一些实例来帮助读者深入了解这个领域。
一、静态时序分析的基本概念在进行静态时序分析之前,我们需要了解一些基本概念:1.时钟边沿:时钟是数字电路中的基本信号之一,它的边沿可以分为上升沿和下降沿。
时序分析通常以时钟的上升沿作为参考边沿进行分析。
2.关键路径:在一个数字电路中,存在多条路径可以连接输入和输出。
关键路径是指在特定时钟频率下,数据从输入到输出的延时最长的路径。
时序分析的目标之一就是找到并优化关键路径,以提高电路的性能。
3.时序约束:时序约束是对数字电路的时序性能要求的规定。
通常由设计者在进行时序分析之前进行设置,用于指导分析工具进行正确的分析和优化。
二、静态时序分析的方法和步骤静态时序分析的主要方法是通过对电路中的时钟域、数据路径和约束条件进行建模和分析,从而判断关键路径和优化方案。
下面是静态时序分析的基本步骤:1. 建立电路模型:首先,需要将数字电路转化为时序分析工具可以理解的模型,通常可以使用硬件描述语言(如Verilog或VHDL)对电路进行描述。
2.设定时序约束:根据设计规范和目标性能要求,制定适当的时序约束,如最大延时、最小脉冲宽度等。
时序约束的制定需要根据具体的电路应用和设计要求进行。
3.进行静态时序分析:使用时序分析工具对电路进行分析,找到关键路径,并计算出关键路径的延时。
关键路径上的最大延时指示了电路的最坏情况性能。
4.优化关键路径:在找到关键路径后,可以通过各种手段进行优化,如增加缓冲器、减少逻辑门延时等。
优化的目标是减小关键路径的延时,以提高整个电路的性能。
5.重新进行时序分析:在优化关键路径之后,需要重新进行时序分析,确保所做的优化在整个电路中得到正确应用,并满足时序约束。
三、实例分析让我们通过一个简单的例子来说明静态时序分析的具体过程。
静态时序分析的基本概念和⽬的内容:静态时序分析的概念与⽬的与时钟相关的时序特性静态时序分析(Statistic)时钟sdc静态时序分析的概念和⽬的时序路径与关键路径时序路径:是⼀个点到另⼀个点的数据通路,数据沿着时序路径进⾏传递,每条时序路径有⼀个起点(Startpoint)和⼀个终点(Endpoint)。
起点可以是:数据输⼊端⼝,触发器或寄存器的时钟引脚。
终点可以是:数据输出端⼝,时序器件的除时钟引脚外的所有输⼊引脚。
因此时序路径可以是数据输⼊端⼝到寄存器、寄存器到寄存器、寄存器到输出端⼝、输⼊端⼝到输出端⼝。
如下图电路中存在4条路径:从输⼊端⼝A到FF1的D端;从FF1的CLK端到FF2的D端;从FF2的CLK端到输出端⼝Z;从输⼊端⼝A到输出端⼝Z。
⼀般情况下,路径1、2、3是最常见的,路径4⽐较少见。
关键路径:路径的特性是存在延时,其中延时最长的⼀条称为关键路径。
常见的时序路径约束在进⾏约束前,需要了解触发器的三个概念:建⽴时间、保持时间和亚稳态。
这⾥简单介绍这三个概念,更深⼊的介绍见《笔试题》、《亚稳态》。
建⽴时间指的是在时钟有效沿来之前数据必须保持稳定的⼀段时间,否则触发器锁存不住数据,⽤Tsu表⽰。
保持时间指的是在时钟有效沿来之后数据仍需保持稳定的⼀段时间,否则触发器锁存不住数据,⽤Th表⽰。
亚稳态:半导体⼚商在⼯艺库中规定了每个触发器的建⽴时间和保持时间参数。
如果数据在建⽴时间和保持时间中被采样,那么其输出是不可预知的,有可能是0,也有可能是1,这种未知的状态称为亚稳态。
了解这三个概念后,就可以对路径进⾏约束。
约束的⽬的就是为了确定寄存器是否满⾜建⽴时间(和保持时间)。
与时钟相关的时序特性时钟的时序特性主要分为抖动(Jitter)、偏移(Skew)和占空⽐失真(Duty Cycle Distortion)三种。
在低速设计中不需要考虑这些时序特性;但是在告诉设计中,由于这三种特性会造成普遍的时序问题。
FPGA中的时序分析(⼀)谈及此部分,多多少少有⼀定的难度,笔者写下这篇⽂章,差不多是在学习FPGA⼀年之后的成果,尽管当时也是看过类似的⽂章,但是都没有引起笔者注意,笔者现在再对此知识进⾏梳理,也发现了有很多不少的收获。
笔者根据⽹上现有的资源,作进⼀步的总结,希望能够有所帮助。
静态时序分析(STA,static timing analysis),对于STA的理解,可以想象在FPGA的内部好⽐⼀块PCB,FPGA的逻辑阵列好⽐PCB板上的⼀些分⽴元器件,PCB通过导线将具有相关电⽓特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通,PCB上的信号通过任何⼀个元器件都会产⽣⼀定的延时,FPGA的信号通过内部逻辑门传输也有⼀定的延时,PCB信号⾛线也有延时,FPGA信号⾛线也有延时,这就带来了⼀系列的问题,⼀个信号从FPGA的⼀端输⼊,经过⼀定的逻辑处理后从FPGA的另⼀端输出,这期间会产⽣多⼤的延时呢?有多个总线信号从FPGA的⼀端输⼊,这条总线的各个信号经过逻辑处理之后从FPGA的另⼀端输出,这条总线的各个信号的延时⼀致吗?之所以关⼼这些问题,是因为过长的延时或者⼀条总线多个信号传输延时的不⼀致,不仅会影响FPGA本⾝会给FPGA之外的电路或者系统带来诸多的问题。
所以针对上⾯的⼀系列问题,设计者需要提出⼀些特定的时序要求,针对现有的电路给出时序约束,分析时序,本质上是节点对节点之间的时序分析,如果没有节点,时序也就⽆从谈起。
在FPGA中,我们可以把节点当作是寄存器与寄存器之间的时序分析,寄存器与寄存器之间可能还有⼀些组合逻辑充斥着。
所以时序路径通常有四⼤类:(1)寄存器到寄存器类型,即reg2reg;(2)输⼊引脚到寄存器类型,即pin2reg;(3)寄存器到输出引脚类型,即reg2pin;(4)输⼊引脚到输出引脚类型,即pin2pin;针对上述四种基本时序路径,最关⼼的就是数据信号和时钟锁存沿之间的建⽴时间和保持时间的关系。
fpga中寄存器分类
FPGA(现场可编程门阵列)中的寄存器可以根据其功能和用途进行分类。
以下是几种常见的分类方式:
1. 输入寄存器(Input Register),输入寄存器用于存储输入信号,以便在时钟信号到来时进行稳定。
它们通常用于捕获外部输入信号,以确保在时钟边沿到来时保持稳定状态。
2. 输出寄存器(Output Register),输出寄存器用于存储输出信号,以便在时钟信号到来时进行稳定。
它们通常用于生成输出信号,以确保在时钟边沿到来时保持稳定状态。
3. 中间寄存器(Intermediate Register),中间寄存器用于在逻辑电路中存储中间结果。
它们可以用于优化逻辑路径,减少时序问题,并提高电路性能。
4. 状态寄存器(State Register),状态寄存器用于存储电路的状态信息。
它们通常用于有限状态机(FSM)或其他需要存储状态信息的逻辑电路中。
5. 存储器寄存器(Memory Register),存储器寄存器用于存储数据,例如RAM(随机存取存储器)或其他形式的存储器。
6. 控制寄存器(Control Register),控制寄存器用于存储控制信息,例如配置寄存器用于配置FPGA的功能和行为。
这些寄存器在FPGA中扮演着不同的角色,对于设计和优化FPGA逻辑电路至关重要。
同时,了解这些寄存器的分类有助于理解FPGA的工作原理和应用。
FPGA中的时序分析和设计FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,它可以根据需要重新配置其内部的逻辑电路,使其具备不同的功能。
时序分析和设计是在FPGA开发过程中非常重要的一个环节,它关注的是在时钟信号的控制下,各个逻辑模块的时序关系和稳定性。
时序分析主要包括时钟周期、时钟延迟、时序路径、时序异常等内容。
时钟周期是指FPGA设计中时钟信号的频率,这个频率决定了FPGA的工作速度和性能。
时钟延迟是指在FPGA中信号从一个逻辑块传输到另一个逻辑块所需要的时间,它受到时钟频率、逻辑电路的复杂度等因素的影响。
时序路径是指信号在FPGA中从产生到消耗的整个路径,时序路径中的最慢路径决定了FPGA系统的最高工作频率。
时序异常是指由于时序约束不满足导致的设计中的错误,如时钟偏压、时钟竞争、时钟抖动等。
时序设计是为了确保FPGA系统中的信号在时钟的约束下能够按照预期的时序关系工作。
在时序设计中,首先需要确定各个逻辑模块的时钟边界,即在哪个时钟周期的上升沿或下降沿进行工作。
然后根据时钟边界确定数据路径中的寄存器,以确保在时序路径中信号的稳定性。
同时,需要对时钟和数据路径进行时钟分析,确保时钟信号的时钟分频和时钟相位满足系统设计的要求。
最后,还需要进行时序约束的评估和优化,以确保设计的可靠性和性能。
在进行时序分析和设计时,需要使用一些工具和方法对FPGA系统进行建模和仿真。
常用的工具包括时序约束工具、时序分析工具、时序优化工具、时序仿真工具等。
时序约束工具用于确定和描述FPGA设计中的时序约束,如时钟频率、时钟相位、时序路径等。
时序分析工具用于对时序约束进行验证和分析,以确定设计中是否存在时序异常,如时钟偏压、时钟竞争等。
时序优化工具用于对设计进行时序优化,以提高系统的工作频率和性能。
时序仿真工具用于对设计进行仿真验证,以确保FPGA系统在时序约束下能够按照预期的时序关系工作。
阿东带您学习FPGA-TimeQuest静态时序分析V1.1阿东恒创科技2014/6/阿东带您学习FPGA-TimeQuest静态时序分析V1.1恒创科技阿东团队2014-06目录目录 (4)1写在前面 (6)2简介 (9)3为什么要做时序分析 (9)4时序分析的概念 (11)4.1同步逻辑时延模型 (11)4.1.1时钟抖动与偏斜 (12)4.1.2建立时间/保持时间 (13)4.1.3恢复时间/移除时间 (14)4.1.4Launch Edge&Latch Edge (15)4.1.5Data&Clock Time (15)4.2时序分析基本公式 (19)4.2.1建立时间(Setup Time)检查: (20)4.2.2保持时间(Hold Time)检查: (21)4.2.3多周期路径(Multicycle Paths)检查 (23)4.3Altera器件时序模型 (24)4.4基本单元与paths (26)4.5FPGA时序约束的几种方法 (28)5使用Timequest时序分析器约束分析设计 (30)5.1Timequest基础 (30)5.1.1时序约束和分析流程 (30)5.1.2Timequest GUI (32)5.1.3看懂时序波形图 (34)5.2时序约束 (35)5.2.1Clocks (37)5.2.2PLL clocks (42)5.2.3I/O (43)5.2.4False paths (50)4时序分析设计实例一-LED流水灯 (52)5.1LED流水灯功能框图 (52)5.2LED流水灯代码 (52)5.3LED流水灯时序分析 (53)5时序分析设计实例二-摄像头接口 (62)5.1摄像头简介 (62)5.1摄像头接口 (63)5.1摄像头接口时序 (63)6时序分析设计实例三-SDRAM (71)5.1SDRAM控制器功能框图 (72)5.2SDRAM控制器时序分析 (72)7写在最后 (76)8版权声明 (76)1写在前面作者简介:大家好,我们是阿东团队,都是有7年经验的高级FPGA&IC开发工程师。
静态时序分析1、STA过程中定义的时序路径有四种,如图1所示图1路径1:基本输入到内部时序单元的数据输入端;路径2:内部时序单元的时钟输入端到下一个内部时序单元的数据输入端;路径3:内部时序单元的数据输入端到基本输出端口;路径4:基本输入端到基本输出端口。
静态时序分析的目的是保证设计中所有的以上路径,满足内部时序单元对建立时间和保持时间的要求。
即无论起点是什么,信号都可以被及时地传递到该路径的终点,并且在电路正常工作所必需的时间段内保持恒定,也就是时序收敛。
2、时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。
3、建立时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。
如图2所示:图2 建立时间示意图4、保持时间(Th):是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。
保持时间示意图如图3所示:图35、时钟偏斜(clock skew):是指一个时钟源到达两个不同寄存器时钟端的时间偏移,如图4所示:图4时钟偏斜计算公式如下:Tskew = Tclk2 - Tclk16、数据到达时间(Data Arrival Time):输入数据在有效时钟沿后到达所需要的时间。
主要分为三部分:时钟到达寄存器时间(Tclk1),寄存器输出延时(Tco)和数据传输延时(Tdata),如图5所示:图5数据到达时间计算公式如下:Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata7、时钟到达时间(Clock Arrival Time):时钟从latch边沿到达锁存寄存器时钟输入端所消耗的时间为时钟到达时间,如图6所示:图6时钟到达时间计算公式如下:Clock Arrival Time = Lacth edge + Tclk28、数据需求时间(Data Required Time):在时钟锁存的建立时间和保持时间之间数据必须稳定,从源时钟起点达到这种稳定状态需要的时间即为数据需求时间。
在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序的约束。
通常,在FPGA设计工具中包含有4种路径:○1从输入端口到寄存器,○2从寄存器到寄存器,○3从寄存器到输出,○4从输入到输出的纯组合逻辑。
通常,需要对这几种路径分别进行约束,以便使设计工具能够得到最优化的结果。
下面对这几种路径分别进行讨论。
从输入端口到寄存器:这种路径的约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。
约束名称:input delay. 约束条件的影响主要有4个因素:外部芯片的Tco,电路板上信号延迟Tpd,FPGA的Tsu, 时钟延迟Tclk. Tco的参数通常需要查外部芯片的数据手册。
计算公式:input delay = Tco+Tpd+Tsu-Tclk.FPGA的Tsu也需要查FPGA芯片的手册。
FPGA速度等级不同,这个参数也不同。
Tpd和Tclk需要根据电路板实际的参数来计算。
通常,每10cm的线长可以按照1ns来计算. 例如:系统时钟100MHz, 电路板上最大延迟2ns, 时钟最大延迟 1.7ns, Tco 3ns, FPGA的Tsu为0.2ns. 那么输入延迟的值: max Input delay =3+2+0.2-1.7=3.5ns. 这个参数的含义是指让FPGA的设计工具把FPGA的输入端口到第一级寄存器之间的路径延迟(包括门延迟和线延迟)控制在 10ns-3.5ns=6.5ns 以内。
寄存器到寄存器:这种路径的约束是为了让FPGA设计工具能够优化FPGA内寄存器到寄存器之间的路径,使其延迟时间必须小于时钟周期,这样才能确保信号被可靠的传递。
由于这种路径只存在于FPGA内部,通常通过设定时钟频率的方式就可以对其进行约束。
对于更深入的优化方法,还可以采用对寄存器的输入和寄存器的输出加入适当的约束,来使逻辑综合器和布线器能够对某条路径进行特别的优化。
FPGA时序分析FPGA时序分析是一项重要的任务,用于评估数字设计在FPGA芯片上的运行时序性能。
它涉及到对设计的时序约束进行正确建模,并通过对设计各个部分的时序延迟进行分析,以确保设计在时序性能上的可靠性。
以下是一份详细且全面的FPGA时序分析的概述,包括其基本原理、方法、工具和应用。
一、FPGA时序分析的基本原理:时序分析是指对设计中的各个时钟域的时序要求进行研究和分析,主要包括时钟信号的频率、时钟边沿的稳定性、时序路径的延时和综合器和布线器的时钟偏移等。
FPGA时序分析基于电路理论和时序约束规范化语言,通过以时钟为基准的时序图、时序约束和时序分析工具,对设计中的各个时序要求进行建模、验证和优化。
二、FPGA时序分析的方法:1.时钟域划分:将设计中的各个时钟域进行划分,每个时钟域由一个时钟信号及其相关的所有时序逻辑组成。
时钟域划分对于正确的时序分析至关重要,因为不同时钟域之间的时序关系复杂,需要通过正确的时钟域划分来简化时序分析。
2.时序约束编写:根据设计的功能和性能要求,编写针对不同时钟域的时序约束。
时序约束主要包括时钟频率、时钟边沿的稳定性、时序路径的延时约束等。
3. 时序分析工具:使用时序分析工具对设计进行时序分析。
常用的时序分析工具有PrimeTime、Quartus Prime等。
时序分析工具能够分析设计中的时序路径,找出潜在的时序违规问题,并生成时序报告。
4.时序优化:根据时序分析报告,对设计进行时序优化。
时序优化的目标是降低时序延迟,提高设计的性能。
三、FPGA时序分析的工具:1. PrimeTime:PrimeTime是Cadence公司开发的一款时序分析工具,广泛应用于FPGA时序分析和静态时序验证。
它能够对多时钟域的设计进行时序分析和时序优化,并提供准确的时序报告和时序分析结果。
2. Quartus Prime:Quartus Prime是Intel公司的FPGA设计软件套件,其中包含了Quartus Prime时序分析工具。
前言这是笔者用两年构思准备一年之久的笔记,其实这也是笔者的另一种挑战。
写《工具篇I》不像写《Verilog HDL那些事儿》系列的笔记一样,只要针对原理和HDL内容作出解释即可,虽然《Verilog HDL那些事儿》夹杂着许多笔者对Verilog的独特见解,不过这些内容都可以透过想象力来弥补。
然而《工具篇I》需要一定的基础才能书写。
两年前,编辑《时序篇》之际,笔者忽然对TimeQuest产生兴趣,可是笔者当时却就连时序是什么也不懂,更不明白时序有理想和物理之分,为此笔者先着手理想时序的研究。
一年后,虽然已掌握解理想时序,但是笔者始终觉得理想时序和TimeQuest之间缺少什么,这种感觉就像磁极不会没有原因就相互吸引着?于是漫长的思考就开始了... 在不知不觉中就写出《整合篇》。
HDL描述的模块是软模型,modelsim仿真的软模型是理想时序。
换之,软模型经过综合器总综合以后就会成为硬模型,也是俗称的网表。
而TimeQuest分析的对象就是硬模型的物理时序。
理想时序与物理时序虽然与物理时序有显明的区别,但它们却有黏糊的关系,就像南极和北极的磁性一样相互作用着。
编辑《工具篇I》的过程不也是一番风顺,其中也有搁浅或者灵感耗尽的情况。
《工具篇I》给笔者最具挑战的地方就是如何将抽象的概念,将其简化并且用语言和图形表达出来。
读者们可要知道《工具篇I》使用许多不曾出现在常规书的用词与概念... 但是,不曾出现并不代表它们不复存在,反之如何定义与实例化它们让笔者兴奋到夜夜失眠。
《工具篇I》的书写方式依然继承笔者往常的笔记风格,内容排版方面虽然给人次序不一的感觉,不过笔者认为这种次序对学习有最大的帮助。
编辑《工具篇I》辛苦归辛苦,但是笔者却很热衷,心情好比小时候研究新玩具一般,一边好奇一边疑惑,一边学习一边记录。
完成它让笔者有莫民的愉快感,想必那是笔者久久不失的童心吧!?(akuei2上30-09-2013)目录前言 (1)第一章:TimeQuest 静态时序分析模型 (3)1.1模型的基础单位 (3)1.2理想的建立关系值和保持关系值 (5)1.3 物理中的建立关系过程和建立余量 (7)1.4 令人误会的建立关系和建立余量。
FPGA资源——触发器,寄存器,锁存器触发器触发器是边沿敏感的存储单元,数据存储的动作有某一信号的上升或者下降沿进行同步的。
最基本的就是边沿触发的存储单元。
应用场合:时钟有效迟后于数据有效。
这意味着数据信号先建立,时钟信号后建立。
在CP上升沿时刻打入到寄存器。
寄存器在实际的数字系统中,通常把能够用来存储一组二进制代码的同步时序逻辑电路称为寄存器.由于触发器内有记忆功能,因此利用触发器可以方便地构成寄存器。
由于一个触发器能够存储一位二进制码,所以把n个触发器的时钟端口连接起来就能构成一个存储n位二进制码的寄存器。
当一个信号signal的赋值是以一个信号的跳变为条件时,或者说当发生同步赋值时,该信号经过综合编译之后就会产生寄存器。
这样的赋值过程只能在进程,函数或过程中出现(一般跟在IF signal's EVENT...或WAIT UNTIL...等语句之后)。
锁存器锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化。
简单地说,它有两个输入,分别是一个有效信号EN,一个输入数据信号DATA_IN,它有一个输出Q,它的功能就是在EN有效的时候把DATA_IN的值传给Q,也就是锁存的过程。
应用场合:数据有效迟后于时钟(或者使能)信号有效。
这意味着时钟(或者使能)信号先到,数据信号后到。
在某些运算器电路中有时采用锁存器作为数据暂存器。
缺点:时序分析较困难。
不要锁存器的原因有二:1、锁存器容易产生毛刺,2、锁存器在ASIC 设计中应该说比ff要简单,但是在FPGA的资源中,大部分器件没有锁存器这个东西,所以需要用一个逻辑门和ff来组成锁存器,这样就浪费了资源。
优点:面积小。
锁存器比FF快,所以用在地址锁存是很合适的,不过一定要保证所有的latch 信号源的质量,锁存器在CPU设计中很常见,正是由于它的应用使得CPU的速度比外部IO部件逻辑快许多。
FPGA静态时序分析模型——寄存器到寄存器1. 适用范围本文档理论适用于Actel FPGA并且采用Libero软件进行静态时序分析(寄存器到寄存器)。
2. 应用背景静态时序分析简称STA,它是一种穷尽的分析方法,它按照同步电路设计的要求,根据电路网表的拓扑结构,计算并检查电路中每一个DFF(触发器)的建立和保持时间以及其他基于路径的时延要求是否满足。
STA作为FPGA设计的主要验证手段之一,不需要设计者编写测试向量,由软件自动完成分析,验证时间大大缩短,测试覆盖率可达100%。
静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告。
进行静态时序分析,主要目的就是为了提高系统工作主频以及增加系统的稳定性。
对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。
通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。
3. 理论分析3.1 静态时序分析的理论基础知识在进行正确的时序分析前,我们必须具备基本的静态时序的基本知识点,不然看着编译器给出的时序分析报告犹如天书。
如图3.1所示,为libero软件给出的寄存器到寄存器模型的时序分析报告的截取,接下来我们会弄清楚每个栏目的数据变量的含义,以及计算方法。
图3.1 libero静态时序分析报告3.1.1 固定参数launch edge、latch edge、Tsu、Th、Tco概念1. launch edge时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。
2. latch edge时序分析终点(latch edge):数据锁存的时钟边沿,也是静态时序分析的终点。
3. Clock Setup Time (Tsu)建立时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。
FPGA静态时序分析模型——寄存器到寄存器
1. 适用范围
本文档理论适用于Actel FPGA并且采用Libero软件进行静态时序分析(寄存器到寄存器)。
2. 应用背景
静态时序分析简称STA,它是一种穷尽的分析方法,它按照同步电路设计的要求,根据电路网表的拓扑结构,计算并检查电路中每一个DFF(触发器)的建立和保持时间以及其他基于路径的时延要求是否满足。
STA作为FPGA设计的主要验证手段之一,不需要设计者编写测试向量,由软件自动完成分析,验证时间大大缩短,测试覆盖率可达100%。
静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告。
进行静态时序分析,主要目的就是为了提高系统工作主频以及增加系统的稳定性。
对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。
通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。
3. 理论分析
3.1 静态时序分析的理论基础知识
在进行正确的时序分析前,我们必须具备基本的静态时序的基本知识点,不然看着编译器给出的时序分析报告犹如天书。
如图3.1所示,为libero软件给出的寄存器到寄存器模型的时序分析报告的截取,接下来我们会弄清楚每个栏目的数据变量的含义,以及计算方法。
图3.1 libero静态时序分析报告
3.1.1 固定参数launch edge、latch edge、Tsu、Th、Tco概念
1. launch edge
时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。
2. latch edge
时序分析终点(latch edge):数据锁存的时钟边沿,也是静态时序分析的终点。
3. Clock Setup Time (Tsu)
建立时间(Tsu):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。
如图3.2所示:
图3.2 建立时间图解
4. Clock Hold Time (Th)
保持时间(Th):是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。
保持时间示意图如图3.3所示:
图3.3 保持时间图解
5. Clock-to-Output Delay(tco)
数据输出延时(Tco):这个时间指的是当时钟有效沿变化后,数据从输入端到输出端的最小时间
间隔。
3.1.2 Clock skew
时钟偏斜(clock skew):是指一个时钟源到达两个不同寄存器时钟端的时间偏移,如图3.4所示:
图3.4 时钟偏斜
时钟偏斜计算公式如下:
Tskew = Tclk2 - Tclk1
(公式3-1)
3.1.3 Data Arrival Time
数据到达时间(Data Arrival Time):输入数据在有效时钟沿后到达所需要的时间。
主要分为三部分:时钟到达寄存器时间(Tclk1),寄存器输出延时(Tco)和数据传输延时(Tdata),如图3.5所示
图3.5 数据到达时间
数据到达时间计算公式如下:
Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata
(公式3-2)
3.1.4 Clock Arrival Time
时钟到达时间(Clock Arrival Time):时钟从latch边沿到达锁存寄存器时钟输入端所消耗的时间为时钟到达时间,如图3.6所示
图3.6 时钟到达时间
时钟到达时间计算公式如下:
Clock Arrival Time = Lacth edge + Tclk2
(公式3-3)
3.1.5 Data Required Time(setup/hold)
数据需求时间(Data Required Time):在时钟锁存的建立时间和保持时间之间数据必须稳定,从源时钟起点达到这种稳定状态需要的时间即为数据需求时间。
如图3.7所示:
图3.7 数据需求时间
(建立)数据需求时间计算公式如下:
Data Required Time = Clock Arrival Time - Tsu
(公式3-4)
(保持)数据需求时间计算公式如下:
Data Required Time = Clock Arrival Time + Th(公式3-5)
3.1.6 Setup slack
建立时间余量(setup slack):当数据需求时间大于数据到达时间时,就说时间有余量,Slack 是表示设计是否满足时序的一个称谓。
图3.8 建立时间余量
如图3.8所示,建立时间余量的计算公式如下:
Setup slack = Data Required Time - Data Arrival
Time(公式3-6)
由公式可知,正的slack表示数据需求时间大于数据到达时间,满足时序(时序的余量),负的slack表示数据需求时间小于数据到达时间,不满足时序(时序的欠缺量)。
3.1.7 时钟最小周期
时钟最小周期:系统时钟能运行的最高频率。
1.当数据需求时间大于数据到达时间时,时钟具有余量;
2. 当数据需求时间小于数据到达时间时,不满足时序要求,寄存器经历亚稳态或者不能正确获得数据;
3. 当数据需求时间等于数据到达时间时,这是最小时钟运行频率,刚好满足时序。
从以上三点可以得出最小时钟周期为数据到达时间等于数据需求时间,的运算公式如下:
Data Required Time = Data Arrival Time
(公式3-7)
由上式推出如下公式:
Tmin + Latch edge + Tclk2 - Tsu = Launch edge + Tclk1 + Tco + Tdata 最终推出最小时钟周期为:
Tmin = Tco + Tdata + Tsu - Tskew
(公式3-8)
4. 应用分析
4.1 设置时钟主频约束
所有的静态时序分析都是在有约束的情况下编译器才给出分析报告,所以进行时序分析的第一步就是设置约束。
Libero软件设置时钟约束的途径三种,单时钟约束,多时钟约束和在Designer里面进行约束。
4.1.1 单时钟约束
有时我们系统所有模块都采用同一个时钟,这种方式最为简单,直接在Synplify主界面上有个设置时钟约束的,如图4.1中红框所示:
图4.1 单时钟设置
设置完成后,编译,通过Synplify时钟报告看初步时钟运行频率能否达到要求,时钟报告如图4.2所示,设定100Mhz,能运行102.7Mhz,满足时序。
图4.2 时序报告
4.2 多时钟约束
当系统内部模块采用了多个时钟时,那就需要进行多时钟约束了。
首先需要打开设置界面,在
Synplify中选择:File->New->Constraint File建立SDC文件,选择时钟约束如图4.3所示:
图4.3 多时钟约束
对时钟进行如下约束后保存SDC文件,约束如图4.4所示
图4.4 多时钟约束完成
4.3 Designer SmartTime时钟约束
时钟约束除了在Synplify中可以约束外,还可以在Designer SmartTime中设置时钟约束,打开Designer Constraint,选择Clock进行针对每个使用时钟的设置,如图4.5所示:
图4.5 Designer时序约束
4.4 时序报告分析
4.4.1 Synplify时序报告
当约束了时序后,需要观察时序报告,看时钟能否达到我们需要的时钟,首先观察Synplify综合报告。
以多时钟约束为例子,从Synplify得到的时序报告如图4.6所示:
图4.6 多时钟约束时序报告
由上图可知时序都满足约束,未出现违规,可以在下面的报告中查看最差路径,如图4.7所示是clk2的最差路径。
图4.7 最差路径
4.4.2 Designer SmartTime时序分析报告
当设计经过Synplify综合给出网表文件后,还需要Designer进行布局布线,通过布局布线优化后的时序会有变化,因此,还需要分析布局布线后的时序,打开Designer->Timing Analyzer 查阅整体时序分析报告如图4.8所示:
图4.8 布局布线后时序报告
由Synplify综合后的报告和Designer进行布局布线后的报告可以看出,布局布线后优化了一些时序,特别是clk2时钟,通过布局布线后优化到了184Mhz,完全满足时序。
4.4.3 详细时序报告图
通过Synplify综合后的和Designer进行布局布线都只是看到了一个大体的时序报告,当我们需要分析时序时候必须观察仔细的时序报告,在SmartTime中提供这种报告功能,以clk2分析为例,在Timing Analyzer找到如下区域。
图4.9 时序报告选择
如图4.9所示,选择寄存器到寄存器进行分析时钟主频。
图4.10 寄存器到寄存器分析
如图4.10所示,时序报告中给出了数据延时,时序余量,数据到达时间,数据需求时间,数据建立时间,以及最小周期和时钟偏斜等信息,有了上一节的时序分析基础知识,我们完全能看懂这些
数据代表的意义,这样对我们时序分析就知己知彼,进一步双击其中一条路径,还会给出这条路径的硬件电路图,如图4.11所示,有了这些详细的时序报告,对设计进行调整更加清晰。
图4.11 硬件路径。