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

20 篇文章 56 订阅
订阅专栏

来自:http://xilinx.eetrend.com/article/7734


XDC约束技巧之时钟篇


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

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

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 世界的血缘背景决定了在其中,所有的时钟缺省视作全同步,在没有时序例外的情况下,工具会主动分析每一条跨时钟域的路径。

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

时钟约束
时钟约束必须最早创建,对7系列FPGA来说,端口进来的主时钟以及GT的输出RXCLK/TXCLK都必须由用户使用create_clock自主创建。而衍生时钟则分为以下两类:
MMCM/PLL/BUFR的输出时钟都可以由Vivado自动推导,无需用户创建。若用户仅希望改变衍生钟的名字,其余频率等都由工具自动推导,则只需写明三个option,其余不写即可:create_generated_clock [-name arg] [-source args] [-master_clock arg] 工具不能自动推导出衍生钟的情况,包括使用寄存器和组合逻辑搭建的分频器等,必须由用户使用create_generated_clock来创建。

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

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

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

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

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

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

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

高效的时钟约束
约束最终是为了设计服务,所以要用好XDC就需要深入理解电路结构和设计需求。接下来我们就以常见FPGA设计中的时钟结构来举例,详细阐述XDC的约束技巧。

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


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


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

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

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

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

重叠(单点多个)时钟
重叠时钟是指多个时钟共享完全相同的时钟传输网络,例如两个时钟经过一个MUX选择后输出的时钟,在有多种运行模式的设计中很常见。

如下图所示,clk125和clk250是clkcore_buf的两个输入时钟,不约束时钟关系的情况下,Vivado会对图示路径做跨时钟域(重叠时钟之间)分析。这样的时序报告即便没有违例,也是不可信的,因为clk125和clk250不可能同时驱动这条路径上的时序元件。这么做也会增加运行时间,并影响最终的实现效果。


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

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

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

这一系列《XDC约束技巧》文章还会继续就上述所列方向分篇详述,敬请关注作者的后续更新,以及Xilinx 官方网站和中文论坛上的更多技术文章。


Vivado使用误区与进阶-XDC约束IO
05-06
Vivado使用误区与进阶-XDC约束IO,一些关于vivado约束的使用方式方法
XDC 约束技巧时钟.pdf
07-28
XDC 约束技巧时钟
vivado】 clock wizard 时钟IP
最新发布
liuchj的博客
03-12 982
原因如下:与PLL输出时钟驱动的逻辑单元需要保持复位状态,直到PLL的LOCKED信号输出拉高为时,此刻表明时钟被锁定,PLL处于稳定的状态,因此LOCKED在设计常会用作复位信号。MMCM和PLL是在FPGA设计中不可避免需要使用到的时钟资源,对于其功能及使用方法的理解是正确进行FPGA设计的前提。clk_in 输入时钟,一般为班上晶振引入时钟或者serdes恢复时钟以及其他专用时钟引脚输入时钟时钟IP会自动在综合实现中生成相应的时钟约束,因此不需要约束文件中在对相关时钟进行时钟约束
vivado生成时钟分析
cckkppll的博客
12-21 594
vivado生成时钟分析
Vivado时序约束(转载)
wangyanchao151的专栏
05-21 2807
Vivado时序约束 本文主要介绍如何在Vivado设计套件中进行时序约束,原文出自Xilinx中文社区。 1 Timing Constraints in Vivado -UCF to XDC Vivado软件相比于ISE的一大转变就是约束文件,ISE软件支持的是UCF(User Constraints File),而Vivado软件转换到了XDC(Xilinx Design Constr...
16、XDC引脚约束
m0_52197400的博客
09-26 404
FPGA引脚约束
XDC约束技巧时钟
坚持
01-27 8552
Xilinx©的新一代设计套件 Vivado 中引入了全新的约束文件 XDC,在很多规则和技巧上都跟上一代产品 ISE 中支持的 UCF 大不相同,给使用者带来许多额外挑战。Xilinx 工具专家告诉你,其实用好 XDC 很容易,只需掌握几点核心技巧,并且时刻牢记:XDC 的语法其实就是 Tcl 语言。 XDC 的优势 XDC 是 Xilinx Design Constraints 的简写,但
【 FPGA 】Xilinx设计约束XDC)中时钟约束的表示方法
Reborn Lee
12-16 1万+
目录     时钟描述 基本时钟 虚拟时钟 生成时钟 时钟描述 (1)clk0的时钟属性:周期为10ns,占空比为50%,相移为0ns;(相移也可以用°来表示,例如相移位0°,相移为90°等) (2)clk1的时钟属性:周期为8ns,占空比为75%,相移为2ns;(相移为2ns,也就是相移为90°) 描述时钟,默认第一个值为上升沿,占空比是高电平占周期的比。 则上图中时钟...
XDC约束技巧--时钟
Leo_9824的博客
08-25 2185
1、XDC \quadXDC本质上是tcl语言 1) 顺序很重要 \quad约束是一条一条执行的,后面输入的约束在有冲突的情况下会覆盖之前的约束时序例外除外,由优先级决定) 2) 时钟域 \quad没有声明的情况下认为所有时钟都是同步的。没有时序例外的情况下分析每条跨时钟路径 3) 约束 \quad时钟约束、I/O约束时序例外约束 2、时钟约束 \quadcreate_clock –name clk1 –period 4 [get_ports CKP1] \quadcreate_generate
时序约束优先级
weixin_46102591的博客
05-05 784
xdc文件中,按约束的先后顺序依次被执行,因此,针对同一个时钟的不同约束,只有最后一条约束生效。 虽然执行顺序是从前到后,但优先级却不同;就像四则运算一样,+-x÷都是按照从左到右的顺序执行,但x÷的优先级比+-要高。 时序例外的优先级从高到低为: ① Clock Groups (set_clock_groups) ② False Path (set_false_path) ③ Maximum Delay Path (set_max_delay) and Minimum Delay Path (set
Vivado XDC文件
青春易逝,愿不负昭华,期待梦与远方
11-15 1万+
前言 可以参考《Xilinx FPGA权威设计指南》,还有Xilinx提供的手册,如下图所示。文后的参考文献也不错,值得阅读。 1、UCF/XDC常用命令 UCF约束XDC命令之间的映射关系 UCF XDC 作用 TIMESPEC PERIOD create_clock create_generated_clock O...
XDC约束技巧-时钟1.1
11-10
vivado下,怎么进行时序约束的文档,比较具体
XDC约束技巧-IO(上)1.1.rar_.xdc_fpga_vivado_xdc
09-20
xdc约束技巧的介绍,非常棒的材料,很值得学习
Vivado使用误区与进阶-XDC约束IO上.pdf
12-30
Vivado使用误区与进阶-XDC约束IO上.pdf
Vivado约束脚本使用汇总
06-25
Vivado约束脚本使用汇总
xilinx FPGA的约束文件UCF转XDC的工具
03-01
UCF格式是ISE工具的约束使用文件,XDC格式是VIVADO工具的约束使用文件。而硬件在设计时一般是使用cadence设计的,cadence能直接导出UCF格式的管脚约束,不能导出XDC格式,这个时候ucf转XDC工具就很有用了。
vivado:解读xdc约束文件
m0_46830519的博客
06-07 5296
解读xdc
博客摘录「 Xilinx FPGA管脚XDC约束之:物理约束」2023年5月17日
新生代CV搬运工
05-17 287
差分信号约束,只约束P管脚即可,系统自动匹配N管脚约束,当然_P和_N管脚约束也没有问题;端口名称为数组时,需要用{}括起来,端口名不能为关键字。
vivado 时序约束
热门推荐
weiweiliulu的专栏
06-17 1万+
XDC的基本语法可以分为时钟约束、IO约束以及时序例外约束,对一个设计进行约束的先后顺序也可以按照这三类约束依次进行。 时钟约束 时钟约束必须最早创建,端口进来的主时钟以及GT的输出RXCLK/TXCLK都必须由用户使用create_clock自主创建。如果是差分输入的时钟,可以仅在差分对的P侧用get_ports获取端口,并使用create_clock创建。 create_clock...
vivado xdc时钟约束
09-20
XDC时钟约束是对时钟信号进行限制和定义的方法。它是在Vivado设计工具中使用的一种约束语言。通过XDC时钟约束,可以指定时钟的频率、时钟域之间的关系以及时序要求等。 XDC时钟约束的基本语法包括时钟定义和时钟...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Verilog基础知识0(`define、parameter、localparam三者的区别及举例) 74205
  • Verilog十大基本功1(流水线设计Pipeline Design) 55207
  • Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码) 52413
  • FPGA基础知识6(FPGA时钟系统及多时钟系统处理) 51104
  • FPGA基础知识3(xilinx CLB资源详解--slice、分布式RAM和Block ram) 37266

分类专栏

  • 脚本学习 2篇
  • 笔记 1篇
  • python学习
  • FPGA开发管理 2篇
  • Lattice系列FPGA入门相关 9篇
  • Verilog基础知识 11篇
  • FPGA基础知识 31篇
  • 视频图像处理基础知识 6篇
  • matlab图像处理基础知识 4篇
  • Xilinx基础知识 3篇
  • 硬件基础知识 6篇
  • 读书笔记 2篇
  • 以太网基础知识 3篇
  • IPC网络摄像头基础知识 7篇
  • 嵌入式Linux基础知识 8篇
  • 深度学习FPGA实现基础知识 21篇
  • 环境搭建基础知识 5篇
  • Cadence基础知识 9篇
  • 牛人经验 5篇
  • 安卓开发基础知识 5篇
  • UVM系统验证基础知识 2篇
  • 北斗系统基础知识 3篇
  • Verilog十大基本功 9篇
  • 通信相关基础知识 1篇
  • IC设计基础系列之CDC篇 12篇
  • IC设计基础系列之低功耗篇 8篇
  • UVM基础知识 5篇
  • AMBA基础知识 7篇
  • vivado xdc约束基础知识 20篇
  • 基于matlab的深度学习基础知识 1篇
  • IC设计基础系列之芯片设计流程 4篇
  • IC数字前端设计开发 28篇
  • H264编码器 14篇
  • 计算机体系结构基础 2篇
  • 数字信号处理相关 13篇

最新评论

  • IC设计基础系列之CDC篇3:揭秘《跨时钟域处理》三大方法

    风吃海带: 时间的诗是啥东东表情包

  • FPGA基础知识17(Matlab中滤波器的定点化 浮点运算转换为定点运算)

    xuexiaoxiaohu: 博主,图片都看不到了

  • 通信相关基础知识0(FFT相关第一篇--傅里叶分析之掐死教程完整版)

    blue0751: 人家原创都没收费,怎么你转载反而收费了?

  • FPGA基础知识23(xilinx 高速收发器系列1:qpll cpll)

    1tsuka: 线速率说法不太对 手册里是VCO频率 和线速率有个一0.125到2倍的关系

  • vivado xdc约束基础知识0:常用命令

    Gakki_suk1: 可以试一下,应该是顺序不影响。-某种属性,前后应该没有关系

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • sed 双引号 单引号的区别
  • 脚本学习_Linux_Sed命令_替换
  • 像梦一样
2022年2篇
2021年1篇
2019年23篇
2018年92篇
2017年26篇
2016年132篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

聚圣源楚人隐形相框素材骑蛇难下(双)免费阅读男孩起什么名子好听身上莫名其妙的起包北京同仁医院眼科书店起什么名字的好穿梭在都市武汉站地图上岛咖啡加盟有什么好看的小说女宝宝取名起名大全刘梦见理发生猪宝宝起名宜用2017年石材店起名大全今年的鼠宝宝起啥名字拍拍贷款起名 分析q友网头像罗姓女孩起名宝宝起乳名猪年小孩剧本杀店铺起名商标起名生成器广东话翻译比的基本性质psp对战传说建筑塔式起重机报名牧羊座杭州电信宽带破苍穹淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化