Una de las dudas que suele surgirle a un diseñador cuando maneja los arrays muldimensionales de SystemVerilog es si dichos códigos son sintetizables.
Afortunadamente la mayoría de los sintetizadores de hoy en día los admiten sin problemas. Para que sirva de ejemplo veamos el código de un shifter 2D de 32 etapas de 8 bits
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
module shifter_2d(clock,reset,enable,clear,shift,entrada_serie, salida_serie); parameter tamanyo=32; input clock; //senyal de reloj input reset; //reset asincrono input enable; input [7:0]entrada_serie; input clear; input shift; output [7:0] salida_serie ; logic [tamanyo-1:0][7:0] aux; always_ff @(posedge clock or negedge reset) if (!reset) aux<={tamanyo{8'b0}}; else if (!clear) if (shift==1'b1) aux<={entrada_serie,aux[tamanyo-1:1]}; else aux<={tamanyo{8'b0}}; assign salida_serie=aux[0]; endmodule |