收藏 分销(赏)

Xilinx XDC约束学习笔记.docx

上传人:xrp****65 文档编号:6979810 上传时间:2024-12-24 格式:DOCX 页数:14 大小:653.04KB 下载积分:10 金币
下载 相关 举报
Xilinx XDC约束学习笔记.docx_第1页
第1页 / 共14页
Xilinx XDC约束学习笔记.docx_第2页
第2页 / 共14页


点击查看更多>>
资源描述
时间:2015-05-17 文档: 目录 第一章 介绍 3 一、UCF向XDC的迁移 3 二、关于XDC约束 3 三、添加(Entering)XDC约束 4 第二章 约束方法论 4 一、管理(Organizing)约束文件 4 二、约束命令排序(Ordering Your Constraints) 6 三、添加约束(Entering Constraints) 10 四、创建综合约束 12 第一章 介绍 一、UCF向XDC的迁移 XDC(Xilinx Design Constraints)约束不同于UCF(User Constraints File)约束,XDC约束是基于SDC(Synopsys Design Constraints)约束格式的。SDC已经被使用并演进(evolving)20多年了,这使得它是一种流行的、经过验证的、用于描述设计约束的方法。如果你熟悉UCF,且刚刚开始接触xdc的话,请学习“Differences Between XDC and UCF Constraints”部分(UG911)。为了正确地约束设计,必须要正确理解XDC与UCF的不同之处。通过UCF到XDC格式转换的方法实现XDC的创建,是不能代替对XDC语法以及创建XDC约束的理解的,所以需要理解XDC的原理。 二、关于XDC约束 XDC约束由以下部分组成: 1、 工业标准的Synopsys Design Constraint(SDC),和 2、 Xilinx公司所有的物理约束(physical constraint); XDC约束具有如下特性: 1、 XDC约束不是简单的字符(strings),而是遵循Tcl语法规则的命令; 2、 XDC约束可以像任何Tcl命令一样被Vivado Tcl解析器解析; 3、 XDC约束像其他Tcl命令一样被顺序的读入和解析; 三、添加(Entering)XDC约束 在设计的不同节点,有三种方法添加XDC约束: 1、 将约束保存成可以加入到工程约束集(project constraints set)的一个或者多个文件(GUI方式); 2、 使用read_xdc命令读取约束文件(批处理方式); 3、 打开工程的时候(即将设计导入内存),在Tcl控制台中直接调用约束命令(命令行方式); 第二章 约束方法论 这一章将讨论推荐地添加约束的流程(Constraints Entry Flow)。 设计约束定义了编译流程(the Compilation Flow)中必须满足的设计需求,以使设计上板测试时功能能够正确。在编译流程中,每个步骤使用不同的约束,例如物理约束会在实现(Implementation)步骤中使用,实现步骤包括Placer(布局)和Router(布线)。 因为Vivado IDE(Vivado Integrated Design Environment)综合(Synthesis)与实现(Implementation)算法是时序驱动的(Timing-driven),所以需要创建适宜的(proper)时序约束。过紧约束(Over-constraining)与过松约束(Under-constraining)会使设计的时序逼近变得困难。所以,设计者必须使用切合设计应用需求的约束。 一、管理(Organizing)约束文件 Vivado IDE允许使用一个或者多个约束文件。对设计项目来说,在整个编译过程中仅使用一个约束文件似乎是方便的,但是随着设计复杂度的提升,会越来越难以掌控约束。Xilinx建议将时序约束(timing constraints)与物理约束(physical constraint)分开保存为独立的文件。 1、 工程流程(Project Flow) 在创建新工程的过程中,可以将约束文件XDC添加文件到约束集(Constraints Set),建好工程后添加也可。 Figure 2-1,显示一个工程中添加两个文件: 1) 第一个约束集包含2个XDC文件; 2) 第二个约束集包含了一个带有所有约束的文件; Figure 2-1 Single or Multi XDC 2、 Non-Project Flows 在no-project流程中,执行编译命令之前读取每个约束文件也可以取得Project Flow的相同效果。 Example Script read_verilog [glob src/*.v] read_xdc wave_gen_timing.xdc read_xdc wave_gen_pins.xdc synth_design –top wave_gen opt_design place_design route_design 3、 约束文件的综合与实现属性 默认情况下,添加到工程的约束文件带有综合和实现两种属性。通过如下方法改变约束文件的属性: 1) 在Source window中选择约束文件; 2) 勾选实现属性,不勾选综合属性; 3) 点击应用; Figure 2-2: Source File Properties Window 等效的Tcl命令是: set_property used_in_synthesis false [get_files wave_gen_pins.xdc] set_property used_in_implementation true [get_files wave_gen_pins.xdc] 二、约束命令排序(Ordering Your Constraints) 因为XDC约束是按顺寻应用的,且根据之前的顺序规则进行优化,所以要仔细检查约束的顺序。推荐的约束顺序如下,无论使用一个还是多个约束文件,都应该按照下面的顺序安排约束。 1、 推荐的约束命令顺序 ## Timing Assertions Section # Primary clocks # Virtual clocks # Generated clocks # Clock Groups # Input and output delay constraints ## Timing Exceptions Section # False Paths # Max Delay / Min Delay # Multicycle Paths # Case Analysis # Disable Timing ## Physical Constraints Section # located anywhere in the file, preferably before or after the timing constraints # or stored in a separate XDC file 当使用多个约束文件时,彼此的约束定义最好不要相关,如果相关的话,就要合理安排XDC文件的顺序。约束文件是按文件的顺序读入的。 2、 新编辑的约束命令的顺序 Vivado IDE约束管理器(manager)将被重新编辑的约束命令保存到它位于XDC文件的原始位置。任何新添加的约束文件将被保存到带有target属性的约束文件结尾处。在大多数情况下,当约束集带有多个约束文件时,带有target属性的约束文件通常不是最后(last)一个文件,即当打开工程时该约束文件不是最后导入的。因此,保存在硬盘中的约束可能与之前内存中的约束不通(Vivado软件打开工程时,会将约束导入内存。此时添加新约束时,该新约束被写入内存中,且是位于最后顺序的。而将约束保存到文件后,会将该约束保存到带有target属性的文件中,当下次打开工程时,约束的顺序就与之前不同了)。 3、 约束文件的顺序 在没有任何IP的工程中,所有的约束文件都位于一个约束集(Constraints Set)之中。默认情况下,Vivado IDE所显示的XDC文件的顺序,就定义了工具将综合设计导入内存时读取约束文件的顺序。约束集中约束列表的最顶端约束被最先读到内存,最下边的约束被最后读入内存。该约束的顺序可以通过设置改变。 例如,下图中约束文件顺序的改变。 Changing XDC File Order in the Vivado IDE Example 等效的Tcl命令是: reorder_files -fileset constrs_1 -before [get_files \(“\”不是Tcl命令的符号,仅表示衔接的意思,实际使用时不需要添加在Tcl命令中。) wave_gen_timing.xdc] [get_files wave_gen_pins.xdc] 许多IP核也带有一个或多个XDC文件。当工程中例化了带有XDC文件的IP核时,这些XDC文件也将在编译的过程被用到。 XDC files in the IP Sources 默认情况下,设计者的XDC文件会先于IP的约束文件被读入到内存。对于一些定义了Primary Clock的IP来说,有些特别(Execption)之处,例如Clocking Wizard。这种情况下,IP XDC文件默认会被最先读入到内存中。可以通过PROCESSING_ORDER属性来控制约束文件的顺序。 l EARLY:文件会被最先读入; l NORMAL:(Default); l LATE:文件会被最后读入; 带有上述相同属性的约束文件将由Vivado IDE软件中的先后顺序决定读入的顺序。先创建的带有XDC的IP,与后创建的带有相同属性XDC的IP,先创建IP的XDC将优先读入,且不可更改顺序。 l User Constraints marked as EARLY; l IP Constraints marked as EARLY; l User Constraints marked as NORMAL; l IP Constraints marked as NORMAL; l IP Constraints marked as LATE; l User Constraints marked as LATE; Setting the XDC File PROCESSING_ORDER Example 4、 更改约束文件的顺序 1. Select the XDC file you want to move. 2. Drag and drop the XDC file to the desired place in the list. 三、添加约束(Entering Constraints) Vivado IDE提供了几种方法来添加约束文件,如果没有通过文本编辑器直接编写的话,那么必须要打开一个设计数据库(即一个project)来访问constraints 窗口。 1、 将内存里的约束进行保存 在编辑约束的时候,需要打开一个设计来验证约束的正确性。当使用Vivado IDE软件GUI方式来编辑约束的时候(除了Timing Constraint Editor之外),会在TCL控制台中产生等效的XDC命令,目的是为了将约束应用到内存中。 在进行综合和实现之前,需要将内存中的约束保存到XDC文件。手动保存约束: 1、 click Save,或者 2、 slecet File 〉Save Constraint 2、 添加约束方法(Flow)的选择 1) User Interface Option(UI) 这种方法是指Vivado IDE Editors,例如Device、Physical、Timing或者其他方法,如Tcl Console。 在Vivado IDE管理约束的时候,不能同时编辑XDC文件。当Vivado IDE 保存内存中的内容时: A. 被修改的约束会代替原约束文件中的约束; B. 新产生的约束会被附加到target文件中; C. XDC文件中的所有手动修改内容会被覆盖; a) PIN Assignment 1. Select the I/O Planning pre-configured layout. 2. Open the windows shown in the following table. b) Clock Resources Assignment 1. Select the Clock Planning pre-configured layout. 2. Open the windows shown in the following table. c) Floorplanning 1. Select the Floorplanning pre-configured layout. 2. Open the windows shown in the following table 2) Hand Edit Option 手动编辑的时候,可能需要在Tcl控制台中验证约束的语法,当关闭或者重新导入设计时,必须忽略内存中的修改。 当保存约束发生冲突时,可以选择: A. 忽略内存中的改变,或者 B. 另存新文件,或者 C. 覆盖XDC文件 Figure 2-4 :Constraints Editing Flow 3、 Timing Constraints 时序约束窗口只有在综合与实现之后才会有效。 Multiple Methods for Opening the Timing Constraints Window 约束编辑器显示内存中的时序约束,该约束要么: 1. 与约束文件中的约束相同顺序,要么 2. 与Tcl平台输入的约束命令相同顺序; 约束编辑器可以创建多种约束,但是仅仅是把约束应用到内存中。所以,需要将约束保存后,才可以记录到XDC文件中。 四、创建综合约束 1、 综合约束有三种: • RTL Attributes • Timing Constraints • Physical and Configuration Constraints RTL Attributes: 该约束必须写在RTL代码中(查看Ug901)。被应用在XDC中的RTL属性约束仅有DONT_TOUCH。 set_property DONT_TOUCH true [get_cells fsm_reg] Timing Constraints: • create_clock • create_generated_clock • set_input_delay • set_output_delay • set_clock_groups • set_false_path • set_max_delay • set_multicycle_path Physical and Configuration Constraints: 综合过程忽略该约束。 2、 RTL-Based XDC迭代 推荐:在设计第一个版本的约束文件时,可以使用简单的约束来描述顶层设计(high-level design)的需求。 在设计的该阶段,线网延时的模型仍然是不精确的。该阶段添加约束的主要目的,是在布局布线开始之前获得满足初步时序要求或者带有少量Timing-failled的网表。多数情况下,获得时序满足可能需要进行多次XDC和RTL的迭代。下图是XDC迭代的过程示意图。 编写综合约束时,下列实体是可以安全使用的: l 顶层端口(Top Level ports); l 手动例化的原语(Primitives); 在复杂设计的创建过程中,一些RTL名字丢失或者被修改了。例如: l Single-Bit寄存器的名字; l Multi-Bit寄存器的名字; l 被吸收的(absorbed)寄存器和线网(Nets); l 层级(Hierarchical)名字; a) Single-Bit寄存器的名字 默认情况下,会在原来名字上添加_reg后缀。 例如: reg wbDataForInputReg;//Vreilog Exeample wbDataForInputReg//生成的名字。 b) Multi-Bit寄存器的名字 reg [13:0] validForEgressFifo;//Verilog Example validForEgressFifo_reg//生成的名字。 可以约束单比特或者全部寄存器: l validForEgressFifo_reg[0] l validForEgressFifo_reg[*] c) 被吸收的(absorbed)寄存器和线网(Nets) 如果某些寄存器或者Net因为某些原因而在网表中找不见的话,可以使用其他变量代替。 d) 层级(Hierarchical)名字 如果不强制Vivado软件保留设计的层级,那么设计文件的一些层级将会被打平(Flattened)。所以Xilinx推荐使用不带有-hierarchical的get_*命令。 % get_cells inst_A/inst_B/*_reg % get_cells inst_*/inst_B/control_reg
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服