1、set_false_path
对于异步时钟有四种方法进行约束。本文介绍了每种方法的优缺点: 1、set_false_path 这是最原始的方法,在时序分析设计早期比较流行。 这种方法有两个缺点: 2、set_clock_groups 该方法已被引入 SDC 中,与方法 1 相比有以下三个主要优点: a. 只需要指定源时钟与目的时钟,尽量减少 XDC/SDC 文件的长度 在 set_clock_groups 这种方法中,我们指定了准确的原因,即为什么每个时钟信号组是不同的。实际上它们不能进行时序约束的原因完全是由你的意图决定的。因此这也可以作为一个注意事项,可以更加容易理解具体约束设计的原因。 通常情况下方法 2 要优于方法 1,主要是因为以上的 b 和 c 因素,其次 a 因素也是比较重要的。 3、set_multicycle_path 大约在21世纪中期的时候,设计者开始从 set_false_path 方法转向 set_multicycle_path 方法。方法 1 和方法 2 并没有约束一个路径 —— 每条路径的延迟是任意的。这种方法提供了跨越某个节点的路径的延迟上限规定。 4、set_max_delay 这种方法的效果与方法 3 相同。Vivado工具里面有‘-datapath_only’选项,这让设计者操作起来更简单,不用担心时钟偏移情况的发生。同时与 set_multicycle_path 方法相比,set_max_delay 方法更能表现出设计者的意图。 如果你想选一种方法,我建议的顺序是:4>2>3>1,有时我更倾向于选择方法 2。 举个例子,如果我正在进行一个局部的模块设计,这个模块还可以用于其他不同的应用,而且我不清楚这个部分会在什么外部设备或者器件上实现。这种情况下我也不确定 max_delay 值具体是多少合适,那么处于安全起见我会选择方法2而不是方法4。 如果使用 Xilinx 提供的工具,我们可以借助 Vivado 来设置时钟周期,在这个例子中我会根据时钟周期来设置具体的延迟,因此我可能更希望采用方法 4。 然而,根据个人的选择/需求/熟悉程度,不同的人可能有不同的选择。 |
|