Tengo lo siguiente en un diseño de verilog dirigido a un CPLD altera (actualmente dirigido a EPM240, aunque el dispositivo de destino no está escrito en piedra):
always @(posedge clk)
if (we)
begin
case (rw_sel)
3'd0: reg0 <= data_in;
3'd1: reg1 <= data_in;
...
endcase
end
Supuse que esto sintetizaría un diseño en el que rw_sel
se decodificó en varias líneas de selección diferentes, que se '' y '' con ' we
', y luego se conectaría a la entrada de habilitación del registro. p>
Sin embargo, esto no es lo que se ha hecho: al examinar los resultados en el visor RTL, la línea we
se ha conectado directamente a las entradas de habilitación de cada registro, luego la entrada de datos de cada registro se conecta a una mux2 que selecciona entre los datos entrantes o el valor actual del registro.
¿No es esto mucho menos eficiente en espacio que el diseño que esperaba? Y si es así, ¿cómo puedo persuadir a Quartus para que genere la versión más eficiente?