set_max_delay、set_min_delay(最大、最小延迟约束)
1. set_max_delay、set_min_delay约束的目的
最大最小延迟约束主要是为了解决异步信号之间的时序路径进行时序约束的问题。最大延迟约束(set_max_delay)将默认覆盖建立时间分析中的最大路径延迟;最小延迟约束(set_min_delay)将默认覆盖保持时间分析中的最小路径延迟。所谓的最大、最小延迟约束主要应用于异步跨时钟域路径中,而对于其他的路径,一般不使用最大最小延迟约束,特别是Pin2Reg与Reg2Pin的路径,一般不使用最大最小延迟约束。
注:
(1) 跨时钟域是异步跨时钟域的简称,只要是跨时钟域的路径,本质上都是异步的;
(2) 对于set_max_delay、set_min_delay主要应用于异步跨时钟域路径,我们在使用时可以认为它只用于异步跨时钟域路径的约束分析中;
(3) 异步信号之间的时序路径进行约束时,采用set_max_delay、set_min_delay进行约束;
(4) 异步信号之间从某种意义上来说,它们之间是没有确切的时序关系与时序要求的,但为了对从源端到目的端的数据传输延迟有一个基本限制,不至于让其延时不受控,因此采用set_max_delay可以对系统的时序性能做到一个基本的控制;
图2.1 异步跨时钟域路径
(4)图2.3中,从Reg_1/Q到Reg_2/D的路径就是异步跨时钟域的路径。
2. 最大、最小延迟约束的格式
最大、最小延迟约束的指令格式如下所示:
set_max_delay [-datapath_only] -from [ node_list] -to [node_list] delay_value
set_min_delay -from [ node_list] -to [node_list] delay_value
如:
set_max_delay -from [get_pins data_in1_reg_reg/C] -to [get_pins data_out1_reg/D] 4.000
Notes:
(1) datapath_only只能用于set_max_delay中,不能用于set_min_delay中;
(2) -from用于指定路径的源节点,-to用于指定路径的目的节点,可以使用get_pins、get_cells等进行源节点与目的节点的指定;
(3) delay_value为指定的延时值最大(最小)范围,单位默认为“ns”;
(4) 一般的跨时钟域路径,要么约束为虚假路径(false_path),要么进行set_max_delay约束。
3. 采用GUI或直接编写的方式添加约束
(1) 添加最大最小约束时,可以使用直接编写xdc约束命令的方式,添加时序约束,也可以使用GUI的方式添加,因为在添加时,对于路径中源节点、目的节点的指定,我们可能不知道什么时候使用get_pins,什么时候使用get_ports、get_clocks等,以及节点路径的访问层级,因此在添加时序约束时,强烈建议采用GUI的方式进行添加,这样可以保证不会出错。
(2) set_max_delay、set_min_delay约束,在设计时我们不会主动去添加,因为在设计之前,我们一般不会知道具体哪条路径为异步信号之间的时序路径,并且对于异步信号之间的路径,我们一般不关心其时序要求,通常是设为伪路径处理,如果我们确实要对某条异步信号之间的时序路径提出时序要求时,我们才设定它的最大最小延时,因此进行set_max_delay、set_min_delay时,我们一般是对整个工程进行综合实现了,根据时序报告和我们的要求,再对相应的路径添加set_max_delay、set_min_delay。
4. 添加set_max_delay、set_min_delay的步骤
(1) 进入到Timing Constraints界面
文章来源:https://www.toymoban.com/news/detail-406980.html
(2)选择set_max_delay后点击,右侧的“+”号。
(3)添加后的结果如下图所示。
注:时序约束的作用就是告诉EDA工具,该设计对时序的要求,以及时序分析所需要的未知量;然后EDA向着这个目标布局布线。
转载请说明出处,希望能够帮到大家。文章来源地址https://www.toymoban.com/news/detail-406980.html
到了这里,关于Vivado时序约束之—— set_max_delay、set_min_dealy(最大最小延迟约束)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!