XDC约束技巧——时钟篇

fpga如何约束走线_XDC约束技巧——时钟篇 本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。Xilinx©的新一代设计套件Vivado®中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE 中支持的UCF 大不相同,给使用者带来许多额外挑战。Xilinx 工具专家告诉你,其实用好XDC 很容易,只需掌握几点核心技巧,并且时刻牢记:XDC 的语法其实就是Tcl 语言。... 阅读详情

本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。

Xilinx©的新一代设计套件Vivado®中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE 中支持的UCF 大不相同,给使用者带来许多额外挑战。Xilinx 工具专家告诉你,其实用好XDC 很容易,只需掌握几点核心技巧,并且时刻牢记:XDC 的语法其实就是Tcl 语言。

原标题:【Vivado使用误区与进阶】XDC约束技巧——时钟篇

01

XDC的优势

XDC 是Xilinx Design Constraints 的简写,但其基础语法来源于业界统一的约束规范SDC(最早由Synopsys 公司提出,故名Synopsys DesignConstraints) 。所以SDC、XDC 跟Vivado Tcl 的关系如图所示。

XDC 的主要优势包括:

1. 统一了前后端约束格式,便于管理;

2. 可以像命令一样实时录入并执行;

3. 允许增量设置约束,加速调试效率;

4. 覆盖率高,可扩展性好,效率高;

5. 业界统一,兼容性好,可移植性强;

XDC 在本质上就是Tcl 语言,但其仅支持基本的Tcl 语法如变量、列表和运算符等等,对其它复杂的循环以及文件I/O 等语法可以通过在Vivado中source 一个Tcl 文件的方式来补充。(对Tcl 话题感兴趣的读者可以参考作者的另一篇文章《Tcl 在Vivado 中的应用》)XDC 与UCF 的最主要区别有两点:

1. XDC 可以像UCF 一样作为一个整体文件被工具读入,也可以在实现过程中被当作一个个单独的命令直接执行。这就决定了XDC 也具有Tcl命令的特点,即后面输入的约束在有冲突的情况下会覆盖之前输入的约束(时序例外的优先级会在下节详述)。另外,不同于UCF 是全部读入再处理的方式,在XDC 中,约束是读一条执行一条,所以先后顺序很重要,例如要设置IO 约束之前,相对应的clock 一定要先创建好。

2. UCF 是完全以FPGA 的视角看问题,所以缺省认为所有的时钟之间除非预先声明是同步的,否则就视作异步而不做跨时钟域时序分析;XDC则恰恰相反,ASIC 世界的血缘背景决定了在其中,所有的时钟缺省视作全同步,在没有时序例外的情况下,工具会主动分析每一条跨时钟域的路径。

02

XDC的基本语法

XDC 的基本语法可以分为时钟约束、I/O 约束以及时序例外约束三大类。根据Xilinx 的UltraFast 设计方法学中Baseline 部分的建议(UG949 中有详细介绍),对一个设计进行约束的先后顺序也可以依照这三类约束依次进行。本文对可以在帮助文档中查到的基本XDC 语法不做详细解释,会将重点放在使用方法和技巧上。

XDC的基本语法

时钟约束必须最早创建。对7 系列FPGA 来说,端口进来的时钟以及GT 的输出RXCLK/TXCLK 都必须由用户使用create_clock 自主创建为主时钟。如果是差分输入的时钟,可以仅仅在差分对的P 侧用get_ports获取端口,并使用create_clock 创建。例如:

Vivado 自动推导的衍生时钟

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

推荐的做法是,由用户来指定这类衍生时钟的名字,其余频率等都由Vivado 自动推导。这样就只需写明create_generated_clock 的三个option,其余不写即可。如上所示。当然,此类情况下用户也可以选择完全由自己定义衍生时钟,只需补上其余表示频率/相位关系的option,包括-multiply_by 、-divide_by 等等。需要注意的是,一旦Vivado 在MMCM/PLL/BUFR 的输出检测到用户自定义的衍生时钟,就会报告一个Warning,提醒用户这个约束会覆盖工具自动推导出的衍生时钟(例外的情况见文章下半段重叠时钟部分的描述),用户须保证自己创建的衍生钟的频率等属性正确。

用户自定义的衍生时钟

工具不能自动推导出衍生钟的情况,包括使用寄存器和组合逻辑搭建的分频器等,必须由用户使用create_generated_clock 来创建。举例如下:

03

I/O约束

在设计的初级阶段,可以不加I/O 约束,让工具专注于满足FPGA 内部的时序要求。当时序要求基本满足后,再加上I/O 约束跑实现。XDC 中的I/O 约束有以下几点需要注意:

1. 不加任何I/O 约束的端口时序要求被视作无穷大。

2. XDC 中的set_input_delay / set_output_delay 对应于UCF 中OFFSET IN / OFFSET OUT,但视角相反。OFFSET IN / OFFSET OUT 是从FPGA 内部延时的角度来约束端口时序,set_input_delay /set_output_delay 则是从系统角度来约束。

3. 典型的I/O 时序,包括系统同步、源同步、SDR 和DDR 等等,在Vivado 图形界面的XDC templates 中都有示例。2014.1 版后还有一个Timing Constraints Wizard 可供使用。

04

时序例外约束

时序例外约束包括(

set_max_delay/set_min_delay

set_multicycle_pat;

set_false_path 等),

这类约束除了要满足XDC 的先后顺序优先级外,还受到自身优先级的限制。一个总的原则就是针对同一条路径,对约束目标描述越具体的优先级越高。不同的时序例外约束以及同一约束中不同条件的优先级如下所示:

举例来说,依次执行如下两条XDC,尽管第二条较晚执行,但工具仍然认定第一条约束设定的15 为clk1到clk2 之间路径的max delay 值。

再比如,对图示路径依次进行如下四条时序例外约束,优胜者将是第二条。但如果再加入最后一条约束,false path 的优先级最高,会取代之前所有的时序例外约束。

05

高级时钟约束

时序的零起点

用create_clock 定义的主时钟的起点即时序的“零起点”,在这之前的上游路径延时都被工具自动忽略。所以主时钟创建在哪个“点”很重要,以下图所示结构来举例,分别于FPGA 输入端口和BUFG 输出端口创建一个主时钟,在时序报告中体现出的路径延时完全不同,很明显sysclk_bad 的报告中缺少了之前一段的延时,时序报告不可信。

时钟定义的先后顺序

时钟的定义也遵从XDC/Tcl 的一般优先级,即:在同一个点上,由用户定义的时钟会覆盖工具自动推导的时钟,且后定义的时钟会覆盖先定义的时钟。若要二者并存,必须使用 -add 选项。

上述例子中BUFG 的输出端由用户自定义了一个衍生钟clkbufg,这个衍生钟便会覆盖此处原有的sysclk。此外,图示BUFR 工作在bypass 模式,其输出不会自动创建衍生钟,但在BUFR 的输出端定义一个衍生钟clkbufr,并使用 -add 和 -master_clock 选项后,这一点上会存在sysclk 和clkbufg 两个重叠的时钟。如下的Tcl 命令验证了我们的推论。

06

同步时钟和异步时钟

不同于UCF 约束,在XDC 中,所有的时钟都会被缺省认为是相关的,也就是说,网表中所有存在的时序路径都会被Vivado 分析。这也意味着FPGA 设计人员必须通过约束告诉工具,哪些路径是无需分析的,哪些时钟域之间是异步的。

如上图所示,两个主时钟ssclkin 和sysclk 由不同的端口进入FPGA,再经由不同的时钟网络传递,要将它们设成异步时钟,可以使用如下约束:

其中,-include_generated_clocks 表示所有衍生钟自动跟其主时钟一组,从而与其它组的时钟之间为异步关系。不加这个选项则仅仅将时钟关系的约束应用在主时钟层面。

重叠(单点多个)时钟

重叠时钟是指多个时钟共享完全相同的时钟传输网络,例如两个时钟经过一个MUX 选择后输出的时钟,在有多种运行模式的设计中很常见。Vivado 使用误区与进阶如下图所示,clk125 和clk250 是clkcore_buf 的两个输入时钟,不约束时钟关系的情况下,Vivado 会对图示路径做跨时钟域(重叠时钟之间)分析。这样的时序报告即便没有违例,也是不可信的,因为clk125 和clk250 不可能同时驱动这条路径上的时序元件。这么做也会增加运行时间,并影响最终的实现效果。

如果clk125 和clk250 除了通过clkcore_buf 后一模一样的扇出外没有驱动其它时序元件,我们要做的仅仅是补齐时钟关系的约束。

在很多情况下,除了共同的扇出,其中一个时钟或两个都还驱动其它的时序元件,此时建议的做法是在clkcore_buf 的输出端上创建两个重叠的衍生钟,并将其时钟关系约束为-physically_exclusive 表示不可能同时通过。这样做可以最大化约束覆盖率,也是ISE 和UCF 中无法做到的。

07

其他高级约束

时钟的约束是XDC 的基础,熟练掌握时钟约束,也是XDC 约束技巧的基础。其它高级约束技巧,包括复杂的CDC(Clock Domain Crossing)约束和接口时序(SDR、DDR、系统同步接口和源同步接口)约束等方面还有很多值得注意的地方。

作者:Ally Zhou

整理:碎碎思

版权归原作者所有

---> END <---

NOW现在行动!

推荐阅读

【Vivado那些事】如何查找官网例程及如何使用官网例程

【每周一问】如何控制加载FPGA程序时,Xilinx FPGA的IO管脚输出高低电平

【每周一问】Vivado综合时突然OCC模式弹不出来了

一文读懂Tcl在Vivado中的应用

用Tcl定制Vivado设计实现流程
在Vivado中实现ECO功能

点击上方字体即可跳转阅读哟

Create_generated_clock generated clock 阅读详情

相关推荐

vivado 一文归纳出时序约束

vivado 一文归纳出时序约束 包括主时钟以及异步时钟组、多周期约束、伪路径约束等

aaa23d1的博客 1958

XDC 约束技巧

IO 时序约束

civee的博客 3844

vivado路径最大时钟约束_Vivado使用误区与进阶系列(五)XDC约束技巧之I/O篇(下)...

XDC约束技巧之CDC篇继《XDC 约束技巧之 I/O 篇(上) 》详细描述了如何设置 Input 接口约束后,我们接着来聊聊怎样设置 Output 接口约束,并分析 UCF 与 XDC 在接口约束上的区别。本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。FPGA 做 Output 的接口时序同样也可以分为系统同步与源同步。在设 置 XD...

weixin_34470566的博客 723

create_generated_clock

create_generated_clock 介绍 create_generated_clock有多个master_clock的情况 create_generated_clock的时钟占空比不是50的情况1. create_generated_clock 介绍create_generated_clock 是用来说明generated clock与source clock的相位(边沿)关系, 同时根

学而不思则罔,思而不学则殆 4万+

(63)时序约束:[create_generated_clock约束]

1.1 本节目录1.2 基本时序约束概念1.3 时序约束:[create_generated_clock]1.4 结束语。

m0_46498597的博客 1510

电机控制-PMSM无感FOC控制(五)SVPWM过调制策略优化与谐波抑制

本文深入探讨了PMSM无感FOC控制中的SVPWM过调制策略优化与谐波抑制。针对电机高速运行时电压利用率不足的问题,分析了过调制技术的必要性,并详细阐述了分区过调制、谐波注入及闭环优化等主流策略,旨在提升电压利用率与抑制电流谐波,实现电机高性能控制。

convnet3designer的博客 343

vivado xdc约束基础知识1:XDC约束技巧之时钟篇

来自:http://xilinx.eetrend.com/article/7734XDC约束技巧之时钟篇Xilinx©的新一代设计套件 Vivado 中引入了全新的约束文件 XDC,在很多规则和技巧上都跟上一代产品 ISE 中支持的 UCF 大不相同,给使用者带来许多额外挑战。Xilinx 工具专家告诉你,其实用好 XDC 很容易,只需掌握几点核心技巧,并且时刻牢记:XDC 的语法其实就是 Tcl...

时间的诗 1万+

Oracle Scheduler任务故障诊断 实战指南

当基础环境无异常时,需聚焦任务本身的配置与状态。定义(JOB)→ 调度(SCHEDULE)→ 执行(SLAVE进程)→ 日志(LOG),每个环节都可能存在卡点。Oracle Scheduler任务的“隐性故障”看似棘手,实则是环境配置、资源竞争、时间逻辑等问题的集中体现。通过本文的诊断工具和排查思路,你可以构建从“基础环境→任务配置→执行链路→日志追踪”的全维度分析体系,让每一个“消失”的任务都无所遁形。

Nuzbb的博客 1071

XDC约束技巧之时钟篇

Xilinx©的新一代设计套件 Vivado 中引入了全新的约束文件 XDC,在很多规则和技巧上都跟上一代产品 ISE 中支持的 UCF 大不相同,给使用者带来许多额外挑战。Xilinx 工具专家告诉你,其实用好 XDC 很容易,只需掌握几点核心技巧,并且时刻牢记:XDC 的语法其实就是 Tcl 语言。 XDC 的优势 XDC 是 Xilinx Design Constraints 的简写,但

坚持 9391

告别上位机!用MCGS触摸屏+FTP服务器,5分钟搞定工控机文件自动同步

本文介绍了一种工业自动化领域的高效解决方案,通过MCGS触摸屏结合FTP服务器实现工控机文件的自动同步,无需开发上位机软件。该方案特别适用于图像采集、参数同步、数据备份等场景,具有成本低、可靠性高、维护简便等优势。详细配置指南和实战案例帮助用户快速实现零代码文件同步。

weixin_30872499的博客 554

【Bug已解决】codex: debug 模式无输出 — CodeX CLI 调试模式不工作解决方案

CodeX CLI 开启 debug 模式后无输出/日志不打印的解决方案,含 debug 开关、日志级别、stderr 重定向与 IDE 日志面板。

一键难忘的博客 4155

【Vivado使用误区与进阶】XDC约束技巧之时钟篇

【Vivado使用误区与进阶】XDC约束技巧之时钟篇 Xilinx 的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧,并且时刻牢记:XDC的语法其实就是Tcl语言。 XDC的优势: XDC是Xilinx Design Constraints的简写,但其基础语法来源于业界统一的约束规范SDC(最早由Synopsys公司提出,故名Synopsys

花信风的博客 4780

第1课:开篇扫盲——OpenClaw是什么?能帮你解决什么问题?(入门必看)

核心目标:学会安装、卸载、管理OpenClaw技能,自定义AI代理的性格与权限,让AI贴合自己的使用习惯。核心内容技能市场详解:ClawHub市场核心技能分类(办公、学习、开发、生活),热门技能推荐(web-search、文件处理、邮件管理)[superscript:3][superscript:4]。技能安装与卸载:终端命令实操(openclaw skill install/uninstall),技能更新与版本管理[superscript:3]。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1735

Vivado使用误区与进阶】XDC约束技巧之时钟篇

Vivado使用误区与进阶】XDC约束技巧之时钟篇

dxz44444的博客 567

YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强

本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。

魔改工程师的博客 667

fatal: unable to access ‘https://github.com/Stability-AI/stablediffusion.git/‘解决方案

本文主要介绍在安装 stable-diffusion-webui 时出现的 fatal: unable to access 'https://github.com/Stability-AI/stablediffusion.git/': Failed to connect to github.com port 443 after 21071 ms: Couldn't connect to server 问题的解决方案,希望能对你有所帮助。

水滴的博客 5678

XDC约束技巧——时钟篇【XDC其基础语法来源于业界统一的约束规范SDC】

描述XDC——VIVADOUCF——ISEUCF与 XDC 约束/命令之间有什么区别?解决方案UCF 约束和 XDC 命令之间有很多区别。以下列出了部分差异:对I/O来说,UCF 约束定义 FPGA 内部延迟,而 XDC 命令定义的是时钟与上下游器件的内部和外部关系。UCF 约束基于时序组 (TNM、TNM_NET、TIMEGRP),而 XDC 命令则基于实例 (get_cell)、网络 (get...

u012923751的博客 4519

Windows 11 安装 MySQL 8.4:安装包方式、下载、安装、使用

本文详细介绍了在 Windows 11 系统下通过 MSI 安装包方式安装 MySQL 8.4 LTS 社区版的完整流程,包括版本选择、下载、自定义安装路径、服务配置、日志设置、示例数据库创建及后续使用方法。同时提供了命令行客户端与图形化工具 DBeaver 的连接与操作演示,适合初学者和开发者快速搭建本地 MySQL 开发环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2241

【Vivado使用误区与进阶】XDC约束技巧——时钟篇

转自http://www.globalicnet.com/bbs/question/detail_3102.html Xilinx 的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧,并且时刻牢记:XDC的语法其实就是Tcl

ascend的专栏 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

vivado路径最大时钟约束_【Vivado使用误区与进阶】XDC约束技巧之时钟篇

Xilinx 的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧,并且时刻牢记:XDC的语法其实就是Tcl语言。XDC的优势XDC是Xilinx Design Constraints的简写,但其基础语法来源于业界统一的约束规范SDC(...

weixin_28895307的博客 872

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VIVADO使用误区与进阶之2:XDC约束技巧之时钟篇

一:XDC的基本语法 XDC 的基本语法可以分为时钟约束、 I/O 约束以及时序例外约束三大类。根据 Xilinx 的 UltraFast 设计方法学中 Baseline 部分的建议( UG949 中有详细介绍),对一个设计进行约束的先后顺序也可以依照这三类约束依次进行。 1. 时钟约束 时钟约束必须最早创建。 vivado自动推导的衍生时钟 好处:MMCM/PLL/BUFR 的配置改变而影响到输出时钟的频率和相位时,用户无需改写约束, Vivado 仍然可以自动推导出正确的频率/相位信息。 劣势:用

tanfuz的博客 1698

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ise 时钟约束_Vivado使用误区与进阶系列(二)XDC约束技巧之时钟篇

本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。Xilinx©的新一代设计套件Vivado®中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE 中支持的UCF 大不相同,给使用者带来许多额外挑战。Xilinx 工具专家告诉你,其实用好XDC 很容易,只需掌握几点核心技巧,并且时刻牢记:XDC 的语法其实就是Tcl 语言。...

weixin_39632467的博客 944
上一篇: RTL中的惯性延迟和传输延迟
下一篇: 【EDA】EDAgit: Ubuntu下编译EpicSim(iVerilog国产升级版)
OpenFPGA
博客等级 码龄11年 1万+粉丝 982原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值