1<? 2 if (elem.Bits = 1) { 3 moduleName = format("Mux_%dx1", 1 << elem.'Selector Bits'); 4 export bitRange := ""; 5 } 6 else { 7 generics[0] := "Bits"; 8 moduleName = format("Mux_%dx1_NBits", 1 << elem.'Selector Bits'); 9 export bitRange := "[(Bits - 1):0] "; 10 } 11 12 selRange := format("[%d:0] ", elem.'Selector Bits' - 1); 13 inCount := 1 << elem.'Selector Bits'; 14?> 15module <?= moduleName ?> 16<?- if (elem.Bits > 1) { ?> #( 17 parameter Bits = 2 18) 19<?- } ?> 20( 21 input <?= selRange ?>sel, 22 <? for (n:=0; n < inCount; n++) { -?> 23 input <?= bitRange ?>in_<?= n ?>, 24 <? } -?> 25 output reg <?= bitRange ?>out 26); 27 always @ (*) begin 28 case (sel) 29 <?- for (n:=0; n < inCount; n++) { ?> 30 <?= elem.'Selector Bits' ?>'h<?= format("%x", n) ?>: out = in_<?= n ?>; 31 <?- } ?> 32 default: 33 out = 'h0; 34 endcase 35 end 36endmodule 37