ISE时序约束笔记
- 格式:doc
- 大小:460.00 KB
- 文档页数:14
*ilin* FPGA编程技巧之常用时序约束详解1. 根本的约束方法为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。
最普遍的三种路径为:. 输入路径〔Input Path〕,使用输入约束. 存放器到存放器路径〔Register-to-Register Path〕,使用周期约束. 输出路径〔Output Path〕,使用输出约束. 具体的异常路径〔Path specific e*ceptions〕,使用虚假路径、多周期路径约束1.1. 输入约束Input Constraint OFFSET IN约束限定了输入数据和输入时钟边沿的关系。
1.1.1. 系统同步输入约束System Synchronous Input在系统同步接口中,同一个系统时钟既传输数据也获取数据。
考虑到板子路径延时和时钟抖动,接口的操作频率不能太高。
1-1简化的系统同步输入SDR接口电路图1-2SDR系统同步输入时序上述时序的约束可写为:NET "SysClk" TNM_NET = "SysClk";TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;OFFSET = IN 5 ns VALID 5 ns BEFORE "SysClk";1.1.2. 源同步输入约束Source Synchronous Input在源同步接口中,时钟是在源设备中和数据一起产生并传输。
1-3简化的源同步输入DDR接口电路1-4DDR源同步输入时序上图的时序约束可写为:NET "SysClk" TNM_NET = "SysClk";TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" RISING;OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" FALLING;1.2. 存放器到存放器约束Register-to-Register Constraint存放器到存放器约束往往指的是周期约束,周期约束的覆盖围包括:. 覆盖了时钟域的时序要求. 覆盖了同步数据在部存放器之间的传输. 分析一个单独的时钟域的路径. 分析相关时钟域间的所有路径. 考虑不同时钟域间的所有频率、相位、不确定性差异1.2.1. 使用DLL, DCM, PLL, and MMCM等时钟器件自动确定同步关系使用这一类时钟IP Core,只需指定它们的输入时钟约束,器件将自动的根据用户生成IP Core时指定的参数约束相关输出,不需用户手动干预。
ISE时序约束笔记ISE时序约束笔记1——Global Timing Constraints时序约束和你的工程执行工具不会试图寻找达到最快速的布局&布线路径。
——取而代之的是,执行工具会努力达到你所期望的性能要求。
性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。
没有时序约束的例子该工程没有时序约束和管脚分配——注意它的管脚和放置——该设计的系统时钟频率能够跑到50M时序约束的例子和上面是相同的一个设计,但是加入了3个全局时序约束。
——它最高能跑到60M的系统时钟频率——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置更多关于时序约束时序约束应该用于界定设计的性能目标1.太紧的约束将会延长编译时间2.不现实的约束可能导致执行工具罢工3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。
路径终点有两种类型的路径终点:1.I/O pads2.同步单元(触发器,锁存器,RAMs)时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
ISE时序约束笔记6——Timing Groups and OFFSET Constraints
回顾全局OFFSET约束
在时钟行中用法Pad-to-Setup和Clock-to-Pad列为全部出于该时钟域的I/O路径指定OFFSETs。
为大多数I/O路径举行约束的最容易办法——然而,这将会导致一个过约束的设计。
指定管脚的OFFSET约束
用法Pad-to-Setup和Clock-to-Pad列为每个I/O路径指定OFFSETs。
这种约束办法适用于惟独少数管脚需要不同的时序约束。
更常用的办法是:
1. 为Pads生成Groups
2. 对生成的指定Groups举行OFFSET IN/OUT约束
双沿时钟的OFFSET约束OFFSET约束指明白管脚的输入数据和初始时钟之间的关系。
初始时钟沿在周期约束定义中浮现关键词“高”和“低”。
——高:初始时钟升高沿(默认),即升高沿锁存数据
——低:初始时钟下降沿
假如全部的I/O都由时钟的一个沿控制,那么你可以用法这个关键字高或低举行周期约束。
假如两个沿都用到,你就必需举行两个OFFSET的约束。
——每个OFFSET对应一个时钟沿
——DDR寄存器也是这样用法的一个例子
双沿时钟的OFFSET IN约束
输入数据在升高沿或者下降沿之前3ns有效——周期约束为10ns,初
第1页共3页。
第六章 约束设计与时序分析§6.1 概述对于一些普通的、低速的逻辑设计来说,在经过了ISE 6设计工具的综合、优化处理之后,不用再进行时序方面的任何分析和处理基本上就可达到和满足设计要求。
然而对于高速、高性能、高密度以及多时钟信号控制的逻辑设计,仅靠ISE 6的优化处理是远远不够的,而需要对设计进行时序方面的控制和处理并进行严格的时序分析,以判定所完成的设计是否达到我们的设计要求。
通常,在进行这些设计时,对时序问题作出判断和处理的越早越好。
Xilinx针对这些高端的逻辑设计,在ISE6设计工具提供了功能完善和强大的时序分析器(Timing Analyzer),其详细的时序报告功能方便确定高速信号的路径。
通过该工具,设计者可对设计中的时序冲突以及时序约束等进行细致的检查,找到设计中的时序瓶颈,然后通过一些特定的处理方法对时序进行调整。
这些设计和分析方式我们称为时序收敛(迭代)。
ISE6设计工具所提供的主动时序收敛(ProActive Timing Closure)技术,保证了FPGA器件的高速设计能力,从而降低总体设计成本以及整个设计流程所花费的时间。
作为构成时序收敛技术的一部分,ISE 6工具中新的时序约束(Timing Constraints)提供了可编程逻辑设计中最全面的时序约束语言。
这些都进一步简化了高速设计和分析。
通常,对于复杂的设计,需要进行反复的时序分析和约束设计,即多次迭代,以满足设计的要求。
Xilinx推荐的设计流程如图6-1所示。
图6-1 完整的Xilinx 逻辑设计和时序收敛流程约束设计条件可以在设计文件中直接设置,也可以通过用户约束文件UCF (User Constraint File)、网表约束文件NCF (Netlist Constraint File)、物理约束文件PCF(Physical Constraints File)等形式进行设置。
在Xilinx的CPLD/FPGA设计中,约束条件主要包括:⑴ CPLD约束(CPLD Fitter)--CPLD约束用于指定CPLD设计中的各类约束参数。
Xilinx约束学习笔记(⼆)——定义时钟2. 定义时钟2.1 关于时钟为了获得最佳精度路径覆盖信息,必须正确定义时钟。
时钟要定义在时钟树的根 pin 或 port 上,称为 source point。
时钟的边缘应该由周期和波形进⾏组合描述。
周期使⽤纳秒做为单位进⾏定义。
它对应于波形重复的时间。
波形是⼀系列的上升沿和下降沿绝对时间列表,单位为纳秒,并且所有时间在⼀个时钟周期内。
列表必须包含偶数个值。
第⼀个值始终对应于第⼀个上升边缘。
如果没有指定波形,波形的默认占空⽐为 50%,相移为 0。
2.1.1 传播时钟周期和波形属性只展现出了时钟的理想特性。
当时钟进⼊ FPGA 并通过时钟树传播时,时钟边沿被延缓,并受噪声和硬件⾏为引影响。
这些特性称为时钟⽹络延迟和时钟不确定性。
时钟的不确定性包括:时钟抖动(clock jitter)相位错误⽤户指定添加的不确定性默认情况下,Vivado 在做时序分析时,始终将时钟视为传播时钟,即⾮理想时钟,以此提供准确的余量值,其中包括时钟树插⼊延迟和不确定性。
2.1.2 专⽤硬件资源FPGA 有⼤量专⽤的时钟管脚,这个管脚可以专门⽤来做时钟的输⼊。
FPGA 内部包含有 MMCM、PLL 和 BUR 之类的时钟资源。
2.2 基准时钟(Primary Clock)基准时钟是通过 FPGA 输⼊端⼝或千兆收发器输出引脚(例如,恢复时钟)进⼊设计的时钟。
基准时钟只能通过 create_clock 指令进⾏定义。
(为什么是千兆收发器?下⾯的话应该可以解释,7 系列的 GT 恢复时钟不能⾃动推导,必须⼿动定义。
⽽ US 和 USP 系列的可以⾃动推导,不需要⼈为定义)Primary clocks must be defined on a gigabit transceiver output only for Xilinx® 7 series FPGAs. For UltraScale and UltraScale+™ devices, the timer automatically derives clocks on the GT output ports.基准时钟必须附加到⽹表对象。
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到内部同步元件之间的所有路径。
时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
周期约束特性周期约束使用最准确的时序信息,使其能够自动的计算:1.源寄存器和目的寄存器之间的时钟偏斜(Clock Skew)2.负沿钟控的同步单元3.不等同占空比的时钟4.时钟的输入抖动(jitter)假设:1.CLK信号占空比为50%2.周期约束为10ns3.由于FF2将在CLK的下降沿触发,两个触发器之间的路径实际上将被约束为10ns的50%即5ns时钟输入抖动(Clock Input Jitter)时钟输入抖动是源时钟的不确定性(clock uncertainty)之一时钟的不确定时间必须从以下路径扣除:——周期约束建立时间路径——OFFSET IN约束的建立时间路径时钟的不确定时间必须添加到以下路径中:——周期约束保持时间路径——OFFSET IN约束保持时间路径——OFFSET OUT约束路径Pad-to-Pad约束——不包含任何同步单元的纯组合逻辑电路——纯组合逻辑延时路径开始并结束于I/O pads,所以通常会被我们遗漏而未约束ISE时序约束笔记3——Global Timing Constraints问题思考哪些路径是由CLK1进行周期约束?哪些路径是由pad-to-pad进行约束?OFFSET约束OFFSET约束覆盖以下路径:——从input pads到同步单元(OFFSET IN)——从同步单元到output pads(OFFSET OUT)OFFSET约束特性OFFSET约束自动计算时钟分布延时1.提供最准确的时序信息2.大量增加输入信号到达同步单元的时间(时钟和数据路径并行)3.大量减少输出信号到达输出管脚的时间(时钟和数据路径先后)OFFSET约束也可以解释时钟输入抖动——使用抖动确定关联的周期约束时钟延时数据路径延时和时钟分布延时都需要在OFFSET计算中使用到——OFFSET IN = T_data_in –T_clk_in——OFFSET OUT = T_data_out + T_clk_outISE时序约束笔记4——Global Timing Constraints问题思考在这个电路中哪些路径是由OFFSET IN 和OFFSET OUT来约束的?问题解答:——OFFSET IN:PADA to FLOP and PADB to RAM——OFFSET OUT:LATCH to OUT1, LATCH to OUT2, and RAM to OU T1问题思考下面给出的系统框图里,你将给出什么样的约束值以使系统能够跑到100M Hz?——假设在下面的器件之间没有时钟偏斜问题解答:PERIOD = 10 ns , OFFSET IN (BEFORE) = 7 ns and OFFSET OUT (AF TER) = 8 ns小结1.性能期望和时序约束相关联2.周期约束覆盖同步单元之间的延时路径3.OFFSET约束覆盖从输入管脚到同步单元和从同步单元到输出管脚之间的延时路径ISE时序约束笔记5——Timing Groups and OFFSET C onstraints特定路径时序约束使用全局时序约束(PERIOD,OFFSET,PAD-TO-PDA)将约束整个设计仅仅使用全局约束通常会导致过约束——约束过紧——编译时间延长并且可能阻止实现时序目标——通过综合工具或者映射后时序报告重新审视性能评估特定路径约束能够覆盖全局时序约束在特定路径上的约束——这就允许设计者放宽特定路径的时序要求更多关于特定路径约束你的设计器件的内部面积将会从特定路径约束收益1.多周期路径Multi-cycle paths2.跨时钟域路径3.双向总线4.I/O时序特定路径约束应该由你的性能目标来界定,不能够不加限制的随意放置全局约束回顾使用全局PERIOD,OFFSET IN和OFFSET OUT约束将约束所有以下的路径这使得控制设计的总体性能更加容易特定路径约束实例一条特定路径约束对于路径本身的优化微乎其微这有助于你更好的控制设计性能,并带给执行工具更大的灵活性以达到你的性能和使用要求生成特定路径约束需要两个步骤:1.多个有共同时序要求的特定路径终点生成一个groups2.关联两个groups,指定它们的特定路径的时序要求生成终点路径的Groups特定路径时序约束在终点路径较好的分组后会更加高效——否则,约束一个大的工程将极其耗时耗力。
ISE时序约束笔记7——Path
时钟升高沿和下降沿之间的时序约束
周期约束可以自动计算两个沿的的约束——包括调节非50%占空比的时钟。
例:一个CLK时钟周期约束为10ns,能够应用5ns的约束到两个寄存器之间。
不需要特定路径应用到这个例子中。
相关时钟域的约束
为一个时钟举行周期约束——以这个周期约束确定相关的时钟。
执行工具将按照它们的关系来打算如何处理跨时钟域。
DCM有多个输出:——确定DCM输入时钟的周期约束
——执行工具将会从这个周期约束推导出其输出的约束
——全部的约束将会和原始的周期约束相关
不相关时钟域的约束
在这个例子中,周期约束不笼罩处处于两个时钟域之间的任何延时路径。
——这是默认的处理方式。
你必需添加一个约束笼罩到相关时钟域之间的路径中。
——例如,频率相同,但是CLK_B有一些相位偏移。
在两个不相关的时钟域你就必需添加一些同步。
约束两个时钟域之间的路径。
——用法Groups by NETs选项为CLK_A和CLK_B定义groups,假如
第1页共4页。
ISE时序约束笔记1——Global Timing Constraints时序约束和你的工程执行工具不会试图寻找达到最快速的布局&布线路径。
——取而代之的是,执行工具会努力达到你所期望的性能要求。
性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。
没有时序约束的例子该工程没有时序约束和管脚分配——注意它的管脚和放置——该设计的系统时钟频率能够跑到50M时序约束的例子和上面是相同的一个设计,但是加入了3个全局时序约束。
——它最高能跑到60M的系统时钟频率——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置更多关于时序约束时序约束应该用于界定设计的性能目标1.太紧的约束将会延长编译时间2.不现实的约束可能导致执行工具罢工3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。
路径终点有两种类型的路径终点:1.I/O pads2.同步单元(触发器,锁存器,RAMs)时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
Timing Groups and OFFSET ConstraintsObjectivesAfter completing this module, you will be able to:•Use the Constraints Editor to create groups of path endpoints •Use the Constraints Editor to create path-specific OFFSET constraintsOutline•Introduction •Creating Groups •OFFSET Constraints •SummaryPath-Specific TimingConstraints•Using global timing constraints (PERIOD, OFFSET, and PAD-TO-PAD) will constrain your entire design•Using only global constraints often leads to over-constrained designs –Constraints are too tight–Increases compile time and can prevent timing objectives from being met–Review performance estimates provided by your synthesis tool or the Post-Map Static Timing Report•Path-specific constraints override the global constraints on specified paths –This allows you to loosen the timing requirements on specific pathsMore About Path-Specific Timing Constraints•Areas of your design that may benefit from path-specific constraints –Multi-cycle paths–Paths that cross between clock domains–Bidirectional buses–I/O timing•Path-specific timing constraints should be used to define your performance objectives and should not be indiscriminately placedGlobal Constraint Review•Using the global PERIOD, OFFSET IN, and OFFSET OUT constraints will constrain all of these paths•This makes it easy to control the overall performance of your designCDATAPath-Specific Constraint Example• A path-specific constraint can optimize as little as one path•This gives you greater control over your design’s performance and gives the implementation tools the greatest flexibility in meeting your performanceand utilization needsCDATAThe Advanced Tab of the Constraints Editor•Creating path-specificconstraints requires two steps–Step 1:Create groups of pathend points–Step 2:Communicate thetiming objective between thegroups•The constraints we discuss inConstraints EditorOutline •Introduction•Creating Groups •OFFSET Constraints •SummaryCreating Groups of Endpoints•Path-specific timing constraints will only be effective if path end points can be easily grouped together–Otherwise, constraining a large design would be time consuming and painstaking•The Constraints Editor makes this easy by allowing you to define groups of path end points (pads, flip-flops, latches, and RAMs)•Specific delay paths can then be constrained with advanced timing constraintsCreating Groups of Endpoints•With the Constraints Editor,grouping path end points ismade easy with the followingoptions:–Group by nets–Group by instance name–Group by hierarchy–Group by output net name–Timing THRU Points option–Group by clock edgeGrouping by Nets orOutput Net Name •Step 1: Enter a group name•search for–Optional filter string•Available list•Step 3: Select nets and click Add–Nets appear in the Time NameTargets listGrouping by Nets versusOutput Net Name•Grouping by net “NET_A”will create a group containing FLOP2 only –Group contains flip-flops that are driven by the selected net •Grouping by output new “NET_A”will create a group containing FLOP1only–Group contains the flip-flop that sources the selected net•Steps are the same•Design Element Types are different–Instance Name: FFs, pads, latches, RAMs–Hierarchy: User levels, Xilinx-created levelsGrouping by Instance Nameor Hierarchy••defined group–the group•Step 3: Select clock edgeGrouping by Clock EdgeTiming THRU Points•Allows you to optimize paths through specific nets and 3-state buffers•In this example, a group of nets was named TEOUTS. A constraint can now be referenced such that only the delay paths through the TEOUTS nets will be optimizedTiming THRU Points•Group nets or 3-state buffers •Use these groups to identifyspecific paths to be constrainedManaging Groups•Groups that you have defined are written into the UCF file–INST <element_name> TNM = <group_name>; OR–NET <net_name> TNM_NET = <group_name>; OR–TIMEGRP <group_name> = <elements>;•To add items to an existing group, click one of the grouping buttons and use the same Time Name–Not allowed when grouping by output net name•To delete a group, right-click on the line in the Constraints window and select Delete Constraint–Or delete the line with a text editor•You cannot remove items from a group with the Constraints Editor –Edit the UCF file with a text editorOutline•Introduction •Creating Groups•OFFSET constraints •SummaryReview of Global OFFSETConstraints•Use the Pad-to-Setup and Clock-to-Pad columns to specify OFFSETs for all I/O paths on each clock domain•Easiest way to constrain most I/O paths–However, this may lead to an over-constrained designPin-Specific OFFSETConstraints•Use the Pad-to-Setup and Clock-to-Pad columns to specify OFFSETs for each I/O pin•Use this type of constraint when only a few I/O pins need different timingCreating Groups of Pads •Groups of I/O pads can be made in the Ports tab–Use Shift-click or CTRL-click to select multiple pads–Enter a group name and click the Create Group button•Click the Pad to Setup or Clock to Pad button to define group OFFSETs –Or use the Advanced tabCreating Group OFFSETConstraints•OFFSET IN/OUTconstraints can also beentered in theAdvanced tab•The Pad-to-Setup andClock-to-Pad optionsallow you to enterOFFSET IN/OUTconstraints on specificgroups of padsGroup OFFSET Constraints•••Select a clock domain•Source SynchronousOFFSET Constraints•For source synchronous inputs, youcan specify the width of the validdata windowOFFSET Constraints withTwo-Phase Clocks•OFFSET constraints define the relationship between the data and the initial clock edge at the pins of the FPGA•Initial clock edge is defined in the global PERIOD constraint using the HIGH or LOW keyword–HIGH: Initial edge rising (default)–LOW: Initial edge falling•If all I/O are clocked on a single edge, use the HIGH/LOW keywords in the PERIOD constraint to define which edge is used•If both clock edges are used, create two OFFSET constraints –One for each clock edge–This includes cases where DDR flip-flops are usedOFFSET IN Using Both Clock Edges •Input data is valid 3 ns before rising and falling edge –PERIOD constraint is 10 ns, initial edge rising, 50-percent duty cycle •Create groups of flip-flops for each clock edge •For inputs clocked on a rising edge, OFFSET = IN 3 ns BEFORE clk;•For inputs clocked on a falling edge, OFFSET = IN –2 ns BEFORE clk;– 2 ns after initial (rising) edge = 3 ns before falling edgeclkOFFSET OUT Using Both Clock Edges•Output data must be valid 3 ns after rising and falling edge –PERIOD constraint is 10 ns, initial edge rising, 50-percent duty cycle •Create groups of flip-flops for each clock edge •For outputs clocked on a rising edge, OFFSET = OUT 3 ns AFTER clk;•For outputs clocked on a falling edge, OFFSET = OUT 8 ns AFTER clk;–8 ns after initial (rising) edge = 3 ns after falling edgeclkOutline•Introduction •Creating Groups •OFFSET Constraints•SummaryReview Questions•How do path-specific timing constraints improve your design’s performance?•How would you constrain this design to get an internal clock frequency of 100 MHz?•The input will be valid at least 3 ns before the rising edge of CLK. The output must be valid 4 ns after the falling edge of CLK. Write the appropriateOFFSET constraintsINCLKRESET_ARESET_BAnswers•How do path-specific timing constraints improve your design’s performance?–They give the implementation tools more flexibility to meet all of your timing objectives•How would you constrain this design to get a maximum internal clock frequency of 100 MHz?–Enter a global PERIOD constraint of 10 ns on the CLK signal•Write the appropriate OFFSET constraints.–Assuming that the PERIOD constraint uses the HIGH keyword and 50-percent duty cycle:•OFFSET = IN 3 ns BEFORE CLK;•OFFSET = OUT 9 ns AFTER CLK;Summary•Path-specific constraints are used to override global constraints –Keeps your design from becoming over-constrained–Allows the software to make intelligent trade-offs to meet all of your performance goals•Creating path-specific constraints is a two-step process–Create groups of path endpoints–Communicate the timing objective between the groups•Path-specific OFFSET constraints can be entered on either the Ports tab or the Advanced tab•When using both clock edges for I/O, write separate OFFSET constraints for each clock edgeWhere Can I Learn More?•Timing Presentation on the Web: →Tech Tips →Timing & Constraints•Constraints Guide: →Software Documentation –Documentation may also be installed on your local machine。
ISE时序约束笔记ISE时序约束笔记1——Global Timing Constraints时序约束和你的工程执行工具不会试图寻找达到最快速的布局&布线路径。
——取而代之的是,执行工具会努力达到你所期望的性能要求。
性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。
没有时序约束的例子该工程没有时序约束和管脚分配——注意它的管脚和放置——该设计的系统时钟频率能够跑到50M时序约束的例子和上面是相同的一个设计,但是加入了3个全局时序约束。
——它最高能跑到60M的系统时钟频率——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置更多关于时序约束时序约束应该用于界定设计的性能目标1.太紧的约束将会延长编译时间2.不现实的约束可能导致执行工具罢工3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。
路径终点有两种类型的路径终点:1.I/O pads2.同步单元(触发器,锁存器,RAMs)时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
周期约束特性周期约束使用最准确的时序信息,使其能够自动的计算:1.源寄存器和目的寄存器之间的时钟偏斜(Clock Skew)2.负沿钟控的同步单元3.不等同占空比的时钟4.时钟的输入抖动(jitter)假设:1.CLK信号占空比为50%2.周期约束为10ns3.由于FF2将在CLK的下降沿触发,两个触发器之间的路径实际上将被约束为10ns的50%即5ns时钟输入抖动(Clock Input Jitter)时钟输入抖动是源时钟的不确定性(clock uncertainty)之一时钟的不确定时间必须从以下路径扣除:——周期约束建立时间路径——OFFSET IN约束的建立时间路径时钟的不确定时间必须添加到以下路径中:——周期约束保持时间路径——OFFSET IN约束保持时间路径——OFFSET OUT约束路径Pad-to-Pad约束——不包含任何同步单元的纯组合逻辑电路——纯组合逻辑延时路径开始并结束于I/O pads,所以通常会被我们遗漏而未约束ISE时序约束笔记3——Global Timing Constraints问题思考哪些路径是由CLK1进行周期约束?哪些路径是由pad-to-pad进行约束?OFFSET约束OFFSET约束覆盖以下路径:——从input pads到同步单元(OFFSET IN)——从同步单元到output pads(OFFSET OUT)OFFSET约束特性OFFSET约束自动计算时钟分布延时1.提供最准确的时序信息2.大量增加输入信号到达同步单元的时间(时钟和数据路径并行)3.大量减少输出信号到达输出管脚的时间(时钟和数据路径先后)OFFSET约束也可以解释时钟输入抖动——使用抖动确定关联的周期约束时钟延时数据路径延时和时钟分布延时都需要在OFFSET计算中使用到——OFFSET IN = T_data_in – T_clk_in——OFFSET OUT = T_data_out + T_clk_outISE时序约束笔记4——Global Timing Constraints问题思考在这个电路中哪些路径是由OFFSET IN 和OFFSET OUT来约束的?问题解答:——OFFSET IN:PADA to FLOP and PADB to RAM——OFFSET OUT:LATCH to OUT1, LATCH to OUT2, and RAM to OUT1问题思考下面给出的系统框图里,你将给出什么样的约束值以使系统能够跑到100MHz?——假设在下面的器件之间没有时钟偏斜问题解答:PERIOD = 10 ns , OFFSET IN (BEFORE) = 7 ns and OFFSET OUT (AFTER) = 8 ns小结1.性能期望和时序约束相关联2.周期约束覆盖同步单元之间的延时路径3.OFFSET约束覆盖从输入管脚到同步单元和从同步单元到输出管脚之间的延时路径ISE时序约束笔记5——Timing Groups and OFFSET Constraints特定路径时序约束使用全局时序约束(PERIOD,OFFSET,PAD-TO-PDA)将约束整个设计仅仅使用全局约束通常会导致过约束——约束过紧——编译时间延长并且可能阻止实现时序目标——通过综合工具或者映射后时序报告重新审视性能评估特定路径约束能够覆盖全局时序约束在特定路径上的约束——这就允许设计者放宽特定路径的时序要求更多关于特定路径约束你的设计器件的内部面积将会从特定路径约束收益1.多周期路径Multi-cycle paths2.跨时钟域路径3.双向总线4.I/O时序特定路径约束应该由你的性能目标来界定,不能够不加限制的随意放置全局约束回顾使用全局PERIOD,OFFSET IN和OFFSET OUT约束将约束所有以下的路径这使得控制设计的总体性能更加容易特定路径约束实例一条特定路径约束对于路径本身的优化微乎其微这有助于你更好的控制设计性能,并带给执行工具更大的灵活性以达到你的性能和使用要求生成特定路径约束需要两个步骤:1.多个有共同时序要求的特定路径终点生成一个groups2.关联两个groups,指定它们的特定路径的时序要求生成终点路径的Groups特定路径时序约束在终点路径较好的分组后会更加高效——否则,约束一个大的工程将极其耗时耗力。
约束编辑有助于你更容易的进行路径终点(pads, flip-flops, latches, and RAMs)进行Groups分组。
使用约束编辑器,终点路径的分组有以下选项:–Group by nets–Group by instance name–Group by hierarchy–Group by output net name–Timing THRU Points option–Group by clock edgeNets 分组与output net name分组对比由net分组的“NET_A”将生成一个只包含FLOP2的group——Group包含选择网络所驱动的寄存器由output net name分组的“NET_A”将生成一个只包含FLOP1的group——Group包含选择网络的源寄存器ISE时序约束笔记6——Timing Groups and OFFSET Constraints回顾全局OFFSET约束在时钟行中使用Pad-to-Setup和Clock-to-Pad列为所有出于该时钟域的I/O路径指定OFFSETs。
为大多数I/O路径进行约束的最简单方法——然而,这将会导致一个过约束的设计。
指定管脚的OFFSET约束使用Pad-to-Setup和Clock-to-Pad列为每个I/O路径指定OFFSETs。
这种约束方法适用于只有少数管脚需要不同的时序约束。
更常用的方法是:1.为Pads生成Groups2.对生成的指定Groups进行OFFSET IN/OUT约束双沿时钟的OFFSET约束OFFSET约束指明了FPGA管脚的输入数据和初始时钟之间的关系。
初始时钟沿在周期约束定义中出现关键词“高”和“低”。
——高:初始时钟上升沿(默认),即上升沿锁存数据——低:初始时钟下降沿如果所有的I/O都由时钟的一个沿控制,那么你可以使用这个关键字高或低进行周期约束。
如果两个沿都用到,你就必须进行两个OFFSET的约束。
——每个OFFSET对应一个时钟沿——DDR寄存器也是这样使用的一个例子双沿时钟的OFFSET IN约束输入数据在上升沿或者下降沿之前3ns有效——周期约束为10ns,初始上升沿,占空比为50%。
为每个时钟沿生成一个时钟Groups——输入时钟的上升沿,OFFSET = IN 3ns BEFORE CLK;——输入时钟的下降沿,OFFSET = IN -2ns BEFORE CLK;(在初始时钟的上升沿后2ns = 时钟下降沿前3ns)双沿时钟的OFFSET OUT约束输出数据必须在时钟的上升沿或者下降沿后3ns内有效——周期约束为10ns,初始上升沿,占空比为50%。
为每个时钟沿生成一个时钟Groups——输入时钟的上升沿,OFFSET = OUT 3ns AFTER CLK;——输入时钟的下降沿,OFFSET = OUT 8ns AFTER CLK;(在初始时钟的上升沿后8ns = 时钟下降沿后3ns)问题思考特定路径时序约束如何改善了设计性能?你如何约束这个设计使其内部时钟频率达到100 MHz?输入(数据)将在时钟CLK的上升沿到达前3ns内有效。
输出数据必须在时钟CLK的下降沿后4ns内稳定下来。
写出合适的OFFSET约束?问题解答特定路径时序约束如何改善了设计性能?——它使得执行工具更加灵活的达到你的时序要求。
你如何约束这个设计使其内部时钟频率达到100 MHz?——给时钟信号CLK施加一个10ns的全局周期约束。
写出合适的OFFSET约束?——OFFSET = IN 3 ns BEFORE CLK; OFFSET = OUT 4 ns AFTER CLK;ISE时序约束笔记7——Path-Specific Timing Constraints时钟上升沿和下降沿之间的时序约束周期约束可以自动计算两个沿的的约束——包括调整非50%占空比的时钟。
例:一个CLK时钟周期约束为10ns,能够应用5ns的约束到两个寄存器之间。
不需要特定路径应用到这个例子中。
相关时钟域的约束为一个时钟进行周期约束——以这个周期约束确定相关的时钟。
执行工具将根据它们的关系来决定如何处理跨时钟域。