综合过程中会创建额外的注册表

时间:2018-07-27 10:14:34

标签: verilog synthesis

说我在设计中有2个多位reg。它们中的一个都具有共同的条件(cond_x)作为使能,但是除了cond_y信号何时复位外,它们中的1个还具有额外的条件(reset)。

示例(为简单起见,忽略代码的重置部分)-

  1. 相同总是阻止

    always @(posedge clock) begin
      if(cond_x) begin
        a <= a_next;
        b <= b_next;
      else if(cond_y) begin
        b <= 5'b0;
      end
    end
    
  2. 不同总是会阻塞

    always @(posedge clock) begin
      if(cond_x) begin
        a <= a_next;
      end
    end
    
    always @(posedge clock) begin
      if(cond_x) begin
        b <= b_next;
      else if(cond_y) begin
        b <= 5'b0;
      end
    end
    

当我合成2时,得到的regs数量比设计中预期的要多。使用1表示准确。额外的寄存器仅适用于b的低两位,并带有__rep1后缀。不知道这意味着什么或如何创建它。

是否有相同的可能原因?我正在使用Synopsys DC

1 个答案:

答案 0 :(得分:1)

Design Compiler可以复制单元以改善时序,负载等,并且复制的单元具有后缀_rep<n>。 DC Ultra的datasheet具有以下解释:

  

DC Ultra在运行过程中着眼于关键路径的较大部分   逻辑复制,并且可以复制许多门以减少高负载   扇出网,因此改善了通过负载的关键路径上的时序   隔离。

尽管两个代码段看起来相同,但是DC可以根据起始条件产生不同的结果。对于b[1:0],第二个代码很可能被合成为一个较差的电路,并且该工具必须复制这两个触发器。