Devido a um problema no software Quartus® II, as variáveis de matriz empacotadas assinadas no SystemVerilog podem não ser sintetizadas corretamente. Este problema pode ocorrer ao atribuir uma variável de matriz unidimensional a uma variável de matriz embalada assinada, se a faixa de índice não for explicitamente especificada.
Por exemplo, o seguinte código pode ser sintetizado incorretamente pelo software Quartus II:
logic clk;
logic signed [3:0][31:0] packed_array_variable;
logic signed [31:0] array_variable;
always_ff @ (posedge clk)
packed_array_variable[0] <= array_variable;
Para resolver este problema, declare explicitamente a faixa de índice ao atribuir uma variável de matriz unidimensional a uma variável de matriz embalada.
Por exemplo, no código acima, mude a última linha para:
packed_array_variable[0][31:0] <= array_variable;