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

合集下载

Vivado集成开发环境时序约束介绍

Vivado集成开发环境时序约束介绍

Vivado时序约束本文主要介绍如何在Vivado设计套件中进行时序约束,原文出自Xilinx中文社区。

1Timing Constraints in Vivado -UCF to XDCVivado软件相比于ISE的一大转变就是约束文件,ISE软件支持的是UCF(User Constraints File),而Vivado软件转换到了XDC(Xilinx Design Constraints)。

XDC主要基于SDC(Synopsys Design Constraints)标准,另外集成了Xilinx的一些约束标准,可以说这一转变是Xilinx向业界标准的靠拢。

Altera从TimeQuest开始就一直使用SDC标准,这一改变,相信对于很多工程师来说是好事,两个平台之间的转换会更加容易些。

首先看一下业界标准SDC的原文介绍:Synopsys' widely-used design constraints format, known as SDC, describes the "design intent" and surrounding constraints for synthesis, clocking, timing, power, test and environmental and operating conditions. SDC has been in use and evolving for more than 20 years, making it the most popular and proven format for describing design constraints. Essentially all synthesized designs use SDC and numerous EDA companies have translators that can read and process SDC.Xilinx原先的自成一派(UCF)其实其实也算做的不错,相信使用过UCF的工程师也有同感,并没有什么不便。

xilinx fpga中时钟输入管脚的约束

xilinx fpga中时钟输入管脚的约束

xilinx fpga中时钟输入管脚的约束在Xilinx FPGA中,时钟输入管脚的约束是非常重要的,它们可以确保时钟信号的稳定性和一致性,从而保证设计的性能和可靠性。

因此,合理设置时钟输入管脚的约束是进行FPGA设计中不可忽视的一部分。

时钟输入管脚约束主要包括以下几个方面:1.频率约束:时钟输入管脚的频率约束指定了该管脚接收的时钟信号的频率范围。

在设计中,需要根据时钟源的特性和系统的工作要求来设置合适的频率约束。

2.总线延迟约束:在一些应用中,时钟信号可能需要进行时序约束,以确保各个时钟域之间的同步稳定性。

总线延迟约束指定了时钟信号与其他信号的最大传播延迟,这样可以避免时序问题和死锁。

3.约束路径的设置:时钟输入管脚的约束路径设置是确保时钟信号按照设计要求正确到达目标寄存器的关键。

通过设置约束路径,可以规定时钟信号到达目标寄存器的最长路径,确保时钟信号的稳定性,减少时钟抖动和时钟周期不稳定等问题。

4.时钟输入和输出约束:时钟输入管脚还可能有一些其他的约束设置,如时钟输入和输出的相位约束、时钟输入和输出的组合约束等。

这些约束的目的是保证时钟信号的稳定性和相位一致性。

除了上述的基本约束外,还有一些特殊的约束需要注意:1.编译工具约束:在进行FPGA设计时,可以使用Xilinx的编译工具对设计进行优化和约束分析。

通过正确设置时钟输入管脚的约束,可以使编译工具更好地理解设计的时钟域和时序要求,从而提高设计的性能和可靠性。

2.时钟插入延迟约束:在一些高速设计中,时钟插入延迟约束非常重要。

它指定了时钟信号从输入管脚到达目标寄存器之间的最小插入延迟。

通过设置时钟插入延迟约束,可以在设计中引入适当的延迟,从而使时钟信号的到达时间更加可控和稳定。

3.锁定时钟约束:在一些需要时钟同步的设计中,可能需要设置锁定时钟约束。

这个约束规定了时钟信号之间的相位关系,确保它们在设定的相位范围内保持同步。

这对于一些高速通信和信号处理系统中的数据同步非常重要。

xilinx官方论坛解释时序约束

xilinx官方论坛解释时序约束

Timing ConstraintsFollowing along the forum traffic, it has come to may attention that timing constraints are often a mystery to new users. In order to help those who have never had to constrain their timing, I offer the following part one, of five parts, on timing constraints.Some BasicsTiming constraints apply to nets or networks, the path or paths taken from one element to all of the inputs of subsequent elements. One can also call out a specific path that is part of a net or network.Every design should have at least one period constraint that specifies the clock and the duty cycle of the clock. A clock is always required for synchronous design, and so the period constraint is the most basic and is always a required constraint for any design. If there is more than one clock, each requires its own period constraint.The period constraint will define how all nets must be routed in order to meet the timing requirements for proper operation.A group may be defined to generically refer to many nets or paths of a selected set, such as a bus or control group.PriorityWhen it comes to having many constraints for a design the following applies: the more general the constraint, the lower its priority, and, conversely, the more specific a constraint, the higher the priority.For example, a period constraint on a clock net or network is very general and will be over-ruled by a from:to constraint on a specific net or network.The specific constraint for the from:to (or from:thru:to) is deemed more important than the more general constraint for any net within a clock domain.There is a timing specification interaction report (the .tsi report) that details how the constraints interact. Select this option in the timing analyzer for reporting if you have a set of constraints, and you need to know how they are interacting and which priorities have been set.One can override the assumed priorities and manually set the priority of any timing constraint. The use of the priority command allows setting a very low priority, such as 0, or even a negative priority, such as -10, which will be evaluated with an even higher priority than 0.Example 1The PERIOD constraint only covers nets from Synchronous Elements to Synchronous Elements, such as FFS to FFS, as shown in blue below:NET "clk20" TNM_NET = “tnm_clk20";TIMESPEC "TS_clk20" = PERIOD “tnm_clk20" 20 ns HIGH 50 %;A TIMEGRP (timing group) is created called tnm_clk20 which contains all of the downstream synchronous components that net clk20 drives. All of the paths between these synchronous elements are then constrained with the timing specification TS_clk20, which specifies a 20 ns requirement from synchronous element to synchronous element and a HIGH 50% (clk20 has a 50/50 duty cycle).Example 2FROM:TO constraints are used to define a requirement for paths that go between two groups.TIMESPEC TS_my_fromto = FROM my_from_grp TO my_to_grp 40 ns;tells the tools that you need to ensure that data makes it from the components in the timing group ‘my_from_grp’ to ‘my_to_grp’ in 40 ns. Timing Analyzer will still calculate the clock skew from source group to destination group, but at a lower priority (if the clocks are related). Predefined groups can be used, for example:TIMESPEC TS_F2F = FROM FFS TO FFS 40 ns;If we need leave out the time unit (ns, ps, etc…), then the tools presume ns:TIMESPEC TS_P2P = FROM PADS TO PADS 30;You can leave FROM or TO off of the constraint and make it more generic:TIMESPEC TS_2P = TO PADS 40;All of the FROM:TO constraints in the examples above would be of higher priority than the PERIOD constraint.TSI ReportThe TSI report is generated with the ‘-tsi design.tsi’ switch in the TRCE command line, or by specifying the option in the timing analyzer. If a user does not see a path under the correct constraint, this is the best place to start. This report will also make suggestions on ways toimprove constraints in the universal constraints file (UCF). This report will also notify the user of any paths that are constrained by multiple clock domains:Example 3Constraint Interaction Report=============================Constraint interactions for TS_clk0_1 = PERIOD TIMEGRP "clk0_1" TS_clk HIGH 50%;1 paths removed by TS_my_fromto = MAXDELAY FROM TIMEGRP "my_to_grp" TO TIMEGRP "FFS" 40 ns;Analysis of Example 3In other words, the FROM:TO constraint (just one) was applied ahead (higher priority) of the PERIOD constraint.Following along the forum traffic, it has come to my attention that timing constraints are often a mystery to new users. In order to help those who have never had to constrain their timing, I continue with part 2 (of 5) on timing constraints.Setup and HoldIn a practical synchronous digital system, the data must arrive before the clock edge that samples it. The minimum amount of time in which the data must arrive before the clock edge is called the setup time.As well as arriving before the clock edge, the data must persist for some finite amount of time at the clock edge. This is called hold time. Hold time may be negative, zero, or positive. When it is negative, the data goes away before the clock edge. When it is zero, the data persists until the clock edge. When it is positive, the data persists for some time after the clock edge.By design, in the FPGA fabric, for all speed grades, all hold times are either negative or zero. This simplifies the placement and routing, as the data only needs to arrive before the clock edge, and is allowed to change immediately following a clock edge. The value that the data exceeds the minimum setup time is known as slack. Slack should always be positive. If a report shows a negative slack, then the setup timing will be inadequate (data will arrive too late).The clock path itself has delay, or skew. Thus, to analyze the timing, the tools will calculate the arrival time of the data and the clock at the flip-flop of interest. ConstraintsIf you recall from last time, the period constraint defines the clock period for the synchronous elements of interest (the flip-flops). The timing analyzer verifies that all paths between synchronous elements meet the setup and hold timing for your design. A violation of a period constraint will appear in the timing report, and have a negative slack value. It will either be identified as violating a setup requirement or a hold requirement.If a setup requirement has been violated, then the data needs to arrive at the flip-flop sooner. To do so may require a faster path. If the place and route software cannot find a faster path, you do have the option of placing the path manually in the FPGA_Editor tool, but this is a tool of last resort. It is better to try to re-architect the circuit to meet the requirement. One way to do this is to place a flip-flop earlier in the path. This is known as pipe-lining, and will add latency to the signal, but it will also allow the value to be captured properly.If a hold requirement has been violated (the data went away before the clock edge arrived), then this is often an indication that you have a design problem (bad architecture). Values should only change on the clock edge, and not before. If an external value is changing before the clock edge, one needs to delay the clock edge (using a DCM or PLL) so that the data is now registered properly by the new delayed clock.An alternative is to use the Idelay element in the IOB to move the data to where the clock is valid.Data Valid WindowThe time from before the clock edge (setup) plus the time after the edge (hold) is known as the data valid window, or the time the data must be stable to be properly registered. If the data is not valid for at least this amount of time, then the results are indeterminate, or unknown.MetastabilityJust because the data was not valid for as long as required does not mean that the output of the flip-flop is metastable--metastable is different from indeterminate! An output could be 0 or 1, seemingly at random, if the timing is not met. Metastability means the edge was “almost” capable of capturing the state and the flip-flop output is in some intermediate state (not 1, not 0) for some time after the clockedge. Metastability cannot be prevented, as it is a fact of the physics of the circuits, if the clock edge and the data are almost perfectly “missed.”In a properly designed synchronous system there are no problems with metastability. Metastability is a problem when something is asynchronous, like pressing a key on a keyboard, or when two synchronous clocks are asynchronous to each other. When something is asynchronous, it needs to be synchronized.For how to deal with metastability, please consult:/class/ee183/handouts_spr2003/synchronization_pres.pdfNext time: Tprop, or offsets.Following along the forum traffic, it has come to may attention that timing constraints are often a mystery to new users. In order to help those who have never had to constrain their timing, I continue with part 3 (of 5 parts) on timing constraints.Tprop or OffsetThe time it takes to get a signal from point A to point B is called the propagation time. It is based on the speed of light through a medium. For example, a trace on a printed circuit board carries signals at around 6 to 7 picoseconds per millimeter. Finding this time can be done by running simulations or solving equations when you know the dielectric constant for the material and the geometry of the wiring traces. Inside the silicon device the signals behave in much the same way, but also may be delayed by going through active circuits (buffers, inverters, logic and interconnect).Often, you can also measure these times with the help of an oscilloscope. Propagation times generally do not vary much at all when the path has no active elements. If the path is in silicon, the strength of the transistors will cause the path delay to vary with both a maximum value and a minimum value. Timing needs to be met for both, obviously.In order to tell the tools when data arrives at a particular location, offset constraints are used.OFFSET_INThe OFFSET IN constraint defines the relationship of a clock and data as they enter the device:OFFSET = IN 2 ns VALID 16 ns BEFORE “clk20";This constraint tells the tools that data will be setup at PADs 2 ns before the clk20 rising edge, and that the data will remain valid for 16 ns after it arrives. This constraint only applies to PADs that go to registers that are clocked by clk20, or a derivative of clk20 (a derived constraint).OFFSET requires a PERIOD constraint on clk20, so that it understands the clocking structure. This following is also acceptable:OFFSET = IN 2 ns BEFORE “clk20";However, the above statement will not check the hold time because we do not know when the data goes away at the PIN of the FPGA. If the data will not be setup until 2 ns after the clock edge, then we use the following:OFFSET = IN -2 ns VALID 16 ns BEFORE “clk20"; # Do not use OFFSET IN AFTER(the text after the # is a comment)OFFSET_OUTThe OFFSET OUT constraint defines the amount time you need to ensure that data makes it out of the device after a clock transition at the input to the FPGA:OFFSET = OUT 3 ns AFTER “clk20";This constraint tells the tools that you need to ensure that data is at the output pin of the FPGA 3 ns after a clock transition at the input of the specified clock to the FPGA. This constraint only applies to PADs that are driven by registers that are clocked by clk20, or a derivative of clk20 (a derived constraint). OFFSET requires a PERIOD constraint on clk20, so that it understands the clocking structure. Hold times are not checked for OFFSET OUT.If we need the data 2 ns before the clock edge, then we use the following:OFFSET = OUT -2 ns AFTER “clk20"; # Do not use OFFSET OUT BEFORENext time: how to define and use groups and a ssign group names.Following along the forum traffic, it has come to may attention that timing constraints are often a mystery to new users. In order to help those who have never had to constrain their timing, I continue with part 4 (of 5 parts) on timing constraints.Groups and Group NamesA time group is a way to identify a constraint for a collection of paths or nets between synchronous elements. To add components to a time group, you would use:TNMTNM_NETorTIMEGRPPaths are constrained by defining groups, and then giving requirements between those groups. There are few constraints that do not require Time Groups, such as:NET MAXDELAYThe Maximum Delay (MAXDELAY) attribute defines the maximum allowable delay on a net.TNM – Timing NameTo add a component to a user defined group:[NET|INST|PIN] object_name TNM = predefined_group identifier;whereobject_name is the name of the element or signal to be groupedpredefined_group is an optional keywordidentifier can be any combination of letters, numbers, or underscoresDo not use reserved words such as FFS, LATCHES, and RAMS. This variable is case sensitive (TNM=abc ? TNM=ABC). TNM can be applied to any net, element pin, primitive, or macro.Components can be part of more than one group:my_ffs_group TNM can have the my_ff component in itmy_ffs_group2 TNM can also have the my_ff component in itTo create a group:NET CLOCK TNM=clk_group;Any Keyword element can be made into a group for timing purposes. In this example, the net CLOCK is traced forward to the flip-flops (FFS). These flip-flops are timing-named (TNM) with the name clk_group. clk_group can now be referenced by this TNM in TIMESPECs.One can create a group using an instance:INST macro1 TNM = LATCHES latchgroup;All LATCHES in the macro called macro1 will be in a group called latchgroup.INST mymac TNM = RAMS memories;All RAMS in the macro called mymac will be in a group called memories.INST tester TNM = coverall;All PADS, LATCHES, RAMS, and FFS in the macro called tester will be in a group called coverall. For a complete listing of the predefined groups, search the applicable Constraints Guide for ‘predefined group.’SuggestionIn general, the fewer constraints, the better. Complex constraints can often cause more problems than they solve. As well, some paths or nets may be non-critical, and you may wish to declare that no constraints should be applied to these nets.TIG (timing ignore) constraints are used to remove things we don’t care about, or to remove constraints from a ‘false path.’NET "rst" TIG;This tells the tools that you do not need to constrain this path. It is important so that the tools do not work to meet timing on paths that you do not care about. Setting timing ignore on such paths will also reduce run times, and may improve the quality of the timing on the paths you do care about.You can also use TIG with FROM:TO constraints:TIMESPEC TS_my_fromto = FROM "my_to_grp" TO "FFS" TIG;Next time, the last part, 5 of 5, will discuss timing on double data rate (DDR) interfaces.Following along the forum traffic, it has come to may attention that timing constraints are often a mystery to new users. In order to help those who have never had to constrain their timing, I conclude with part 5 on timing constraints.Dual Data Rate (DDR)DDR interfacing uses both the rising and falling edges of the clock in a source-synchronous interface to capture or transfer twice as much data per clock cycle.Arriving DDRTo properly constrain data arriving at the device, you must first constrain the clock being used to capture the data, and also constrain the arrival of the data for both the rising and falling edges of the clock.For this example, the complete OFFSET IN specification with associated PERIOD constraint is:NET "SysCLk" TNM_NET = "SysClk";TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;OFFSET = IN 1.25 ns V ALID 2.5 ns BEFORE "SysClk" RISING;OFFSET = IN 1.25 ns V ALID 2.5 ns BEFORE "SysClk" FALLING;This global constraint covers both the data bits of the bus, as in each clock period two bits are captured: ?data1 and ?data2.Leaving DDRSimilar to specifying when the data arrives is specifying the output of DDR data.For this example, the complete OFFSET OUT specification for both the rising and falling clock edges is based on the clock supplied to the DDR register:NET “CLkIn” TNM_NET = “ClkIn”;OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” RISING;OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” FALLING;Note that the complete constraint format is OFFSET=OUT <value>, and this determines the maximum time from the rising clock edge at the input clock port until the data first becomes valid at the data output port of the FPGA device.When <value> is omitted from the OFFSET OUT constraint, as in the example above, the constraint becomes a report-only specification which reports the skew of the output bus. The REFERENCE_PIN keyword defines the regenerated output clock as the reference point against which the skew of the output data pins is reported.Of course, do not forget that the output clock also needs a period constraint (it was not needed for the specification of the output timing, but is required for getting the data to the DDR output register).SummaryIn this series we have provided a snapshot of common constraints and how to use them. Depending on how you liked this series, I can provide further articles on timing, as there is a lot more to say about the reports that can be generated by the timing analyzer.。

Xilinx约束学习笔记(二)——定义时钟

Xilinx约束学习笔记(二)——定义时钟

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 ISE 使用入门手册

Xilinx ISE 使用入门手册

Xilinx ISE 使用入门手册1发布日期:2009-3-6 13:06:10文章来源:搜电浏览次数:58111、ISE的安装现以ISE 5.2i为例介绍Xilinx ISE Series的安装过程。

1)系统配置要求ISE 5.2i推荐的系统配置与设计时选用的芯片有关。

因为在综合与实现过程中运算量非常大,所以对系统配置要求很高。

为了提高综合、仿真、实现过程的速度,对于计算机的CPU的主频、主板和硬盘的工作速度,尤其是内存大小配置都有非常高的要求。

在ISE 5.2i支持的所有Xilinx的FPGA/CPLD中,要求最低的Spartan II和XC9500/XL/XV等系列需要的内存和虚拟内存推荐值均达到128MB,而对于Virtex-II XC2V8000来说,需要的内存和虚拟内存推荐值均高达3GB。

2)ISE 5.2i的安装以中文版Windows XP操作系统为例加以说明。

(1)启动Windows XP,插入ISE5.2i安装光盘,自动或选择执行Install.exe,安装界面如图4.25所示。

图4.25 ISE5.2i安装界面(2)单击此时安装界面上的操作选择“下一步”直到出现图示对话框,输入有效的Registration ID。

之后单击“下一步”选择安装路径;再之后点击“下一步”,会弹出图4.26的对话框,可以选择器件模型。

图4.26 器件模型选择对话框(3)点击“下一步”,如图4.27所示,可以选择器件种类。

图4.27 器件种类选择对话框通过以上步骤后,可根据具体情况来选择,继续“下一步”即可完成安装。

安装完成后,环境变量应作如下描述:若操作系统是Windows NT/2000/XP,选择开始->控制面板->系统->选项->系统->高级->环境变量,在环境变量中加入:变量名:Xilinx变量值:C:Xilinx(即安装路径)具体设置如图4.28所示。

图4.28 环境变量设置操作图3)安装第三方软件在PC上安装完ISE之后,还需要安装第三方仿真软件,如ModelSim等。

XILINX_时序约束使用指南中文

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到内部同步元件之间的所有路径。

xilinx ISE时序约束笔记-中文

xilinx ISE时序约束笔记-中文

时序约束的两个步骤: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特定路径时序约束在终点路径较好的分组后会更加高效——否则,约束一个大的工程将极其耗时耗力。

xilinx fpga中时钟输入管脚的约束

xilinx fpga中时钟输入管脚的约束

xilinx fpga中时钟输入管脚的约束在Xilinx FPGA中,时钟输入管脚的约束是非常重要的,它决定了时钟信号的稳定性和数据流的正确性。

以下是一些关于时钟输入管脚约束的相关参考内容。

1. 器件手册在Xilinx FPGA的器件手册中,通常会提供关于时钟输入管脚的详细信息。

这些信息包括时钟输入管脚的功能、电气特性、使用限制等。

器件手册还可能提供特殊的时钟输入约束,如最大工作频率、时钟插入延迟等。

2. 约束文件在设计FPGA时,通常会使用一个约束文件来指定设计中的时钟输入管脚的相关约束。

约束文件是一个文本文件,其中可以定义各种约束,如时钟频率、时钟插入延迟、时钟占空比等。

对于时钟输入管脚,约束文件通常会指定时钟源(如外部晶振或PLL)以及时钟的时钟域和时钟频率。

3. Vivado Design Suite User GuideVivado是Xilinx FPGA的设计工具套件,其用户指南提供了关于时钟输入管脚约束的详细信息。

用户指南中包含了各种约束的语法和用法,如时钟约束(CLOCK)以及时钟域(CLOCK_DOMAIN)。

用户指南还提供了一些示例和最佳实践,帮助设计师正确地约束时钟输入管脚。

4. 库元件和IP核的文档库元件和IP核是在FPGA设计中常用的组件。

对于这些组件,文档中通常会提供有关时钟输入管脚约束的信息。

例如,文档可能会包含有关时钟输入的建议,如时钟频率范围、时钟上升/下降时间要求等。

5. 官方论坛和社区Xilinx官方论坛和其他在线社区,如Xilinx FPGA设计社区,是一个寻求技术支持和问题解答的好地方。

这些论坛中的讨论和帖子通常包含关于时钟输入管脚约束的有用信息,如如何正确约束复杂时钟结构、如何解决时钟插入延迟等。

6. 应用笔记和技术文章Xilinx和其他第三方通常会发布一些应用笔记和技术文章,分享关于FPGA设计的有用信息。

这些文档中可能包含有关时钟输入管脚约束的实用技巧和教程,如如何避免时钟抖动、如何降低时钟插入延迟等。

手把手课堂-Xilinx FPGA设计时序约束指南

手把手课堂-Xilinx FPGA设计时序约束指南

手把手课堂:Xilinx FPGA 设计时序约束指南
作为赛灵思用户论坛的定期访客,我注意到新用户往往对时序收敛以
及如何使用时序约束来达到时序收敛感到困惑。

为帮助FPGA 设计新手实现时序收敛,让我们来深入了解时序约束以及如何利用时序约束实现FPGA 设计的最优结果。

何为时序约束?
为保证设计的成功,设计人员必须确保设计能在特定时限内完成指定任务。

要实现这个目的,我们可将时序约束应用于连线中从某FPGA 元件到FPGA 内部或FPGA 所在PCB 上后续元件输入的一条或多条路径。

在FPGA 设计中主要有四种类型的时序约束:PERIOD、OFFSET IN、OFFSET OUT 以及FROM: TO(多周期)约束。

PERIOD 约束与建组
每个同步设计要有至少一个PERIOD 约束(时钟周期规格),这是最基本的约束类型,指定了时钟周期及其占空比。

若设计中有不止一个时钟,则每
个时钟都有自己的PERIOD 约束。

PERIOD 约束决定了我们如何进行布线,来满足设计正常工作的时序要求。

为简化时序约束应用过程,常常可将具有类似属性的连线分组为一组总
线或一组控制线。

这样做有助于完成正确为设计约束定义优先级这一关键步骤。

设计约束优先次序排列
若设计有多重约束,则需进行优先次序排列。

一般来说,约束的一般性
越强,其优先级越低。

相反,约束的针对性越强,其优先级越高。

举例来说,
时钟网络上的某个一般性PERIOD 约束将被特定网络的具有更高优先级的。

FPGA全局时钟约束(Xilinx)

FPGA全局时钟约束(Xilinx)

FF1
FF2
假设:
– – –
CLK 50-%占空比的CLK信号 BUFG INV 10ns的PERIOD约束 由于FF2时钟采用CLK的下降沿,因此两个触发器间路径的实际 约束为10ns的50% = 5ns
时钟输入抖动
时钟输入抖动是时钟不确定性的原因之一 时钟不确定性被从下面路径中减去
– –
PERIOD约束的建立路径 OFFSET IN约束的建立路径 PERIOD约束的保持路径 OFFSET IN约束的保持路径 OFFSET OUT约束路径
OFFSET约束还考虑到时钟输入抖动

时钟延迟
计算OFFSET约束时同时使用数据通道延迟和时钟传输延迟
– –
OFFSET IN = T_data_In - T_clk_In OFFSET OUT = T_data_Out + T_clk_Out
T_data_In In T_clk_In Clk OFFSET-IN T_clk_Out
– –
OFFSET IN: PADA 至 FLOP 和 PADB 至 RAM OFFSET OUT: LATCH 至OUT1, LATCH 至OUT2, 和RAM 至OUT1
PADA
FLOP D Q
LATCH D G Q
CLK BUFG PADB
RAM
OUT1
OUT2 PADC
要点
简介 全局约束 约束编辑器 总结
创建一条时序约束的过程包括两步
– –
全局约束使用缺省路径端点组

小测验
复习问题
一条全局约束可覆盖多条延迟路径 如果箭头所指的路径是约束路径,该电路中的约束路径的端 点是什么? 本电路中的所有寄存器有什么共同之处?

ISE时序约束笔记_中文翻译版

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之间的路径。

第九章 XILINX FPGA设计技术1-时序约束

第九章 XILINX FPGA设计技术1-时序约束
OFFSET IN: PADA 到 FLOP 和 PADB 到 RAM OFFSET OUT: LATCH 到 OUT1, LATCH 到 OUT2, 和 RAM 到 OUT1
PADA
FLOP D Q LATCH D G Q
CLK BUFG PADB
RAM
OUT1
OUT2 PADC
提纲
简介 全局约束 约束编辑器 小结
提纲
简介 全局约束 约束编辑器 小结
问题与回顾
给定系统框图如下,在约束编辑器中如何编辑才能使系统工 作在100MHz? -假定设备之间没有时钟延迟与抖动
Upstream Device Downstream Device 5 ns
4 ns
答案
给定系统框图如下,在约束编辑器中如何编辑才能使系统工 作在100MHz?
RAM D
OUT2
偏移约束
偏移约束覆盖的路径包括:
输入 pads 到同步单元 (OFFSET IN) 同步单元到输出 pads (OFFSET OUT) OFFSET IN
ADATA
CLK BUFG
FLOP D Q FLOP D Q FLOP D Q FLOP D Q FLOP D Q
OFFSET OUT
执行约束编辑器
在项目源文件窗口上展开 User Constraints 双击 Create Timing Constraints
进入周期和Pad-to-Pad 约束
通过全局Tab进入周期 和 Pad-to-Pad 约束 双击这里来建立周期 约束 全局Pad-to-Pad 约束 约束可以通过选择 <Delete>来删除
Upstream Device 4 ns
Downstream Device

ISE的使用说明

ISE的使用说明

ISE的使用说明ISE(Integrated Software Environment)是一种集成软件环境,用于设计和验证硬件开发项目。

它由Xilinx公司开发,旨在为FPGA(Field-Programmable Gate Array)和SoC(System-on-a-Chip)设计提供完整的解决方案。

ISE具有多种功能和工具,可以帮助工程师在整个开发过程中完成各种任务。

ISE的安装:ISE的主要功能:ISE为硬件设计和验证提供了全面的解决方案。

以下是ISE的主要功能:2.综合和优化:ISE包含了综合和优化工具,将HDL代码转换为布尔函数表示。

综合工具会分析代码并生成等效的硬件电路电路。

优化工具会尝试将电路改进为更有效的形式,以提高性能和减少资源消耗。

3.约束和分析:在设计过程中,您通常需要对硬件进行约束,以满足特定的要求。

ISE提供了工具来定义时序约束、电气约束和物理约束,并分析设计是否满足这些约束。

4.实现和布局:一旦设计和优化完成,ISE将使用实现和布局工具将电路映射到目标FPGA或SoC中。

这些工具将选择适当的逻辑资源,并将其布局在特定的芯片区域,以最大程度地提高性能和效率。

5.仿真和调试:在设计过程中,您需要对硬件进行仿真和调试,以验证其正确性和性能。

ISE提供了仿真工具,可以对设计进行功能仿真、时序仿真和混合信号仿真。

它还提供了调试功能,可帮助您定位和解决问题。

以下是使用ISE的一般步骤:1.创建新工程:在ISE中,您需要先创建一个新的工程,用于存储和组织设计文件。

可以在ISE中创建一个新的工程,并选择适当的目标设备。

2. 添加设计文件:一旦工程创建完成,您可以添加设计文件到工程中。

通过右键单击工程文件夹,并选择“Add Source”来添加设计文件。

选择适当的文件类型,并在文件对话框中选择要添加的文件。

3. 设置约束:在设计过程中,您需要为硬件设计设置约束,以满足特定的要求。

通过右键单击工程文件夹,并选择“Add Constraints”来添加约束文件。

xilinx_ISE_9.1中文教程

xilinx_ISE_9.1中文教程

Xilinx是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的IP(Intellectual Property)核,长期以来一直推动着FPGA技术的发展。

Xilinx的开发工具也在不断地升级,由早期的Foundation 系列逐步发展到目前的ISE 9.1i系列,集成了FPGA开发需要的所有功能,其主要特点有:Foundation Series ISE具有界面友好、操作简单的特点,再加上Xilinx的FPGA芯片占有很大的市场,使其成为非常通用的FPGA工具软件。

ISE 作为高效的EDA设计工具集合,与第E9.1 软件安装的基本硬件要求如下:CPU 在 P III 以上,内存大于 256M ,硬盘大于 4G 的硬件环境安装。

为了更好地使用软件,至少需要 512M 内存,CPU 的主频在 2GHz 以上。

本 书使用的集成开发环境是 ISE 9.1,仿真工具是 ModelSim 6.2b ,综合工具为 Synplify Pro 8.8。

其中 ISE 、ModelSim 软件和 Synplify 软件不同版本之间的差异不是很大,所以操作和设计购买了正版软件后,最常用的方法就是通过网站注册获取安装所需的注册码。

首先在Xilinx 帐号,输入CD 盒上的产品序列号(序号的格式为:3 个字符+9 个数字),会自动生成163.下一个对话框是Xilinx 软件的授权声明对话框,选中“I accept the terms of this software4.接下来的几个对话框分别是选择安装组件选择,如图 4-4 所示,用户需要选择自己使用5.随后进入设置环境变量页面,保持默认即可。

如果环境变量设置错误,则安装后不能正 常启动 ISE 。

选择默认选项,安装完成后,在“我的电脑”上单击右键,选择属性 环境变量中,图比较常用,显示了源文件的层次关系。

XilinxFPGA编程技巧之常用时序约束详解

XilinxFPGA编程技巧之常用时序约束详解

Xilinx FPGA编程技巧之常用时序约束详解i.基本的约束方法为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。

最普遍的三种路径为: .输入路径(In put Path ),使用输入约束.寄存器到寄存器路径(Register-to-Register Path ),使用周期约束.输出路径(Output Path ),使用输出约束.具体的异常路径(Path specific exceptio ns ),使用虚假路径、多周期路径约束1.1. 输入约束In put Co nstrai ntOFFSET IN约束限定了输入数据和输入时钟边沿的关系。

1.1.1. 系统同步输入约束System Sy nchron ous In put在系统同步接口中,同一个系统时钟既传输数据也获取数据。

考虑到板子路径延时和时钟抖动,接口的操作频率不能太高。

1-1简化的系统同步输入SDR接口电路图1-2SDR系统同步输入时序上述时序的约束可写为:NET "SysCIk" TNM_NET = "SysCIk";TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;OFFSET = IN 5 ns VALID 5 ns BEFORE "SysClk";1.1.2. 源同步输入约束Source Syn chro nous In put在源同步接口中,时钟是在源设备中和数据一起产生并传输。

1-3简化的源同步输入DDR接口电路1-4DDR源同步输入时序上图的时序约束可写为:NET "SysCIk" TNM_NET = "SysCIk";TIMESPEC "TS_SysCIk" = PERIOD "SysCIk" 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时指定的参数约束相关输出,不需用户手动干预。

Xilinx约束学习笔记(一)——约束方法学

Xilinx约束学习笔记(一)——约束方法学

Xilinx约束学习笔记(⼀)——约束⽅法学《Xilinx约束学习笔记》为⾃⼰阅读 Xilinx 官⽅ UG903 ⽂档后的学习笔记,⼤多数为翻译得来,⽅便⼤家学习。

1 约束⽅法学1.1 组织约束⽂件Xilinx 建议将时序约束和物理约束分开保存为两个不同的⽂件。

甚⾄可以将针对某⼀个模块的约束单独保存在⼀个⽂件中。

1.1.1 综合和实现可以使⽤不同的约束⽂件可以使⽤ USED_IN_SYNTHESIS 和 USED_IN_IMPLEMENTATION 属性指定约束⽂件是在综合或实现过程中使⽤。

注意:特别是IP、DCP这类使⽤OOC模式的模块,因为这些模块在综合过程中是⼀个⿊盒,当顶层约束指定的约束路径为⿊盒中的内容时,可能在综合过程中会报找不到⽬标的错误。

因此,最好的⽅法是将约束会为两个⽂件,⼀个综合⽤,⼀个实现时⽤。

在⼯程模式中可以使⽤如下代码指定约束⽂件使⽤时机。

set_property USED_IN_SYNTHESIS false [get_files wave_gen_pins.xdc]set_property USED_IN_IMPLEMENTATION true [get_files wave_gen_pins.xdc]⾮⼯程模式中,不需要如此设置。

因为什么时候使⽤约束⽂件,只和读取约束⽂件的时机相关。

如下:其中 wave_gen_timing.xdc 会在综合和实现过程中使⽤,⽽wave_gen_pins.xdc 只会在实现过程中使⽤。

read_verilog [glob src/*.v]read_xdc wave_gen_timing.xdcsynth_design -top wave_gen -part xc7k325tffg900-2read_xdc wave_gen_pins.xdcopt_designplace_designroute_design1.2 约束的顺序推荐约束顺序如下:## Timing Assertions Section# Primary clocks# Virtual clocks# Generated clocks# Clock Groups# Bus Skew constraints# Input and output delay constraints## Timing Exceptions Section# False Paths# Max Delay / Min Delay# Multicycle Paths# Case Analysis# Disable Timing## Physical Constraints Section# located anywhere in the file, preferably before or after the timing constraints# or stored in a separate constraint file1.3 创建综合约束Vivado 综合将设计中的 RTL 描述转换为⼯艺映射⽹表。

Xilinxfpga设计培训中文教程-8_1

Xilinxfpga设计培训中文教程-8_1

全局时序约束实验 全局时序约束 介绍 在本实验中你将可以用全局时序约束来轻松提高已有的项目的系统时钟频率同时你还可以用映射后静态时序报告以及布局布线后静态时序报告来分析你的设计性能 目标 完成本实验后你将能够 的约束编辑器输入你的全局时序约束 ? 用Xilinx? 通过查看映射后静态时序报告来确定你的时序约束是否可实现 ? 利用布局布线后静态时序报告来确定针对每个时序约束的最长约束路径 设计描述及其它信息 时序报告的分析 时序报告可以让你确定为什么你的时序约束会失败同时也可知道哪些约束路径是满足的哪些是不满足的 当你打开一个时序分析报告时时序分析器工具被用来生成你的时序报告  在左侧是一个层次化浏览器时序分析器图形用户界面 GUI包括三个窗口(如图8b-1)窗口可以让你非常容易地查看较大的报告 层次化浏览器 约束列表 数据手册报告 路径详细信息窗口 图 8b-1. 时序分析器图形用户界面 在右侧偏下的窗口是路径详细信息窗口这个窗口中是时序报告的实际文本 较上的窗口显示的是目前你在路径详细信息窗口查看的是时序报告中的哪一个单元 约束被分析路径数目出错数目 最长路径 最少差异? 路径时延信息概况 详细路径描述 总的时延分为逻辑时延和布线时延 图 8b-2. 详细的路径分析 层次化浏览器 约束列表 数据手册报告 路径详细信息窗口 图 8b-1. 时序分析器图形用户界面 在右侧偏下的窗口是路径详细信息窗口这个窗口中是时序报告的实际文本 较上的窗口显示的是目前你在路径详细信息窗口查看的是时序报告中的哪一个单元 约束被分析路径数目出错数目 最长路径 最少差异? 路径时延信息概况 详细路径描述 总的时延分为逻辑时延和布线时延 图 8b-2. 详细的路径分析 层次化浏览器 约束列表 数据手册报告 路径详细信息窗口 图 8b-1. 时序分析器图形用户界面 在右侧偏下的窗口是路径详细信息窗口这个窗口中是时序报告的实际文本 较上的窗口显示的是目前你在路径详细信息窗口查看的是时序报告中的哪一个单元 约束被分析路径数目出错数目 最长路径 最少差异? 路径时延信息概况 详细路径描述 总的时延分为逻辑时延和布线时延 图 8b-2. 详细的路径分析 打开约束编辑器 第二步 打开约束编辑器并选择全局选项卡 在当前源文件进程窗口展开用户约束然后双击建立时序约束来打开约束编辑器 ?? 窗口 图 8b-4 当前源文件进程在约束编辑器中确定选择的是全局选项卡 ?? 图 8b-5. 全局选项卡 输入周期约束 第三步 为 wr_clk_in 输入一个周期为25纳秒的约束将 timespec 取名为 TS_wr_clk_in  ?? 双击在周期这一列表头下方与CLK时钟信号相对应的方框这样就可以打开一个时钟周期窗口让你输入你的周期约束 图 8b-6 时钟周期窗口 ?? 如果还未指定 timespec 名称则输入 timespec名称 TS_wr_clkin 注意所有的 timespec的名称都必须以TS或 ts开始 ?? ?? 指定周期约束为25 ns 点击 OK 输入偏置约束 第四步 相对于clk输入偏置输入约束为4.5 纳秒而偏置输出约束为9纳秒 然后退出约束编辑器 ?? 双击管脚到建立列表头下方的方框 (如图 8b-7) ?? 输入一个4.5 ns的约束 这是一个偏置输入约束 ?? ?? 点击 OK 双击时钟到管脚列表头下方的方框 ?? 输入一个9 ns的约束 这是一个偏置输出约束 ?? 点击 OK 图 8b-7 时序约束编辑器 ?? 选择文件 → 保存 ?? 选择文件 → 退出 以退出约束编辑器 实现设计并分析时序 第六步 实现设计并查看映射后静态时序报告和布局布线后静态时序报告完成本单元中的表一和表二的填充 ?? 在当前源文件进程窗口中展开实现设计这一行 ?? 现在展开映射这一行 ?? ?? 展开生成映射后静态时序报告这一行 双击映射后静态时序报告 这样将会实现设计一直到MAP这一步生成映射后静态时序报告并用时序分析器打开这个报告这样就可以让你能够确定你的时序约束是否可实现避免浪费布局布线的时间 ? 1. 完成下表中标题为映射后Post-Map的一行的填充 (图 8b-8). 表一 周期约束 偏置输入约束 偏置输出约束  第一次的TimeSpec 25 ns 4.5 ns 9 ns 映射后 图 8b-8. 表一 将你的答案与本实验的解答单元中的结果进行比较 ?? 退出时序分析器 ?? 回到当前源文件进程窗口展开布局布线这一行然后展开生成布局布线后静态时序报告这一行 2. 完成下表中标题为布局布线后 Post-P&R的一行的填充 (图8b-9). ? 表二 周期约束 偏置输入约束 偏置输出约束 第一次的TimeSpec 25 ns 4.5 ns 9 ns 布局布线后 图 8b-9. 表二 将你的答案与本实验的解答单元中的结果进行比较 结论 推荐使用约束编辑器来利用时序约束是与实现工具交流你的性能期望的最好方法Xilinx输入你的时序约束 当实现工具对你的设计布局布线时你必须确定所有的时序约束都是可实现的你可以通过检查逻辑时延来做到这一点这将避免你将时间浪费在那些极少机会甚至没有机会满足时序目标的设计的布局布线中你可以从映射后静态时序报告中获得关于时序性能的估计值 当实现完成后必须用时序分析器生成的布局布线后静态时序报告或用户时序报告来验证时序约束 虽然在本实验中并不是所有的约束都满足要求但是我们可以在实现选项实验中通过利用实现选项来改进结果 结论 推荐使用约束编辑器来利用时序约束是与实现工具交流你的性能期望的最好方法Xilinx输入你的时序约束 当实现工具对你的设计布局布线时你必须确定所有的时序约束都是可实现的你可以通过检查逻辑时延来做到这一点这将避免你将时间浪费在那些极少机会甚至没有机会满足时序目标的设计的布局布线中你可以从映射后静态时序报告中获得关于时序性能的估计值 当实现完成后必须用时序分析器生成的布局布线后静态时序报告或用户时序报告来验证时序约束 虽然在本实验中并不是所有的约束都满足要求但是我们可以在实现选项实验中通过利用实现选项来改进结果 全局时序约束实验 www.xilinx.com Ch.8b-11and 1-877-XLX-CLAS 。

xilinx时序约束

xilinx时序约束

前一段时间调试了xilinx的板子上跑代码,自己加IP核,看了它的约束文件,在网上找了一些讲语法的资料,自己整理了一下,我感觉在你了解了语法之后,确实得好好看一下它自己给出的约束,有些我自己没用到,我就没整理了。

1.约束文件的概念FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。

3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF 文件,最后再经过实现后生成PCF 文件。

本节主要介绍UCF文件的使用方法。

UCF文件是ASC 2码文件,描述了逻辑设计的约束,可以用文本编辑器和Xilinx约束文件编辑器进行编辑。

NCF约束文件的语法和UCF文件相同,二者的区别在于:UCF文件由用户输入,NCF文件由综合工具自动生成,当二者发生冲突时,以UCF文件为准,这是因为UCF的优先级最高。

PCF文件可以分为两个部分:一部分是映射产生的物理约束,另一部分是用户输入的约束,同样用户约束输入的优先级最高。

一般情况下,用户约束都应在UCF文件中完成,不建议直接修改NCF文件和PCF文件。

2.UCF文件的语法说明UCF文件的语法为:{NET|INST|PIN} "signal_name" Attribute;其中,“signal_name”是指所约束对象的名字,包含了对象所在层次的描述;“Attribute”为约束的具体描述;语句必须以分号“;”结束。

可以用“#”或“/* */”添加注释。

需要注意的是:UCF文件是大小写敏感的,信号名必须和设计中保持大小写一致,但约束的关键字可以是大写、小写甚至大小写混合。

在UCF文件中描述管脚分配的语法为:NET “端口名称” LOC =引脚编号;NET "CLK" LOC = P30; “CLK”就是所约束信号名,LOC = P30;是约束具体的含义,将CLK信号分配到FPGA的P30管脚上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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应用中,在时钟上升沿从源器件发送数据,下一个时钟上升沿在FPGA中抓取数据。

全局”OFFSET IN”约束是对一个系统同步接口指定输入时序的最有效的方法。

用这种方法,对每一个系统同步输入接口时钟都定义了一个”OFFSET IN”约束。

这种单个约束覆盖了所有被同步元件抓取到的输入数据位的路径,这些同步元件由指定输入时钟触发。

指定输入时序:1,定义接口相关的输入时钟的时钟”PERIOD”约束;2,定义接口的全局”OFFSET IN”约束;例子理想的系统同步SDR接口的时序图见图2‐2。

全局”OFFSET IN”约束是:OFFSET = IN <value> VALID <value> BEFORE clock;在”OFFSET IN”约束中,IN <value>决定了数据一开始有效的起始时间到抓取数据的时钟沿之间的时间。

在这个系统同步例子中,数据在抓取数据的时钟沿之前5ns有效。

VALID<value> 决定了数据有效时间。

在这个例子中,数据有效时间为5ns。

对这个例子,完整的”OFFSET IN”约束和相关的PERIOD约束如下:NET”SysClk”TNM_NET = “Sysclk”;TIMESPEC “TS_Sysclk” = PERIOD”SysClk” 5ns HIGH 50%;OFFSET = IN 5ns VALID 5ns BEFORE “SysClk”;源同步输入在源同步输入接口中,会重新产生时钟,重新生成的时钟和数据从源器件从相似的路径一起被传送出去。

这个时钟然后会被用来在FPGA中抓取数据。

电路板上的线路延时和板上的时钟倾斜都不会再限制接口的运行频率了。

更高的频率会导致源同步输入接口典型的被应用为双数据速率(DDR)的应用。

典型的源同步DDR应用见图2‐3。

在时钟上升沿和下降沿都会从源器件发送数据。

全局”OFFSET IN”约束是对源同步接口指定输入时序的最有效的方法。

在DDR接口,为每一个输入接口时钟的沿都会定义OFFSET IN约束。

这些约束覆盖了输入数据位的路径,这些数据由指定输入时钟沿的触发的寄存器来抓取。

要指定输入时序必须:1,为接口相关的输入时钟,定义时钟PERIOD约束;2,为接口上升沿定义全局OFFSET IN约束;3,为接口下降沿定义全局OFFSET IN约束;例源同步DDR接口的时序图见图2‐4,接口时钟是周期为5ns占空比为50%的时钟。

数据的每一位在半个周期内都有效。

对DDR全局OFFSET IN的约束如下:OFFSET = IN<value> VALID<value>BEFORE clock RISING;OFFSET = IN<value>VALID<value>BEFORE clock FALLING;在OFFSET IN约束中,OFFSET = IN<value>决定了从抓取时钟的时钟沿到数据开始有效的时间点之间的时间段。

以此源同步输入为例,上升沿传送的数据在时钟上升沿之前 1.25ns有效。

同样下降沿传送的数据在时钟下降沿之前 1.25ns有效。

在OFFSET IN约束中,VALID<value>决定了数据的有效时间。

在这个例子中,上升沿和下降沿的数据都保持了2.5ns。

此例中,OFFSET IN和与之相关的PERIOD约束如下:NET “SysCLK” TNM_NET = “SysCLK”;TIMESPEC “TS_SysClk” = PERIOD “SysClk” 5ns HIGH 50%;OFFSET = IN 1.25ns VALID 2.5ns BEFORE “SysClk” RISING;OFFSET = IN 1.25ns VALID 2.5ns BEFORE”SysClk”FALLING;4,寄存器到寄存器时序约束寄存器到寄存器或者“同步元件到同步元件”的路径约束覆盖了内部寄存器之间的同步数据路径。

PERIOD约束包含以下方面:1,定义了时钟域的时序要求;2,分析单时钟域里的路径;3,分析相关时钟域里的所有路径4,考虑不同时钟域中所有的频率,相位和时钟不确定性的不同点。

约束同步时钟域的应用和方法有以下几种,这些策略包括:1,“自动相关同步DCM/PLL时钟域”2,“手动相关同步时钟域”3,“异步时钟域”通过允许工具自动创造DLL/DCM/PLL和输出时钟之间的关系,和手动定义外部相关时钟之间关系,所有同步跨时钟域路径都有合适的约束覆盖,和合理的分析。

使用这些方法进行PERIOD约束就免去了额外的跨时钟域约束的必要。

自动相关同步DCM/PLL时钟域时钟电路最普通的形式是下面之一:1,输入时钟连接DLL/DCM/PLL;2,输出用来作为期间内部同步路径的时钟在这个例子中,推荐对连接到DLL/DCM/PLL的输入时钟做PERIOD约束。

通过对输入时钟进行PERIOD约束,XILINX工具自动:1,自动给每一个DLL/DCM/PLL的输出时钟派生出一个新的PERIOD约束;2,决定了输出时钟域之间的时钟关系,自动分析这些时钟域自己的任何路径例输入时钟驱动DCM的电路如图2‐5;本例的PERIOD约束语法如下:NET”ClockName” TNM_NET = “TNM_NET_Name”;TIMESPEC “TS_name” = PERIOD”TNM_NET_Name” PeriodValue HIGH HighValue%;在PERIOD约束中,”PeriodValue”定义了时钟周期的有效时间。

在本例中,DCM的输入时钟周期为5ns。

”HighValue”表示时钟波形为“HIGH”在一个时钟周期中所占的百分比。

本例的语法如下:NET “ClkIn” TNM_NET = “ClkIn”;TIMESPEC “TS_ClkIn” = PERIOD “ClkIn” 5 ns HIGH 50%;基于以上给出的输入时钟PERIOD约束,DCM自动:1,为DCM输出创造2个时钟约束2,在2个时钟域之间分析性能手动相关同步时钟域在某些情况下,同步时钟域之间关系不能由工具自动指定。

例如,当相关的时钟从两个独立的引脚进入FPGA时,碰到这种情况,XILINX推荐你用下面的步骤:1,为每一个输入时钟定义PERIOD约束;2,手动定义时钟之间关系;一旦你定义了手动关系,两个同步域之间的所有路径都会被自动分析。

分析将会把所有的,频率,相位和不确定信息考虑进去。

XILINX约束系统允许使用包含时钟频率和相位传送的PERIOD约束来定义时钟域之间complex manual relationship。

如果要使用PERIOD约束来定义时钟域之间的complex manual relationship,需要:1,为主时钟定义PERIOD约束;2,以第一个PERIOD约束作为参考,为相关时钟定义PERIOD约束;两个相关的时钟从2个独立的引脚进入FPGA,见图2‐61,clk1x是主时钟2,clk2x180是相关时钟本例的PERIOD约束语法如下:NET”PrimaryClock” TNM_NET = “TNM_Primary”;NET”RelatedClock” TNM_NET = “TNM_Related”;TIMESPEC “TS_primary” = PERIOD “TNM_Primary” PeriodValue HIGH HighValue%;TIMESPEC”TS_related” = PERIOD “TNM_Related” TS_Primary_relation PHASE value;在related PERIOD定义中,PERIOD值被定义为与主时钟的一个时间单元(period)关系。

这种关系以主时钟TIMESPEC的形式表达。

在本例中,CLK2X180的频率是CLK1X的2倍,这就导致PERIOD是其一半。

在related PERIOD定义中,相位值定义了源时钟和相关时钟在上升时钟沿的时间差异。

在本例中,因为CLK2X180时钟是180度相移,所以上升沿比主时钟的上升沿晚1.25ns。

相关文档
最新文档