跨时钟约束

1、跨时钟域——时钟选择器的约束

最后我们看图4clk_100clk_66仍然是两个不同的时钟域,这也是FALSE PATH

set_false_paths –from [get_clocks clk_100] –to [get_clocks clk_66]
set_false_paths –from [get_clocks clk_66] –to [get_clocks clk_100]
实际上,这两条 FALSE PATH 可以用一条命令来代替:
set_clock_groups –exclusive –group {clk_100} \
group {clk_66} –group {clk_200}

这就涉及到set_clock_groups 命令了,我们以后再说。


1)、命令格式

        set_clock_groups [-asynchronous] [-exclusive] –group <names>

2)、选项说明

        -asynchronous :顾名思义,时钟是异步不相关的,时钟有完全不同的时钟源

        -exclusive :时钟是互斥的,即时钟不会再同一时刻同时有效

        实际上,这两个选项的效果是完全一样的。… TimeQuest treats both options, “-exclusive” and “-asynchronous”, as if they were the same.

3)、效果

  这与对各个时钟使用set_false_path的效果是完全一致的;不过结构远比set_false_path简洁,而且时钟越多效果越明显。

但是set_clock_groups -async不可以完全代替set_false_path。因为伪路径并不一定的跨时钟域路径。

       例如:




2、跨时钟域——由多个时钟控制的逻辑约束

然后看图3reg1的输出和reg2的输入跨越了不同的时钟域clk1clk2,我们不希望综合工具对这这些路径进行分析,就是说这些路径就是我们所说的FALSE PATH
set_false_path –from [get_pins reg1|clk]to [get_pins reg2|datain]




猜你喜欢

转载自blog.csdn.net/u012923751/article/details/79663812