1286|2

978

帖子

0

资源

纯净的硅(初级)

xilinx vivado xdc约束语法 [复制链接]

1、约束的目的

介绍 FPGA 约束原理,理解约束的目的为设计服务,是为了保证设计满足时序要求,指导 FPGA 工具进行综合和实现,约束是 Vivado 等工具努力实现的目标。所以首先要设计合理,才可能满足约束,约束反过来检查设计能否满足时序。主要涉及到 xilinx vivado xdc 约束语法,给出对应的 ISE ucf 语法。另外 quatus 的语法和 xdc 几乎兼容,原理都一样。


时序约束中最基本的是时钟,时钟有抖动(jitter),偏移(skew),占空比失真(duty cycle distorTIon)三种特性。

 

1、抖动,分为周期抖动(cycle jitter),周期差抖动(cycle to cycle jitter)和长期抖动(long term jitter)。

 

2、偏移和时钟线的长度,时序单元的负载电容和个数有关。FPGA 的全局时钟采用全铜工艺和树状结构,偏移非常小,可以忽略。

 

3、占空比失真就是高低电平不对称,会吞噬时序裕量。

 

图片

 

2、基本的时钟约束

最简单的情况,设计只有一个时钟。这时候需要对这个时钟的周期进行约束,(当然也可以对占空比进行约束,默认为 50%)。如果不对时钟进行约束,我们就不知道自己的设计是否时序收敛。简单的说,比如系统时钟是 200M 的,那么周期就是 5ns,也就是说信号从一个寄存器出来,经过了一系列的组合逻辑,要在下一个时钟的上升沿到来之前被目的寄存器采样到。当然考虑到,实际情况还复杂很多。

 

假如设计里有很多时钟,那么哪些时钟是必须要约束的呢?

 

首先是从端口进入 FPGA 的时钟。其他衍生时钟(如通过 PLL 或者 MMCM 生成的)跟它是同源时钟,工具会自动推导。然后是 GT 的 rx_clk 和 tx_clk 必须要约束。最后是用户自己分频产生的行波时钟(用于简单的低频应用),必须约束。

 

create_clock -name clk_200m -period 5 [get_ports I_clk200]

 

3、跨时钟域 cdc 约束

set_clock_groups –asynchronous -group [get_clocks -include_generated_clocks clk_1] \

-group [get_clocks -include_generated_clocks clk_2]

4、input delay

input delay 和 output delay 都是分析的外部延时,与 ISE 的 ucf 约束 FPGA 内部延时恰恰相反。

5、output delay

假设周期是 10ns

OFFSET = OUT 4ns AFTER clock;

set_output_delay 6 -clock [get_clocks ] [get_ports ]

通过把 input output register pack 到 IOB 中,和约束 slew 可以更容易满足接口时序要求。

rtl 中约束

(* IOB = “true” *)

O_config_dat

xdc 中约束

set_property IOB true [get_ports O_config_dat]

set_property SLEW FAST [get_ports O_config_dat]


回复

9045

帖子

21

资源

版主

图片看不到


回复

6301

帖子

0

资源

五彩晶圆(初级)

会吞噬时序裕量这个需要配图才能看的清


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表