收藏 分享(赏)

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

上传人:weiwoduzun 文档编号:4138607 上传时间:2018-12-11 格式:PDF 页数:16 大小:429.35KB
下载 相关 举报
XILINX-时序约束使用指南中文.pdf_第1页
第1页 / 共16页
XILINX-时序约束使用指南中文.pdf_第2页
第2页 / 共16页
XILINX-时序约束使用指南中文.pdf_第3页
第3页 / 共16页
XILINX-时序约束使用指南中文.pdf_第4页
第4页 / 共16页
XILINX-时序约束使用指南中文.pdf_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、 1 / 16 XILINX时序约束使用指南笔记 第一章 时序约束介绍 第二章 时序约束方法 第三章 时序约束原则 第四章 在 XST 中指定时序约束 第五章 在 Synplify 中指定时序约束方法 第六章 时序约束分析 2 / 16 3 / 16 第一章 时序约束介绍 基本的时序约束包括: “PERIOD Constraints” “OFFSET Constraints” “FROM:TO(MultiCycle)约束” 4 / 16 第二章 时序约束方法 1,简介: 2,基本的约束方法 根据覆盖的路径不同,时序要求变成一些不同的全局约束。 最普通的路径类型包括: 1,输入路径 2,同步元件

2、到同步元件路径 3,指定路径 4,输出路径 XILINX 的时序约束与每一种全局约束类型都有关。最有效的方法就是一开始就指定全局 约束然后再加上指定路径的约束。在很多案例中,只要全局约束就可满足需求。 FPGA 器件执行工具都是由指定的时序要求驱动的。如果时序约束过头的话,就会导致 内存使用增加,工具运行时间增加。更重要的是,过约束还会导致性能下降。因此,推荐使 用实际设计要求的约束值。 3,输入时序约束 输入时序约束包括 2 种 “系统同步输入” “源同步输入” 输入时钟约束覆盖了输入数据的 FPGA 外部引脚到获取此数据的寄存器之间的路径。输 入时钟约束经常用”OFFSET IN”约束。指

3、定输入时钟要求的最好方法,取决于接口的类型(源 /系统同步)和接口是 SDR 还是 DDR。 OFFSET IN定义了数据和在FPGA引脚抓取此数据的时钟沿之间的关系。 在分析OFFSET IN 约束时,时序分析工具自动将影响时钟和数据延迟的因素考虑进去。这些因素包括: 时钟的频率和相位转换 时钟的不确定 数据延迟调整 除了自动调整,还可以在与接口时钟相关的”PERIOD”约束中另外增加时钟不确定。 关于增加”INPUT_JITTER”的更多信息,参见第三章的”PERIOD Constraints”。 “OFFSET IN”与单输入时钟有关,默认情况下,OFFSET IN 约束覆盖了从输入 p

4、ad 到内部 同步元件之间的所有路径。用于抓取那些从 pad 输入的数据的同步元件由指定的 OFFSET IN 时钟触发。应用 OFFSET IN约束被称为”global”方法。这是指定输入时序的最有效的方法。 系统同步输入 在体统同步接口中,发送和抓取数据共用一个系统时钟。板上的布线延迟和时钟倾 斜限制了接口的工作频率。更低的频率也会导致系统同步输入接口典型的采用 SDR 应用。 系统同步 SDR 应用例子,见图 21。系统同步 SDR 应用中,在时钟上升沿从源器件发送 5 / 16 数据,下一个时钟上升沿在 FPGA 中抓取数据。 全局”OFFSET IN”约束是对一个系统同步接口指定输入

5、时序的最有效的方法。用这种方 法,对每一个系统同步输入接口时钟都定义了一个”OFFSET IN”约束。这种单个约束覆盖了所 有被同步元件抓取到的输入数据位的路径,这些同步元件由指定输入时钟触发。 指定输入时序: 1, 定义接口相关的输入时钟的时钟”PERIOD”约束; 2, 定义接口的全局”OFFSET IN”约束; 例子 理想的系统同步 SDR 接口的时序图见图 22。 全局”OFFSET IN”约束是: OFFSET = IN VALID BEFORE clock; 在”OFFSET IN”约束中,IN 决定了数据一开始有效的起始时间到抓取数据的时钟 沿之间的时间。在这个系统同步例子中,数

6、据在抓取数据的时钟沿之前 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 中抓取数据。电路

7、板上的线路延时和板上 的时钟倾斜都不会再限制接口的运行频率了。 更高的频率会导致源同步输入接口典型的被应 用为双数据速率(DDR)的应用。典型的源同步 DDR应用见图 23。在时钟上升沿和下降沿 6 / 16 都会从源器件发送数据。 全局”OFFSET IN”约束是对源同步接口指定输入时序的最有效的方法。在 DDR 接口,为 每一个输入接口时钟的沿都会定义 OFFSET IN 约束。这些约束覆盖了输入数据位的路径,这 些数据由指定输入时钟沿的触发的寄存器来抓取。 要指定输入时序必须: 1, 为接口相关的输入时钟,定义时钟 PERIOD 约束; 2, 为接口上升沿定义全局 OFFSET IN约束

8、; 3, 为接口下降沿定义全局 OFFSET IN约束; 例 源同步 DDR接口的时序图见图 24,接口时钟是周期为 5ns占空比为 50%的时钟。数据 的每一位在半个周期内都有效。 对 DDR全局 OFFSET IN 的约束如下: OFFSET = IN VALIDBEFORE clock RISING; OFFSET = INVALIDBEFORE clock FALLING; 在 OFFSET IN 约束中,OFFSET = IN决定了从抓取时钟的时钟沿到数据开始有效的 时间点之间的时间段。以此源同步输入为例,上升沿传送的数据在时钟上升沿之前 1.25ns 有效。同样下降沿传送的数据在时

9、钟下降沿之前 1.25ns 有效。在 OFFSET IN 约束中, VALID决定了数据的有效时间。 在这个例子中, 上升沿和下降沿的数据都保持了 2.5ns。 此例中,OFFSET IN 和与之相关的 PERIOD 约束如下: 7 / 16 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

10、”SysClk”FALLING; 4,寄存器到寄存器时序约束 寄存器到寄存器或者“同步元件到同步元件”的路径约束覆盖了内部寄存器之间的同步 数据路径。PERIOD 约束包含以下方面: 1, 定义了时钟域的时序要求; 2, 分析单时钟域里的路径; 3, 分析相关时钟域里的所有路径 4, 考虑不同时钟域中所有的频率,相位和时钟不确定性的不同点。 约束同步时钟域的应用和方法有以下几种,这些策略包括: 1, “自动相关同步 DCM/PLL 时钟域” 2, “手动相关同步时钟域” 3, “异步时钟域” 通过允许工具自动创造 DLL/DCM/PLL 和输出时钟之间的关系,和手动定义外部相关时 钟之间关系,

11、所有同步跨时钟域路径都有合适的约束覆盖,和合理的分析。使用这些方法进 行 PERIOD 约束就免去了额外的跨时钟域约束的必要。 自动相关同步 DCM/PLL 时钟域 时钟电路最普通的形式是下面之一: 1, 输入时钟连接 DLL/DCM/PLL; 2, 输出用来作为期间内部同步路径的时钟 在这个例子中,推荐对连接到 DLL/DCM/PLL 的输入时钟做 PERIOD 约束。 通过对输入时钟进行 PERIOD 约束,XILINX 工具自动: 1, 自动给每一个 DLL/DCM/PLL 的输出时钟派生出一个新的 PERIOD 约束; 2, 决定了输出时钟域之间的时钟关系,自动分析这些时钟域自己的任何

12、路径 例 输入时钟驱动 DCM 的电路如图 25; 8 / 16 本例的 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 = “Cl

13、kIn”; TIMESPEC “TS_ClkIn” = PERIOD “ClkIn” 5 ns HIGH 50%; 基于以上给出的输入时钟 PERIOD 约束,DCM 自动: 1,为 DCM输出创造 2个时钟约束 2,在 2 个时钟域之间分析性能 手动相关同步时钟域 在某些情况下,同步时钟域之间关系不能由工具自动指定。例如,当相关的时钟从两个 独立的引脚进入 FPGA 时,碰到这种情况,XILINX 推荐你用下面的步骤: 1, 为每一个输入时钟定义 PERIOD 约束; 2, 手动定义时钟之间关系; 一旦你定义了手动关系,两个同步域之间的所有路径都会被自动分析。分析将会把所有 的,频率,相位和

14、不确定信息考虑进去。XILINX 约束系统允许使用包含时钟频率和相位传送 的 PERIOD 约束来定义时钟域之间 complex manual relationship。 如果要使用 PERIOD 约束来定义时钟域之间的 complex manual relationship,需要: 1, 为主时钟定义 PERIOD 约束; 2, 以第一个 PERIOD 约束作为参考,为相关时钟定义 PERIOD 约束; 两个相关的时钟从 2 个独立的引脚进入 FPGA,见图 26 1, clk1x 是主时钟 2, clk2x180 是相关时钟 本例的 PERIOD 约束语法如下: NET”PrimaryCl

15、ock” 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的

16、形式表达。在本例中,CLK2X180 的频率是 CLK1X 的 2 倍,这 就导致 PERIOD 是其一半。 9 / 16 在 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_Clk2

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

18、ATAPATHONLY”关键词的 FROMTO 约束来指定。 不用考虑源和目的时钟频率和相位关系的最大路径延时约束如下: 1, 为源同步元件定义时钟组; 2, 为目的同步元件定义时钟组; 3, 用带”DATAPATHONLY”关键词的FROMTO在两个时钟组之间定义最大数据路径延时; 例子 两个不相关的时钟从外部 2 根独立的管脚进入 FPGA 如下图 1, CLKA是源时钟 2, CLKB是目的时钟 这个例子的语法如下: NET “CLKA” TNM_NET = FFS “GRP_A”; NET”CLKB” TNM_NET = FFS”GRP_B”; TIMESPEC TS_Example

19、= FROM “GRP_A” TO”GRP_B” 5ns DATAPATHONLY; 5,输出时序约束 输出时序覆盖了,从 FPGA 内部寄存器到 FPGA 外部管脚之间的数据路径。OFFSET OUT 约束指定了输出时序。指定输出时序要求的最好方式取决于 type(源/系统同步)和接口的 SDR/DDR。 10 / 16 OFFSET OUT 定义了从 FPGA 发送的数据的最大允许时间。 输出延时路径从 FPGA 的输入 时钟管脚开始,通过输出寄存器到 FPGA 的数据管脚。见图 28。 当分析 OFFSET OUT 约束时, 时序工具自动将影响时钟延迟和数据路径的内部因素考虑进去。 这些

20、因素包括: 1, 时钟的频率和相位变化 2, 时钟的不确定性 3, 数据路径延迟调整 系统同步输出 系统同步输出接口中,一个共同的系统时钟既用来传输也用来抓取数据。因为这个接 口使用一个共同的系统时钟, FPGA 只发送数据。 如果必须约束这些路径,全局 OFFSET OUT 约束是指定系统同步接口输出时序的最有效 的方式。这个单约束覆盖了所有从寄存器输出的数据的路径,这些寄存器是由指定的输入时 钟触发的。 要指定这些输出时序需: 1,为输出时钟定义时钟名称(TNM)来创建个时钟组,这个组包含了所有由输入时钟触 发的输出寄存器。 2,定义接口的全局 OFFSET OUT 约束。 例 11 /

21、16 系统同步 SDR 输出接口的时序图见图 210。此例中的数据必须在输入时钟沿最长 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”

22、; 源同步输出 源同步输出接口内会重新生成时钟,新生成的时钟和数据一起从 FPGA 送出。接口的性 能主要由系统噪声和新生成的时钟和数据位之间的倾斜限制。在本接口中,从输入时钟边沿 到输出数据有效开始,这段时间没有输出数据位之间的倾斜重要,在大部分的例子中,可以 不约束它。 12 / 16 全局 OFFSET OUT 约束是对源同步接口指定输出时序的最有效的方法。在 DDR接口,输 出接口时钟的每一个沿都指定了 OFFSET OUT 约束。这些约束覆盖了所有又触发器传输的数 据位的所有路径,这些触发器由指定输出时钟沿触发。 欲指定输入时序需: 1,为输出时钟定义个时钟名(TNM)来创建一个时钟

23、组,这个组包含了所有由输出时 钟触发的寄存器; 2,为接口时钟上升沿定义全局 OFFSET OUT 约束; 3,为接口时钟下降沿定义全局 OFFSET OUT 约束; 例子 理想的源同步 DDR接口时序图见图 212。 在 OFFSET OUT约束中,OFFSET = OUT决定了从输入时钟端口的上升沿到 FPGA 输出端口数据开始有效之间的最大时间。当从 OFFSET OUT 约束忽略掉的时候,报告 输出总线倾斜的约束变成了 reportonly specification。关键词 REFERENCE_PIN 定义重新生成 的输出时钟作为参考点,而输出数据管脚倾斜的报告就是根据这个参考点生成

24、的。 对于本例,时钟上升沿和下降沿的完整的 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” “MultiCycle Paths

25、” False Paths 在某些情况下,如果你确定某些路径不会影响时序性能,那么你就会想将这些路径从时 序约束中移除出去。 最常用的方法是用带有 timing ignore (TIG)关键词的 FROMTO 约束。这允许你去: 1, 在一个源时钟组中指定一组寄存器 2, 在一个目的时钟组中指定一组寄存器 3, 自动将这些时钟组之间的所有路径从分析中移除掉 13 / 16 要用这种方法来指定 timing ignore(TIG)约束,定义: 1, 源时钟组的一组寄存器 2, 目的时钟组的一组寄存器 3, 带有 TIG 关键词的 FROMTO 约束移除两个时钟组之间的路径 例子 假设两个寄存器之

26、间的路径并不影响设计的时序, 希望将这条路径移除掉。 见图 213 两个时钟组之间定义一个 TIG 的通用语法如下: TIMESPEC “TSid” = FROM “SRC_GRP” TO ”DST_GRP” TIG; 在 FROMTO TIG 例子中, SRC_GRP定义了一组源寄存器, 这组寄存器是这条时序路径的起点。 DST_GRP 定义了一组目的寄存器,这组寄存器是这条时序路径的终点。所有从 SRC_GRP 开 始到 DST_GRP结束的路径都被忽略了。 本例的语法如下: NET “CLK1” TNM_NET = FFS “GRP_1”; NET “CLK2” TNM_NET = FF

27、S ”GRP_2”; TIMESPEC TS_Example = FROM “GRP_1” TO “GRP_2” TIG; 多周期路径 在多周期路径中,数据以低于 PERIOD 定义的时钟频率从源同步元件传输到目的同步元 件。 当同步元件用一个共同的时钟使能信号作为门控时,上面这种情况最常见。通过定义一 个多周期路径,这些同步元件的时序约束将比默认的 PERIOD 约束宽松。多周期路径约束可 以考虑 PERIOD 约束标识符(TS_clk125)时钟周期的数量(TS_clk125*3)。 执行工具然后就能够 合理的分配执行这些路径的优先级。 指定一组多周期路径的共同方法是用时钟使能信号定义一个

28、时钟组。这允许你: 1, 用一个公用的时钟使能信号定义一个包含了源和目的同步元件的时钟组。 2, 自动将多周期约束应用到这些同步元件之间的所有路径 如果要用这种方法指定 FROM:TO(多周期)约束,需要定义: 1, 公用时钟域的 PERIOD 约束; 2, 基于公用时钟使能信号的一组寄存器; 3, 描述新的时钟需求的 FROM:TO(多周期)约束 例子 图 214 显示了一种假想的情况。在这种情况下两个寄存器共用一个时钟使能信号。在 14 / 16 本例中,时钟使能信号的切换频率是参考时钟频率的一半。 在不同时钟组之间定义多周期路径的通用语法如下: TIMESPEC “TSid” = FRO

29、M “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” T

30、O “MC_GRP” TS_CLK1*2; 15 / 16 第三章 时序约束原则 本章讨论了时序约束的根本,包括: “PERIOD Constraints” “OFFSET Constraints” “FROM:TO (MultiCycle) Constraints” 为了更好的理解约束系统子系统,讨论了组元件的能力。 这一章包括: “约束系统“ “约束优先级“ “时序约束“ “时序约束语法“ “建立时序约束“ 约束系统 这部分讨论了约束系统,包含以下内容: “约束系统简介“ “DLL/DCM/PLL/BUFR/PMCD 元件“ “用 TNM/TNM_NET 创建时序组“ “组约束“ 约束系统

31、简介 约束系统是解析和理解设计的物理和时序约束的执行工具(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 约束”

32、 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

33、, 为 PERIOD 要求的值设置合适的乘数或除数 16 / 16 转换条件 当时钟修改模块的 CLKIN 管脚有 TIMESPEC PERIOD约束且满足下面条件时候,会产生转换: 1, 当与 PERIOD 约束相关的组刚好被用在一个 PERIOD 中 2, 与 PERIOD 约束相关的组没有被用在其它的时序约束中,包括 FROM:TO(多周期)或者 OFFSET 约束。 3, 与 PERIOD 约束相关的组与其它的用户组定义无关 DCM 输出的新 PERIOD 约束 如果“转换条件“满足了,TIMESPEC “TS_clk20” = PERIOD “clk20_ep” 20ns HIGH 50%; 约束翻 译成了下面的约束,下面的约束是基于图 31 的时钟结构的。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报