修改时钟门控结构
在执行 RTL 时钟门控时,可以指定 `set_clock_gating_style -max_fanout` 命令来限制由单个时钟门控元素门控的寄存器数量。结果可能是具有相同使能信号的多个时钟门控元素,并且在逻辑上,具有相同的门控时钟信号。所有具有相同使能信号的时钟门控单元属于同一个时钟门控组。由单个时钟门控元素门控的所有寄存器属于同一个时钟门控子组。
由 `compile_ultra -gate_clock` 命令插入的门控寄存器被划分为子组。这些分区不是基于时序或放置约束。因此,放置工具尝试将时钟门控寄存器放置在时钟门控单元附近,但由于其他设计约束,这可能不会发生。结果是将门控寄存器划分为子组的次优解。
可以通过在属于同一个时钟门控组的时钟门控单元之间移动时钟门控寄存器来纠正这个问题。由于这些时钟门控单元在逻辑上是等效的,重新布线的电路在功能上是有效的。