AR# 60061

|

Vivado Synthesis - INIT value of Inferred dynamic SRL is not correct

描述

Vivado Synthesis infers dynamic SRL from the below HDL code but the INIT value of the SRL is incorrect in the netlist.

The INIT value is expected to be 16'hFFFF, but is instead 16'h0000.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
module test (input A0, A1, A2, A3, 
                    input CE, 
                    input CLK, 
                    input D, 
                    output Q);

reg [15:0] shift_reg;
initial
shift_reg [15:0] = 16'hFFFF;
  
wire [3:0] addr = {A3, A2, A1, A0};
always @ (posedge CLK) begin
  if (CE)
    shift_reg <= ({(shift_reg[14:0]), D});
end
assign Q = shift_reg[addr];
endmodule
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

解决方案

The register initialization method in this code is not supported.

To get around the issue, specify the initial value of the register with the register declaration as below:

reg [15:0] shift_reg = 16'hFFFF;

AR# 60061
日期 10/08/2014
状态 Active
Type 已知问题
器件
Tools
People Also Viewed