Aufgrund eines Problems in der Quartus® II Software werden vorgezeichente Array-Variablen in SystemVerilog möglicherweise nicht korrekt synthetischen. Dieses Problem kann auftreten, wenn einer gepackten Array-Variable mit Vorzeichen eine eindimensionale Array-Variable zugewiesen wird, wenn der Indexbereich nicht explizit angegeben wird.
Der folgende Code kann beispielsweise fälschlicherweise von der Quartus II Software hergestellt werden:
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;
Um dieses Problem zu umgehen, müssen Sie den Indexbereich explizit angeben, wenn einer gepackten Array-Variable eine eindimensionale Array-Variable zugewiesen wird.
Ändern Sie beispielsweise im oben genannten Code die letzte Zeile in:
packed_array_variable[0][31:0] <= array_variable;