赞
踩
XDC的基本语法可以分为时钟约束、IO约束以及时序例外约束,对一个设计进行约束的先后顺序也可以按照这三类约束依次进行。
时钟约束
时钟约束必须最早创建,端口进来的主时钟以及GT的输出RXCLK/TXCLK都必须由用户使用create_clock自主创建。如果是差分输入的时钟,可以仅在差分对的P侧用get_ports获取端口,并使用create_clock创建。
create_clock-name clk_200 - period 5 [get_ports clk200_p]
针对vivado自动推导的衍生时钟,比如MMCM/PLL/BUFR的输出时钟,可以由vivado自动推导,用户无需创建。
但是,工具不能自动推导出使用寄存器和组合逻辑搭建的分频器等衍生的时钟,必须有用户使用create_generated_clock来创建。举例如下
Clk1 是原本就有的主时钟,clk2 是衍生出来的时钟。注意创建时钟,语法不一样。
为什么时钟要进行时钟约束,不约束有什么后果?这里还是不知道。
I/O约束
在设计的初级阶段,可以不加IO约束,让工具专注于满足FPGA内部的时序要求。当时序要求基本满足后,再加上IO约束跑实现。
1 不加任何IO约束的端口,时序要求被视为无穷大。
2 XDC中的set_input_delay/set_output_delay 是从系统 角度来约束。
3 典型的IO时序,包括系统同步,源同步,SDR和DDR等。在vivado图形界面的XDC templates中有示例。2014.1版后,还有一个timing constraints wizard可供使用。timing constraints wizard 用过,操作简单,需要知道信号最大最小延迟和板间最大最小延迟即可。
(芯片引脚上有信号的最大最小延迟,板子上的默认都是0,不知道这样操作可以不)
http://group.chinaaet.com/273/4100028543 timing constraints wizard 使用方法
时序例外约束
时序例外约束包括set_max_delay/set_min_delay,set_multicycle_path,set_false_path等,这类约束除了要满足XCD的先后顺序优先级外,还要遵循自身的优先级限制。总的准则是,针对同一条路径,对约束目标描述越具体的优先级越高。
还有其他的技巧和说明,参考链接
http://xilinx.eepw.com.cn/news/article/a/1375
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。