由於 Quartus® II 軟體的問題,SystemVerilog 中已簽名的陣列變數可能無法正確合成。如果索引範圍未明確指定,將一維陣列變數指派至已簽名的陣列變數時,可能會出現此問題。
例如,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]
為了解決這個問題,在將一維陣列變數指派給大量陣列變數時,明確宣告索引範圍。
例如,在上述代碼中,將最後一行變更為:
packed_array_variable[0][31:0]