为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Xilinx XDC约束学习笔记

2020-03-18 2页 doc 653KB 24阅读

用户头像 个人认证

xxj7584

暂无简介

举报
Xilinx XDC约束学习笔记时间: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约束是基于S...
Xilinx XDC约束学习笔记
时间: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),和1.Xilinx公司所有的物理约束(physicalconstraint);XDC约束具有如下特性:1.XDC约束不是简单的字符(strings),而是遵循Tcl语法规则的命令;1.XDC约束可以像任何Tcl命令一样被VivadoTcl解析器解析;1.XDC约束像其他Tcl命令一样被顺序的读入和解析;三、添加(Entering)XDC约束在设计的不同节点,有三种方法添加XDC约束:1.将约束保存成可以加入到工程约束集(projectconstraintsset)的一个或者多个文件(GUI方式);1.使用read_xdc命令读取约束文件(批处理方式);1.打开工程的时候(即将设计导入内存),在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文件;1.第二个约束集包含了一个带有所有约束的文件;Figure2-1SingleorMultiXDC1.Non-ProjectFlows在no-project流程中,执行编译命令之前读取每个约束文件也可以取得ProjectFlow的相同效果。ExampleScriptread_verilog[globsrc/*.v]read_xdcwave_gen_timing.xdcread_xdcwave_gen_pins.xdcsynth_design–topwave_genopt_designplace_designroute_design1.约束文件的综合与实现属性 默认情况下,添加到工程的约束文件带有综合和实现两种属性。通过如下方法改变约束文件的属性:1.在Sourcewindow中选择约束文件;1.勾选实现属性,不勾选综合属性;1.点击应用;Figure2-2:SourceFilePropertiesWindow等效的Tcl命令是: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文件的顺序。约束文件是按文件的顺序读入的。1.新编辑的约束命令的顺序 VivadoIDE约束管理器(manager)将被重新编辑的约束命令保存到它位于XDC文件的原始位置。任何新添加的约束文件将被保存到带有target属性的约束文件结尾处。在大多数情况下,当约束集带有多个约束文件时,带有target属性的约束文件通常不是最后(last)一个文件,即当打开工程时该约束文件不是最后导入的。因此,保存在硬盘中的约束可能与之前内存中的约束不通(Vivado软件打开工程时,会将约束导入内存。此时添加新约束时,该新约束被写入内存中,且是位于最后顺序的。而将约束保存到文件后,会将该约束保存到带有target属性的文件中,当下次打开工程时,约束的顺序就与之前不同了)。1.约束文件的顺序 在没有任何IP的工程中,所有的约束文件都位于一个约束集(ConstraintsSet)之中。默认情况下,VivadoIDE所显示的XDC文件的顺序,就定义了工具将综合设计导入内存时读取约束文件的顺序。约束集中约束列的最顶端约束被最先读到内存,最下边的约束被最后读入内存。该约束的顺序可以通过设置改变。 例如,下图中约束文件顺序的改变。ChangingXDCFileOrderintheVivadoIDEExample等效的Tcl命令是:reorder_files-filesetconstrs_1-before[get_files\(“\”不是Tcl命令的符号,仅表示衔接的意思,实际使用时不需要添加在Tcl命令中。)wave_gen_timing.xdc][get_fileswave_gen_pins.xdc] 许多IP核也带有一个或多个XDC文件。当工程中例化了带有XDC文件的IP核时,这些XDC文件也将在编译的过程被用到。XDCfilesintheIPSources 默认情况下,设计者的XDC文件会先于IP的约束文件被读入到内存。对于一些定义了PrimaryClock的IP来说,有些特别(Execption)之处,例如ClockingWizard。这种情况下,IPXDC文件默认会被最先读入到内存中。可以通过PROCESSING_ORDER属性来控制约束文件的顺序。1.EARLY:文件会被最先读入;1.NORMAL:(Default);1.LATE:文件会被最后读入; 带有上述相同属性的约束文件将由VivadoIDE软件中的先后顺序决定读入的顺序。先创建的带有XDC的IP,与后创建的带有相同属性XDC的IP,先创建IP的XDC将优先读入,且不可更改顺序。1.UserConstraintsmarkedasEARLY;1.IPConstraintsmarkedasEARLY;1.UserConstraintsmarkedasNORMAL;1.IPConstraintsmarkedasNORMAL;1.IPConstraintsmarkedasLATE;1.UserConstraintsmarkedasLATE;SettingtheXDCFilePROCESSING_ORDERExample1.更改约束文件的顺序1.SelecttheXDCfileyouwanttomove.2.DraganddroptheXDCfiletothedesiredplaceinthelist.三、添加约束(EnteringConstraints) VivadoIDE提供了几种方法来添加约束文件,如果没有通过文本编辑器直接编写的话,那么必须要打开一个设计数据库(即一个project)来访问constraints窗口。1.将内存里的约束进行保存在编辑约束的时候,需要打开一个设计来验证约束的正确性。当使用VivadoIDE软件GUI方式来编辑约束的时候(除了TimingConstraintEditor之外),会在TCL控制台中产生等效的XDC命令,目的是为了将约束应用到内存中。 在进行综合和实现之前,需要将内存中的约束保存到XDC文件。手动保存约束:1.clickSave,或者1.slecetFile〉SaveConstraint1.添加约束方法(Flow)的选择1.UserInterfaceOption(UI)这种方法是指VivadoIDEEditors,例如Device、Physical、Timing或者其他方法,如TclConsole。 在VivadoIDE管理约束的时候,不能同时编辑XDC文件。当VivadoIDE保存内存中的内容时:1.被修改的约束会代替原约束文件中的约束;1.新产生的约束会被附加到target文件中;1.XDC文件中的所有手动修改内容会被覆盖;0.PINAssignment1.SelecttheI/OPlanningpre-configuredlayout.1.Openthewindowsshowninthefollowingtable.0.ClockResourcesAssignment1.SelecttheClockPlanningpre-configuredlayout.1.Openthewindowsshowninthefollowingtable.0.Floorplanning1.SelecttheFloorplanningpre-configuredlayout.1.Openthewindowsshowninthefollowingtable1.HandEditOption 手动编辑的时候,可能需要在Tcl控制台中验证约束的语法,当关闭或者重新导入设计时,必须忽略内存中的修改。当保存约束发生冲突时,可以选择:1.忽略内存中的改变,或者1.另存新文件,或者1.覆盖XDC文件Figure2-4:ConstraintsEditingFlow1.TimingConstraints时序约束窗口只有在综合与实现之后才会有效。MultipleMethodsforOpeningtheTimingConstraintsWindow约束编辑器显示内存中的时序约束,该约束要么:1.与约束文件中的约束相同顺序,要么1.与Tcl平台输入的约束命令相同顺序;约束编辑器可以创建多种约束,但是仅仅是把约束应用到内存中。所以,需要将约束保存后,才可以记录到XDC文件中。四、创建综合约束1.综合约束有三种:•RTLAttributes•TimingConstraints•PhysicalandConfigurationConstraintsRTLAttributes:该约束必须写在RTL代码中(查看Ug901)。被应用在XDC中的RTL属性约束仅有DONT_TOUCH。set_propertyDONT_TOUCHtrue[get_cellsfsm_reg]TimingConstraints:•create_clock•create_generated_clock•set_input_delay•set_output_delay•set_clock_groups•set_false_path•set_max_delay•set_multicycle_pathPhysicalandConfigurationConstraints:综合过程忽略该约束。1.RTL-BasedXDC迭代推荐:在设计第一个版本的约束文件时,可以使用简单的约束来描述顶层设计(high-leveldesign)的需求。 在设计的该阶段,线网延时的模型仍然是不精确的。该阶段添加约束的主要目的,是在布局布线开始之前获得满足初步时序要求或者带有少量Timing-failled的网表。多数情况下,获得时序满足可能需要进行多次XDC和RTL的迭代。下图是XDC迭代的过程示意图。 编写综合约束时,下列实体是可以安全使用的:1.顶层端口(TopLevelports);1.手动例化的原语(Primitives);在复杂设计的创建过程中,一些RTL名字丢失或者被修改了。例如: 1.Single-Bit寄存器的名字;1.Multi-Bit寄存器的名字;1.被吸收的(absorbed)寄存器和线网(Nets);1.层级(Hierarchical)名字;1.Single-Bit寄存器的名字默认情况下,会在原来名字上添加_reg后缀。例如: regwbDataForInputReg;//VreilogExeample wbDataForInputReg//生成的名字。1.Multi-Bit寄存器的名字reg[13:0]validForEgressFifo;//VerilogExamplevalidForEgressFifo_reg//生成的名字。 可以约束单比特或者全部寄存器:1.validForEgressFifo_reg[0]1.validForEgressFifo_reg[*]1.被吸收的(absorbed)寄存器和线网(Nets)如果某些寄存器或者Net因为某些原因而在网表中找不见的话,可以使用其他变量代替。1.层级(Hierarchical)名字如果不强制Vivado软件保留设计的层级,那么设计文件的一些层级将会被打平(Flattened)。所以Xilinx推荐使用不带有-hierarchical的get_*命令。%get_cellsinst_A/inst_B/*_reg%get_cellsinst_*/inst_B/control_reg
/
本文档为【Xilinx XDC约束学习笔记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索