Table of Contents
Open Table of Contents
1 时序约束步骤
使用Vivado的Sources文件管理器直接创建新的.xdc文件或者添加已有的.xdc文件。
- 点击
+号; - 选择
Add or create constrints点击next; - 点击
Create Files; - 数据文件名点击
OK即可在Constrains中看到新建的文件; - 双击打开
.xdc文件,写入约束语句即可。
在综合(Synthesis)后点击Constrainsts Wizard(时序约束向导),其顺序是:主时钟约束、衍生时钟约束、输入延迟约束、输出延迟约束、时序例外约束、异步时钟约束等顺序依次创建时钟约束的。
Edit Timing Constrints时序约束编辑器提供可视化约束修改,更容易使用。
时序约束有四大步骤:
- 设置时钟
- input delays
- output delays
- 时序例外
- 按顺序去索引,找到对应情况,按照要求去约束;
- 开始只配置时钟;
- 时钟完全通过后再配置input/output delays;
- 时序例外最后完工再配置;
1.1 时钟
-
输入时钟:
- 输入管脚是
clk:
create_clock -name SysClk -period 10 -waveform {0 5} [get_ports Clk]- 输入管脚是差分
create_clock -name clk_200 -period 5 [get_ports clk_200_p]- 输入管脚是 GT 或恢复时钟
create_clock -name txclk -period 6.667 [get_pins GT/TXOUTCLK] - 输入管脚是
-
PLL 等衍生时钟:工具自动推导,一般无需约束。
create_clock -name clk_200 -period 5 [get_ports clk_200_p]
create_generated_clock -name my_clk_name [get_pins mmcm0/CLKOUT] \
-source [get_ports mmcm0/CLKIN]\
-master_clock clk_200
# Altera
# derive_pll_clocks
- 自己分频的时钟
create_clock -name CLK1 -period 5 [get_ports CKP1]
create_generated_clock -name my_clk_name [get_pins REGA/Q] \
-source [get_ports CKP1] -divide_by 2
- 自定义约束覆盖工具约束
- 后约束覆盖先约束
- 共存:-add
1.2 input delays
-
系统同步:器件共用时钟,FPGA与其他器件之间只传输数据
-
源同步(常用):时钟 + 数据同步传输
- SDR:上升沿采样
- 参考数据手册
- 示波器测量
- DDR:上下沿采样
- 中心对齐:数据变化在时钟中心,示波器测量
- 边沿对齐:示波器测量
- SDR:上升沿采样
-
有数据无时钟
1.3 output delays
-
系统同步:器件共用时钟,FPGA与其他器件之间只传输数据
-
源同步(常用):时钟 + 数据同步传输
- SDR:上升沿采样
- 参考数据手册
- 示波器测量
- DDR:上下沿采样
- 中心对齐:数据变化在时钟中心,示波器测量
- 边沿对齐:示波器测量
- SDR:上升沿采样
1.4 时序例外
-
多周期路径
-
不需要检查的路径
- 常量及伪常量
- 互斥的时钟和路径:双向端口
- 异步时钟
-
组合电路延时