当综合器出现这样的Warning时,即提示发现了门控时钟
WARNING DesignRules:372 - Netcheck: Gated clock. Clock net _n0019 is sourced by
a combinatorial pin. This is not good design practice. Use the CE pin to
control the loading of data into the flip-flop.
如果一个时钟节点由组合逻辑驱动,那么它就形成了门控时钟了。综合器建议用组合逻辑驱动CE引脚。
为什么综合器会出现这样的警告呢?
原来门控时钟容易产生毛刺、增加延时、引起时钟漂移(Clock Skew),并且还会降低可测性。
门控时钟引起的这些问题怎么解决呢?
用组合逻辑来驱动CE端口,而不要驱动Clock端口,这样能更好地保持同步。
说了那么多坏处,有没有好处呢?
门控时钟的好处常用在ASIC而不是FPGA中。在ASIC中可以通过门控时钟降低功耗。不过即使是在ASIC中,上述的缺点还是存在的,所以必须要小心地设计。