En raison d’un problème dans le logiciel Quartus® II, il est possible que les variables de batteries emballées signées dans SystemVerilog ne soient pas correctement synthétisées. Ce problème peut survenir lors de l’affectation d’une variable de batterie unidimensionnel à une variable de batterie emballée signée si la plage d’index n’est pas explicitement spécifiée.
Par exemple, le code suivant peut être synthétisé incorrectement par le logiciel 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;
Pour contourner ce problème, il est explicitement impossible de déterminer la plage d’index lors de l’affectation d’une variable d’ensemble unidimensionnel à une variable de batterie emballée.
Par exemple, dans le code ci-dessus, changez la dernière ligne pour :
packed_array_variable[0][31:0] <= array_variable;