Quartus® II ソフトウェアの問題により、SystemVerilog の署名付きパック配列変数が正しく合成されない場合があります。この問題は、インデックス範囲が明示的に指定されていない場合に、1 次元配列変数を符号付きパック配列変数に割り当てる際に発生する可能性があります。
例えば、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;
この問題を回避するには、パック配列変数に 1 次元配列変数を割り当てる際にインデックス範囲を明示的に定義します。
たとえば、上記のコードでは、最後の行を次に変更します。
packed_array_variable[0][31:0] <= array_variable;