为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取,普遍的三种路径为:
- 输入路径:输入约束
输入约束:offset in约束限定了输入数据和输入时钟边沿的关系
1.1、系统同步输入约束:在系统同步接口中,同一个系统时钟既传输数据也获取数据;
OFFSET= IN 5ns VALID 5ns BEFORE “Sysclk”;
1.2、源同步输入约束:在源同步接口中,时钟是在源设备中和数据一起产生并传输
OFFSET=in 1.25ns VALID 2.5ns BEFORE “Sysclk”RISING;
OFFSET=in 1.25ns VALID 2.5ns BEFORE “Sysclk”FALLING;
2、寄存器到寄存器路径:周期约束;
2.1、使用DLL,DCM,PLL,MMCM等时钟IP Core,只需要指定他们的输入时钟约束,器件将会自动根据用户生成的IP Core时指定的参数约束相关输出,无需手动干预;
2.2、手动约束相关联的时钟域
NET“Clk1X"TNM_NET=“Clk1X";
NET“Clk2X180"TNM_NET=“Clk2X180";
TIMESPEC"TS_Clk1X"=PERIOD"Clk1X 7 5ns;
TIMESPEC"TS_Clk2X180"=PERIOD"Clk2X180“TS_Clk1X/2PHAS2 +1.25ns;
2.3、异步时钟域
异步时钟域使用的约束方法流程:为源寄存器定义时序组;为目的寄存器定义时序组;使用From_to和DATAPATHDELAY关键字定义寄存器组之间的最大延时;
3、输出路径:输出约束;约束的是从内部同步元件或者寄存器到器件管脚的数据;
3.1、系统同步输出约束:输出和获取数据时基于同一时钟的;
OFFSET=OUT 5ns AFFTER “CLKIN”;
3.2、源同步输出约束:时钟时重新产生的并且在某一个FPGA时钟的驱动下和数据一起传输至下游器件;
4、具体的异常路径:使用虚假约束,多周期路径约束;
如果确定两组寄存器之间的路径不会影响时序性能,可以将这一组路径约束为虚假路径,工具在进行时序分析时将会跳过该路径,常用于不同时钟域的寄存器数据传输;
TIMESOEC TS_Example =FROM “GRP_1” TO “GRP_2”;