当最优化代码以消除复位时,注释掉复位声明中的条件无法生成期望的结构,反而导致出现问题。例如,下图显示了 3 个分别使用异步复位的流水线阶段。如果尝试通过注释掉含复位条件的代码来消除其中 2 个流水线阶段的复位条件,则将启用异步复位(rst
的逻辑取反)。
图 1. 注释掉含复位条件的代码
移除复位的最佳途径是创建独立的顺序逻辑过程,其中一个过程用于复位条件,另一个过程用于非复位条件,如下图所示。
图 2. 为含复位和无复位的寄存器创建独立的过程声明
提示: 使用复位时,请确保过程语句中的所有寄存器均已复位。