[Xiliinx FPGA] #12 UCF 与 XDC 约束文件

UCF 为 ISE 里的约束文件,在 Vivado 中不再使用,改为 XDC 文件

关于 XDC 文件:

1,vivado约束文件参考 ug903-vivado-using-constraints,这里有详细关于约束规则,原理,语法的介绍;

2,vivado约束采用xdc约束文件,这里的语法其实是和TCL语法一致,这个语法详见UG903手册;

3,vivado约束和ISE不同,ISE主要是针对net和inst进行约束,而xdc中,分成get_pins,get_cells,get_ports,get_clocks,这里get_cells和ISE里面的inst类似,而在进行时序例外约束的时候多用的是get_pins(其实就是一个实例中的管脚定义,也包括底层原件的管脚,比如寄存器)。在使用通配符匹配路径的时候,最好使用edit timing constraints图形界面配合。

4,vivado时序约束是最有变化的,和ISE最大不同的是ISE中对于跨时钟路径都是默认不分析的,但是对于vivado,所有的路径其实都是进行分析的,同步时钟会进行分析(比如PLL或者MMCM输出时钟,相位关系确定),而且异步时钟如果不加异步时钟约束也会按照同步时钟那样进行时序分析,在时序报告中other path groups里面的async_default中就都是异步时钟跨时钟路径。这时候就需要很全面的对时钟域有很全面很清楚的认识,这个vivado有可以利用的工具,后面会介绍;

5,vivado关于时序约束的工具介绍:
1)edit timing constraints,这个就跟ISE中的一致,其实就是一个图形化添加约束的接口,可以用图形界面将约束的tcl命令转化出来,主要作用是在用通配符匹配路径的时候可以配合使用;
2)report timing constraints,这个就是最后时序分析的报告,这里面主要由三项,首先intra-clock paths是单时钟约束,其次inter-clock paths,这个是同步时钟的跨时钟路径,最后就是other path group,这里面的async_default就是异步时钟的跨时钟路径。这里点击时序不达标的路径,然后右键可以直接添加约束,set_false_path,set_max_delay等,这时候约束会加到edit timing constraints里面,然后添加到xdc约束文件中,这个对应的约束文件就是constraints里面标注target的文件(可修改target)。此外,在report timing constraints里面的路径双击可以在device页面看到类似plan ahead里面的实际在芯片中的路径,此外还有Path xxx - timing_1页面会列出详细的souce clock data path destination clock,以及对应的延时。
3)report clock interaction,这个工具就是解决前面说的vivado分析跨时钟域路径的问题,这个工具会以一个表格的形式列出所有时钟域对应关系以及是否有约束,如下图,方便对所有时钟域有一个完整的认识,而且可以看到那个跨时钟路径没有被约束可能存在问题。


约束顺序

建议:无论是为设计使用一个还是多个XDC文件,都按以下顺序组织约束。

## Timing Assertions Section
# Primary clocks
# Virtual clocks
# Generated clocks
# Clock Groups
# Bus Skew constraints
# Input and output delay constraints
## Timing Exceptions Section
# False Paths
# Max Delay / Min Delay
# Multicycle Paths
# Case Analysis
# Disable Timing
## Physical Constraints Section
# located anywhere in the file, preferably before or after the timing constraints
# or stored in a separate constraint file


你可能感兴趣的:([Xiliinx FPGA] #12 UCF 与 XDC 约束文件)