module 1to2dec(inp, en, out); input inp, en; output out[1:0]; wire inp_n, en_n; assign inp_n = ~inp; assign en_n = ~en; assign out[0] = ~(inp_n & en_n); assign out[1] = ~(inp & en_n); endmodule; module 1to2dec(inp0, inp1, en, out); input inp0, inp1, en; output out[3:0]; wire s[1:0]; assign s[0] = 1to2dec(.inp(inp1), .en(en))[0]; assign s[1] = 1to2dec(.inp(inp1), .en(en))[1]; assign out[0] = 1to2dec(.inp(inp0), .en(c[0]))[0]; assign out[1] = 1to2dec(.inp(inp0), .en(c[0]))[1]; assign out[2] = 1to2dec(.inp(inp0), .en(c[1]))[0]; assign out[0] = 1to2dec(.inp(inp0), .en(c[1]))[1]; endmodule;