Merge branch 'clifford/dffsrfix' of https://github.com/YosysHQ/yosys into xaig
[yosys.git] / tests / hana / test_simulation_decoder.v
1
2 // test_simulation_decoder_2_test.v
3 module f1_test (input [1:0] in, input enable, output reg out);
4
5 always @(in or enable)
6 if(!enable)
7 out = 4'b0000;
8 else begin
9 case (in)
10 2'b00 : out = 0 ;
11 2'b01 : out = 1;
12 2'b10 : out = 0;
13 2'b11 : out = 1;
14 endcase
15 end
16 endmodule
17
18 // test_simulation_decoder_3_test.v
19 module f2_test (input [1:0] in, input enable, output reg [2:0] out);
20
21 always @(in or enable)
22 if(!enable)
23 out = 3'b000;
24 else begin
25 case (in)
26 2'b00 : out = 3'b001 ;
27 2'b01 : out = 3'b010;
28 2'b10 : out = 3'b010;
29 2'b11 : out = 3'b100;
30 endcase
31 end
32 endmodule
33
34 // test_simulation_decoder_4_test.v
35 module f3_test (input [2:0] in, output reg [7:0] out);
36
37 always @(in )
38 case (in)
39 3'b000 : out = 8'b00000001;
40 3'b001 : out = 8'b00000010;
41 3'b010 : out = 8'b00000100;
42 3'b011 : out = 8'b00001000;
43 3'b100 : out = 8'b00010000;
44 3'b101 : out = 8'b00100000;
45 3'b110 : out = 8'b01000000;
46 3'b111 : out = 8'b10000000;
47 endcase
48 endmodule
49
50 // test_simulation_decoder_5_test.v
51 module f4_test (input [2:0] in, input enable, output reg [7:0] out);
52
53 always @(in or enable )
54 if(!enable)
55 out = 8'b00000000;
56 else
57 case (in)
58 3'b000 : out = 8'b00000001;
59 3'b001 : out = 8'b00000010;
60 3'b010 : out = 8'b00000100;
61 3'b011 : out = 8'b00001000;
62 3'b100 : out = 8'b00010000;
63 3'b101 : out = 8'b00100000;
64 3'b110 : out = 8'b01000000;
65 3'b111 : out = 8'b10000000;
66 endcase
67 endmodule
68
69 // test_simulation_decoder_6_test.v
70 module f5_test (input [3:0] in, input enable, output reg [15:0] out);
71
72 always @(in or enable)
73 if(!enable)
74 out = 16'b0000000000000000;
75 else begin
76 case (in)
77 4'b0000 : out = 16'b0000000000000001;
78 4'b0001 : out = 16'b0000000000000010;
79 4'b0010 : out = 16'b0000000000000100;
80 4'b0011 : out = 16'b0000000000001000;
81 4'b0100 : out = 16'b0000000000010000;
82 4'b0101 : out = 16'b0000000000100000;
83 4'b0110 : out = 16'b0000000001000000;
84 4'b0111 : out = 16'b0000000010000000;
85 4'b1000 : out = 16'b0000000100000000;
86 4'b1001 : out = 16'b0000001000000000;
87 4'b1010 : out = 16'b0000010000000000;
88 4'b1011 : out = 16'b0000100000000000;
89 4'b1100 : out = 16'b0001000000000000;
90 4'b1101 : out = 16'b0010000000000000;
91 4'b1110 : out = 16'b0100000000000000;
92 4'b1111 : out = 16'b1000000000000000;
93 endcase
94 end
95 endmodule
96
97
98 // test_simulation_decoder_7_test.v
99 module f6_test (input [4:0] in, input enable, output reg [31:0] out);
100
101 always @(in or enable)
102 if(!enable)
103 out = 32'b00000000000000000000000000000000;
104 else begin
105 case (in)
106 5'b00000 : out = 32'b00000000000000000000000000000001;
107 5'b00001 : out = 32'b00000000000000000000000000000010;
108 5'b00010 : out = 32'b00000000000000000000000000000100;
109 5'b00011 : out = 32'b00000000000000000000000000001000;
110 5'b00100 : out = 32'b00000000000000000000000000010000;
111 5'b00101 : out = 32'b00000000000000000000000000100000;
112 5'b00110 : out = 32'b00000000000000000000000001000000;
113 5'b00111 : out = 32'b00000000000000000000000010000000;
114 5'b01000 : out = 32'b00000000000000000000000100000000;
115 5'b01001 : out = 32'b00000000000000000000001000000000;
116 5'b01010 : out = 32'b00000000000000000000010000000000;
117 5'b01011 : out = 32'b00000000000000000000100000000000;
118 5'b01100 : out = 32'b00000000000000000001000000000000;
119 5'b01101 : out = 32'b00000000000000000010000000000000;
120 5'b01110 : out = 32'b00000000000000000100000000000000;
121 5'b01111 : out = 32'b00000000000000001000000000000000;
122 5'b10000 : out = 32'b00000000000000010000000000000000;
123 5'b10001 : out = 32'b00000000000000100000000000000000;
124 5'b10010 : out = 32'b00000000000001000000000000000000;
125 5'b10011 : out = 32'b00000000000010000000000000000000;
126 5'b10100 : out = 32'b00000000000100000000000000000000;
127 5'b10101 : out = 32'b00000000001000000000000000000000;
128 5'b10110 : out = 32'b00000000010000000000000000000000;
129 5'b10111 : out = 32'b00000000100000000000000000000000;
130 5'b11000 : out = 32'b00000001000000000000000000000000;
131 5'b11001 : out = 32'b00000010000000000000000000000000;
132 5'b11010 : out = 32'b00000100000000000000000000000000;
133 5'b11011 : out = 32'b00001000000000000000000000000000;
134 5'b11100 : out = 32'b00010000000000000000000000000000;
135 5'b11101 : out = 32'b00100000000000000000000000000000;
136 5'b11110 : out = 32'b01000000000000000000000000000000;
137 5'b11111 : out = 32'b10000000000000000000000000000000;
138 endcase
139 end
140 endmodule
141
142
143 // test_simulation_decoder_8_test.v
144 module f7_test (input [5:0] in, input enable, output reg [63:0] out);
145
146 always @(in or enable)
147 if(!enable)
148 out = 64'b0000000000000000000000000000000000000000000000000000000000000000;
149 else begin
150 case (in)
151 6'b000000 : out = 64'b0000000000000000000000000000000000000000000000000000000000000001;
152 6'b000001 : out = 64'b0000000000000000000000000000000000000000000000000000000000000010;
153 6'b000010 : out = 64'b0000000000000000000000000000000000000000000000000000000000000100;
154 6'b000011 : out = 64'b0000000000000000000000000000000000000000000000000000000000001000;
155 6'b000100 : out = 64'b0000000000000000000000000000000000000000000000000000000000010000;
156 6'b000101 : out = 64'b0000000000000000000000000000000000000000000000000000000000100000;
157 6'b000110 : out = 64'b0000000000000000000000000000000000000000000000000000000001000000;
158 6'b000111 : out = 64'b0000000000000000000000000000000000000000000000000000000010000000;
159 6'b001000 : out = 64'b0000000000000000000000000000000000000000000000000000000100000000;
160 6'b001001 : out = 64'b0000000000000000000000000000000000000000000000000000001000000000;
161 6'b001010 : out = 64'b0000000000000000000000000000000000000000000000000000010000000000;
162 6'b001011 : out = 64'b0000000000000000000000000000000000000000000000000000100000000000;
163 6'b001100 : out = 64'b0000000000000000000000000000000000000000000000000001000000000000;
164 6'b001101 : out = 64'b0000000000000000000000000000000000000000000000000010000000000000;
165 6'b001110 : out = 64'b0000000000000000000000000000000000000000000000000100000000000000;
166 6'b001111 : out = 64'b0000000000000000000000000000000000000000000000001000000000000000;
167 6'b010000 : out = 64'b0000000000000000000000000000000000000000000000010000000000000000;
168 6'b010001 : out = 64'b0000000000000000000000000000000000000000000000100000000000000000;
169 6'b010010 : out = 64'b0000000000000000000000000000000000000000000001000000000000000000;
170 6'b010011 : out = 64'b0000000000000000000000000000000000000000000010000000000000000000;
171 6'b010100 : out = 64'b0000000000000000000000000000000000000000000100000000000000000000;
172 6'b010101 : out = 64'b0000000000000000000000000000000000000000001000000000000000000000;
173 6'b010110 : out = 64'b0000000000000000000000000000000000000000010000000000000000000000;
174 6'b010111 : out = 64'b0000000000000000000000000000000000000000100000000000000000000000;
175 6'b011000 : out = 64'b0000000000000000000000000000000000000001000000000000000000000000;
176 6'b011001 : out = 64'b0000000000000000000000000000000000000010000000000000000000000000;
177 6'b011010 : out = 64'b0000000000000000000000000000000000000100000000000000000000000000;
178 6'b011011 : out = 64'b0000000000000000000000000000000000001000000000000000000000000000;
179 6'b011100 : out = 64'b0000000000000000000000000000000000010000000000000000000000000000;
180 6'b011101 : out = 64'b0000000000000000000000000000000000100000000000000000000000000000;
181 6'b011110 : out = 64'b0000000000000000000000000000000001000000000000000000000000000000;
182 6'b011111 : out = 64'b0000000000000000000000000000000010000000000000000000000000000000;
183
184 6'b100000 : out = 64'b0000000000000000000000000000000100000000000000000000000000000000;
185 6'b100001 : out = 64'b0000000000000000000000000000001000000000000000000000000000000000;
186 6'b100010 : out = 64'b0000000000000000000000000000010000000000000000000000000000000000;
187 6'b100011 : out = 64'b0000000000000000000000000000100000000000000000000000000000000000;
188 6'b100100 : out = 64'b0000000000000000000000000001000000000000000000000000000000000000;
189 6'b100101 : out = 64'b0000000000000000000000000010000000000000000000000000000000000000;
190 6'b100110 : out = 64'b0000000000000000000000000100000000000000000000000000000000000000;
191 6'b100111 : out = 64'b0000000000000000000000001000000000000000000000000000000000000000;
192 6'b101000 : out = 64'b0000000000000000000000010000000000000000000000000000000000000000;
193 6'b101001 : out = 64'b0000000000000000000000100000000000000000000000000000000000000000;
194 6'b101010 : out = 64'b0000000000000000000001000000000000000000000000000000000000000000;
195 6'b101011 : out = 64'b0000000000000000000010000000000000000000000000000000000000000000;
196 6'b101100 : out = 64'b0000000000000000000100000000000000000000000000000000000000000000;
197 6'b101101 : out = 64'b0000000000000000001000000000000000000000000000000000000000000000;
198 6'b101110 : out = 64'b0000000000000000010000000000000000000000000000000000000000000000;
199 6'b101111 : out = 64'b0000000000000000100000000000000000000000000000000000000000000000;
200 6'b110000 : out = 64'b0000000000000001000000000000000000000000000000000000000000000000;
201 6'b110001 : out = 64'b0000000000000010000000000000000000000000000000000000000000000000;
202 6'b110010 : out = 64'b0000000000000100000000000000000000000000000000000000000000000000;
203 6'b110011 : out = 64'b0000000000001000000000000000000000000000000000000000000000000000;
204 6'b110100 : out = 64'b0000000000010000000000000000000000000000000000000000000000000000;
205 6'b110101 : out = 64'b0000000000100000000000000000000000000000000000000000000000000000;
206 6'b110110 : out = 64'b0000000001000000000000000000000000000000000000000000000000000000;
207 6'b110111 : out = 64'b0000000010000000000000000000000000000000000000000000000000000000;
208 6'b111000 : out = 64'b0000000100000000000000000000000000000000000000000000000000000000;
209 6'b111001 : out = 64'b0000001000000000000000000000000000000000000000000000000000000000;
210 6'b111010 : out = 64'b0000010000000000000000000000000000000000000000000000000000000000;
211 6'b111011 : out = 64'b0000100000000000000000000000000000000000000000000000000000000000;
212 6'b111100 : out = 64'b0001000000000000000000000000000000000000000000000000000000000000;
213 6'b111101 : out = 64'b0010000000000000000000000000000000000000000000000000000000000000;
214 6'b111110 : out = 64'b0100000000000000000000000000000000000000000000000000000000000000;
215 6'b111111 : out = 64'b1000000000000000000000000000000000000000000000000000000000000000;
216 endcase
217 end
218 endmodule
219