// pinmux.sv — two pads shared between GPIO, UART, SPI and test functions module pinmux ( input logic [1:0] mode, // 0 GPIO, 1 UART, 2 SPI, 3 test input logic gpio_out0, gpio_out1, input logic uart_tx, input logic spi_sclk, spi_mosi, input logic test_obs0, test_obs1, output logic pad0, pad1 ); always_comb begin case (mode) 2'd0: begin pad0 = gpio_out0; pad1 = gpio_out1; end 2'd1: begin pad0 = uart_tx; pad1 = 1'b1; end // pad1 idles high in UART mode 2'd2: begin pad0 = spi_sclk; pad1 = spi_mosi; end default: begin pad0 = test_obs0; pad1 = test_obs1; end endcase end endmodule