1// DESCRIPTION: Verilator: Verilog Test module
2//
3// This file ONLY is placed under the Creative Commons Public Domain, for
4// any use, without warranty, 2008 by Wilson Snyder.
5// SPDX-License-Identifier: CC0-1.0
6
7module t (/*AUTOARG*/
8   // Inputs
9   clk
10   );
11   input clk;
12
13   integer 	cyc = 0;
14   reg [63:0] 	crc;
15   reg [63:0] 	sum;
16
17   // Take CRC data and apply to testblock inputs
18   wire [7:0] 	sel = crc[7:0];
19   wire [255+3:0]  in = {crc[2:0],crc,crc,crc,crc};
20
21   /*AUTOWIRE*/
22   // Beginning of automatic wires (for undeclared instantiated-module outputs)
23   wire [3:0]		out;			// From test of Test.v
24   // End of automatics
25
26   /* Test AUTO_TEMPLATE (
27    .i\([0-9]+\)	(in[\1 +:4]),
28    ); */
29
30   Test test (/*AUTOINST*/
31	      // Outputs
32	      .out			(out[3:0]),
33	      // Inputs
34	      .sel			(sel[7:0]),
35	      .i0			(in[0 +:4]),		 // Templated
36	      .i1			(in[1 +:4]),		 // Templated
37	      .i2			(in[2 +:4]),		 // Templated
38	      .i3			(in[3 +:4]),		 // Templated
39	      .i4			(in[4 +:4]),		 // Templated
40	      .i5			(in[5 +:4]),		 // Templated
41	      .i6			(in[6 +:4]),		 // Templated
42	      .i7			(in[7 +:4]),		 // Templated
43	      .i8			(in[8 +:4]),		 // Templated
44	      .i9			(in[9 +:4]),		 // Templated
45	      .i10			(in[10 +:4]),		 // Templated
46	      .i11			(in[11 +:4]),		 // Templated
47	      .i12			(in[12 +:4]),		 // Templated
48	      .i13			(in[13 +:4]),		 // Templated
49	      .i14			(in[14 +:4]),		 // Templated
50	      .i15			(in[15 +:4]),		 // Templated
51	      .i16			(in[16 +:4]),		 // Templated
52	      .i17			(in[17 +:4]),		 // Templated
53	      .i18			(in[18 +:4]),		 // Templated
54	      .i19			(in[19 +:4]),		 // Templated
55	      .i20			(in[20 +:4]),		 // Templated
56	      .i21			(in[21 +:4]),		 // Templated
57	      .i22			(in[22 +:4]),		 // Templated
58	      .i23			(in[23 +:4]),		 // Templated
59	      .i24			(in[24 +:4]),		 // Templated
60	      .i25			(in[25 +:4]),		 // Templated
61	      .i26			(in[26 +:4]),		 // Templated
62	      .i27			(in[27 +:4]),		 // Templated
63	      .i28			(in[28 +:4]),		 // Templated
64	      .i29			(in[29 +:4]),		 // Templated
65	      .i30			(in[30 +:4]),		 // Templated
66	      .i31			(in[31 +:4]),		 // Templated
67	      .i32			(in[32 +:4]),		 // Templated
68	      .i33			(in[33 +:4]),		 // Templated
69	      .i34			(in[34 +:4]),		 // Templated
70	      .i35			(in[35 +:4]),		 // Templated
71	      .i36			(in[36 +:4]),		 // Templated
72	      .i37			(in[37 +:4]),		 // Templated
73	      .i38			(in[38 +:4]),		 // Templated
74	      .i39			(in[39 +:4]),		 // Templated
75	      .i40			(in[40 +:4]),		 // Templated
76	      .i41			(in[41 +:4]),		 // Templated
77	      .i42			(in[42 +:4]),		 // Templated
78	      .i43			(in[43 +:4]),		 // Templated
79	      .i44			(in[44 +:4]),		 // Templated
80	      .i45			(in[45 +:4]),		 // Templated
81	      .i46			(in[46 +:4]),		 // Templated
82	      .i47			(in[47 +:4]),		 // Templated
83	      .i48			(in[48 +:4]),		 // Templated
84	      .i49			(in[49 +:4]),		 // Templated
85	      .i50			(in[50 +:4]),		 // Templated
86	      .i51			(in[51 +:4]),		 // Templated
87	      .i52			(in[52 +:4]),		 // Templated
88	      .i53			(in[53 +:4]),		 // Templated
89	      .i54			(in[54 +:4]),		 // Templated
90	      .i55			(in[55 +:4]),		 // Templated
91	      .i56			(in[56 +:4]),		 // Templated
92	      .i57			(in[57 +:4]),		 // Templated
93	      .i58			(in[58 +:4]),		 // Templated
94	      .i59			(in[59 +:4]),		 // Templated
95	      .i60			(in[60 +:4]),		 // Templated
96	      .i61			(in[61 +:4]),		 // Templated
97	      .i62			(in[62 +:4]),		 // Templated
98	      .i63			(in[63 +:4]),		 // Templated
99	      .i64			(in[64 +:4]),		 // Templated
100	      .i65			(in[65 +:4]),		 // Templated
101	      .i66			(in[66 +:4]),		 // Templated
102	      .i67			(in[67 +:4]),		 // Templated
103	      .i68			(in[68 +:4]),		 // Templated
104	      .i69			(in[69 +:4]),		 // Templated
105	      .i70			(in[70 +:4]),		 // Templated
106	      .i71			(in[71 +:4]),		 // Templated
107	      .i72			(in[72 +:4]),		 // Templated
108	      .i73			(in[73 +:4]),		 // Templated
109	      .i74			(in[74 +:4]),		 // Templated
110	      .i75			(in[75 +:4]),		 // Templated
111	      .i76			(in[76 +:4]),		 // Templated
112	      .i77			(in[77 +:4]),		 // Templated
113	      .i78			(in[78 +:4]),		 // Templated
114	      .i79			(in[79 +:4]),		 // Templated
115	      .i80			(in[80 +:4]),		 // Templated
116	      .i81			(in[81 +:4]),		 // Templated
117	      .i82			(in[82 +:4]),		 // Templated
118	      .i83			(in[83 +:4]),		 // Templated
119	      .i84			(in[84 +:4]),		 // Templated
120	      .i85			(in[85 +:4]),		 // Templated
121	      .i86			(in[86 +:4]),		 // Templated
122	      .i87			(in[87 +:4]),		 // Templated
123	      .i88			(in[88 +:4]),		 // Templated
124	      .i89			(in[89 +:4]),		 // Templated
125	      .i90			(in[90 +:4]),		 // Templated
126	      .i91			(in[91 +:4]),		 // Templated
127	      .i92			(in[92 +:4]),		 // Templated
128	      .i93			(in[93 +:4]),		 // Templated
129	      .i94			(in[94 +:4]),		 // Templated
130	      .i95			(in[95 +:4]),		 // Templated
131	      .i96			(in[96 +:4]),		 // Templated
132	      .i97			(in[97 +:4]),		 // Templated
133	      .i98			(in[98 +:4]),		 // Templated
134	      .i99			(in[99 +:4]),		 // Templated
135	      .i100			(in[100 +:4]),		 // Templated
136	      .i101			(in[101 +:4]),		 // Templated
137	      .i102			(in[102 +:4]),		 // Templated
138	      .i103			(in[103 +:4]),		 // Templated
139	      .i104			(in[104 +:4]),		 // Templated
140	      .i105			(in[105 +:4]),		 // Templated
141	      .i106			(in[106 +:4]),		 // Templated
142	      .i107			(in[107 +:4]),		 // Templated
143	      .i108			(in[108 +:4]),		 // Templated
144	      .i109			(in[109 +:4]),		 // Templated
145	      .i110			(in[110 +:4]),		 // Templated
146	      .i111			(in[111 +:4]),		 // Templated
147	      .i112			(in[112 +:4]),		 // Templated
148	      .i113			(in[113 +:4]),		 // Templated
149	      .i114			(in[114 +:4]),		 // Templated
150	      .i115			(in[115 +:4]),		 // Templated
151	      .i116			(in[116 +:4]),		 // Templated
152	      .i117			(in[117 +:4]),		 // Templated
153	      .i118			(in[118 +:4]),		 // Templated
154	      .i119			(in[119 +:4]),		 // Templated
155	      .i120			(in[120 +:4]),		 // Templated
156	      .i121			(in[121 +:4]),		 // Templated
157	      .i122			(in[122 +:4]),		 // Templated
158	      .i123			(in[123 +:4]),		 // Templated
159	      .i124			(in[124 +:4]),		 // Templated
160	      .i125			(in[125 +:4]),		 // Templated
161	      .i126			(in[126 +:4]),		 // Templated
162	      .i127			(in[127 +:4]),		 // Templated
163	      .i128			(in[128 +:4]),		 // Templated
164	      .i129			(in[129 +:4]),		 // Templated
165	      .i130			(in[130 +:4]),		 // Templated
166	      .i131			(in[131 +:4]),		 // Templated
167	      .i132			(in[132 +:4]),		 // Templated
168	      .i133			(in[133 +:4]),		 // Templated
169	      .i134			(in[134 +:4]),		 // Templated
170	      .i135			(in[135 +:4]),		 // Templated
171	      .i136			(in[136 +:4]),		 // Templated
172	      .i137			(in[137 +:4]),		 // Templated
173	      .i138			(in[138 +:4]),		 // Templated
174	      .i139			(in[139 +:4]),		 // Templated
175	      .i140			(in[140 +:4]),		 // Templated
176	      .i141			(in[141 +:4]),		 // Templated
177	      .i142			(in[142 +:4]),		 // Templated
178	      .i143			(in[143 +:4]),		 // Templated
179	      .i144			(in[144 +:4]),		 // Templated
180	      .i145			(in[145 +:4]),		 // Templated
181	      .i146			(in[146 +:4]),		 // Templated
182	      .i147			(in[147 +:4]),		 // Templated
183	      .i148			(in[148 +:4]),		 // Templated
184	      .i149			(in[149 +:4]),		 // Templated
185	      .i150			(in[150 +:4]),		 // Templated
186	      .i151			(in[151 +:4]),		 // Templated
187	      .i152			(in[152 +:4]),		 // Templated
188	      .i153			(in[153 +:4]),		 // Templated
189	      .i154			(in[154 +:4]),		 // Templated
190	      .i155			(in[155 +:4]),		 // Templated
191	      .i156			(in[156 +:4]),		 // Templated
192	      .i157			(in[157 +:4]),		 // Templated
193	      .i158			(in[158 +:4]),		 // Templated
194	      .i159			(in[159 +:4]),		 // Templated
195	      .i160			(in[160 +:4]),		 // Templated
196	      .i161			(in[161 +:4]),		 // Templated
197	      .i162			(in[162 +:4]),		 // Templated
198	      .i163			(in[163 +:4]),		 // Templated
199	      .i164			(in[164 +:4]),		 // Templated
200	      .i165			(in[165 +:4]),		 // Templated
201	      .i166			(in[166 +:4]),		 // Templated
202	      .i167			(in[167 +:4]),		 // Templated
203	      .i168			(in[168 +:4]),		 // Templated
204	      .i169			(in[169 +:4]),		 // Templated
205	      .i170			(in[170 +:4]),		 // Templated
206	      .i171			(in[171 +:4]),		 // Templated
207	      .i172			(in[172 +:4]),		 // Templated
208	      .i173			(in[173 +:4]),		 // Templated
209	      .i174			(in[174 +:4]),		 // Templated
210	      .i175			(in[175 +:4]),		 // Templated
211	      .i176			(in[176 +:4]),		 // Templated
212	      .i177			(in[177 +:4]),		 // Templated
213	      .i178			(in[178 +:4]),		 // Templated
214	      .i179			(in[179 +:4]),		 // Templated
215	      .i180			(in[180 +:4]),		 // Templated
216	      .i181			(in[181 +:4]),		 // Templated
217	      .i182			(in[182 +:4]),		 // Templated
218	      .i183			(in[183 +:4]),		 // Templated
219	      .i184			(in[184 +:4]),		 // Templated
220	      .i185			(in[185 +:4]),		 // Templated
221	      .i186			(in[186 +:4]),		 // Templated
222	      .i187			(in[187 +:4]),		 // Templated
223	      .i188			(in[188 +:4]),		 // Templated
224	      .i189			(in[189 +:4]),		 // Templated
225	      .i190			(in[190 +:4]),		 // Templated
226	      .i191			(in[191 +:4]),		 // Templated
227	      .i192			(in[192 +:4]),		 // Templated
228	      .i193			(in[193 +:4]),		 // Templated
229	      .i194			(in[194 +:4]),		 // Templated
230	      .i195			(in[195 +:4]),		 // Templated
231	      .i196			(in[196 +:4]),		 // Templated
232	      .i197			(in[197 +:4]),		 // Templated
233	      .i198			(in[198 +:4]),		 // Templated
234	      .i199			(in[199 +:4]),		 // Templated
235	      .i200			(in[200 +:4]),		 // Templated
236	      .i201			(in[201 +:4]),		 // Templated
237	      .i202			(in[202 +:4]),		 // Templated
238	      .i203			(in[203 +:4]),		 // Templated
239	      .i204			(in[204 +:4]),		 // Templated
240	      .i205			(in[205 +:4]),		 // Templated
241	      .i206			(in[206 +:4]),		 // Templated
242	      .i207			(in[207 +:4]),		 // Templated
243	      .i208			(in[208 +:4]),		 // Templated
244	      .i209			(in[209 +:4]),		 // Templated
245	      .i210			(in[210 +:4]),		 // Templated
246	      .i211			(in[211 +:4]),		 // Templated
247	      .i212			(in[212 +:4]),		 // Templated
248	      .i213			(in[213 +:4]),		 // Templated
249	      .i214			(in[214 +:4]),		 // Templated
250	      .i215			(in[215 +:4]),		 // Templated
251	      .i216			(in[216 +:4]),		 // Templated
252	      .i217			(in[217 +:4]),		 // Templated
253	      .i218			(in[218 +:4]),		 // Templated
254	      .i219			(in[219 +:4]),		 // Templated
255	      .i220			(in[220 +:4]),		 // Templated
256	      .i221			(in[221 +:4]),		 // Templated
257	      .i222			(in[222 +:4]),		 // Templated
258	      .i223			(in[223 +:4]),		 // Templated
259	      .i224			(in[224 +:4]),		 // Templated
260	      .i225			(in[225 +:4]),		 // Templated
261	      .i226			(in[226 +:4]),		 // Templated
262	      .i227			(in[227 +:4]),		 // Templated
263	      .i228			(in[228 +:4]),		 // Templated
264	      .i229			(in[229 +:4]),		 // Templated
265	      .i230			(in[230 +:4]),		 // Templated
266	      .i231			(in[231 +:4]),		 // Templated
267	      .i232			(in[232 +:4]),		 // Templated
268	      .i233			(in[233 +:4]),		 // Templated
269	      .i234			(in[234 +:4]),		 // Templated
270	      .i235			(in[235 +:4]),		 // Templated
271	      .i236			(in[236 +:4]),		 // Templated
272	      .i237			(in[237 +:4]),		 // Templated
273	      .i238			(in[238 +:4]),		 // Templated
274	      .i239			(in[239 +:4]),		 // Templated
275	      .i240			(in[240 +:4]),		 // Templated
276	      .i241			(in[241 +:4]),		 // Templated
277	      .i242			(in[242 +:4]),		 // Templated
278	      .i243			(in[243 +:4]),		 // Templated
279	      .i244			(in[244 +:4]),		 // Templated
280	      .i245			(in[245 +:4]),		 // Templated
281	      .i246			(in[246 +:4]),		 // Templated
282	      .i247			(in[247 +:4]),		 // Templated
283	      .i248			(in[248 +:4]),		 // Templated
284	      .i249			(in[249 +:4]),		 // Templated
285	      .i250			(in[250 +:4]),		 // Templated
286	      .i251			(in[251 +:4]),		 // Templated
287	      .i252			(in[252 +:4]),		 // Templated
288	      .i253			(in[253 +:4]),		 // Templated
289	      .i254			(in[254 +:4]),		 // Templated
290	      .i255			(in[255 +:4]));		 // Templated
291
292   // Aggregate outputs into a single result vector
293   wire [63:0] result = {60'h0, out};
294
295   // What checksum will we end up with
296`define EXPECTED_SUM 64'h36f3051d15caf07a
297
298   // Test loop
299   always @ (posedge clk) begin
300`ifdef TEST_VERBOSE
301      $write("[%0t] cyc==%0d crc=%x result=%x\n", $time, cyc, crc, result);
302`endif
303      cyc <= cyc + 1;
304      crc <= {crc[62:0], crc[63] ^ crc[2] ^ crc[0]};
305      sum <= result ^ {sum[62:0], sum[63] ^ sum[2] ^ sum[0]};
306      if (cyc==0) begin
307	 // Setup
308	 crc <= 64'h5aef0c8d_d70a4497;
309      end
310      else if (cyc<10) begin
311	 sum <= 64'h0;
312      end
313      else if (cyc<90) begin
314      end
315      else if (cyc==99) begin
316	 $write("[%0t] cyc==%0d crc=%x sum=%x\n", $time, cyc, crc, sum);
317	 if (crc !== 64'hc77bb9b3784ea091) $stop;
318	 if (sum !== `EXPECTED_SUM) $stop;
319	 $write("*-* All Finished *-*\n");
320	 $finish;
321      end
322   end
323
324endmodule
325
326module Test
327  ( output wire [3:0] out,
328
329    input [7:0] sel,
330
331    input [3:0] i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16,
332    i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33,
333    i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50,
334    i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63, i64, i65, i66, i67,
335    i68, i69, i70, i71, i72, i73, i74, i75, i76, i77, i78, i79, i80, i81, i82, i83, i84,
336    i85, i86, i87, i88, i89, i90, i91, i92, i93, i94, i95, i96, i97, i98, i99, i100, i101,
337    i102, i103, i104, i105, i106, i107, i108, i109, i110, i111, i112, i113, i114, i115,
338    i116, i117, i118, i119, i120, i121, i122, i123, i124, i125, i126, i127, i128, i129,
339    i130, i131, i132, i133, i134, i135, i136, i137, i138, i139, i140, i141, i142, i143,
340    i144, i145, i146, i147, i148, i149, i150, i151, i152, i153, i154, i155, i156, i157,
341    i158, i159, i160, i161, i162, i163, i164, i165, i166, i167, i168, i169, i170, i171,
342    i172, i173, i174, i175, i176, i177, i178, i179, i180, i181, i182, i183, i184, i185,
343    i186, i187, i188, i189, i190, i191, i192, i193, i194, i195, i196, i197, i198, i199,
344    i200, i201, i202, i203, i204, i205, i206, i207, i208, i209, i210, i211, i212, i213,
345    i214, i215, i216, i217, i218, i219, i220, i221, i222, i223, i224, i225, i226, i227,
346    i228, i229, i230, i231, i232, i233, i234, i235, i236, i237, i238, i239, i240, i241,
347    i242, i243, i244, i245, i246, i247, i248, i249, i250, i251, i252, i253, i254, i255
348   );
349
350   assign out
351     = (sel==8'h00) ? i0 : (sel==8'h01) ? i1 : (sel==8'h02) ? i2 : (sel==8'h03) ? i3
352       : (sel==8'h04) ? i4 : (sel==8'h05) ? i5 : (sel==8'h06) ? i6 : (sel==8'h07) ? i7
353       : (sel==8'h08) ? i8 : (sel==8'h09) ? i9 : (sel==8'h0a) ? i10 : (sel==8'h0b) ? i11
354       : (sel==8'h0c) ? i12 : (sel==8'h0d) ? i13 : (sel==8'h0e) ? i14 : (sel==8'h0f) ? i15
355       : (sel==8'h10) ? i16 : (sel==8'h11) ? i17 : (sel==8'h12) ? i18 : (sel==8'h13) ? i19
356       : (sel==8'h14) ? i20 : (sel==8'h15) ? i21 : (sel==8'h16) ? i22 : (sel==8'h17) ? i23
357       : (sel==8'h18) ? i24 : (sel==8'h19) ? i25 : (sel==8'h1a) ? i26 : (sel==8'h1b) ? i27
358       : (sel==8'h1c) ? i28 : (sel==8'h1d) ? i29 : (sel==8'h1e) ? i30 : (sel==8'h1f) ? i31
359       : (sel==8'h20) ? i32 : (sel==8'h21) ? i33 : (sel==8'h22) ? i34 : (sel==8'h23) ? i35
360       : (sel==8'h24) ? i36 : (sel==8'h25) ? i37 : (sel==8'h26) ? i38 : (sel==8'h27) ? i39
361       : (sel==8'h28) ? i40 : (sel==8'h29) ? i41 : (sel==8'h2a) ? i42 : (sel==8'h2b) ? i43
362       : (sel==8'h2c) ? i44 : (sel==8'h2d) ? i45 : (sel==8'h2e) ? i46 : (sel==8'h2f) ? i47
363       : (sel==8'h30) ? i48 : (sel==8'h31) ? i49 : (sel==8'h32) ? i50 : (sel==8'h33) ? i51
364       : (sel==8'h34) ? i52 : (sel==8'h35) ? i53 : (sel==8'h36) ? i54 : (sel==8'h37) ? i55
365       : (sel==8'h38) ? i56 : (sel==8'h39) ? i57 : (sel==8'h3a) ? i58 : (sel==8'h3b) ? i59
366       : (sel==8'h3c) ? i60 : (sel==8'h3d) ? i61 : (sel==8'h3e) ? i62 : (sel==8'h3f) ? i63
367       : (sel==8'h40) ? i64 : (sel==8'h41) ? i65 : (sel==8'h42) ? i66 : (sel==8'h43) ? i67
368       : (sel==8'h44) ? i68 : (sel==8'h45) ? i69 : (sel==8'h46) ? i70 : (sel==8'h47) ? i71
369       : (sel==8'h48) ? i72 : (sel==8'h49) ? i73 : (sel==8'h4a) ? i74 : (sel==8'h4b) ? i75
370       : (sel==8'h4c) ? i76 : (sel==8'h4d) ? i77 : (sel==8'h4e) ? i78 : (sel==8'h4f) ? i79
371       : (sel==8'h50) ? i80 : (sel==8'h51) ? i81 : (sel==8'h52) ? i82 : (sel==8'h53) ? i83
372       : (sel==8'h54) ? i84 : (sel==8'h55) ? i85 : (sel==8'h56) ? i86 : (sel==8'h57) ? i87
373       : (sel==8'h58) ? i88 : (sel==8'h59) ? i89 : (sel==8'h5a) ? i90 : (sel==8'h5b) ? i91
374       : (sel==8'h5c) ? i92 : (sel==8'h5d) ? i93 : (sel==8'h5e) ? i94 : (sel==8'h5f) ? i95
375       : (sel==8'h60) ? i96 : (sel==8'h61) ? i97 : (sel==8'h62) ? i98 : (sel==8'h63) ? i99
376       : (sel==8'h64) ? i100 : (sel==8'h65) ? i101 : (sel==8'h66) ? i102 : (sel==8'h67) ? i103
377       : (sel==8'h68) ? i104 : (sel==8'h69) ? i105 : (sel==8'h6a) ? i106 : (sel==8'h6b) ? i107
378       : (sel==8'h6c) ? i108 : (sel==8'h6d) ? i109 : (sel==8'h6e) ? i110 : (sel==8'h6f) ? i111
379       : (sel==8'h70) ? i112 : (sel==8'h71) ? i113 : (sel==8'h72) ? i114 : (sel==8'h73) ? i115
380       : (sel==8'h74) ? i116 : (sel==8'h75) ? i117 : (sel==8'h76) ? i118 : (sel==8'h77) ? i119
381       : (sel==8'h78) ? i120 : (sel==8'h79) ? i121 : (sel==8'h7a) ? i122 : (sel==8'h7b) ? i123
382       : (sel==8'h7c) ? i124 : (sel==8'h7d) ? i125 : (sel==8'h7e) ? i126 : (sel==8'h7f) ? i127
383       : (sel==8'h80) ? i128 : (sel==8'h81) ? i129 : (sel==8'h82) ? i130 : (sel==8'h83) ? i131
384       : (sel==8'h84) ? i132 : (sel==8'h85) ? i133 : (sel==8'h86) ? i134 : (sel==8'h87) ? i135
385       : (sel==8'h88) ? i136 : (sel==8'h89) ? i137 : (sel==8'h8a) ? i138 : (sel==8'h8b) ? i139
386       : (sel==8'h8c) ? i140 : (sel==8'h8d) ? i141 : (sel==8'h8e) ? i142 : (sel==8'h8f) ? i143
387       : (sel==8'h90) ? i144 : (sel==8'h91) ? i145 : (sel==8'h92) ? i146 : (sel==8'h93) ? i147
388       : (sel==8'h94) ? i148 : (sel==8'h95) ? i149 : (sel==8'h96) ? i150 : (sel==8'h98) ? i151
389       : (sel==8'h99) ? i152 : (sel==8'h9a) ? i153 : (sel==8'h9b) ? i154 : (sel==8'h9c) ? i155
390       : (sel==8'h9d) ? i156 : (sel==8'h9e) ? i157 : (sel==8'h9f) ? i158 : (sel==8'ha0) ? i159
391       : (sel==8'ha1) ? i160 : (sel==8'ha2) ? i161 : (sel==8'ha3) ? i162 : (sel==8'ha4) ? i163
392       : (sel==8'ha5) ? i164 : (sel==8'ha6) ? i165 : (sel==8'ha7) ? i166 : (sel==8'ha8) ? i167
393       : (sel==8'ha9) ? i168 : (sel==8'haa) ? i169 : (sel==8'hab) ? i170 : (sel==8'hac) ? i171
394       : (sel==8'had) ? i172 : (sel==8'hae) ? i173 : (sel==8'haf) ? i174 : (sel==8'hb0) ? i175
395       : (sel==8'hb1) ? i176 : (sel==8'hb2) ? i177 : (sel==8'hb3) ? i178 : (sel==8'hb4) ? i179
396       : (sel==8'hb5) ? i180 : (sel==8'hb6) ? i181 : (sel==8'hb7) ? i182 : (sel==8'hb8) ? i183
397       : (sel==8'hb9) ? i184 : (sel==8'hba) ? i185 : (sel==8'hbb) ? i186 : (sel==8'hbc) ? i187
398       : (sel==8'hbd) ? i188 : (sel==8'hbe) ? i189 : (sel==8'hbf) ? i190 : (sel==8'hc0) ? i191
399       : (sel==8'hc1) ? i192 : (sel==8'hc2) ? i193 : (sel==8'hc3) ? i194 : (sel==8'hc4) ? i195
400       : (sel==8'hc5) ? i196 : (sel==8'hc6) ? i197 : (sel==8'hc7) ? i198 : (sel==8'hc8) ? i199
401       : (sel==8'hc9) ? i200 : (sel==8'hca) ? i201 : (sel==8'hcb) ? i202 : (sel==8'hcc) ? i203
402       : (sel==8'hcd) ? i204 : (sel==8'hce) ? i205 : (sel==8'hcf) ? i206 : (sel==8'hd0) ? i207
403       : (sel==8'hd1) ? i208 : (sel==8'hd2) ? i209 : (sel==8'hd3) ? i210 : (sel==8'hd4) ? i211
404       : (sel==8'hd5) ? i212 : (sel==8'hd6) ? i213 : (sel==8'hd7) ? i214 : (sel==8'hd8) ? i215
405       : (sel==8'hd9) ? i216 : (sel==8'hda) ? i217 : (sel==8'hdb) ? i218 : (sel==8'hdc) ? i219
406       : (sel==8'hdd) ? i220 : (sel==8'hde) ? i221 : (sel==8'hdf) ? i222 : (sel==8'he0) ? i223
407       : (sel==8'he1) ? i224 : (sel==8'he2) ? i225 : (sel==8'he3) ? i226 : (sel==8'he4) ? i227
408       : (sel==8'he5) ? i228 : (sel==8'he6) ? i229 : (sel==8'he7) ? i230 : (sel==8'he8) ? i231
409       : (sel==8'he9) ? i232 : (sel==8'hea) ? i233 : (sel==8'heb) ? i234 : (sel==8'hec) ? i235
410       : (sel==8'hed) ? i236 : (sel==8'hee) ? i237 : (sel==8'hef) ? i238 : (sel==8'hf0) ? i239
411       : (sel==8'hf1) ? i240 : (sel==8'hf2) ? i241 : (sel==8'hf3) ? i242 : (sel==8'hf4) ? i243
412       : (sel==8'hf5) ? i244 : (sel==8'hf6) ? i245 : (sel==8'hf7) ? i246 : (sel==8'hf8) ? i247
413       : (sel==8'hf9) ? i248 : (sel==8'hfa) ? i249 : (sel==8'hfb) ? i250 : (sel==8'hfc) ? i251
414       : (sel==8'hfd) ? i252 : (sel==8'hfe) ? i253 : (sel==8'hff) ? i254 : i255;
415
416endmodule
417