FPGA时钟约束技巧_第1页
FPGA时钟约束技巧_第2页
FPGA时钟约束技巧_第3页
FPGA时钟约束技巧_第4页
FPGA时钟约束技巧_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Page XDC约束技巧之时钟篇Xilinx的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧,并且时刻牢记:XDC的语法其实就是Tcl语言。XDC的优势XDC是XilinxDesignConstraints的简写,但其基础语法来源于业界统一的约束规范SDC(最早由Synopsys公司提出,故名SynopsysDesignConstraints)。所以SDC、XDC跟VivadoTcl的关系如下图所示。的主要优势包括Page #P

2、age #VivadoTcl格式,便于管理;时录入并执行;Page XD对其它复补充。(XDC可以像、个个单独的命令直接执束在有冲突的情况下会XDCSDC调试效率;效率高;植性强;.1运算符等等件的方式来do中的应用)的特点,即后面输入的约,的优先级会在下节详述)。另,约束是读一条执行一条,所以先后顺序很重要,例如要设置10约束之前,相对应的clock一定要先创建好。Page 2.UCF是完全以FPGA的视角看问题,所以缺省认为所有的时钟之间除非预先声明是同步的,否则就视作异步而不做跨时钟域时序分析;XDC则恰恰相反,ASIC世界的血缘背景决定了在其中,所有的时钟缺省视作全同步,在没有时序例外

3、的情况下,工具会主动分析每一条跨时钟域的路径。XDC的基本语法XDC的基本语法可以分为时钟约束、I/O约束以及时序例外约束三大类。根据Xilinx的UltraFast设计方法学中Baseline部分的建议(UG949中有详细介绍),对一个设计进行约束的先后顺序也可以依照这三类约束依次进行。本文对可以在帮助文档中查到的基本XDC语法不做详细解释,会将重点放在使用方法和技巧上。时钟约束时钟约束必须最早创建,对7系列FPGA来说,端口进来的主时钟以及GT的输出RXCLK/TXCLK都必须由用户使用create_clock自主创建。而衍生时钟则分为以下两类:MMCM/PLL/BUFR的输出时钟都可以由

4、Vivado自动推导,无需用户创建。若用户仅希望改变衍生钟的名字,其余频率等都由工具自动推导,则只需写明三个option,其余不写即可:create_generated_clock-namearg-sourceargs-master_clockarg工具不能自动推导出衍生钟的情况,包括使用寄存器和组合逻辑搭建的分频器等,必须由用户使用create_generated_clock来创建。I/O约束在设计的初级阶段,可以不加I/O约束,让工具专注于满足FPGA内部的时序要求。当时序要求基本满足后,再加上I/O约束跑实现。XDC中的I/O约束有以下几点需要注意:不加任何I/O约束的端口时序要求被视作

5、无穷大。XDC中的set_input_delay/set_output_delay对应于UCF中OFFSETIN/OFFSETOUT,但视角相反。OFFSETIN/OFFSETOUT是从FPGA内部延时的角度来约束端口时序,set_input_delay/set_output_delay则是从系统角度来约束。典型的I/O时序,包括系统同步、源同步、SDR和DDR等等,在Vivado图形界面的XDCtemplates中都有示例。2014.1版后还有一个TimingConstraintsWizard可供使用。时序例外约束时序例外约束包括set_max_delay/set_min_delay,set

6、_multicycle_path,set_false_path等,这类约束除了要满足XDC的先后顺序优先级外,还受到自身优先级的限制。一个总的原则就是针对同一条路径,对约束目标描述越具体的优先级越高。不同的时序例外约束以及同一约束中不同条件的优先级如下所示:优先级最高-frompinset_false_path-topmset_max_delay/set_min_delay-throughpin-fromclockset_multicycle_path-toclock优先级最低举例来说,依次执行如下两条XDC,尽管第二条最后执行,但工具仍然认定第一条约束设定的15为clk1到clk2之间路径的

7、maxdelay值。Winnerset_max_delay1-fromget_clocksclklQget_clocksclk2set_max_delay1-fromget_clocksclkl再比如,对图示路径依次进行如下四条时序例外约束,优胜者将是第二条。但如果再加入最后一条约束,falsepath的优先级最高,会取代之前所有的时序例外约束。REGBREGACLKAset_multicycle_path-toREGB/Dset_multicycle_path-fromCLKA-toCLKBset_false_path-throughlut/OTakePrecedence高效的时钟约束约束最

8、终是为了设计服务,所以要用好XDC就需要深入理解电路结构和设计需求。接下来我们就以常见FPGA设计中的时钟结构来举例,详细阐述XDC的约束技巧。时序的零起点用create_clock定义的主时钟的起点即时序的“零起点”,在这之前的上游路径延时都被工具自动忽略。所以主时钟创建在哪个“点”很重要,以下图所示结构来举例,分别于FPGA输入端口和BUFG输出端口创建一个主时钟,在时序报告中体现出的路径延时完全不同,很明显sysclk_bad的报告中缺少了之前一段的延时,时序报告不可信。sysclksysclk_badelkinfraiIBUFG(Propibufg丄O)0.7660.766rclkin

9、frai/clkinibuf/Onet(fo=3,unplaced)1.1091.875clk_infra_i/clkin1BUFR(Propbufr丄O)0.3142.189rclk_infra_i/sys_clk_buf/Onet(fo=10,unplaced)1.1093.298sys_clk_intrsysrst_sync_reg2/Ccreate_clock-namesysclk_bad-period10get_pinsclk_infra_i/sys_clk_buf/ODelaytypeIncr(ns)Path(ns)NetlistResource(s)(clocksysclk_ba

10、driseedge)0.0000.000rBUFR0.0000.000rclk_infra_i/sys_clk_buf/Onet(fo=10,unplaced)1.1091.109sys_clk_intrsysrst_sync_reg2/C时钟定义的先后顺序时钟的定义也遵从XDC/Tcl的一般优先级,即:在同一个点上,由用户定义的时钟会覆盖工具自动推导的时钟,且后定义的时钟会覆盖先定义的时钟。若要二者并存,必须使用-add选项。create_generated_clock-nameclkbufg-sourceget_portssys_clk-divide_by1get_pinsclk_infr

11、a_i/clkfsm_buf/Ocreate_generated_clock-nameclkbufr-sourceget_portssys_clk-divide_by1get_pinsclk_infra_i/sys_clk_buf/O-add-master_clocksysclk上述例子中BUFG的输出端由用户自定义了一个衍生钟clkbufg,这个衍生钟便会覆盖此处原有的sysclk。此外,图示BUFR工作在bypass模式,其输出不会自动创建衍生钟,但在BUFR的输出端定义一个衍生钟clkbufr,并使用-add和-master_clock选项后,这一点上会存在sysclk和clkbufg两

12、个重叠的时钟。如下的Tcl命令验证了我们的推论。%get_clocks-ofget_pinssysrst_sync_reg2/Csysclkclkbufr%get_clocks-ofget_pinswrite_error_reg/Cclkbufg同步时钟和异步时钟PrimaryClockssclkinMflkinnD卜ssclkin_p匚iAsynchronous/Clocks不同于UCF约束,在sysclkq表中所有存在的时序路径都所有有匚的告诉工具,哪些路径是无需dklnlbuf会-I也意dkinfr-a一CE(:认1p/sysdkbufBUFR如上图所示,两个主时imaryClockGe

13、neratedClock时钟网络传递,要将它们设成异步时钟,可以使用如下约束:liorst_sync_regj2FDPEAsynchrcClodset_clock_groups-namesys_ss_async-groupget_clocks-groupget_clocks-asynchronous-include_generated_clockssysclk-include_generated_clocksssclkin其中,-include_generated_clocks表示所有衍生钟自动跟其主时钟一组,从而与其它组的时钟之间为异步关系。不加这个选项则仅仅将时钟关系的约束应用在主时钟层面

14、。重叠(单点多个)时钟D重叠时钟是指多个时钟共享完全相同的时钟传输网络,例如两个时钟经过一个MUX选择后输出的时钟,在有多种运行模式的设计中很常见。如下图所示,clkl25和clk250是clkcore_buf的两个输入时钟,不约束时钟关系的情况下,Vivado会对图示路径做跨时钟域(重叠时钟之间)分析。这样的时序报告即便没有违例,也是不可信的,因为clk125和clk250不可能同时驱动这条路径上的时序元件。这么做也会增加运行时间,并影响最终的实现效果。Page oniaSiorr我们要做的仅仅是idki亡tlkgnlai/FDgnla_i/FD_pda/QLUT6FO白gliFDCEsys

15、_clk-1.949rgn1a_i/FD_agh./ESame-focset_clock_groupsr-physCii-iy3XCiusive-grOupget_clocksclk125-groupfet_c!pckspik25Uslack2.6930.0000.000r.esourclk_infra_i/clulai/clkFDCEProp_fdce_C_Q)0.2490.003FDCE(SetuptdceCD)-1.092(clock(clk250riseedge)1.6011.092Differentclocks1.109-3.307.-2.1984.0000.0004.000r4.0

16、00rEUFGCTRL(Piop_(fo=49007unplaced)0.0930.0031.416r1.1092.525如果clk125和clk0.1911.601BUFGCTRL(Prop_bufgct.)net(fo=4900Trmplaced)clk_infra_i/clgjiLa_i/clkgnlai/FDagh/CammcmadvinstCLKFBOUTcucfsours-clkcorebufCLKFBINCLKFBSTOPPED-FceoCLKINSELCLKlNSTOPPfD一一CE1CLKINJCLKIN2DAJDCRj6;0CLKOUTQCLKOUTOBCLKOUT1AXD

17、CLKCUCOUTLBn*DENCLKOUT2t_l1so-DtflSACLKOUT2B-51-OWECLKOUT3-BUFGCTRL一PSCIKCUCOUT3B二PSECLKOUT4PSINCCECCLKOUTS一PWRDWNCLKOUT6二RSTDO(19CODRDVLOCKED-PSDOSFE一MMCME2_A3VL.JclkjnfrsPage CLK125D_A其它高级约束DCLK250在很多情况下,除了共同的扇出,其中一个时钟或两个都还驱动其它的时序元件,此时建议的做法是在clkcore_buf的输出端上创建两个重叠的衍生钟,并将其时钟关系约束为-physically_exclusive表示不可能同时通过。这样做可以最大化约束覆盖率,也是ISE和UCF中无法做到的。create_generated_clock-nameclk125_bufgctrl-divide_by1get_pinsbufgctrl_i/O-sourceget_portsbufgctrl_i/IOcreate_generated_clock-nameclk250_bufgctrl-divide_by1get_pinsbufgctrl_i/O-sourceget_portsbufgctrl_i/I1-add-masterclockclk250set_clock_grou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论