set - input - delay 之经典图解

更新时间:2024-04-09 03:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

set_input_delay/ set_output_delay之图解

set_input_delay/ set_output_delay

在与时钟选项定义的时钟相关的输入port上定义data arrival time,可将输入延时定义与上升沿或下降沿相关。

如果输入延时与简单的生成时钟相关,到生成时钟的clock arrival time要加到data arrival time上。

输入延时可以定义与时钟网络中的port相关,到参考port的clock arrival time要加到data arrival time上。

输入延时可以包含时钟源延时,默认条件下,相关的时钟源延时加到输入延时上;但是,当定义-source_latency_included选项时,时钟源延时不要相加,因为它并没有用作为input delay value的时序因素。

max用在时钟建立时间或恢复(recovery)校验上,min用于时钟保持时钟或移除(removal)校验上。

以上内容摘自Quartus help,基本定义edn上很多仁兄已经讲的很清楚了。 看下面简单的例子,两级触发器,来自

http://www.altera.com.cn/support/examples/timequest/exm-timequest.html

设计图:

点击看原图

很简单的例子,仅仅加时钟周期约束的条件下,用TimeQuest分析仅会得到一路path的分析,reg1 to reg2,时序图如下:

这张图已经有人做过了仔细的分析,可以清楚地看到各个参数的大小。 下面三张图是加约束后的时序分析图,所加的条件是:

set_input_delay -clock { clk_in } -add_delay 1.200 [get_ports {data_in}] set_output_delay -clock { clk_in } -add_delay 2.000 [get_ports data_out] 重新运行TimeQuest,可以看到3个path分析 1) data_in to reg1

2) reg1 to reg2

3) reg2 to data_out

可以看到,输入路径在data arrival time上加上了input delay;输出路径在data required time上减去了output delay;分别表现为对setup和hold时间的影响。

TimeQuest实例: 约束最大斜移

TimeQuest时序分析器不支持规定最大斜移的单个约束,但是您可以规定相对于时钟端口的建立和保持时间,来约束源同步接口。下面的例子采用了图1中的简单源同步电路。

图1. 源同步接口图

约束输出总线的斜移

该实例对接口进行约束,在clk_out信号之后的2至3ns , data_out 总线的所有比特传输至片外。假设clk_in和clk_out周期为8ns。下面的等式和实例介绍了怎样建立时序要求,以满足图2中的时序关系。

图2. 源同步时序图

这些等式显示了怎样为 set_output_delay –min 命令计算数值,该命令在目的时钟设置2ns保持要求。对于源时钟和目的时钟相同的保持要求计算, - = 0 。

latch - launch = 0 ns

output delay = latch - launch - 2 ns output delay = -2 ns

这些等式显示了怎样为 set_output_delay 命令计算数值,该命令在目的时钟设置3ns建立要求。对于源时钟和目的时钟相同的建立要求计算, - = clock period 。

latch - launch = 8 ns

output delay = latch - launch - 3 ns output delay = 5 ns

最后,下面的约束将所有计算合并在一起,为源同步输出加上时序要求。

set period 8.000

create_clock -period $period \\ -name clk_in \\ [get_ports clk_in] derive_pll_clocks

set_output_delay -add_delay \\

-clock ddr_pll_1_inst|altpll_component|pll|CLK[0] \\ -reference_pin [get_ports clk_out] \\ -min -2.000 \\ [get_ports data_out*] set_output_delay -add_delay \\

-clock ddr_pll_1_inst|altpll_component|pll|CLK[0] \\ -reference_pin [get_ports clk_out] \\ -max [expr $period - 3.000] \\ [get_ports data_out*]

最后,下面的约束将所有计算合并在一起,为源同步输出加上时序要求。

set period 8.000

create_clock -period $period \\ -name clk_in \\ [get_ports clk_in] derive_pll_clocks

set_output_delay -add_delay \\

-clock ddr_pll_1_inst|altpll_component|pll|CLK[0] \\ -reference_pin [get_ports clk_out] \\ -min -2.000 \\ [get_ports data_out*] set_output_delay -add_delay \\

-clock ddr_pll_1_inst|altpll_component|pll|CLK[0] \\ -reference_pin [get_ports clk_out] \\ -max [expr $period - 3.000] \\ [get_ports data_out*]

本文来源:https://www.bwwdw.com/article/ypgr.html

Top