版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、xilinx时序约束使用指南笔记(ug612)第一章 时序约束介绍第二章 时序约束方法第三章 时序约束原则第四章 在xst中指定时序约束第五章 在synplify中指定时序约束方法第六章 时序约束分析第一章 时序约束介绍基本的时序约束包括:“period constraints”“offset constraints”“from:to(multi-cycle)约束”第二章 时序约束方法1,简介:2,基本的约束方法 根据覆盖的路径不同,时序要求变成一些不同的全局约束。最普通的路径类型包括:1,输入路径2,同步元件到同步元件路径3,指定路径4,输出路径xilinx的时序约束与每一种全局约束类型都有
2、关。最有效的方法就是一开始就指定全局约束然后再加上指定路径的约束。在很多案例中,只要全局约束就可满足需求。fpga器件执行工具都是由指定的时序要求驱动的。如果时序约束过头的话,就会导致内存使用增加,工具运行时间增加。更重要的是,过约束还会导致性能下降。因此,推荐使用实际设计要求的约束值。3,输入时序约束输入时序约束包括2种“系统同步输入”“源同步输入”输入时钟约束覆盖了输入数据的fpga外部引脚到获取此数据的寄存器之间的路径。输入时钟约束经常用”offset in”约束。指定输入时钟要求的最好方法,取决于接口的类型(源/系统同步)和接口是sdr还是ddr。offset in定义了数据和在fpg
3、a引脚抓取此数据的时钟沿之间的关系。在分析offset in约束时,时序分析工具自动将影响时钟和数据延迟的因素考虑进去。这些因素包括:时钟的频率和相位转换时钟的不确定数据延迟调整除了自动调整,还可以在与接口时钟相关的”period”约束中另外增加时钟不确定。关于增加”input_jitter”的更多信息,参见第三章的”period constraints”。“offset in”与单输入时钟有关,默认情况下,offset in约束覆盖了从输入pad到内部同步元件之间的所有路径。用于抓取那些从pad输入的数据的同步元件由指定的offset in时钟触发。应用offset in约束被称为”glob
4、al”方法。这是指定输入时序的最有效的方法。系统同步输入 在体统同步接口中,发送和抓取数据共用一个系统时钟。板上的布线延迟和时钟倾斜限制了接口的工作频率。更低的频率也会导致系统同步输入接口典型的采用sdr应用。系统同步sdr应用例子,见图2-1。系统同步sdr应用中,在时钟上升沿从源器件发送数据,下一个时钟上升沿在fpga中抓取数据。全局”offset in”约束是对一个系统同步接口指定输入时序的最有效的方法。用这种方法,对每一个系统同步输入接口时钟都定义了一个”offset in”约束。这种单个约束覆盖了所有被同步元件抓取到的输入数据位的路径,这些同步元件由指定输入时钟触发。指定输入时序:1
5、, 定义接口相关的输入时钟的时钟”period”约束;2, 定义接口的全局”offset in”约束;例子理想的系统同步sdr接口的时序图见图2-2。全局”offset in”约束是:offset = in <value> valid <value> before clock;在”offset in”约束中,in <value>决定了数据一开始有效的起始时间到抓取数据的时钟沿之间的时间。在这个系统同步例子中,数据在抓取数据的时钟沿之前5ns有效。valid <value> 决定了数据有效时间。在这个例子中,数据有效时间为5ns。对这个例子,完整的
6、”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
7、应用见图2-3。在时钟上升沿和下降沿都会从源器件发送数据。 全局”offset in”约束是对源同步接口指定输入时序的最有效的方法。在ddr接口,为每一个输入接口时钟的沿都会定义offset in约束。这些约束覆盖了输入数据位的路径,这些数据由指定输入时钟沿的触发的寄存器来抓取。 要指定输入时序必须:1, 为接口相关的输入时钟,定义时钟period约束;2, 为接口上升沿定义全局offset in约束;3, 为接口下降沿定义全局offset in约束;例源同步ddr接口的时序图见图2-4,接口时钟是周期为5ns占空比为50%的时钟。数据的每一位在半个周期内都有效。对ddr全局offset in
8、的约束如下: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>决定了数据的
9、有效时间。在这个例子中,上升沿和下降沿的数据都保持了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,寄存器到寄存器时序约束寄存器到寄存器或者“同步元件到同步元件”的路径约束覆盖了内部寄存器之
10、间的同步数据路径。period约束包含以下方面:1, 定义了时钟域的时序要求;2, 分析单时钟域里的路径;3, 分析相关时钟域里的所有路径4, 考虑不同时钟域中所有的频率,相位和时钟不确定性的不同点。约束同步时钟域的应用和方法有以下几种,这些策略包括:1,“自动相关同步dcm/pll时钟域”2,“手动相关同步时钟域”3,“异步时钟域”通过允许工具自动创造dll/dcm/pll和输出时钟之间的关系,和手动定义外部相关时钟之间关系,所有同步跨时钟域路径都有合适的约束覆盖,和合理的分析。使用这些方法进行period约束就免去了额外的跨时钟域约束的必要。自动相关同步dcm/pll时钟域时钟电路最普通的
11、形式是下面之一: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_
12、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个时钟域之间分析性能手动相关同步时钟域在某些情况下,同步时钟域
13、之间关系不能由工具自动指定。例如,当相关的时钟从两个独立的引脚进入fpga时,碰到这种情况,xilinx推荐你用下面的步骤:1, 为每一个输入时钟定义period约束;2, 手动定义时钟之间关系;一旦你定义了手动关系,两个同步域之间的所有路径都会被自动分析。分析将会把所有的,频率,相位和不确定信息考虑进去。xilinx约束系统允许使用包含时钟频率和相位传送的period约束来定义时钟域之间complex manual relationship。如果要使用period约束来定义时钟域之间的complex manual relationship,需要:1, 为主时钟定义period约束;2, 以第
14、一个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_relate
15、d” 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_n
16、et = “clk2x180”;timespec “ts_clk1x” = period “clk1x” 5 ns;timespec “ts_clk2x180” = period”clk2x180” ts_clk1x/2 phase +1.25ns;异步时钟域异步时钟域是指那些源和目的时钟频率或者相位关系不同的时钟域。因为时钟不相关,所以无法决定setup和hold时钟分析的最终关系。鉴于此,xilinx推荐使用合适的异步设计技术来确保能够成功抓取数据。合适的异步设计技术的例子是用fifo来抓取异步时钟域之间的传输数据。如果没有特别要求,可以不用考虑时钟路径评论或相位关系,而在封闭的区域中约束
17、最大数据路径延迟。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
18、” 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约束时,时序工具自动将影响时钟延迟和数据路
19、径的内部因素考虑进去。这些因素包括:1, 时钟的频率和相位变化2, 时钟的不确定性3, 数据路径延迟调整系统同步输出 系统同步输出接口中,一个共同的系统时钟既用来传输也用来抓取数据。因为这个接口使用一个共同的系统时钟, fpga只发送数据。如果必须约束这些路径,全局offset out约束是指定系统同步接口输出时序的最有效的方式。这个单约束覆盖了所有从寄存器输出的数据的路径,这些寄存器是由指定的输入时钟触发的。要指定这些输出时序需:1,为输出时钟定义时钟名称(tnm)来创建个时钟组,这个组包含了所有由输入时钟触发的输出寄存器。2,定义接口的全局offset out约束。例系统同步sdr输出接口
20、的时序图见图2-10。此例中的数据必须在输入时钟沿最长5ns之后有效。系统同步接口的全局offset out语法如下:offset = out value after clock;offset out约束中,offset = out <value>决定了从fpga输入端口时钟上升沿到fpga输出端口数据开始有效的最大时间。在此系统同步例子中,输出数据最多在输入时钟边沿的5ns之后有效。本例,完整的offset out约束如下:net”clkin” tnm_net = “clkin”;offset = out 5ns after “clkin”;源同步输出源同步输出接口内会重新生成时
21、钟,新生成的时钟和数据一起从fpga送出。接口的性能主要由系统噪声和新生成的时钟和数据位之间的倾斜限制。在本接口中,从输入时钟边沿到输出数据有效开始,这段时间没有输出数据位之间的倾斜重要,在大部分的例子中,可以不约束它。全局offset out约束是对源同步接口指定输出时序的最有效的方法。在ddr接口,输出接口时钟的每一个沿都指定了offset out约束。这些约束覆盖了所有又触发器传输的数据位的所有路径,这些触发器由指定输出时钟沿触发。欲指定输入时序需:1,为输出时钟定义个时钟名(tnm)来创建一个时钟组,这个组包含了所有由输出时钟触发的寄存器;2,为接口时钟上升沿定义全局offset ou
22、t约束;3,为接口时钟下降沿定义全局offset out约束;例子理想的源同步ddr接口时序图见图2-12。在offset out约束中,offset = out<value>决定了从输入时钟端口的上升沿到fpga输出端口数据开始有效之间的最大时间。当<value>从offset out约束忽略掉的时候,报告输出总线倾斜的约束变成了report-only specification。关键词reference_pin定义重新生成的输出时钟作为参考点,而输出数据管脚倾斜的报告就是根据这个参考点生成的。对于本例,时钟上升沿和下降沿的完整的offset out约束如下:net
23、“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在某些情况下,如果你确定某些路径不会影响时序性能,那么你就会想将这些路径
24、从时序约束中移除出去。最常用的方法是用带有timing ignore (tig)关键词的from-to约束。这允许你去:1, 在一个源时钟组中指定一组寄存器2, 在一个目的时钟组中指定一组寄存器3, 自动将这些时钟组之间的所有路径从分析中移除掉要用这种方法来指定timing ignore(tig)约束,定义:1, 源时钟组的一组寄存器2, 目的时钟组的一组寄存器3, 带有tig关键词的from-to约束移除两个时钟组之间的路径例子 假设两个寄存器之间的路径并不影响设计的时序,希望将这条路径移除掉。见图2-13 两个时钟组之间定义一个tig的通用语法如下: timespec “tsid” = f
25、rom “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定义的时钟频率
26、从源同步元件传输到目的同步元件。当同步元件用一个共同的时钟使能信号作为门控时,上面这种情况最常见。通过定义一个多周期路径,这些同步元件的时序约束将比默认的period约束宽松。多周期路径约束可以考虑period约束标识符(ts_clk125)×时钟周期的数量(ts_clk125*3)。执行工具然后就能够合理的分配执行这些路径的优先级。指定一组多周期路径的共同方法是用时钟使能信号定义一个时钟组。这允许你:1, 用一个公用的时钟使能信号定义一个包含了源和目的同步元件的时钟组。2, 自动将多周期约束应用到这些同步元件之间的所有路径如果要用这种方法指定from:to(多周期)约束,需要定义:
27、1, 公用时钟域的period约束;2, 基于公用时钟使能信号的一组寄存器;3, 描述新的时钟需求的from:to(多周期)约束例子图2-14显示了一种假想的情况。在这种情况下两个寄存器共用一个时钟使能信号。在本例中,时钟使能信号的切换频率是参考时钟频率的一半。 在不同时钟组之间定义多周期路径的通用语法如下: timespec “tsid” = from “mc_grp” to “mc_grp” <value>在from:to(多周期)的例子中,mc_grp定义了一组由公用时钟驱动的寄存器。所有从mc_grp开始到mc_grp结束的路径,可以应用多周期时序要求。进出mc_grp的路
28、径可以用合适的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”为了更好的理解约束系统子系统,讨论了组元件的能力。这一章包括:“约束系统“约束优先级“时序约束“时序约束语法“建立时序约
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年设备更新与以旧换新领域长三角标准申报范围与要求
- 2026年基于PSMDID方法入市改革提振集体经济带动增收机制
- 上海市延安初级中学2026年初三4月教学质量检测试题(佛山二模)生物试题理试题含解析
- 2026年大气污染防治攻坚(十五五开局)
- 陕西省西安市滨河区2026年初三生物试题5月统一考试试题含解析
- 2026届四川省乐山市沙湾区中考压轴考试化学试题含解析
- 2026年成人纸尿裤品牌比较试验结果报告
- 山东省济南市槐荫区重点达标名校2026届初三下学期开学摸底考试化学试题试卷含解析
- 重庆市两江新区重点中学2025-2026学年初三下学期第一次月考-生物试题含解析
- 2026年CCRC康养社区运营管理平台建设方案
- 青海国家电网2026年高校毕业生招聘第二批笔试参考题库及答案解析
- 2026及未来5年中国铁路信号微机监测系统行业市场运营态势及未来趋势研判报告
- 2026年《必背60题》抖音本地生活BD经理高频面试题包含详细解答
- 2023年湖南安全技术职业学院单招综合素质模拟试题及答案解析
- 《商场消防设施管理研究(论文)5400字》
- 志愿者证书模板
- GB/T 5973-1986钢丝绳用楔形接头
- GB/T 1303.1-1998环氧玻璃布层压板
- 变电站的主要一次设备(课堂PPT)
- 药用植物栽培技术-绪论课件
- 农业面源污染进展课件
评论
0/150
提交评论