时序约束
时序约束
第一步:时钟设置
设置输入输出时钟
create_clock -name {mc_clk_20m_sys} -period $CLK_20M_PERIOD -waveform { 0.000 25 } [get_ports {mc_clk_20m_sys}] -add
对于PLL 的输出时钟,用creat_generated_clock 创建,用derive_pll_clocks生成所有的pll时钟。
第二步:时序约束
在进行时序约束之前,我们先了解一下Data Arrival and Data Required Time
图1 Timequest timing netlist
-
Part 1 setup check
图2 timing analysis 示意图(register to register)
图3 setup check
图片来自altera文档
由上面的三个等式:
当setup slack >= 0 ,timing met
当setup slack < 0 ,timing violation
-
Part 2 hold check
图4 hold check
图片来自altera文档
由上面的三个等式:
当hold slack >= 0 ,timing met
当hold slack < 0 ,timing violation
-
Part 3 输入输出约束
约束最大最小输入输出延时,这样工具才好分析fpga/cpld 内的建立保持slack。
输入约束示意图
输出约束示意图
设置输入输出时序约束用set_input_delay /set_output_delay
-
第三步:其他的时序约束
其余的时序约束,如多周期时钟路径,异步时钟等。
多周期 set_multicycle_path
不需要检测的路径 set_false_path