-gated_clock_conversion是用于管理门控时钟(GatedClock)的。所谓门控时钟是指由门电路而非专用时钟模块例如MMCM或PLL生成的时钟。一个典型的门控时钟如下图所示,即触发器和反相器构成的二分频电路。此时,若第一个触发器的Q端对应的信号clk_div_2被其他逻辑用做时钟,那么就构成了门控时钟电路。
门控时钟会对设计带来一些负面影响。典型的危害包括:时钟信号可能会有毛刺;时钟歪斜(Clock Skew)会恶化。同时,一个不可忽略的影响是Vivado并不会对门控时钟主动插入BUFG,这就意味着该时钟会占用传统的布线资源也就是Fabric中的布线资源而不会使用时钟网络资源,从而可能会跟其他关键路径争夺布线资源,影响时序。
-gated_clock_conversion可将门控时钟信号变为使能信号,对于上图所示门控电路,Vivado可将其优化为下图所示电路。此时,clk_div_2被转化为使能信号连接到了下级触发器的使能端口,而下级触发器的时钟端口则与主时钟clk连接,从而移除了门控时钟。
在Vivado中,打开综合后的设计,可通过report_clock_networks显示所有时钟,包括门控时钟。如下图所示,分别显示了-gated_clock_conversion为on和off时Vivado检测到的时钟,可验证-gated_clock_conversion所起的作用。
结论
-门控时钟会给设计带来一些负面影响,可通过-gated_clock_conversion移除
-当时钟负载少且时钟频率低时比如小于5MHz,可以适当利用门控时钟,此时建议手工插入BUFG