vivado xdc约束基础知识3:Vivado时钟分组约束的三类应用(set_clock_groups)

来自:http://xilinx.eetrend.com/blog/9564



在Vivado中通过set_clock_groups来约束不同的时钟组,它有三个选项分别是-asynchronous,-logically_exclusive和-physically_exclusive

-asynchronous应用于异步时钟,如下图所示,CLKA和CLKB由两个外部独立的晶振提供,那么跨时钟域路径即REGA到REGB0之间的路径可采用如下约束:

create_clock–name CLKA –period 10.0 [get_ports CLKA]
create_clock–name CLKB –period 5.0 [get_ports CLKB]
set_clock_groups –async –group CLKA –group CLKB

上述约束等效于
set_false_path–from [get_clocks CLKA] –to [get_clocks CLKB]
set_false_path–from [get_clocks CLKB] –to [get_clocks CLKA]
但通常建议采用前者。

如果是如下图所示情形,即CLKA和CLKB由外部晶振提供,分别通过MMCM生成各自的时钟,此时{CLKA, clk0, clk1, clk2}与{CLKB, clka, clkb, clkc}是异步的,从而相应的约束变为:


create_clock–name CLKA –period 10.0 [get_ports CLKA]
create_clock–name CLKB –period 5.0 [get_ports CLKB]
set_clock_groups–async \
-group[get_clocks –include_generated_clocks CLKA] \
-group[get_clocks –include_generated_clocks CLKB]

考虑另一种情形:
Clk50与clk100为同步时钟,clk33和clk66为同步时钟,而两组同步时钟之间均为异步时钟,相应的约束该如何描述呢?
set_clock_groups–async –group {clk50 clk100} -group {clk33 clk66}
在set_clock_groups中-asynchronous可简写为-async。


猜你喜欢

转载自blog.csdn.net/times_poem/article/details/80001823