我对Design编译器的约束有疑问。 特别是set_false_path Vs. set_clock_group。
据我所知,
(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(双向)
(a)set_clock_groups -asynchronous -group CLKA -group CLKB
我认为这是在考虑双向。
所以这是我的问题 我认为set_false_path和set_clock_group之间只有区别,只有方向。
然后我认为1.(b)和2.(a)是相同的。那么我可以使用2.(a)而不是1.(b)?
答案 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。