打印
[ISE]

xilinx vivado xdc约束语法

[复制链接]
8295|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2021-7-30 17:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
约束的目的
介绍 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]

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1051

主题

11300

帖子

26

粉丝