1、主时钟约束
1.1、主时钟约束语法:
create_clock -name< clock_name > -period <period> -waveform{ <rise_time> <fall_time> } [get_ports< port_name >]
说明: name 之后的<clock_name> 是clk 的name;
period 是 clk的 T,单位 ns
get_ports 是 clk 的 pin
waveform 表示 posedge 和 negedge的时刻,rise_time 默认为0,fall_time为T 的一半。单位都是ns.
1.2、识别设计时钟
1.2.1、时钟网络报告
1.2.2、时许报告确认
check_timing
2、主时钟约束实例
实例1:引脚输入的主时钟约束
对clk的约束:
create_clock -name SysClk -periol 10 -waveform {0 5} [get_ports sysclk]
约束中,定义了 名为 sysclk 的物理节点产生的时钟, T 为 10ns, 占空比 50%,定义名称为 SysClk
实例2:引脚输入的主时钟约束
T为10ns,占空比 25%,90°相移。
create_clock -name devclk -periol 10 -waveform {2.5 5} [get_ports clkin]
实例3:高速传输器输出的主时钟约束
create_clock -name rxclk -periol 3.33 [get_ports RXOUTCLK]
实例4:硬件原语输出的主时钟约束
对于主时钟和衍生时钟,对主时钟约束之后,就可以覆盖衍生时钟的所有路径。
实例5:差分信号的主时钟约束
一个IBUFDS产生的单端clk 作为PLL的input,只需要对sys_clk_p约束就好,如果对 p 和 n都约束,会导致产生不真实的CDC(clock domain corssing)路径。
create_clock -name sysclk -preiol 3.33 [get_ports sys_clk_p]
3、主时钟约束分析
3.1、使用GUI约束输入时钟引脚
3.2、 clocking wizard IP 主时钟自动约束
clocking wizard IP可以配置MMCM和PLL等时钟管理单元,在配置完成之后可以自动生成相应的约束文件,并不需要用户手动添加主时钟约束命令。
3.3、 查看主时钟时序路径的分析报告
3.4、 跨时钟域的时许分析
setup time 最坏的关系是寻找发射沿之后最近的锁存沿;
hold time 最坏的情况是寻找发射沿之前最近的锁存沿;
4、虚拟时钟约束
虚拟时钟:在一些时序路径中,一些引脚数据信号的同步时钟只存在于外部芯片,并不存在与FPGA內部,为了时许分析的需要也要定义一个clk用于描述数据引脚外部的时钟信号,这个时钟就是虚拟时钟。
create_clock -name clk_virt -periol 10
5、虚拟时钟约束实例
5.1、 系统同步接口pin2reg的虚拟时钟约束
create_clock -periol 10 -name Virclk -waveform {0 5}
create_clock -periol 10 -name Sysclk -waveform {0 5} [get_ports clk]
5.2、 系统同步接口reg2pin的虚拟时钟约束
create_clock -periol 10 -name Virclk -waveform {0 5}
create_clock -periol 10 -name Sysclk -waveform {0 5} [get_ports clk]
6、时钟特性约束
7、时钟抖动与不确定约束示例
8、时钟延时约束语法
9、时钟延时约束实例