XDC约束技巧时钟篇.doc

上传人:枫** 文档编号:557476629 上传时间:2023-07-08 格式:DOC 页数:10 大小:475KB
返回 下载 相关 举报
XDC约束技巧时钟篇.doc_第1页
第1页 / 共10页
XDC约束技巧时钟篇.doc_第2页
第2页 / 共10页
XDC约束技巧时钟篇.doc_第3页
第3页 / 共10页
XDC约束技巧时钟篇.doc_第4页
第4页 / 共10页
XDC约束技巧时钟篇.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《XDC约束技巧时钟篇.doc》由会员分享,可在线阅读,更多相关《XDC约束技巧时钟篇.doc(10页珍藏版)》请在金锄头文库上搜索。

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

2、后端拘束格式,便于管理;2.能够像命令相同实时录入并执行;3.赞同增量设置拘束,加速调试效率;4.覆盖率高,可扩展性好,效率高;5.业界一致,兼容性好,可移植性强;XDC在实质上就是Tcl语言,但其仅支持基本的Tcl语法如变量、列表和运算符等等,对其余复杂的循环以及文件I/O等语法能够经过在Vivado中source一个Tcl文件的方式来补充。(对Tcl话题感兴趣的读者能够参照作者的另一篇文章Tcl在Vivado中的应用)XDC与UCF的最主要差异有两点:1XDC能够像UCF相同作为一个整体文件被工具读入,也能够在实现过程中被看作一个个单独的命令直接执行。这就决定了XDC也拥有Tcl命令的特点

3、,即后边输入的约束在有矛盾的情况下会覆盖从前输入的拘束(时序例外的优先级会在下节详述)。另外,不相同于UCF是全部读入再办理的方式,在XDC中,拘束是读一条执行一条,所以先后序次很重要,比方要设置IO拘束从前,相对应的clock必然要先创办好。Page12UCF是完好以FPGA的视角看问题,所以缺省认为全部的时钟之间除非起初声明是同步的,否则就视作异步而不做跨时钟域时序解析;XDC则恰巧相反,ASIC世界的血缘背景决定了在其中,全部的时钟缺省视作全同步,在没有时序例外的情况下,工具会主动解析每一条跨时钟域的路径。XDC的基本语法XDC的基本语法能够分为时钟拘束、I/O拘束以实时序例外拘束三大类

4、。依照Xilinx的 UltraFast设计方法学中Baseline部分的建议(UG949中有详细介绍),对一个设计进行拘束的先后序次也能够依照这三类拘束依次进行。本文对能够在帮助文档中查到的基本XDC语法不做详细讲解,会将重点放在使用方法和技巧上。时钟拘束时钟拘束必定最早创办。对7系列FPGA来说,端口进来的时钟以及GT的输出RXCLK/TXCLK都必定由用户使用create_clock自主创办为主时钟。若是是差分输入的时钟,能够不过在差分对的P侧用get_ports获取端口,并使用create_clock创办。比方,create_clock-nameclk_200-period5get_p

5、ortsclk200_pVivado自动推导的衍生时钟MMCM/PLL/BUFR的输出作为衍生时钟,能够由Vivado自动推导,无需用户创办。自动推导的好处在于当MMCM/PLL/BUFR的配置改变而影响到输出时钟的频率和相位时,用户无需改写拘束,Vivado依旧能够自动推导出正确的频率/相位信息。劣势在于,用户其实不清楚自动推导出的衍生钟的名字,当设计层次改变时,衍生钟的名字也有可能改变。这样就会带来一个问题:用户需要使用这些衍生钟的名字来创办I/O拘束、时钟关系或是时序例外等拘束时,要么不知道时钟名字,要么时钟名字是错的。create_generated_clock-namemy_clk_

6、nameget_pinsmmcm0/CLKOUT-sourceget_pinsmmcm0/CLKIN-master_clockmain_clkPage2介绍的做法是,由用户来指定这类衍生时钟的名字,其余频率等都由Vivado自动推导。这样就只需写明create_generated_clock的三个option,其余不写即可。如上所示。自然,此类情况下用户也能够选择完好由自己定义衍生时钟,只需补上其余表示频率/相位关系的option,包括-multiply_by、-devide_by等等。需要注意的是,一旦Vivado在MMCM/PLL/BUFR的输出检测到用户自定义的衍生时钟,就会报告一个Wa

7、rning,提醒用户这个拘束会覆盖工具自动推导出的衍生时钟(例外的情况见文章下半段重叠时钟部分的描述),用户须保证自己创办的衍生钟的频率等属性正确。用户自定义的衍生时钟工具不能够自动推导出衍生钟的情况,包括使用寄存器和组合逻辑搭建的分频器等,必定由用户使用create_generated_clock来创办。举比以下,INST=REGACLK2D QCEBUFG0CLK1CKP1create_clock-nameclk1-period4get_portsCKP1create_generated_clock-nameclk2get_pinsREGA/Q-sourceget_portsCKP1-di

8、vide_by2I/O拘束在设计的初级阶段,能够不加I/O拘束,让工具专注于满足FPGA内部的时序要求。当时序要求基本满足后,再加上I/O拘束跑实现。XDC中的I/O拘束有以下几点需要注意:1. 不加任何I/O拘束的端口时序要求被视作无量大。2.XDC中的set_input_delay/set_output_delay对应于UCF中OFFSETIN/OFFSETOUT,但视角相反。OFFSETIN/OFFSETOUT是从FPGA内部延时的角度来拘束端口时序,set_input_delay/set_output_delay则是从系统角度来拘束。3.典型的I/O时序,包括系统同步、源同步、SDR和

9、DDR等等,在Vivado图形界面的XDCtemplates中都有示例。2014.1版后还有一个TimingConstraintsWizard可供使用。Page3时序例外拘束时序例外拘束包括set_max_delay/set_min_delay,set_multicycle_path,set_false_path等,这类拘束除了要满足XDC的先后序次优先级外,还碰到自己优先级的限制。一个总的原则就是针对同一条路径,对拘束目标描述越详细的优先级越高。不相同的时序例外拘束以及同一拘束中不相同条件的优先级以下所示:优先级最高set_false_path-frompin-topinset_max_de

10、lay/set_min_delay-throughpin-fromclockset_multicycle_path-toclock优先级最低举例来说,依次执行以下两条XDC,尽管第二条较晚执行,但工具依旧认定第一条拘束设定的15为clk1到clk2之间路径的maxdelay值。Winnerset_max_delay15fromget_clocksclk1toget_clocksclk2set_max_delay12fromget_clocksclk1再比方,对图示路径依次进行以下四条时序例外拘束,优胜者将是第二条。但若是再加入最后一合拘束,falsepath的优先级最高,会取代从前全部的时序例

11、外拘束。WinnerTakePrecedenceset_multicyle_path2throughlut/Aset_multicycle_path3fromREGA/Qset_multicycle_path3toREGB/Dset_multicycle_path2fromCLKA-toCLKBset_false_paththroughlut/OPage4高级时钟拘束拘束最后是为了设计服务,所以要用好XDC就需要深入理解电路结构和设计需求。接下来我们就以常有FPGA设计中的时钟结构来举例,详细阐述XDC的拘束技巧。时序的零起点用 create_clock定义的主时钟的起点即时序的“零起点”,在

12、这从前的上游路径延时都被工具自动忽略。所以主时钟创办在哪个“点”很重要,以以下图所示结构来举例,分别于 FPGA输入端口和BUFG输出端口创办一个主时钟,在时序报告中表现出的路径延时完好不相同,很明显sysclk_bad的报告中缺少了从前一段的延时,时序报告不能信。sys_clksysclk_badcreate_clocknamesysclkperiod10get_portssys_clkDelaytypeIncr(ns)Path(ns)NetlistResource(s)-(clocksysclkriseedge)0.0000.000r0.0000.000rsys_clknet(fo=0)0

13、.0000.000clk_infra_i/sys_clkIBUFG(Prop_ibufg_I_O)0.7660.766rclk_infra_i/clkin1_buf/Onet(fo=3,unplaced)1.1091.875clk_infra_i/clkin1BUFR(Prop_bufr_I_O)0.3142.189rclk_infra_i/sys_clk_buf/Onet(fo=10,unplaced)1.1093.298sys_clk_intrsysrst_sync_reg2/Ccreate_clocknamesysclk_badperiod10get_pinsclk_infra_i/sys_clk_buf/ODelaytypeIncr(ns)Path(ns)NetlistResource(s)-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号