
XilinxXDC约束学习笔记.doc
17页时间:2015-05-17文档:目录第一章介绍3一、UCF向XDC的迁移3二、关于XDC约束3三、添力口(Entering)XDC约束4第二章约束方法论4一、管理(Organizing)约束文件4二、约束命令排序(OrderingYourConstraints)6三、添加约束(EnteringConstraints)10四、创建综合约束12第一章介绍一、UCF向XDC的迁移XDC(XilinxDesignConstraints)约束不同于UCF(UserConstraintsFile)约束,XDC约束是基于SDC(SynopsysDesignConstraints)约束格式的SDC已经被使用并演进(evolving)20多年了,这使得它是一种流行的、经过验证的、用于描述设计约束的方法如果你熟悉UCF,且刚刚开始接触xdc的话,请学习“DifferencesBetweenXDCandUCFConstraints”部分(UG911)为了正确地约束设计,必须要正确理解XDC与UCF的不同之处通过UCF到XDC格式转换的方法实现XDC的创建,是不能代替对XDC语法以及创建XDC约束的理解的,所以需要理解XDC的原理。
二、关于XDC约束XDC约束由以下部分组成:1、工业标准的SynopsysDesignConstraint(SDC),和2、Xilinx公司所有的物理约束(physicalconstraint);XDC约束具有如下特性:1、XDC约束不是简单的字符(strings),而是遵循Tcl语法规则的命令;2、XDC约束可以像任何Tcl命令一样被VivadoTcl解析器解析;3、XDC约束像其他Tcl命令一样被顺序的读入和解析;三、添加(Entering)XDC约束在设计的不同节点,有三种方法添加XDC约束:1、将约束保存成可以加入到工程约束集(projectconstraintsset)的一个或者多个文件(GUI方式);2、使用read_xdc命令读取约束文件(批处理方式);3、打开工程的时候(即将设计导入内存),在Tcl控制台中直接调用约束命令(命令行方式);第二章约束方法论这一章将讨论推荐地添加约束的流程(ConstraintsEntryFlow)设计约束定义了编译流程(theCompilationFlow)中必须满足的设计需求,以使设计上板测试时功能能够正确在编译流程中,每个步骤使用不同的约束,例如物理约束会在实现(Implementation)步骤中使用,实现步骤包括Placer(布局)和Router(布线)。
因为VivadoIDE(VivadoIntegratedDesignEnvironment)综合(Synthesis)与实现(Implementation)算法是时序驱动的(Timing-driven),所以需要创建适宜的(proper)时序约束过紧约束(Over-constraining)与过松约束(Under-constraining)会使设计的时序逼近变得困难所以,设计者必须使用切合设计应用需求的约束一、管理(Organizing)约束文件VivadoIDE允许使用一个或者多个约束文件对设计项目来说,在整个编译过程中仅使用一个约束文件似乎是方便的,但是随着设计复杂度的提升,会越来越难以掌控约束Xilinx建议将时序约束(timingconstraints)与物理约束(physicalconstraint)分开保存为独立的文件1、工程流程(ProjectFlow)在创建新工程的过程中,可以将约束文件XDC添加文件到约束集(ConstraintsSet),建好工程后添加也可Figure2-1,显示一个工程中添加两个文件:1) 第一个约束集包含2个XDC文件;2) 第二个约束集包含了一个带有所有约束的文件;匕trDesgnSources曲IVsriogHeader:)i-,f』-•-刊:;-Constraints二]l_constrs_l-?窃wave_5en_timmgjcdtt尸-wave_ffen_pwisj(dc?-Lnoorts(rs_2:二wavejgen.xdcf±--SimutatjooSourcesFigure2-1SingleorMultiXDC2、Non-ProjectFlows在no-project流程中,执行编译命令之前读取每个约束文件也可以取得ProjectFlow的相同效果。
ExampleScriptread_verilog[globsrc/*.v]read_xdcwave_gen_timing.xread_xdcwave_gen_pins.xdcsynth_design—topwave_genopt_designplace_designroute_design3、约束文件的综合与实现属性默认情况下,添加到工程的约束文件带有综合和实现两种属性通过如下方法改变约束文件的属性:1)在Sourcewindow中选择约束文件2)勾选实现属性,不勾选综合属性;3)点击应用;匸Figure2-2:SourceFilePropertiesWindowGefler*!AttributesApply]口誓5«iLghon;^/project.wave.gen/prQjecL*^ye_gen.sreType:XDC+Size;2.7KBModified:Tuesday07/03/1204il8;02AMCopied如projectjft'ave_flep.sees止on$tr「l/imports^enlogCopiedfrom;C:脑叮I*2_PZSXC/H,苹SE_DS律vrsNeri切州3Copiedan:Monday05/14/1210:33:50AMReadonly;Nq[/|enabledUsedLn5yrithesis*limrJImplcfnentation目3vi-avejgenjariSuXdc*等效的Tel命令是:set_propertyused_in_synthesisfalse[get_fileswave_gen_pins.xdc]set_propertyused_in_implementationtrue[get_fileswave_gen_pins.xdc]二、约束命令排序(OrderingYourConstraints)因为XDC约束是按顺寻应用的,且根据之前的顺序规则进行优化,所以要仔细检查约束的顺序。
推荐的约束顺序如下,无论使用一个还是多个约束文件,都应该按照下面的顺序安排约束1、推荐的约束命令顺序##TimingAssertionsSection#Primaryclocks#Virtualclocks#Generatedclocks#ClockGroups#Inputandoutputdelayconstraints##TimingExceptionsSection#FalsePaths#MaxDelay/MinDelay#MulticyclePaths#CaseAnalysis#DisableTiming##PhysicalConstraintsSection#locatedanywhereinthefile,preferablybeforeorafterthetimingconstraints#orstoredinaseparateXDCfile当使用多个约束文件时,彼此的约束定义最好不要相关,如果相关的话,就要合理安排XDC文件的顺序约束文件是按文件的顺序读入的2、新编辑的约束命令的顺序VivadoIDE约束管理器(manager)将被重新编辑的约束命令保存到它位于XDC文件的原始位置。
任何新添加的约束文件将被保存到带有target属性的约束文件结尾处在大多数情况下,当约束集带有多个约束文件时,带有target属性的约束文件通常不是最后(last)一个文件,即当打开工程时该约束文件不是最后导入的因此,保存在硬盘中的约束可能与之前内存中的约束不通(Vivado软件打开工程时,会将约束导入内存此时添加新约束时,该新约束被写入内存中,且是位于最后顺序的而将约束保存到文件后,会将该约束保存到带有target属性的文件中,当下次打开工程时,约束的顺序就与之前不同了)3、约束文件的顺序在没有任何IP的工程中,所有的约束文件都位于一个约束集(ConstraintsSet)之中默认情况下,VivadoIDE所显示的XDC文件的顺序,就定义了工具将综合设计导入内存时读取约束文件的顺序约束集中约束列表的最顶端约束被最先读到内存,最下边的约束被最后读入内存该约束的顺序可以通过设置改变例如,下图中约束文件顺序的改变El竝CKm&trs_l佃匚live)ElMconfrtrs.L(dElive)取Iwfl¥e_>gen_tivningjcdctargef.世¥e_genjpinsuicdc防vrave_gienjpin5uxdc鼬mve_gen_timingncdc[target]ChangingXDCFileOrderintheVivadoIDEExample等效的Tel命令是:reorder_files-filesetconstrs_1-before[get_files\(“\”不是Tcl命令的符号,仅表示衔接的意思,实际使用时不需要添加在Tel命令中。
)wave_gen_timing.xde][get_fileswave_gen_pins.xde]许多IP核也带有一个或多个XDC文件当工程中例化了带有默认情况下,设计者的XDC文件会先于IP的约束文件被读入到内存对于一些定义了PrimaryClock的IP来说,有些特别(Execption)之处,例如ClockingWizard这种情况下,IPXDC文件默认会被最先读入到内存中可以通过PROCESSING_ORDER属性来控制约束文件的顺序丄EARLY:文件会被最先读入;NORMAL:(Default);LATE:文件会被最后读入;带有上述相同属性的约束文件将由VivadoIDE软件中的先后顺序决定读入的顺序先创建的带有XDC的IP,与后创建的带有相同属性XDC的IP,先创建IP的XDC将优先读入,且不可更改顺序UserConstraintsmarkedasEARLY;IPConstraintsmarkedasEARLY;UserConstraintsmarkedasNORMAL;IPConstraintsmarkedasNORMAL;IPConstraintsmarkedasLATE;UserConstraintsmarkedasLATE;SettingtheXDCFilePROCESSING_ORDERExample4、更改约束文件的顺序1. SelecttheXDCfileyouwanttomove.2. DraganddroptheXDCfiletothedesiredplaceinthelist.三、添加约束(EnteringConstraints)VivadoIDE提供了几种方法来添加约束文件,如果没有通过文本编辑器直接编写的话,那么必须要打开一个设计数据库(即一个project)来访问constraints窗口。
1、将内存里的约束进行保存在编辑约束的时候,需要打开一个设计来验证约。












