set_false_path Vs.有什么区别set_clock_group?

时间:2017-03-06 03:16:10

标签: synthesis

我对Design编译器的约束有疑问。 特别是set_false_path Vs. set_clock_group。

据我所知,

  1. set_false_path
  2.   

    (a)set_false_path -from [get_clocks CLKA] -to [get_clocks CLKB]]。

    我认为这是考虑单向的方向。

      

    (b)set_false_path -from [get_clocks CLKA] -to [get_clocks CLKB]]

         

    set_false_path -from [get_clocks CLKB] -to [get_clocks CLKA]]

         

    - > CLKA - > CLKB,CLKB - > CLKA(双向)

    1. set_clock_groups
    2.   

      (a)set_clock_groups -asynchronous -group CLKA -group CLKB

      我认为这是在考虑双向。

      所以这是我的问题 我认为set_false_path和set_clock_group之间只有区别,只有方向。

      然后我认为1.(b)和2.(a)是相同的。那么我可以使用2.(a)而不是1.(b)?

2 个答案:

答案 0 :(得分:1)

在某些情况下(如1b和2a),两个命令都具有相同的结果,因此用户可以更喜欢它们中的任何一个。但是在某些情况下也存在一些差异。

set_false_path允许删除时钟之间的特定约束。例如,我可以在保持保持检查的同时删除设置检查。或者我只能选择时钟的一个边沿(上升或下降)。这个命令很快就有了更多的选择。

set_false_path -rise_from CLKA -fall_to CLKB -setup

set_clock_groups的优点很简单。它使我们无法定义太多错误路径。这就是为什么2a优于1b的原因。如果我们有更多的时钟,它将有更多的帮助。

set_clock_groups -asynchronous -group CLKA -group CLKB -group CLKC

答案 1 :(得分:0)

请注意,set_false_path在SDC文件中具有最高优先级,因此它胜过所有其他约束。例如,如果您想限制采样时钟域交叉(例如CDC FIFO格雷码交叉),则可以覆盖set_clock_groups。