XILINX_时序约束使用指南中文

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到内部同步元件之间的所有路径。用于抓取那些从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 VALID BEFORE clock;

在”OFFSET IN”约束中,IN 决定了数据一开始有效的起始时间到抓取数据的时钟

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

决定了数据有效时间。在这个例子中,数据有效时间为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 VALIDBEFORE clock RISING;

OFFSET = INVALIDBEFORE clock FALLING;

在OFFSET IN约束中,OFFSET = IN决定了从抓取时钟的时钟沿到数据开始有效的

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

有效。同样下降沿传送的数据在时钟下降沿之前 1.25ns有效。在OFFSET IN约束中,VALID决定了数据的有效时间。在这个例子中,上升沿和下降沿的数据都保持了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‐6

1,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。

本例的约束语法如下:

NET”Clk1X” TNM_NET = “Clk1X”;

NET “Clk2X180” TNM_NET = “Clk2X180”;

TIMESPEC “TS_Clk1X” = PERIOD “Clk1X” 5 ns;

TIMESPEC “TS_Clk2X180” = PERIOD”Clk2X180” TS_Clk1X/2 PHASE +1.25ns;

异步时钟域

异步时钟域是指那些源和目的时钟频率或者相位关系不同的时钟域。因为时钟不相关,所以无法决定setup和hold时钟分析的最终关系。鉴于此,XILINX推荐使用合适的异步设计技术来确保能够成功抓取数据。合适的异步设计技术的例子是用FIFO来抓取异步时钟域之间的传输数据。如果没有特别要求,可以不用考虑时钟路径评论或相位关系,而在封闭的区域中约束最大数据路径延迟。

XILINX约束系统允许不用考虑源和目的时钟的频率和相位关系来约束最大数据路径延迟。这个要求用带”DATAPATHONLY”关键词的FROM‐TO约束来指定。

不用考虑源和目的时钟频率和相位关系的最大路径延时约束如下:

1,为源同步元件定义时钟组;

2,为目的同步元件定义时钟组;

3,用带”DATAPATHONLY”关键词的FROM‐TO在两个时钟组之间定义最大数据路径延时; 例子

两个不相关的时钟从外部2根独立的管脚进入FPGA如下图

1,CLKA是源时钟

2,CLKB是目的时钟

这个例子的语法如下:

NET “CLKA” TNM_NET = FFS “GRP_A”;

NET”CLKB” TNM_NET = FFS”GRP_B”;

TIMESPEC TS_Example = FROM “GRP_A” TO”GRP_B” 5ns DATAPATHONLY;

5,输出时序约束

输出时序覆盖了,从FPGA内部寄存器到FPGA外部管脚之间的数据路径。OFFSET OUT 约束指定了输出时序。指定输出时序要求的最好方式取决于type(源/系统同步)和接口的SDR/DDR。

OFFSET OUT 定义了从FPGA发送的数据的最大允许时间。输出延时路径从FPGA的输入时钟管脚开始,通过输出寄存器到FPGA的数据管脚。见图2‐8。

当分析OFFSET OUT约束时,时序工具自动将影响时钟延迟和数据路径的内部因素考虑进去。这些因素包括:

1,时钟的频率和相位变化

2,时钟的不确定性

3,数据路径延迟调整

系统同步输出

系统同步输出接口中,一个共同的系统时钟既用来传输也用来抓取数据。因为这个接口使用一个共同的系统时钟, FPGA只发送数据。

如果必须约束这些路径,全局OFFSET OUT约束是指定系统同步接口输出时序的最有效的方式。这个单约束覆盖了所有从寄存器输出的数据的路径,这些寄存器是由指定的输入时钟触发的。

要指定这些输出时序需:

1,为输出时钟定义时钟名称(TNM)来创建个时钟组,这个组包含了所有由输入时钟触发的输出寄存器。

2,定义接口的全局OFFSET OUT约束。

系统同步SDR输出接口的时序图见图2‐10。此例中的数据必须在输入时钟沿最长5ns 之后有效。

系统同步接口的全局OFFSET OUT语法如下:

OFFSET = OUT value AFTER clock;

OFFSET OUT约束中,OFFSET = OUT 决定了从FPGA输入端口时钟上升沿到FPGA 输出端口数据开始有效的最大时间。在此系统同步例子中,输出数据最多在输入时钟边沿的5ns之后有效。

本例,完整的OFFSET OUT约束如下:

NET”ClkIn” TNM_NET = “ClkIn”;

OFFSET = OUT 5ns AFTER “ClkIn”;

源同步输出

源同步输出接口内会重新生成时钟,新生成的时钟和数据一起从FPGA送出。接口的性能主要由系统噪声和新生成的时钟和数据位之间的倾斜限制。在本接口中,从输入时钟边沿到输出数据有效开始,这段时间没有输出数据位之间的倾斜重要,在大部分的例子中,可以不约束它。

全局OFFSET OUT约束是对源同步接口指定输出时序的最有效的方法。在DDR接口,输出接口时钟的每一个沿都指定了OFFSET OUT约束。这些约束覆盖了所有又触发器传输的数据位的所有路径,这些触发器由指定输出时钟沿触发。

欲指定输入时序需:

1,为输出时钟定义个时钟名(TNM)来创建一个时钟组,这个组包含了所有由输出时钟触发的寄存器;

2,为接口时钟上升沿定义全局OFFSET OUT约束;

3,为接口时钟下降沿定义全局OFFSET OUT约束;

例子

理想的源同步DDR接口时序图见图2‐12。

在OFFSET OUT约束中,OFFSET = OUT决定了从输入时钟端口的上升沿到FPGA 输出端口数据开始有效之间的最大时间。当从OFFSET OUT约束忽略掉的时候,报告输出总线倾斜的约束变成了report‐only specification。关键词REFERENCE_PIN定义重新生成的输出时钟作为参考点,而输出数据管脚倾斜的报告就是根据这个参考点生成的。

对于本例,时钟上升沿和下降沿的完整的OFFSET OUT约束如下:

NET “CLKIn” TNM_NET = “ClkIn”;

OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” RISING;

OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” FALLING;

6,时序异常

用输入,寄存器‐寄存器,和输出时序的全局约束,或许可以约束大部分的路径。在特定的例子中,全局约束规则不适合某些特定的少数路径。异常的最普遍的形式是: “False Paths”

“Multi‐Cycle Paths”

False Paths

在某些情况下,如果你确定某些路径不会影响时序性能,那么你就会想将这些路径从时序约束中移除出去。

最常用的方法是用带有timing ignore (TIG)关键词的FROM‐TO约束。这允许你去:

1,在一个源时钟组中指定一组寄存器

2,在一个目的时钟组中指定一组寄存器

3,自动将这些时钟组之间的所有路径从分析中移除掉

要用这种方法来指定timing ignore(TIG)约束,定义:

1,源时钟组的一组寄存器

2,目的时钟组的一组寄存器

3,带有TIG关键词的FROM‐TO约束移除两个时钟组之间的路径

例子

假设两个寄存器之间的路径并不影响设计的时序,希望将这条路径移除掉。见图2‐13

两个时钟组之间定义一个TIG的通用语法如下:

TIMESPEC “TSid” = FROM “SRC_GRP” TO ”DST_GRP” TIG;

在FROM‐TO TIG例子中,SRC_GRP定义了一组源寄存器,这组寄存器是这条时序路径的起点。DST_GRP定义了一组目的寄存器,这组寄存器是这条时序路径的终点。所有从SRC_GRP开

始到DST_GRP结束的路径都被忽略了。

本例的语法如下:

NET “CLK1” TNM_NET = FFS “GRP_1”;

NET “CLK2” TNM_NET = FFS ”GRP_2”;

TIMESPEC TS_Example = FROM “GRP_1” TO “GRP_2” TIG;

多周期路径

在多周期路径中,数据以低于PERIOD定义的时钟频率从源同步元件传输到目的同步元

件。

当同步元件用一个共同的时钟使能信号作为门控时,上面这种情况最常见。通过定义一

个多周期路径,这些同步元件的时序约束将比默认的PERIOD约束宽松。多周期路径约束可

以考虑PERIOD约束标识符(TS_clk125)×时钟周期的数量(TS_clk125*3)。执行工具然后就能够

合理的分配执行这些路径的优先级。

指定一组多周期路径的共同方法是用时钟使能信号定义一个时钟组。这允许你:

1,用一个公用的时钟使能信号定义一个包含了源和目的同步元件的时钟组。

2,自动将多周期约束应用到这些同步元件之间的所有路径

如果要用这种方法指定FROM:TO(多周期)约束,需要定义:

1,公用时钟域的PERIOD约束;

2,基于公用时钟使能信号的一组寄存器;

3,描述新的时钟需求的FROM:TO(多周期)约束

例子

图2‐14显示了一种假想的情况。在这种情况下两个寄存器共用一个时钟使能信号。在

本例中,时钟使能信号的切换频率是参考时钟频率的一半。

在不同时钟组之间定义多周期路径的通用语法如下:

TIMESPEC “TSid” = FROM “MC_GRP” TO “MC_GRP” ;

在FROM:TO(多周期)的例子中,MC_GRP定义了一组由公用时钟驱动的寄存器。所有从

MC_GRP开始到MC_GRP结束的路径,可以应用多周期时序要求。进出MC_GRP的路径可以

用合适的PERIOD约束来分析。

本例约束的语法如下:

NET”CLK1”TNM_NET = “CLK1”;

TIMESPEC “TS_CLK1” = PERIOD “CLK1” 5ns HIGH 50%;

NET”Enable” TNM_NET = FFS “MC_GRP”;

TIMESPEC TS_Example = FROM “MC_GRP” TO “MC_GRP” TS_CLK1*2;

第三章 时序约束原则

本章讨论了时序约束的根本,包括:

“PERIOD Constraints”

“OFFSET Constraints”

“FROM:TO (Multi‐Cycle) Constraints”

为了更好的理解约束系统子系统,讨论了组元件的能力。

这一章包括:

“约束系统“

“约束优先级“

“时序约束“

“时序约束语法“

“建立时序约束“

约束系统

这部分讨论了约束系统,包含以下内容:

“约束系统简介“

“DLL/DCM/PLL/BUFR/PMCD元件“

“用TNM/TNM_NET创建时序组“

“组约束“

约束系统简介

约束系统是解析和理解设计的物理和时序约束的执行工具(NGDBUILD)部分。

约束系统有如下特性:

1,从NCF,XCF,EDN,EDF,EDIF,NGC,NGO等文件中解析出约束信息并将这些信息送到其它执行工具。

2,验证设计的约束是否正确

3,将必要的特性应用到相应的元件上

4,为不正确的约束生成错误和告警信息

DLL/DCM/PLL/BUFR/PMCD元件

本节讨论了DLL/DCM/PLL/BUFR/PMCD元件,包含以下方面内容:

1,“DLL/DCM/PLL/BUFR/PMCD元件简介”

2,“转变条件”

3,“DCM输出的新的PERIOD约束”

4,“同步元件”

5,“用NET PERIOD分析”

6,“PHASE 关键词”

7,“用PHASE控制DLL/DCM/PLL”

DLL/DCM/PLL/BUFR/PMCD元件简介

如果对输入时钟网络指定TIMESPEC PERIOD约束,那么输出时钟要用新PERIOD约束。

为了产生目的元件时序组,在转换时候,每一个时钟修改模块的时钟输出脚被给定:

1,一个新的TIMESPEC PERIOD约束

2,一个相应的TNM_NET约束

新的TIMESPEC PERIOD约束是基于时钟修改模块的基础上修改的。转变:

1,考虑到时钟输出的相位关系因素;

2,为PERIOD要求的值设置合适的乘数或除数

转换条件

当时钟修改模块的CLKIN管脚有TIMESPEC PERIOD约束且满足下面条件时候,会产生转换: 1,当与PERIOD约束相关的组刚好被用在一个PERIOD中

2,与PERIOD约束相关的组没有被用在其它的时序约束中,包括 FROM:TO(多周期)或者OFFSET约束。

3,与PERIOD约束相关的组与其它的用户组定义无关

DCM输出的新PERIOD约束

如果“转换条件“满足了,TIMESPEC “TS_clk20” = PERIOD “clk20_ep” 20ns HIGH 50%; 约束翻译成了下面的约束,下面的约束是基于图3‐1的时钟结构的。

时序分析基础与时钟约束实例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。

xilinx FPGA SelectIO模块资料

5.1.6 SelectIO模块 Virtex-6每个I/O片(I/O Tile)包含两个IOB、两个ILOGIC、两个OLOGIC 和两个IODELAY,如图5-24 所示。 图5-24 I/O 片结构图 本小节就以下几个方面介绍Virtex-6 的SelectIO 资源。 (1) SelectIO 的电气特性。 (2) SelectIO 的逻辑资源——ILOGIC 资源和OLOGIC 资源。 (3) SelectIO 的高级逻辑资源——ISERDES 资源、OSERDES 资源和Bitslip。 一、SelectIO IO 的电气特性 所有的Virtex-6 FPGA 有高性能的可配置SelectIO 驱动器与接收器,支持非常广泛的接口标准。强大的功能SelectIO 包括输出强度和斜率的可编程控制以及使用数控阻抗(DCI)的片上终端。

IOB 包含输入、输出和三态SelectIO 驱动器。支持单端I/O 标准(LVCMOS、 HSTL、SSTL)和差分I/O 标准(LVDS、HT、LVPECL、BLVDS、差分HSTL 和SSTL)。 注意:差分输入和VREF 相关输入由VCCAUX 供电。 IOB、引脚及内部逻辑的连接如图5-25 所示。 图5-25 IOB、引脚及内部逻辑连接图 IOB 直接连接ILOGIC/OLOGIC 对,该逻辑对包含输入和输出逻辑资源,可实现数据和三态控制。ILOGIC和OLOGIC可分别配置为ISERDES和OSERDES。Xilinx软件库提供了大量与I/O相关的原语,在例化这些原语时,可以指定I/O 标准。与单端I/O相关的原语包括IBUF(输入缓冲器)、IBUFG(时钟输入缓冲器)、OBUF(输出缓冲器)、OBUFT(三态输出缓冲器)和IOBUF(输入/输出缓冲器)。与差分I/O相关的原语包括IBUFDS(输入缓冲器)、IBUFGDS (时钟输入缓冲器)、OBUFDS(输出缓冲器)、OBUFTDS(三态输出缓冲器)、IOBUFDS(输入/输出缓冲器)、IBUFDS_DIFF_OUT(输入缓冲器)和IOBUFDS_DIFF_OUT(输入/输出缓冲器)。 二、SelectIO的逻辑资源 SelectIO的逻辑资源主要是指ILOGIC和OLOGIC资源,它们完成了FPGA引脚到内部逻辑的连接功能,包括组合输入/输出、三态输出控制、寄存器输入/输出、寄存器三态输出控制、DDR输入/输出、DDR输出三态控制、IODELAYE1高分辨率可调整延迟单元及其控制模块。 下面简要介绍ILOGIC和OLOGIC功能。

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

Xilinx-XADC的使用中文介绍doc资料

Zynq器件XADC的使用(原创) 1.前言 赛灵思的7系列FPGA和Zynq器件创造性地在片上集成了模数转换器和相关的片上传感器(内置温度传感器和功耗传感器),这是相比赛灵思前一代产品来新增加的特性,可在系统设计中免去外置的ADC器件,有力地提高了系统的集成度。本文就这一新模块的使用进行简单介绍,希望对大家有所帮助,当然如有不当之处还请高手指正,以免误导大家,欢迎大家补充。 2.XADC模块介绍 2.1 XADC模块概述 Zynq器件XADC模块包括2个12比特1 MIPS的模数转换器和相关的片上传感器,模数转换器能为系统应用提供通用目的的高精度的模拟接口,下图是XADC模块的框图: XADC模块支持不同的操作模式,如外步触发同步采样模式;可接受不同类型的模拟输入信号,如单端或差分信号;最多能接受17路外部的模拟输入信号。XADC模块也包括一定数量的片上传感器用来测量片上的供电电压和芯片温度,这些测量转换数据存储在一个叫状态寄存器(status registers)的专用寄存器内,可由FPGA内部叫动态配置端口(Dynamic

Reconfiguration Port (DRP))的16位的同步读写端口访问。ADC转换数据也可以由JTAG TAP访问,这种情况下并不需要去直接例化XADC模块,因为这是一个已经存在于FPGA JTAG结构的专用接口,此时因为没有在设计中直接例化XADC模块,XADC模块就工作在一种预先定义好的模式叫缺省模式,缺省模式下XADC模块专用于监视芯片上的供电电压和芯片温度。XADC模块的操作模式是由用户通过DRP或JTAG接口写控制寄存器来选择的,控制寄存器的初始值有可能在设计中例化XADC模块时的块属性(block attributes)指定。 2.2 XADC模块管脚需求 所有的XADC模块专用管脚都位于bank0, 所以都加有_0的后缀。下图表示了XADC的基本输入输出需求: 这有两种推荐配置:图中左边XADC由Vccaux(1.8V)供电,并且用一个外部的1.25V参考源。用外部参考源在精度和热飘移方面可以获得更好的性能,一个磁珠用隔离模拟地和数字地,这可避免较常用的模拟和数字电路共地而把噪声带入模拟电路的缺点;图中右边XADC是用片内的参考源,这时VREFP脚必须按图中所示连接到地。

在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驱动的所有同步

第4节 Xilinx公司原语的使用方法1

第4节Xilinx公司原语的使用方法1 Xilinx 原语 3.4 Xilinx公司原语的使用方法 原语,其英文名字为Primitive,是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的库函数,类似于C++中的“cout”等关键字,是芯片中的基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D触发器,RAM 等,相当于软件中的机器语言。在实现过程中的翻译步骤时,要将所有的设计单元都转译为目标器件中的基本元件,否则就是不可实现的。原语在设计中可以直接例化使用,是最直接的代码输入方式,其和HDL语言的关系,类似于汇编语言和C语言的关系。 Xilinx公司提供的原语,涵盖了FPGA开发的常用领域,但只有相应配置的硬件才能执行相应的原语,并不是所有的原语都可以在任何一款芯片上运行。在Verilog中使用原语非常简单,将其作为模块名直接例化即可。本节以Virtex-4平台介绍各类原语,因为该系列的原语类型是最全面的。其它系列芯片原语的使用方法是类似的。 Xilinx公司的原语按照功能分为10类,包括:计算组件、I/O端口组件、寄存器和锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM组件、Slice/CLB 组件以及G比特收发器组件。下面分别对其进行详细介绍。 3.4.1 计算组件 计算组件值得就是DSP48核,也有人将其称为硬件乘法器,功能描述如表3-6所示。 表3-6 计算组件清单 DSP48 其结构为一个18*18比特的有符号乘法器,且在后面还级联了一个带有可配置流水线的3输入加法器 DSP48核由一个18比特的乘法后面级联一个48比特的加法器,乘法器和加法器的应用位宽分别可以在18、48比特内任意调整。其在乘加模块中有广泛应用,特别是各类滤波器系统中,不仅可以提高系统稳定性,还能够节省逻辑资源且工作在高速模式下。 其在Verilog中的例化模版为: module fpga_v4_dsp48( BCOUT, P, PCOUT, A, B, BCIN, C, CARRYIN,CARRYINSEL, CEA, CEB, CEC, CECARRYIN, CECINSUB, CECTRL, CEM, CEP, CLK, OPMODE, PCIN, RSTA, RSTB, RSTC, RSTCARRYIN, RSTM, RSTP, SUBTRACT); output [17:0]BCOUT; output [47:0] P, PCOUT; //

时序约束总结

很多人发贴,来信询问关于约束、时序分析的问题,比如: 如何设置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,

使用Xilinx CORE Generator

使用Xilinx CORE Generator心得 初步使用Xilinx CORE Generator: 参考书籍:《Xilinx ISE 5.x 使用详解》EDA先锋工作室 P63-P72:IP核生成工具——CORE Generator 1. 对于如何在工程中加入IP核,是很简单的,我在未看书之前,就可根据提示挑选适当的核,对核进行参数设置,将核加入工程。 2. 接下来是如何使用,在这里,由于我主要使用VHDL语言,仿真工具用ModelSim6.0,综合工具主要使用Synplify7.7,我就只说在这样的环境下如何对该IP核进行元件例化,进行项目配置,并进行仿真与综合。 2.1 元件例化 可使用ISE的Laguage Template,也就是Xilinx 6.2 ISE中工具栏右上角的小灯泡,在COREGEN目录下,你会发现,你所用到的IP核的例化语句已经出现在模板里,拷过去就可以直接用了(当然你可能也要视情况进行必要的改动)。 3. 仿真 这里,最主要的问题是库,由于使用了IP核,所以要把XilinxCroeLib加入ModelSim库中。我的经验是:先在当前工程的目录下创建一个xilinxcorelib库,然后把该库文件剪切到modelsim根目录下,最后在modelsim下,选中该库,点击右键选择Edit,将路径高到modelsim下。然后将xilinx\vhdl\src\xilinxcorelib编译到该库中。此时要注意,由于库文件的关联性,第一次不可能全部编译通过,连续三次后,大多数核就在库中,只有少数几个不能通过编译。 4. 综合 由于综合过程中,提示如下(下面是我在comp.arch.fpga上所发的问题): In my project,there's a xilinx IP core. I want to use the synplify7.7 to synthesize it, but there's a warning when synthesize . The warning is : @W: CD280 :"G:\project\itu656_dec\itu656_Decoder.vhd":29:10:29:19|Unbound component counter_11 mapped to black box @W: CD280 :"G:\project\itu656_dec\itu656_Decoder.vhd":37:10:37:18|Unbound component counter_4 mapped to black box my project nane is itu656_dec : a decoder for itu 656 video The following code has been used in my project: component counter_11 port ( Q: OUT std_logic_VECTOR(10 downto 0); CLK: IN std_logic; CE: IN std_logic; ACLR: IN std_logic); end component; component counter_4

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.360docs.net/doc/7c4936849.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所示。

Xilinx原语的使用方法1

Xilinx原语的使用方法1 3.4 Xilinx公司原语的使用方法 原语,其英文名字为Primitive,是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的库函数,类似于C++中的“cout”等关键字,是芯片中的基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D触发器,RAM等,相当于软件中的机器语言。在实现过程中的翻译步骤时,要将所有的设计单元都转译为目标器件中的基本元件,否则就是不可实现的。原语在设计中可以直接例化使用,是最直接的代码输入方式,其和HDL语言的关系,类似于汇编语言和C语言的关系。 Xilinx公司提供的原语,涵盖了FPGA开发的常用领域,但只有相应配置的硬件才能执行相应的原语,并不是所有的原语都可以在任何一款芯片上运行。在Verilog中使用原语非常简单,将其作为模块名直接例化即可。本节以Virtex-4平台介绍各类原语,因为该系列的原语类型是最全面的。其它系列芯片原语的使用方法是类似的。 Xilinx公司的原语按照功能分为10类,包括:计算组件、I/O端口组件、寄存器和锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM 组件、Slice/CLB组件以及G比特收发器组件。下面分别对其进行详细介绍。 3.4.1 计算组件 计算组件指的就是DSP48核,也有人将其称为硬件乘法器,功能描述如表3-6所示。 表3-6 计算组件清单 DSP48 其结构为一个18*18比特的有符号乘法器,且在后面还级联了一个带有可配置流水线的3输入加法器 DSP48核由一个18比特的乘法后面级联一个48比特的加法器,乘法器和加法器的应用位宽分别可以在18、48比特内任意调整。其在乘加模块中有广泛应用,特别是各类滤波器系统中,不仅可以提高系统稳定性,还能够节省逻辑资源且工作在高速模式下。其在Verilog中的例化模版为: module fpga_v4_dsp48( BCOUT, P, PCOUT, A, B, BCIN, C, CARRYIN,CARRYINSEL, CEA, CEB, CEC, CECARRYIN, CECINSUB, CECTRL, CEM, CEP, CLK, OPMODE, PCIN, RSTA, RSTB, RSTC, RSTCARRYIN, RSTM, RSTP,

相关文档
最新文档