特定约束FROM TO
发布时间:2008/9/17 0:00:00 访问次数:1478
特定约束就是用from to约束来定义两个timegroups之间的延时,路径的起点和终点可以是pad、寄存器、锁存器、lut、ram及乘法器等。在使用from to约束分析时,工具会考虑clock skew因素。因此对于同步路径from to约束就像是对特定路径的周期约束,如图1所示。
图1 from to约束所覆盖的路径示意
前面说过,周期约束是全局约束,但有些路径可能需要不同于周期的特殊要求。from to约束可以用来定义宽约束路径“slow path”、过约束路径“overconstrained path”或者时序无关路径“false path”。
以图2所示“slow path ”的为例,对于这个范例用户必须清楚时钟使能信号enable的翻转规律,才能做出正确的约束。分析图2所示的时序可以看出,第1个时钟上升沿数据从b寄存器发出,而c寄存器在第3个时钟上升沿才捕捉数据,因此从b到c这条路径的时序要求实际上是周期的两倍。例中定义了基本的周期约束,还定义了使用enable信号的寄存器组。然后为使用enable信号的寄存器组定义了from to约束,约束的要求是两倍的时钟周期。
图2 from to约束设计范例
ucf示例如下:
net "clkix" tnm_net = "clkix";
timespec "ts_clkix" = pertod "clklx" 5.0 ns high 50%;
net enable tnm_net = slow_ffs;
timespec ts_slowpath = from slow_ffs to slow_ffs ts_clk1x*2;
过约束路径如图3所示。xilinx的实现工具是时序驱动的,因此有时如果某条路径没有满足周期约束的要求,我们可以为这条路径加上一个相对较紧的约束或许可以达到理想的效果。from to可以用来做这种约束。
图3 过约束路径范例
from to也可以约束异步路径,比如不相关的两个时钟域之间的路径。典型的情况就是异步fifo,如图3所示。写时钟域与读时钟域的路径会分别被各自的周期约束覆盖,但是它们之间的异步握手信号却不会被自动地分析,实际上也不需要。
如果有些设计者确实需要约束这些异步路径的延时,可在from to后面加上datapathonly这个关键字。 女口果没有datapathonly这个关键字,时序分析会报告timing error。因为from to约束会考虑clock skew,而这条路径是跨时钟域的。
ucf示例如下:
net "writeclk" tnm_net = "writeclk";
net "readclk" tnm_net="readclk";
timespec ts_wr2rd = from writeclk to readclk 2 ns datapathonly;
timespec ts_rd2wr = erom readclk to writeclk 2 ns datapathonly;
图4 采用from to约束异步路径范例
对于时序无关路径,可以把它约束成tig,即timing ignore。tig用于定义无关路径,时序分析时会将加了tig约束的路径忽略。这样就会减少布线工具为这些路径进行布线所花费的时间,以及有可能产生的负作用。tig约束的对象可以是分组之间的路径,也可以是被指定的net所在的路径。分组之间的路径需要用from to把指定的路径约束成tig,ucf可以这样来写:
timespec ts_ignore = erom group1 tt crroup2 tig;
对于用net指定的路径,ucf可以这样来写:
net slow_net tig;
欢迎转载,信息来自维库电子市场网(www.dzsc.com)
特定约束就是用from to约束来定义两个timegroups之间的延时,路径的起点和终点可以是pad、寄存器、锁存器、lut、ram及乘法器等。在使用from to约束分析时,工具会考虑clock skew因素。因此对于同步路径from to约束就像是对特定路径的周期约束,如图1所示。
图1 from to约束所覆盖的路径示意
前面说过,周期约束是全局约束,但有些路径可能需要不同于周期的特殊要求。from to约束可以用来定义宽约束路径“slow path”、过约束路径“overconstrained path”或者时序无关路径“false path”。
以图2所示“slow path ”的为例,对于这个范例用户必须清楚时钟使能信号enable的翻转规律,才能做出正确的约束。分析图2所示的时序可以看出,第1个时钟上升沿数据从b寄存器发出,而c寄存器在第3个时钟上升沿才捕捉数据,因此从b到c这条路径的时序要求实际上是周期的两倍。例中定义了基本的周期约束,还定义了使用enable信号的寄存器组。然后为使用enable信号的寄存器组定义了from to约束,约束的要求是两倍的时钟周期。
图2 from to约束设计范例
ucf示例如下:
net "clkix" tnm_net = "clkix";
timespec "ts_clkix" = pertod "clklx" 5.0 ns high 50%;
net enable tnm_net = slow_ffs;
timespec ts_slowpath = from slow_ffs to slow_ffs ts_clk1x*2;
过约束路径如图3所示。xilinx的实现工具是时序驱动的,因此有时如果某条路径没有满足周期约束的要求,我们可以为这条路径加上一个相对较紧的约束或许可以达到理想的效果。from to可以用来做这种约束。
图3 过约束路径范例
from to也可以约束异步路径,比如不相关的两个时钟域之间的路径。典型的情况就是异步fifo,如图3所示。写时钟域与读时钟域的路径会分别被各自的周期约束覆盖,但是它们之间的异步握手信号却不会被自动地分析,实际上也不需要。
如果有些设计者确实需要约束这些异步路径的延时,可在from to后面加上datapathonly这个关键字。 女口果没有datapathonly这个关键字,时序分析会报告timing error。因为from to约束会考虑clock skew,而这条路径是跨时钟域的。
ucf示例如下:
net "writeclk" tnm_net = "writeclk";
net "readclk" tnm_net="readclk";
timespec ts_wr2rd = from writeclk to readclk 2 ns datapathonly;
timespec ts_rd2wr = erom readclk to writeclk 2 ns datapathonly;
图4 采用from to约束异步路径范例
对于时序无关路径,可以把它约束成tig,即timing ignore。tig用于定义无关路径,时序分析时会将加了tig约束的路径忽略。这样就会减少布线工具为这些路径进行布线所花费的时间,以及有可能产生的负作用。tig约束的对象可以是分组之间的路径,也可以是被指定的net所在的路径。分组之间的路径需要用from to把指定的路径约束成tig,ucf可以这样来写:
timespec ts_ignore = erom group1 tt crroup2 tig;
对于用net指定的路径,ucf可以这样来写:
net slow_net tig;
欢迎转载,信息来自维库电子市场网(www.dzsc.com)
上一篇:分组约束