| `resetall | |
| package my_pkg; | |
| // typedef enum bit [1:0] { RED, YELLOW, GREEN, RSVD } e_signal; | |
| /* typedef struct { bit [3:0] signal_id; | |
| bit active; | |
| bit [1:0] timeout; | |
| } e_sig_param; | |
| function common (); | |
| $display ("Called from somewhere"); | |
| endfunction | |
| task run (); | |
| endtask */ | |
| endpackage | |
| {* AAA *} | |
| // | |
| \ | |
| module mux2 (S,A,B,Y); | |
| input S; | |
| input A,B; | |
| output reg Y; | |
| reg a_vect[ 0 +: 8]; | |
| reg b_vect[ 0 -: 8]; | |
| //import my_pkg::*; | |
| `ifndef BUG | |
| always @(*) | |
| Y = (S)? B : A; | |
| `else | |
| always @(*) | |
| Y = (~S)? B : A; | |
| `endif | |
| endmodule | |
| module mux4 ( S, D, Y ); | |
| input[1:0] S; | |
| input[3:0] D; | |
| output Y; | |
| reg Y; | |
| wire[1:0] S; | |
| wire[3:0] D; | |
| always @* | |
| begin | |
| case( S ) | |
| 0 : Y = D[0]; | |
| 1 : Y = D[1]; | |
| `ifndef BUG | |
| 2 : Y = D[2]; | |
| `else | |
| 2 : Y = D[3]; | |
| `endif | |
| 3 : Y = D[3]; | |
| endcase | |
| end | |
| endmodule | |
| module mux8 ( S, D, Y ); | |
| input[2:0] S; | |
| input[7:0] D; | |
| output Y; | |
| reg Y; | |
| wire[2:0] S; | |
| wire[7:0] D; | |
| always @* | |
| begin | |
| case( S ) | |
| 0 : Y = D[0]; | |
| 1 : Y = D[1]; | |
| 2 : Y = D[2]; | |
| 3 : Y = D[3]; | |
| `ifndef BUG | |
| 4 : Y = D[4]; | |
| `else | |
| 4 : Y = D[7]; | |
| `endif | |
| 5 : Y = D[5]; | |
| 6 : Y = D[6]; | |
| 7 : Y = D[7]; | |
| endcase | |
| end | |
| endmodule | |
| module mux16 (D, S, Y); | |
| input [15:0] D; | |
| input [3:0] S; | |
| output Y; | |
| assign Y = D[S]; | |
| endmodule | |
| module top ( | |
| input [3:0] S, | |
| input [15:0] D, | |
| output M2,M4,M8,M16 | |
| ); | |
| mux2 u_mux2 ( | |
| .S (S[0]), | |
| .A (D[0]), | |
| .B (D[1]), | |
| .Y (M2) | |
| ); | |
| mux4 u_mux4 ( | |
| .S (S[1:0]), | |
| .D (D[3:0]), | |
| .Y (M4) | |
| ); | |
| mux8 u_mux8 ( | |
| .S (S[2:0]), | |
| .D (D[7:0]), | |
| .Y (M8) | |
| ); | |
| mux16 u_mux16 ( | |
| .S (S[3:0]), | |
| .D (D[15:0]), | |
| .Y (M16) | |
| ); | |
| endmodule |