搜档网
当前位置:搜档网 › LATTICE 非常详细的时序约束(中文教程)

LATTICE 非常详细的时序约束(中文教程)

?LATTICE SEMICONDUCTOR CORPORATION

Page 1Achieving Timing Closure

John Li

Agenda

?Timing closure的概念?Timing closure的步骤?采用合适的Coding Style ?进行适当的综合约束

?管脚锁定

?实施Lattice constrains ?Map

?布局布线

?控制place and route ?Floorplanning the design

?LATTICE SEMICONDUCTOR CORPORATION

Page 2

Timing closure的概念

?当前FPGA的设计规模越来越大,复杂程度日益增加,同时要求系统的Perfromace也越来越高。

?获得Timing目标越来越困难.

?设计者必须采用各种技术提升系统性能以满足设计的Timing要求.

?LATTICE SEMICONDUCTOR CORPORATION

Page 3

Timing closure procedure

? 1.采用合适的coding style ? 2.进行适当的综合约束

? 3.管脚锁定

? 4.实施Lattice constrains ? 5.Map

? 5.布局布线

?7.控制place and route ?8.Floorplanning the design

?LATTICE SEMICONDUCTOR CORPORATION

Page 4

关于提升FPGA系统性能,工程师最容易想到的方法就是通过进行综合约束、布局布线约束、和其他的优化技术提升系统性能,当然这些都是设计过程中所必需的,但所有这些优化方法对于系统性能的提升都是有限的,系统的性能最终还是取决于工程师的设计(coding style),其中同步设计是最重要的一点. 下面讨论一些具体的coding 技术,合理的运用这些coding技术能够尽可能的减小两级寄存器之间的延时从而获得更高的系统速度.

-通用的coding style

--Hierarchical Coding

---Team Based的设计:多个工程师可以同时参与到一个复杂设计中来。

---加速设计和编译过程:关键模块可以单独修改而不会影像整个设计。

---缩短设计周期:重复利用成熟模块。

---模块可以容易被工程师理解和维护.

---缺点:如果模块划分不合理,特别是模块边界设计处理不当会影响FPGA的资源利用率和最终

的系统性能。

?LATTICE SEMICONDUCTOR CORPORATION

Page 5

---上述缺点可以通过细致的hierarchy设计来克服.

---hierarchical design 需遵循的规则:

----top level模块仅仅应该包含instantiation statement ,即在顶层模块中调用子模块。

----任何I/O instantiation 应当包含在top level模块中。

----任何输入输出器件的信号应当在top level模块中声明为:input、output和bi-directional Pin.

--Design partitioning

---在sub module中register所有输出,以保证所有sub module之间为同步设计,获得更好的系统performance。

?LATTICE SEMICONDUCTOR CORPORATION

Page 6

---保证相关逻辑和共享资源在同一个模块中实现。

这样可以做到更好的资源共享,综合工具只能针对一定数量的逻辑进行优化;

综合工具可以在一个模块内部优化整个关键路径;跨模块的关键路径也不会被

有效的优化。

?LATTICE SEMICONDUCTOR CORPORATION

Page 7

---针对不同地优化目标来划分模块

----分离关键路径和非关键路径可以获得更好的综合效果。

----设计者应该在充分考虑性能需求和资源需求的基础上进行逻辑设计. 针对不同的模块采用不同的优化策略,以避免相互影响。

---对于那些并不需要high performance的模块应该放松约束以节省和预留关键资源给关键路径。

?LATTICE SEMICONDUCTOR CORPORATION

Page 8

---在单独的模块中保存实例化代码:

可以非常方便的在RAM行为仿真模型和实际的RAM块代码之际间进行切换.

---每个Module的规模在30~80 PFU:小模块由于资源有限不利于综合工具实施“resource sharing”算法;规模太大的模块一旦更改其中的一小部分就会导致整个模块重新综合,影响到一些不必要的逻辑,增大综合运行时间。

--design registering

---利用流水设计提高系统性能,把一个较长的路径分割为多个短路径,并在多个时钟周期完成。

?LATTICE SEMICONDUCTOR CORPORATION

Page 9

---IF statement and CASE statement比较

----IF-THEN-ELSE statement 生成优先级的编码逻辑;CASE statement 实现

balance逻辑.

----如果每个解码条件相对独立, 这两种声明方式实现的功能是一样的。

?LATTICE SEMICONDUCTOR CORPORATION

Page 10

----IF statement的主要缺陷:使设计不必要的复杂化;需要额外的逻辑来构建优先级Tree。

----如果解码条件不是相对独立的, 那末IF-THEN-ELSE结构会导致最低优先级的output依赖于所有的控制条件。

?LATTICE SEMICONDUCTOR CORPORATION

Page 11

?LATTICE SEMICONDUCTOR CORPORATION Page 12

---如果output 不需要优先级控制, 最好使用CASE statement,因为CASE声明中每个分支的优先级是一样的,每个分支output是并发的。

--避免不必要的Latch

---综合工具会引入Latch,如果存在不完全的条件表达式:象IF-THEN-ELSE 声明中没有else子句.

---Latch会需要额外的资源,同时引入组合反馈环从而产生异步时序问题。

---non-intended latch 是可以避免的:

使用时钟寄存器或遍历所有的输入条件assign output 或是使用else (when

others) 作为最后的子句

?LATTICE SEMICONDUCTOR CORPORATION

Page 13

?LATTICE SEMICONDUCTOR CORPORATION Page 14

--用时钟使能信号代替门控时钟

---门控时钟会带来很多时序问题,最典型的是clock skew.

?LATTICE SEMICONDUCTOR CORPORATION

Page 15

---时钟使能guideline in Lattice FPGA:

----Clock enable 只在触发器模式支持,Latch模式不支持.

----在一个slice中的触发器对共享一个Clock enable信号.

----所有的触发器支持positive clock enable输入.

----默认的时钟使能的优先级高于同步set/reset. 但是可以编程实现set/reset 的优

先级高于clock enable.

?LATTICE SEMICONDUCTOR CORPORATION

Page 16

?LATTICE SEMICONDUCTOR CORPORATION Page 17

--针对分布式Memory的coding style

---不推荐使用Library Primitive去构建RAM或FIFO, 这是因为RAM块在各个系列FPGA中的structure都是唯一的. 综合工具并不能优化处理RAM的实现,会产生

低效率的网表(for device fit).

---强烈建议使用Ipexpress来构建RAM/FIFO.

--针对高扇出网络控制综合工具

---Lattice FPGA 架构针对信号高扇出做了设计,比如具有丰富的一级时钟和二级时钟资源以及全局复位GSR布线资源等等.

---综合工具在综合时会复制逻辑资源以减小扇出,这样会导致占用过多的资源同时cheching performance也会变得困难。

---综上所述在综合过程中有必要对fan out进行控制.

?LATTICE SEMICONDUCTOR CORPORATION

Page 18

--双向buffer

---双向buffer可以和以和普通I/O一样在顶层文件中实例化.

---另一种方式就是在代码中实现.

?LATTICE SEMICONDUCTOR CORPORATION

Page 19

采用合适的coding style

?LATTICE SEMICONDUCTOR CORPORATION

Page 20

时序分析基础与时钟约束实例1

时序分析基础与时钟约束实例(1) 文中实例配套SF-CY3开发套件。更多内容请参考《SF-CY3 FPGA套件开发指南》。 何谓静态时序分析(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。

Quartus II 中TsuTco 的约束方法

Quartus II 中Tsu/Tco 的约束方法 Tsu/Tco 在Quartus II 的报告中有两种不同含义. 1. 片内的Tsu/Tco 是指前级触发器的Tco 和后级触发器的Tsu, 一般来说都是几百ps 级别的. 可以通过“List Paths”命令查看。这里的Tsu/Tco 主要由器件工艺决定, 工作时在受到温度,电压的影响略有变化.(如下图所示) 2. 管脚上的Tsu/Tco 它是保证系统Famx 重要的Timing 元素(如下图示). 比如: 两个芯片之间工作在100MHZ, 因为100M 的周期为10ns, (现忽略PCB 走线的延迟), 如果某信号对FPGA 来说是输入,那么前级芯片的Tco 加上FPGA 的Tsu 就不能够超过10ns. 如果某信号对于FPGA 来说是输出,那么FPGA 的Tco 加上后级芯片的Tsu 也不能够超过10ns. 只有这样,才能够保证片间通信正常。因此对FPGA 的管脚进行适当的Tco/Tsu 的时序约束,是至关

重要的Timing 设计技巧. 管脚上的Tsu/Tco 分为以下三个部分. 1. IOE 走线的延迟. 这个延迟在管脚的Tsu/Tco 延迟中占有相当的比 例,Altera 的器件为了降低Tsu/Tco 在IOE 上的延迟, 专门在IOE 中设置了两种类型的触发器, 即: Fast Input Register(FPGA 的管脚为输入时,优化Tsu), Fast Output Register(FPGA 的管脚为输出时,用于优化Tco) 2. 内部逻辑走线的延迟。在Altera 的FPGA 中, 由若干个基本资源LE 构成一个LAB,比如:StratixGx 是10 个LE 组成一个LAB. LAB 横向和纵向排列形成阵列. 在FPGA 中,以LAB 为基本单元,根据走线长度的不同,分为C4(表示横跨4 个LAB 的走线资源),C8,C16,R4,R8,16,R24 等不同的走线资源,不同的器件支持不同的走线资源。 3. 触发器的Tsu/Tco 的需求,这里的Tsu/Tco, 这是由器件工艺决定的,最小的Tsu/Tco 的要求. 在实际的工作环境中,受温度,电压的变化有微小的变化. 前面提到:对FPGA 的管脚进行适当的Tco/Tsu 的时序约束,是至关重要的Timing 设计技巧.关键是在出了问题的时候,怎么去解决? Quartus II 有四处可以对Tsu/Tco 进行约束. 1. 全局时序约束. 在Quartus II 中执行Assignments→Timing Setting 弹出如下界面.设计者可以根据系统Fmax 的要求去约束Tsu/Tco.

ASIC时序约束、时序分析

ASIC时序约束、时序分析 2009-11-13 22:13 A 时序约束的概念和基本策略 时序约束主要包括周期约束(FFS到FFS,即触发器到触发器)和偏移约束(IPAD到FFS、FFS到OPAD)以及静态路径约束(IPA 综合布线工具调整映射和布局布线过程,使设计达到时序要求。例如用OFFSET_IN_BEFORE约束可以告诉综合布线工具输入信号在以根据这个约束调整与IPAD相连的Logic Circuitry的综合实现过程,使结果满足FFS的建立时间要求。 附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时速例外路径和多周期路径,以及其他特殊路径。 B 附加约束的基本作用 1. 提高设计的工作频率 对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综时,从而提高工作频率。 2. 获得正确的时序分析报告 几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析 3. 指定FPGA/CPLD引脚位置与电气标准 FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还特性。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如 AGP、BLVDS、CTT、G LVPECL、LVDSEXT、LVTTL、 PCI、PCIX、SSTL、ULVDS等丰富的IO接口标准。另外通过区域约束还能在FPGA上规划各个成模块化设计等。 C 周期(PERIOD)的含义 周期的含义是时序中最简单也是最重要的含义,其它很多时序概念会因为软件商不同略有差异,而周期的概念确是最通用的,周期面要讲到的其它时序约束都是建立在周期约束的基础上的,很多其它时序公式,可以用周期公式推导。周期约束是一个基本时序和具根据PERIOD约束检查时钟域内所有同步元件的时序是否满足要求。PERIOD约束会自动处理寄存器时钟端的反相问题,如果相迟将被默认限制为PERIOD约束值的一半。如下图所示, 图1 周期的定义 时钟的最小周期为: TCLK = TCKO +TLOGIC +TNET +TSETUP -TCLK_SKEW TCLK_SKEW =TCD2 -TCD1

在FPGA设计环境下添加时序约束的方法

如何在FPGA设计环境中加时序约束SDC 在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序的约束。通常,在FPGA设计工具中都FPGA中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。通常,需要对这几种路径分别进行约束,以便使设计工具能够得到最优化的结果。下面对这几种路径分别进行讨论: 从输入端口到寄存器: 这种路径的约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。约束名称:input delay。约束条件的影响主要有4个因素:外部芯片的Tco,电路板上信号延迟Tpd,FPGA的Tsu/Th,时钟延迟Tclk。Tco的参数通常需要查外部芯片的数据手册。计算公式:input delay = Tco+Tpd+Tsu-Tclk。FPGA的Tsu也需要查FPGA芯片的手册,FPGA速度等级不同,这个参数也不同。Tpd和Tclk需要根据电路板实际的参数来计算。通常,每10 cm的线长可以按照1ns来计算. 例如:系统时钟100MHz,电路板上最大延迟2 ns,时钟最大延迟为1.7 ns,Tco为3 ns,FPGA的Tsu为0.2 ns。那么输入延迟的值:max input delay = 2+3+0.2-1.7=3.5 ns。这个参数的含义是指让FPGA 的设计工具把FPGA的输入端口到第一级寄存器之间的路径延迟(包括门延迟和线延迟)控制在10 ns - 3.5 ns = 6.5 ns 以内。对于min input delay,则类似考虑FPGA寄存器的Th参数等。 寄存器到寄存器: 这种路径的约束是为了让FPGA设计工具能够优化FPGA内寄存器到寄存器之间的路径(register-to-register),使其延迟时间必须小于时钟周期,这样才能确保信号被可靠的传递。由于这种路径只存在于FPGA内部,通常通过设定时钟频率的方式就可以对其进行约束。对于更深入的优化方法,还可以采用对寄存器的输入和寄存器的输出加入适当的约束,来使逻辑综合器和布线器能够对某条路径进行特别的优化。还可以通过设定最大扇出数来迫使工具对其进行逻辑复制,减少扇出数量,提高性能。

时序约束

在进行FPGA的设计时,经常会需要在综合、实现的阶段添加约束,以便能够控制综合、实现过程,使设计满足我们需要的运行速度、引脚位置等要求。通常的做法是设计编写约束文件并导入到综合实现工具,在进行FPGA/CPLD的综合、实现过程中指导逻辑的映射和布局布线。下面主要总结一下Xilinx FPGA时序约束设计和分析。 一、周期约束 周期约束是Xilinx FPGA 时序约束中最常见的约束方式。它附加在时钟网线上,时序分析工具会根据周期约束来检查时钟域内所有同步元件的时序是否满足需求。周期约束会自动的寄存器时钟端的反相。如果相邻的两个元件的时钟相位是相反的,那么它们之间的延迟将被默认的限制成周期约束的一半。 在进行周期约束之前,必须对电路的时钟周期明了,这样才不会出现约束过松或者过紧的现象。一般情况下,设计电路所能达到的最高运行频率取决于同步元件本身的Setup Time 和Hold Time,以及同步元件之间的逻辑和布线延迟。周期约束一般是使用下面的约束方法: 1、period_item PERIOD=period {HIGH|LOW} [high_or low_item] 其中,period_item可以是NET或TIMEGRP,分别代表时钟线名称net name或元件分组名称group-name。用NET表示PERIOD约束作用到名为“net name”的时钟网线所驱动的同步元件上,用TIMEGRP表示PERIOD约束作用到TIMEGRP所定义的分组(包括FFS、LATCH和RAM等同步元件)上。period是目标时钟周期,单位可以是ps、ns、μS和ms 等。HIGH|LOW指出时钟周期中的第1个脉冲是高电平还是低电平,high or low time为HIGH LOW指定的脉冲的持续时间,默认单位是ns。如果没有该参数,时钟占空比是50%。例如,NET SYS_CLK PERIOD=10 ns HIGH 4ns 2、NET“clock net name”TNM_NET=“timing group name”; TIMESPEC“TSidentifier”=PERIOD “TNM reference”period {HIGH | LOW} [high or low item]INPUT_JITTER value; 很多时候为了能够定义比较复杂的派生关系的时钟周期,就要使用该方法。其中TIMESPEC在时序约束中作为一个标识符表示本约束为时序规范;TSidentifier包括字母TS和一个标识符identifier共同作为一个TS属性;TNM reference指定了时序约束是附加在哪一个组上,一般情况下加在TNM_NET定义的分组上。HIGH | LOW 指的是时钟的初始相位表明第一个时钟是上升沿还是下降沿;high or low item 表示的是时钟占空比,即就是high或者low的时间,默认为1:1, INPUT_JITTER 表示的是时钟的抖动时间,时钟会在这个时间范围内抖动,默认单元为ps。比如周期约束: NET "ex_clk200m_p" TNM_NET = TNM_clk200_p; TIMESPEC "TS_clk200_p" = PERIOD "TNM_clk200_p" 5.000 ns HIGH 50 %; 建立一个TNM_clk200_p的时序分组,包括时钟网络ex_clk200m_p驱动的所有同步

时序约束总结

很多人发贴,来信询问关于约束、时序分析的问题,比如: 如何设置setup,hold时间?如何使用全局时钟和第二全局时钟(长线资源)?如何进行分组约束?如何约束某部分组合逻辑?如何通过约束保证异步时钟域之间的数据交换可靠?如何使用I/O逻辑单元内部的寄存器资源?如何进行物理区域约束,完成物理综合和物理实现?等等。。。 为了解决大家的疑难,我们将逐一讨论这些问题。 今天先讨论一下约束的作用? 有些人不知道何时该添加约束,何时不需要添加?有些人认为低速设计不需要时序约束?关于这些问题,希望下面关于约束作用的论述能够有所帮助!附加约束的基本作用有3: (1)提高设计的工作频率 对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。 (2)获得正确的时序分析报告 几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对设计的性能做出评估。静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。 (3)指定FPGA/CPLD引脚位置与电气标准 FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从而节省了系统开发时间。这样,电路板加工完成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还可以指定IO引脚所支持的接口标准和其他电气特性。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如AGP、BLVDS、CTT、GTL、

ISE时序约束笔记

ISE时序约束笔记 ISE时序约束笔记1——Global Timing Constraints 时序约束和你的工程 执行工具不会试图寻找达到最快速的布局&布线路径。——取而代之的是,执行工具会努力达到你所期望的性能要求。 性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。 没有时序约束的例子 该工程没有时序约束和管脚分配 ——注意它的管脚和放置 ——该设计的系统时钟频率能够跑到50M 时序约束的例子

和上面是相同的一个设计,但是加入了3个全局时序约束。 ——它最高能跑到60M的系统时钟频率 ——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置 更多关于时序约束 时序约束应该用于界定设计的性能目标 1.太紧的约束将会延长编译时间 2.不现实的约束可能导致执行工具罢工 3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实 执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。 路径终点 有两种类型的路径终点: 1.I/O pads 2.同步单元(触发器,锁存器,RAMs) 时序约束的两个步骤: 1.路径终点生产groups(顾名思义就是进行分组) 2.指点不同groups之间的时序要求 全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等 ISE时序约束笔记2——Global Timing Constraints 问题思考 单一的全局约束可以覆盖多延时路径 如果箭头是待约束路径,那么什么是路径终点呢? 所有的寄存器是否有一些共同点呢?

XILINX-时序约束使用指南中文

XILINX时序约束使用指南笔记 第一章 时序约束介绍 第二章 时序约束方法 第三章 时序约束原则 第四章 在XST中指定时序约束 第五章 在Synplify中指定时序约束方法 第六章 时序约束分析

第一章 时序约束介绍 基本的时序约束包括: “PERIOD Constraints” “OFFSET Constraints” “FROM:TO(Multi‐Cycle)约束”

第二章 时序约束方法 1,简介: 2,基本的约束方法 根据覆盖的路径不同,时序要求变成一些不同的全局约束。 最普通的路径类型包括: 1,输入路径 2,同步元件到同步元件路径 3,指定路径 4,输出路径 XILINX的时序约束与每一种全局约束类型都有关。最有效的方法就是一开始就指定全局约束然后再加上指定路径的约束。在很多案例中,只要全局约束就可满足需求。 FPGA器件执行工具都是由指定的时序要求驱动的。如果时序约束过头的话,就会导致内存使用增加,工具运行时间增加。更重要的是,过约束还会导致性能下降。因此,推荐使用实际设计要求的约束值。 3,输入时序约束 输入时序约束包括2种 “系统同步输入” “源同步输入” 输入时钟约束覆盖了输入数据的FPGA外部引脚到获取此数据的寄存器之间的路径。输入时钟约束经常用”OFFSET IN”约束。指定输入时钟要求的最好方法,取决于接口的类型(源/系统同步)和接口是SDR还是DDR。 OFFSET IN定义了数据和在FPGA引脚抓取此数据的时钟沿之间的关系。在分析OFFSET IN 约束时,时序分析工具自动将影响时钟和数据延迟的因素考虑进去。这些因素包括: 时钟的频率和相位转换 时钟的不确定 数据延迟调整 除了自动调整,还可以在与接口时钟相关的”PERIOD”约束中另外增加时钟不确定。 关于增加”INPUT_JITTER”的更多信息,参见第三章的”PERIOD Constraints”。 “OFFSET IN”与单输入时钟有关,默认情况下,OFFSET IN约束覆盖了从输入pad到内部同步元件之间的所有路径。用于抓取那些从pad输入的数据的同步元件由指定的OFFSET IN 时钟触发。应用OFFSET IN约束被称为”global”方法。这是指定输入时序的最有效的方法。 系统同步输入 在体统同步接口中,发送和抓取数据共用一个系统时钟。板上的布线延迟和时钟倾斜限制了接口的工作频率。更低的频率也会导致系统同步输入接口典型的采用SDR应用。 系统同步SDR应用例子,见图2‐1。系统同步SDR应用中,在时钟上升沿从源器件发送

XDC约束技巧之时钟篇

XDC约束技巧之时钟篇 Xilinx?的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技 巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工 具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧,并且时刻牢记:XDC的 语法其实就是Tcl语言。 XDC的优势 XDC是Xilinx Design Constraints的简写,但其基础语法来源于业界统一的约束规范SDC(最早由Synopsys公司提出,故名Synopsys Design Constraints)。所以SDC、XDC 跟Vivado Tcl的关系如下图所示。 XDC的主要优势包括: 1.统一了前后端约束格式,便于管理; 2.可以像命令一样实时录入并执行; 3.允许增量设置约束,加速调试效率; 4.覆盖率高,可扩展性好,效率高; 5.业界统一,兼容性好,可移植性强; XDC在本质上就是Tcl语言,但其仅支持基本的Tcl语法如变量、列表和运算符等等,对其它复杂的循环以及文件I/O等语法可以通过在Vivado中source一个Tcl文件的方式来 补充。(对Tcl话题感兴趣的读者可以参考作者的另一篇文章《Tcl在Vivado中的应用》)XDC与UCF的最主要区别有两点: 1.XDC可以像UCF一样作为一个整体文件被工具读入,也可以在实现过程中被当作一个个单独的命令直接执行。这就决定了XDC也具有Tcl命令的特点,即后面输入的约束在有冲突的情况下会覆盖之前输入的约束(时序例外的优先级会在下节详述)。另外,不同于UCF是全部读入再处理的方式,在XDC中,约束是读一条执行一条,所以先后顺序很重要,例如要设置IO约束之前,相对应的clock一定要先创建好。

Quartus_II_时钟约束概念

Support of SDC Timing Constraints 1. Clock(时钟): create_clock命令为任何register, port或pin进行时钟特性描述,使其具有独一的时钟特性。 create_clock-period [-name ] [-waveform ] [-add] create_clock Command Options Example 1-1约束时钟频率100MHz,占空比50%,0ns上升沿,5ns下降沿。 create_clock –period 10 –waveform { 0 5 } clk Example 1-2 和上例相差90度的相位。 create_clock –period 10 –waveform { 2.5 7.5 } clk_sys 使用create_clock命令约束时钟缺省的source Latency值为0。Quartus II TimeQuest Timing Analyzer自动为非虚拟时钟(non-virtual clocks)计算时钟网络延时(clock’s network latency)。 Quartus II Handbook, Volume 3 6-29 生成时钟(Generated Clocks) Quartus II TimeQuest Timing Analyzer可以把修改或改变主时钟(或者引入时钟)特性的分频时钟、波纹时钟和电路作为生成时钟。 你可以定义这些电路的输出作为生成时钟。这些定义可以让Quartus II TimeQuest Timing Analyzer分析这些时钟以及关联的时钟网络延时(network

时序约束实例

用Quartus II Timequest Timing Analyzer进行时序分析:实例讲解 (一) (2012-06-21 10:25:54) 转载▼ 标签: 杂谈 一,概述 用Altera的话来讲,timequest timing analyzer是一个功能强大的,ASIC-style的时序分析工具。采用工业标准--SDC(synopsys design contraints)--的约束、分析和报告方法来验证你的设计是否满足时序设计的要求。在用户的角度,从我使用TimeQuest的经验看,它与IC设计中经常用到的比如prime time,time craft等STA软件是比较类似的。用过prime time或time craft的朋友是非常容易上手的。 在这一系列的文章里,我将会拿一个DAC7512控制器的verilog设计作为例子,详细讲解如何使用TimeQuest进行时序设计和分析。 二,TimeQuest的基本操作流程 做为altera FPGA开发流程中的一个组成部分,TimeQuest执行从验证约束到时序仿真的所有工作。Altera推荐使用下面的流程来完成TimeQuest 的操作。

1. 建立项目并加入相关设计文件 不管做什么事情,都需要有一个目标或者说对象。我们用TimeQuest 做时序分析,当然也需要一个对象,这个对象实际上就是我们的设计。所以首先是要建立一个Quartus II的项目,并把所有需要的设计文件都加入到项目中去。需要注意的一点是,这里的设计文件,不仅仅包含逻辑设计相关的文件,也包含已经存在的时序约束文件,当然,需要以synopsys Design Constraints(.sdc)的格式存在的。 2. 对项目进行预编译(initial compilation) 项目建立以后,如果从来没有对项目进行过编译的话,就需要对项目进行预编译。这里的预编译是对应于全编译(full compilation)来讲的,我们可以理解为预编译是对项目进行部分的编译,而全编译是对项目进行完整的编译。做预编译的目的是为了生成一个initial design database,

Quartus II 时钟约束概念

Quartus II Handbook, Volume 3 6-28 时钟约束(Clock Specification): 约束所有时钟(包括你的设计中特有的时钟)对准确的时序分析结果而言是必不可少的。Quartus II TimeQuest Timing Analyzer为各种各样的时钟配置和典型时钟提供许多SDC命令。 这个章节将介绍SDC可用的应用编程接口,以及描述指定的时钟特性。 时钟(Clocks) 使用create_clock命令为任何register, port或pin进行时钟特性描述,使其具有独一的时钟特性。例6–2展示了create_clock命令: Example 6–2. create_clock Command create_clock -period [-name ] [-waveform ] [-add] Table 6–6. create_clock Command Options Example 6–3 约束时钟频率100MHz,占空比50%,0ns上升沿,5ns下降沿。

Example 6–3. 100MHz Clock Creation create_clock –period 10 –waveform { 0 5 } clk Example 6–4和上例相差90度的相位。 Example 6–4. 100MHz Shifted by 90 Degrees Clock Creation create_clock –period 10 –waveform { 2.5 7.5 } clk_sys 使用create_clock命令约束时钟缺省的source Latency值为0。Quartus II TimeQuest Timing Analyzer自动为非虚拟时钟(non-virtual clocks)计算时钟网络延时(clock’s network latency)。 Quartus II Handbook, Volume 3 6-29 生成时钟(Generated Clocks) Quartus II TimeQuest Timing Analyzer可以把修改或改变主时钟(或者引入时钟)特性的分频时钟、波纹时钟和电路作为生成时钟。 你可以定义这些电路的输出作为生成时钟。这些定义可以让Quartus II TimeQuest Timing Analyzer分析这些时钟以及关联的时钟网络延时(network latency)。 使用create_generated_clock命令定义生成时钟。 Example 6–5. create_generated_clock Command create_generated_clock [-name ] -source [-edges ] [-edge_shift ] [-divide_by ] [-multiply_by ] [-duty_cycle ] [-add] [-invert]

FPGA中IO时序约束分析

第1章FPGA中IO口时序分析 作者:屋檐下的龙卷风 博客地址:https://www.sodocs.net/doc/f57380887.html,/linjie-swust/ 日期:2012.3.1 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数据传输时间:FTco = Tclk + Tco + Tout; 由上分析当FPGA成为一个系统后即可进行IO时序分析了。FPGA模型变为如图1.2所示。

入门资料: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,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。若设计者不添加时序约束,那么时序分析就无从谈起。特权同学常常碰见一些初学者在遇到问题时不问青红皂白就认为是时序问题,实际上只有在添加了时序约束后,系统的时序问题才有可能暴露出来。 下面我们再来看一个例子,我们假设有4个输入信号,经过FPGA内部一些逻辑处理后输出。FPGA内部的布线资源有快有慢之分,好比国道和高速公路。通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时则>10ns。

基于时序逻辑的工作流建模与分析方

基于时序逻辑的工作流建模与分析方法1 王远,范玉顺 (清华大学自动化系,北京 100084) 摘要提出了一种基于活动时序逻辑(TLA)的工作流建模与模型分析的形式化方法。该方法将模型及模型的性质都表示为一个TLA公式,对工作流模型性质的分析可以等价为对TLA中两个公式之间是否存在蕴涵关系的检验,从而建立了一个工作流模型各层次分析统一框架。一个工作流建模和分析的实例验证了所提出方法的有效性,该方法在建模、模型分析以及指导模型设计等方面都有较好的应用前景。 关键词工作流,活动时序逻辑,工作流模型分析 1基金项目:国家自然科学基金项目(60274046) 0 引言 工作流管理是实现企业过程集成和提高企业运行效率、柔性的一种全面的支撑技术。该技术在办公自动化(OA)、计算机支持的协同工作(CSCW)、经营过程重组(BPR)等几个领域中的应用证明,工作流模型的合理性验证与分析是成功实施工作流管理的关键[1]。工作流模型分析可以分为逻辑、时间和性能三个层次。逻辑层次关心的是工作流模型中事件点与事件点之间的关系,时间层次的分析是在逻辑层次的基础上研究模型中时间段与时间段之间的关系,而性能层次分析一般是指(考虑资源信息) 通过仿真或严格的理论分析,获得与系统性能相关的量化指标,来评估建立的工作模型是否满足目标需求。 工作流模型的验证与分析的方法与建模方法密切相关。工作流建模方法可以分为非形式化方法与形式化方法[2]。非形式化方法主要包括活动网络图法、ECA(Event-Condition-Action)规则方法、面向系统交互的工作流建模语言等,这些非形式化的建模方法普遍缺乏对模型验证与分析的支持。工作流建模的形式化方法以基于Petri网的建模方法为主,并在此基础上形成了一些工作流模型验证与分析的方法,然而这些基于Petri网的方法存在两个问题: 一是没有统一的方法框架,无法满足工作流模型多种性质的验证需要,而是针对一种性质,提出一种特殊的高级Petri网建模方法,找到该性质在Petri网中的表达方式,并针对这种表达方式提出一种验证算法,比如,用户需要验证模型中两个活动之间的时间距离约束,现有的方法无法验证,就只能依靠研究人员的创造力,提出一种特殊的Petri网,并发展一种专门的验证方法;二是在指导工作流模型的设计和工作流模型的综合方面无法满足需要,比如要设计一个满足给定性质的工作流模型,现有的模型验证方法就无法提供有力的支持。针对上述工作流模型分析验证中存在的问题,本文用时序逻辑作为理论基础,提出了一种基于时序逻辑的工作流建模与分析方法,为工作流模型各个层次的验证与分析提供了一种新思路。 1 TLA基本概念 时序逻辑作为一种表示各种动态系统行为和性质的逻辑语言,近年来在反应系统、实时系统的表示与验证、网络协议的分析、多媒体通信同步以及自然语言理解、专家系统、人工智能等方面得到了广泛的应用[3-5]。在本文提出的基于时序逻辑的工作流建模分析方法中,一个工作流过程模型被描述为一个时序逻辑系统中的公式,同时该模型需要被验证的和分析的性质也表示为一个时序逻辑公式,该方法对所验证的性质并没有特殊的限定。要分析工作流模型是否满足该性质,只需在相应的逻辑系统中利用逻辑推理和模型检查等技术检验这两个公式之间是否存在蕴涵关系。这就使得对工作流模型各层次的验证可以统一到一个方法框架中来。同时,由于在时序逻辑中并不区分公式表示的是模型还是模型的性质,这使得本文提出的方法在指导工作流模型的设计和工作流模型的综合方面有较好的应用前景。 本文使用的时序逻辑系统是活动时序逻辑

ise时序约束

ISE工具时序约束主要约束主要包括周期约束,pad to pad 约束和偏移约束: (1)周期约束的计算如下图所示: (2)pad to pad 约束是存粹的组合逻辑约束; (3)偏移约束主要包括输入偏移和输出偏移,规定了外部时钟和数据与输入输出管脚之间的时序关系,不是用来约束内部逻辑的; (转)FPGA时序分析,时序约束知识 时序约束目的:一、提高设计的工作频率二、获得正确的时序分析报告(STA:静态时序分析) 常用的时序概念:周期,最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时、Slack和时钟偏斜(Skew). 周期:如图1是周期示意图,当计算出Tperiod,那么当然fm ax=1/Tperiod,fm ax是显示设计最重要的性能指标之一。 时钟建立时间:如图3所示是时钟建立时间的计算方法 时钟保持时间:同样利用图3的模型计算Th=clkdelay-datadelay+Microhold 注意:前两个公式中提到的Microsetup 和Microhold一般均是一个小于1ns的常量。

时钟输出延迟:他是指在时钟有效到数据有效的最大时钟间隔如图4所示 Tco=clkdelay+datadelay+Microco slack:表示设计是否满足时序的一个称谓:正的slack表示满足时序,负的slack表示不满足时序。保持时间slac k是一个重要的概念,引起不满足的主要原因是时钟偏斜大于数据路径的偏斜。Quartus2时序分析工具和优化向导: 常用的三种时序约束设置方法:1 通过Assignment/timing settings 2 Assignment/timing wiard tool 3 Assignment/Assignment editor选择在图形界面下完成对设计的时序约束。一般情况下前两种是做全局的时序约束,后一种是做局部的时序约束,另外还可以通过修改.qsf文件来实现。 时序约束思想:时序约束一般都是先全局后个别,如果冲突则个别的优先级更高。 一、将编绎器设置为时序驱动编绎,即是指让编绎过程尽量向着满足时序约束方向努力!assignment/settings/fitter setting. 二、全局时钟设置如果在设计中只有一个全局时钟,或者所有的时钟同频,可以在Quartus2中只设置一个全局时钟约束。Assignment/timing settings 三、时序向导在用记对时序约束设置不熟悉的情况下,可以选择使用向导。Assignment/classic timing analyser wizards. 四、可以设置独立时钟与衍生时钟,衍生时钟是由独立时钟变化而来的,他是由独立时钟分频,倍频,移相等变化而来的,可以在设置中确定二者的关系Assignment/settings/timing analyse setting/classic timing analyse setting/individual clock。 五、通过assignment editor 设置个别时钟约束

TimeQuest约束外设之诡异的Create Generated Clocks用法

最近在altera FPGA里设计一个外设的驱动模块,模块本身逻辑很简单如下图所示,但是模块和外设之间的时序约束问题搞的很头疼,今天先讲讲总结的一些Timequest下外设约束方法,特别是那毫无用户体验而言的Create Generated Clocks用法。 要让外设正确接收FPGA发出的数据,需要dout和clkout满足外设的建立保持时间,如下图所示。

时序分析是基于源reg的Tco、目的reg的Tsu,源reg到目的reg的Tdelay路径延迟以及到两个reg的clk skew计算出来的,现在Timequest 不知道外设接收reg和时钟输入端的延迟参数,无法分析,还需分若干步配置: 1.使用Create Clocks建立系统时钟sysclk create_clock -name {sysclk} -period 20.000 -waveform { 0.000 10.000 } [get_ports {sysclk}] Timequset里的所有时钟都需要手动设置,首先设置系统时钟,后面的时钟都要基于这个时钟才能生成。 2.使用Create Generated Clocks建立输出时钟clkout 外设的时钟源于FPGA的输出port clkout,如果不建立时钟,timequest只会把clkout当作一个普通的输出引脚,时序分析器认为目的reg缺少驱动时钟,无法分析。Timequest中将通过倍频、分频或者移相等生成的时钟都归为Generated Clocks,你可以使用Create Clocks创建试一下,不会提示创建失败,但是在最后的时序分析里不会加入clkout的clock network delay,Timequest没有你想象的那么智能,知道clkout 是从一个分频模块输出,自动加入模块延迟分析,它不知道这些。所以还是使用Create Generated Clocks来创建吧,先填写源时钟sysclk,再填写生成时钟和源时钟的关系,2分频,最后指定target 生成时钟到clkout引脚,这三个步骤看似没问题,结果却是创建失败,提示找不到sysclk 到clkout之间的路径,如下所示。 Warning: No paths exist between clock target "clk_out" of clock "clkout" and its clock source. Assuming zero source clock latency. 但是sysclk到clkout明明是有路径的啊,之间的逻辑也很简单,就是一个二分频关系,bdf图如下所示。 clk_div模块的代码如下: reg clk_div; always @(posedge clk or negedge rset_n) begin if(!rset_n) clk_div <= 0; else clk_div <= ~clk_div; end 尝试了很多方法都无效,最终实验成功了一种自认为很别扭的方法,“曲线救国”分两步走: 首先Create Generated Clocks 从引脚sysclk 到寄存器clk_div create_generated_clock -name {clk_div_r} -source [get_ports {sysclk}] -divide_by 2 -master_clock {sysclk} [get_registers {clk_div:inst4|clk_div}]

相关主题