约束的类型:

  1. 时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序要求,知道综合和布局布线截断的优化算法等;
  2. 布局布线约束:主要指定芯片I/O引脚位置和知道软件正在芯片特定的物理区域进行布局布线;
  3. 其他约束:指的是目标芯片型号,接口位置和电气特性等约束属性。

约束的作用

  1. 减少逻辑和布线的延迟,提高工作效率;
  2. 获得正确的时序分析报告,静态时序分析工具约束作为判断时序是否满足设计要求的标准;
  3. 指定FPGA引脚位置和电气标准
  4. 利于模块化设计

     ISE通过综合工具XST的约束文件XCF,布局布线阶段UCF(用户约束文件),UCF支持XCF的所有约束语言和命令;综合时,仅仅通过综合属性设置来设置全局的综合策略与参数,细化的约束通过UCF完成。

时序约束:

1、周期约束:NET “usr_clk” TNM_NET= “usr_clk”;

     TIMESPEC “TS_usr_clk” = PERIOD “usr_clk” 5.0ns

2、I/O时序约束:定义了时钟和IO接口之间的关系,只能用于I/O接口相连的信号,不能用于内部信号,可以约束输入数据、输出数据相对于时钟的时序关系,从而在综合实现中调整布局布线,是正在开发的FPGA的输入简历时间、输出保持时间保持系统要求。

INST “io_emif_data<0~7>” TNM=TS_emif_data;

NET “IO_emif_clk” TNM_NET= I_emif_clk;

TIMEGRP “TS_emif_data” OFFSET = OUT 7ns AFTER “I_emif_clk”;

约束定义了TS_emif_data寄存器组与时钟I_emif_clk的关系为时钟有效后7ns输出TS_emif_data寄存器的可靠数据。

3、分组约束:将一些具有相同时序要求的器件归为一组,进行相同的时序约束。

INST “io_emif_data<0>” TNM=TS_emif_data;

INST “io_emif_data<0~7>” TNM=TS_emif_data;

4、专门约束:通常比整体约束宽松,通过在可能的地方尽量放松约束可以提高布局布线的通过率,减少布局布线的时间。

     From_to约束:约束在两个定义的组之间进行时序约束,对两者之间的逻辑和布线延迟进行控制:

TIMESPEC “TS_name”= FROM “group1” TO “group2” value;

其中value为延迟时间,可以使具体数值或表达式。

MAXDELAY约束:定义了特定路径上的最大延迟

布局布线约束:

1、引脚约束: NET “sys_rst_n” LOC= “J12”;

2、位置约束:通过约束语法将设计之中的某些硬件结构约束到指定的位置

(1)    INST “instance_name” LOC=location;

对设计中的硬件约束到具体位置,可以约束的硬件结构包括:寄存器、IOB、LUT、BRAM、乘法器、PLL等。

(2)    INST “instance_name” RLOC= location;

对设计中的硬件约束到相对位置, 可约束的硬件结构包括:寄存器、IOB、LUT、BRAM、乘法器、PLL等。必须与RLOC_ORIGIN配套使用。

(3)    INST “instance_name” RLOC_ORIGIN =location;

与RLOC对应,指定RLOC的起始位置约束,与RLOC配套使用。

(4)    INST “instance_name“ HU_SET=value;

高级属性定义约束,定义独立的组,与RLOC配套使用,以保持结构的完整性