Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / niu / rtl / niu_ipp_sum_ctrl.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: niu_ipp_sum_ctrl.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35
36`timescale 1ns/10ps
37
38/**********************************************************
39***********************************************************
40
41 Project : Niu
42
43 File name : niu_ipp_sum_ctrl.v
44
45 Module(s) name : niu_ipp_sum_ctrl
46 Original: : sum_ctrl.v main.17, label:
47
48 Parent modules : niu_ipp_sum.v
49
50 Child modules : niu_ipp_sum_lib.v, niu_ipp_sum_lib.h,
51
52 Author's name : George Chu
53
54 Date : March. 2004
55
56 Description : Control logic of the ipp checksum.
57
58 Synthesis Notes:
59
60 Modification History:
61
62 Date Description
63 ---- -----------
64
65************************************************************
66***********************************************************/
67
68`timescale 1ns/10ps
69
70`include "niu_ipp_sum_lib.h"
71
72module niu_ipp_sum_ctrl (din_wrd, port_num, ipp_full_cksum,
73 ipp_la4_prot, ipp_la3_vers, ipp_la2_opti, ip4_hdr_leng,
74 ipp_info_valid, ipp_start_cksum, ipp_pkt_end, ipp_max_bytes,
75 c_dsum_fail,
76 reset, clk,
77 clr,
78 hdr_off,
79 sel_awd,sel_asw, sel_bwd, sel_add, byt_ena,
80 udp_dat_len_r, get_uln, add_uln,
81 sum_prt_started, sum_prt_valid,
82 sum_prt_fail, sum_prt_length,
83 sum_prt_state);
84
85input [127:0] din_wrd;
86input port_num;
87input ipp_full_cksum;
88input [1:0] ipp_la4_prot;
89input [1:0] ipp_la3_vers;
90input [1:0] ipp_la2_opti;
91input [3:0] ip4_hdr_leng;
92input ipp_info_valid;
93input ipp_start_cksum;
94input ipp_pkt_end;
95input [16:0] ipp_max_bytes;
96input c_dsum_fail;
97input reset;
98input clk;
99output clr;
100output [3:0] hdr_off;
101output [1:0] sel_awd;
102output [7:0] sel_asw;
103output [7:0] sel_bwd;
104output sel_add;
105output [15:0] byt_ena;
106output [15:0] udp_dat_len_r;
107output get_uln;
108output add_uln;
109output sum_prt_started;
110output sum_prt_valid;
111output sum_prt_fail;
112output [15:0] sum_prt_length;
113output [31:0] sum_prt_state;
114
115wire [3:0] hdr_off, n_hdr_off;
116wire [1:0] sel_awd, n_sel_awd;
117wire [7:0] sel_asw, n_sel_asw;
118wire [7:0] sel_bwd, n_sel_bwd;
119wire sel_add;
120wire [15:0] byt_ena, n_byt_ena;
121
122wire [15:0] udp_dat_len_r;
123wire get_uln, n_get_uln;
124wire add_uln, n_add_uln;
125
126wire sum_prt_started, n_sum_prt_started;
127wire sum_prt_valid, n_sum_prt_valid;
128wire sum_prt_fail;
129reg n_sum_prt_fail;
130wire [15:0] sum_prt_length;
131wire [31:0] sum_prt_state;
132
133reg [8:0] n_cksum_st;
134wire [8:0] c_cksum_st;
135
136reg [7:0] aw;
137reg [7:0] bw;
138reg [15:0] bn;
139
140wire prt_vld_cyc = port_num && ipp_info_valid;
141wire prt_vld_end = prt_vld_cyc && ipp_pkt_end;
142wire c_pkt_ended;
143reg n_pkt_ended;
144
145wire cur_sta_prt = prt_vld_cyc && ipp_start_cksum;
146wire reg_sta_prt;
147wire sta_prt = !reg_sta_prt && cur_sta_prt;
148
149wire fsum = ipp_full_cksum; // geo: N2: RX full_checksum, TX Partial checksum.
150wire [1:0] ipp_la4_prot_r;
151wire [1:0] ipp_la3_vers_r;
152wire [1:0] ipp_la2_opti_r;
153wire [1:0] ipp_la3_vers_f = ipp_la3_vers_r[1:0];
154wire [3:0] hdr_r;
155wire la4_udp = (ipp_la4_prot[1:0]==2'b10);
156wire udp_r;
157
158reg [15:0] nxt_len_fld;
159reg [16:0] nxt_len_off;
160wire [3:0] l3l2 = {ipp_la3_vers[1:0],ipp_la2_opti[1:0]};
161wire [3:0] l3l2_r;
162
163reg [3:0] nxt_hdr_off;
164
165reg [15:0] udp_dat_sum;
166reg [15:0] udp_dat_len;
167reg [2:0] ul;
168wire [2:0] u_len;
169reg [3:0] u_sml;
170wire nxt_udp_sum_is0, udp_sum_is0;
171wire [16:0] nxt_udp_dat_byt;
172wire [16:0] udp_dat_byt;
173reg [16:0] n_udp_hdr_off;
174wire [16:0] udp_hdr_off;
175reg [1:0] n_udp_sel_sum, n_udp_sel_len;
176wire [1:0] udp_sel_sum, udp_sel_len;
177wire [12:0] n_tot_udp_bus_cnt;
178wire wt_sum_uby = u_len[0];
179wire wt_len_uby = u_len[1];
180
181wire [16:0] nxt_sum_dat_byt;
182wire [16:0] sum_dat_byt;
183// geo: wire [12:0] n_tot_pkt_bus_cnt;
184
185wire [3:0] las_wrd_ena;
186
187wire err_dat_byt =
188 (ipp_la4_prot_r==2'h1) && (ipp_la3_vers_f==2'h1) && (sum_dat_byt[16:0]<17'd54) ||
189 (ipp_la4_prot_r==2'h1) && (ipp_la3_vers_f==2'h2) && (sum_dat_byt[16:0]<17'd74) ||
190 (ipp_la4_prot_r==2'h2) && (ipp_la3_vers_f==2'h1) && (sum_dat_byt[16:0]<17'd42) ||
191 (ipp_la4_prot_r==2'h2) && (ipp_la3_vers_f==2'h2) && (sum_dat_byt[16:0]<17'd62) ||
192 (ipp_la3_vers_f==2'h1) && (hdr_r[3:0]<4'd5) ||
193 (sum_dat_byt[16:0]>ipp_max_bytes[16:0]);
194wire pas_dat_byt = ((ipp_la4_prot_r==2'h0) || (ipp_la4_prot_r==2'h3)) && fsum ||
195 (ipp_la3_vers_f==2'h0) || (ipp_la3_vers_f==2'h3) ||
196 ((ipp_la3_vers_f==2'h1) || (ipp_la3_vers_f==2'h2)) && udp_sum_is0;
197
198wire [12:0] rec_bus_cnt;
199wire [12:0] cur_bus_cnt;
200wire beg_bus_cnt, n_beg_bus_cnt;
201wire [2:0] ls3_bus_cnt = cur_bus_cnt[2:0];
202wire [7:0] vld_bus_cnt;
203
204wire [13:0] rem_pkt_bus_cnt;
205wire rem_pkt_bus_emp;
206wire cur_pkt_ful_wrd;
207
208wire [13:0] rem_udp_bus_cnt;
209wire rem_udp_bus_emp ;
210wire n_udp_sht_pkt_end;
211wire cur_udp_ful_wrd;
212
213wire rem_bus_emp;
214wire cur_ful_wrd;
215
216wire to_cksum_w0_1;
217wire to_cksum_w0_2;
218wire to_cksum_w1_2;
219wire to_cksum_w1_t;
220wire to_cksum_w0_t;
221wire to_cksum_w1_0;
222
223reg n_tsum_fail;
224wire c_tsum_fail;
225
226wire clr = n_cksum_st[0];
227wire clr1 = c_cksum_st[0];
228
229wire wt_fet_sta = n_cksum_st[1];
230wire wt_bus_cnt = ( n_cksum_st[1] || (|c_cksum_st[3:1]) ) && prt_vld_cyc;
231wire wt_len_byt = c_cksum_st[1] && prt_vld_cyc;
232wire las_wrd_cyc = c_cksum_st[6];
233wire n_sel_add = wt_bus_cnt && !c_cksum_st[7] && !c_cksum_st[0] || // geo: [7] should never happen
234 (c_cksum_st==`NIU_IPP_CKSUM_W0) ? prt_vld_cyc : las_wrd_cyc;
235wire [1:0] nxt_sel_awd = n_cksum_st[5:4] | {1'h0,n_cksum_st[8]};
236
237wire c_dsum_fail_full = c_dsum_fail && fsum;
238wire [22:0] sum_cnd = {vld_bus_cnt[7:0],sum_prt_length[11:0],c_dsum_fail_full,c_tsum_fail,err_dat_byt};
239
240//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
241
242 assign sum_prt_state = {sum_cnd[22:0],c_cksum_st[8:0]};
243
244// geo: ------------ ipv4 header -------------
245
246 always @(ip4_hdr_leng)
247 case (ip4_hdr_leng) // synopsys parallel_case
248 (4'b0101): begin nxt_hdr_off = 4'b1011; end
249 (4'b0110): begin nxt_hdr_off = 4'b1010; end
250 (4'b0111): begin nxt_hdr_off = 4'b1001; end
251 (4'b1000): begin nxt_hdr_off = 4'b1000; end
252 (4'b1001): begin nxt_hdr_off = 4'b0111; end
253 (4'b1010): begin nxt_hdr_off = 4'b0110; end
254 (4'b1011): begin nxt_hdr_off = 4'b0101; end
255 (4'b1100): begin nxt_hdr_off = 4'b0100; end
256 (4'b1101): begin nxt_hdr_off = 4'b0011; end
257 (4'b1110): begin nxt_hdr_off = 4'b0010; end
258 (4'b1111): begin nxt_hdr_off = 4'b0001; end
259 default: begin nxt_hdr_off = 4'b1011; end
260 endcase
261
262// geo: ------------ udp_length --------------
263
264/***** geo:
265 always @(udp_dat_len)
266 casez (udp_dat_len) // synopsys parallel_case
267 (16'b0000_0000_0000_0???): begin u_sml = 4'b0000; end
268 (16'b0000_0000_0000_1000): begin u_sml = 4'b0001; end
269
270 (16'b0000_0000_0000_1001): begin u_sml = 4'b0010; end
271 (16'b0000_0000_0000_1010): begin u_sml = 4'b0010; end
272
273 (16'b0000_0000_0000_1011): begin u_sml = 4'b0011; end
274 (16'b0000_0000_0000_1100): begin u_sml = 4'b0011; end
275
276 (16'b0000_0000_0000_1101): begin u_sml = 4'b0100; end
277 (16'b0000_0000_0000_1110): begin u_sml = 4'b0100; end
278
279 (16'b0000_0000_0000_1111): begin u_sml = 4'b0101; end
280 (16'b0000_0000_0001_0000): begin u_sml = 4'b0101; end
281
282 (16'b0000_0000_0001_0001): begin u_sml = 4'b0110; end
283 (16'b0000_0000_0001_0010): begin u_sml = 4'b0110; end
284
285 default: begin u_sml = 4'b0000; end
286 endcase
287*****/
288
289 always @(udp_dat_len)
290 casez (udp_dat_len) // synopsys parallel_case
291 (16'b0000_0000_0000_0???): begin u_sml = 4'b0000; end
292 (16'b0000_0000_0000_1000): begin u_sml = 4'b0001; end
293 (16'b0000_0000_0000_1001): begin u_sml = 4'b0010; end
294 (16'b0000_0000_0000_1010): begin u_sml = 4'b0011; end
295 (16'b0000_0000_0000_1011): begin u_sml = 4'b0100; end
296 (16'b0000_0000_0000_1100): begin u_sml = 4'b0101; end
297 (16'b0000_0000_0000_1101): begin u_sml = 4'b0110; end
298 (16'b0000_0000_0000_1110): begin u_sml = 4'b0111; end
299 (16'b0000_0000_0000_1111): begin u_sml = 4'b1000; end
300 (16'b0000_0000_0001_0000): begin u_sml = 4'b1001; end
301 (16'b0000_0000_0001_0001): begin u_sml = 4'b1010; end
302 (16'b0000_0000_0001_0010): begin u_sml = 4'b1011; end
303 default: begin u_sml = 4'b0000; end
304 endcase
305
306 always @(ip4_hdr_leng or ipp_la3_vers or ipp_la2_opti)
307 casez ({ip4_hdr_leng,ipp_la3_vers,ipp_la2_opti}) // synopsys parallel_case
308// (4'b00_00): begin nxt_len_off = 17'd14; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h0; end
309 (8'b????_00_00): begin n_udp_hdr_off = 17'd34; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h0; end
310
311// (4'b01_00): begin nxt_len_off = 17'd14; end
312 (8'b0101_01_00): begin n_udp_hdr_off = 17'd34; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
313 (8'b0110_01_00): begin n_udp_hdr_off = 17'd38; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
314 (8'b0111_01_00): begin n_udp_hdr_off = 17'd42; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
315 (8'b1000_01_00): begin n_udp_hdr_off = 17'd46; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
316 (8'b1001_01_00): begin n_udp_hdr_off = 17'd50; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
317 (8'b1010_01_00): begin n_udp_hdr_off = 17'd54; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
318 (8'b1011_01_00): begin n_udp_hdr_off = 17'd58; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
319 (8'b1100_01_00): begin n_udp_hdr_off = 17'd62; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
320 (8'b1101_01_00): begin n_udp_hdr_off = 17'd66; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
321 (8'b1110_01_00): begin n_udp_hdr_off = 17'd70; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
322 (8'b1111_01_00): begin n_udp_hdr_off = 17'd74; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
323
324// (4'b01_01): begin nxt_len_off = 17'd18; end
325 (8'b0101_01_01): begin n_udp_hdr_off = 17'd38; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
326 (8'b0110_01_01): begin n_udp_hdr_off = 17'd42; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
327 (8'b0111_01_01): begin n_udp_hdr_off = 17'd46; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
328 (8'b1000_01_01): begin n_udp_hdr_off = 17'd50; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
329 (8'b1001_01_01): begin n_udp_hdr_off = 17'd54; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
330 (8'b1010_01_01): begin n_udp_hdr_off = 17'd58; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
331 (8'b1011_01_01): begin n_udp_hdr_off = 17'd62; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
332 (8'b1100_01_01): begin n_udp_hdr_off = 17'd66; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
333 (8'b1101_01_01): begin n_udp_hdr_off = 17'd70; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
334 (8'b1110_01_01): begin n_udp_hdr_off = 17'd74; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
335 (8'b1111_01_01): begin n_udp_hdr_off = 17'd78; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
336
337// (4'b01_10): begin nxt_len_off = 17'd22; end
338 (8'b0101_01_10): begin n_udp_hdr_off = 17'd42; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
339 (8'b0110_01_10): begin n_udp_hdr_off = 17'd46; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
340 (8'b0111_01_10): begin n_udp_hdr_off = 17'd50; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
341 (8'b1000_01_10): begin n_udp_hdr_off = 17'd54; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
342 (8'b1001_01_10): begin n_udp_hdr_off = 17'd58; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
343 (8'b1010_01_10): begin n_udp_hdr_off = 17'd62; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
344 (8'b1011_01_10): begin n_udp_hdr_off = 17'd66; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
345 (8'b1100_01_10): begin n_udp_hdr_off = 17'd70; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
346 (8'b1101_01_10): begin n_udp_hdr_off = 17'd74; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
347 (8'b1110_01_10): begin n_udp_hdr_off = 17'd78; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
348 (8'b1111_01_10): begin n_udp_hdr_off = 17'd82; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
349
350// (4'b01_11): begin nxt_len_off = 17'd26; end
351 (8'b0101_01_11): begin n_udp_hdr_off = 17'd46; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
352 (8'b0110_01_11): begin n_udp_hdr_off = 17'd50; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
353 (8'b0111_01_11): begin n_udp_hdr_off = 17'd54; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
354 (8'b1000_01_11): begin n_udp_hdr_off = 17'd58; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
355 (8'b1001_01_11): begin n_udp_hdr_off = 17'd62; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
356 (8'b1010_01_11): begin n_udp_hdr_off = 17'd66; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
357 (8'b1011_01_11): begin n_udp_hdr_off = 17'd70; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
358 (8'b1100_01_11): begin n_udp_hdr_off = 17'd74; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
359 (8'b1101_01_11): begin n_udp_hdr_off = 17'd78; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
360 (8'b1110_01_11): begin n_udp_hdr_off = 17'd82; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
361 (8'b1111_01_11): begin n_udp_hdr_off = 17'd86; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
362
363 (8'b????_10_00): begin n_udp_hdr_off = 17'd54; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h1; end
364 (8'b????_10_01): begin n_udp_hdr_off = 17'd58; n_udp_sel_sum = 2'h3; n_udp_sel_len = 2'h0; end
365 (8'b????_10_10): begin n_udp_hdr_off = 17'd62; n_udp_sel_sum = 2'h2; n_udp_sel_len = 2'h3; end
366 (8'b????_10_11): begin n_udp_hdr_off = 17'd66; n_udp_sel_sum = 2'h1; n_udp_sel_len = 2'h2; end
367
368 default: begin n_udp_hdr_off = 17'd34; n_udp_sel_sum = 2'h0; n_udp_sel_len = 2'h0; end
369 endcase
370
371// geo: ------------ byte_enables ------------
372
373always @(fsum or udp_r or u_sml or hdr_r or c_pkt_ended or las_wrd_cyc or las_wrd_ena or l3l2_r or beg_bus_cnt or ls3_bus_cnt)
374casez({fsum,udp_r,u_sml,hdr_r,c_pkt_ended,las_wrd_cyc,las_wrd_ena,l3l2_r,beg_bus_cnt,ls3_bus_cnt})//synopsys parallel_case
375//geof u ipv4 e l las b ls3
376//geos d udp hdr_r n a wrd e bus 1 1 1
377//geou p sml 3210 d s ena l3 l2 g cnt 0 2 4 6 8 0 2 4 tstr_tstq tstr_tstq
378//GE m (18'b0101_0_0_????_00_??_?_???): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
379(24'b?_?_????_0101_0_0_????_00_??_?_???): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
380
381//GE (18'b0101_0_0_????_01_??_1_000): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
382(24'b?_?_????_0101_0_0_????_01_??_1_000): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
383
384// geo: -hd=5------i4__e---------------------------
385(24'b1_0_????_0101_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
386(24'b0_0_????_0101_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
387(24'b1_0_????_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
388(24'b0_0_????_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
389
390(24'b1_1_????_0101_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
391(24'b0_1_????_0101_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
392(24'b1_1_0000_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
393(24'b0_1_0000_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
394
395(24'b1_1_0001_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
396(24'b0_1_0001_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
397(24'b1_1_0010_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
398(24'b0_1_0010_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
399(24'b1_1_0011_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
400(24'b0_1_0011_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
401(24'b1_1_0100_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
402(24'b0_1_0100_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
403(24'b1_1_0101_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
404(24'b0_1_0101_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
405(24'b1_1_0110_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
406(24'b0_1_0110_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
407(24'b1_1_0111_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
408(24'b0_1_0111_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
409(24'b1_1_100?_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
410(24'b0_1_100?_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
411(24'b1_1_101?_0101_0_0_????_01_00_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
412(24'b0_1_101?_0101_0_0_????_01_00_1_010): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
413
414// geo: -hd=6------i4__e---------------------------
415(24'b1_0_????_0110_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
416(24'b0_0_????_0110_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
417(24'b1_0_????_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
418(24'b0_0_????_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
419
420(24'b1_1_????_0110_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
421(24'b0_1_????_0110_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
422(24'b1_1_0000_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
423(24'b0_1_0000_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
424
425(24'b1_1_0001_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
426(24'b0_1_0001_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
427(24'b1_1_0010_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
428(24'b0_1_0010_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
429(24'b1_1_0011_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
430(24'b0_1_0011_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
431(24'b1_1_010?_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
432(24'b0_1_010?_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
433(24'b1_1_011?_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
434(24'b0_1_011?_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
435(24'b1_1_100?_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
436(24'b0_1_100?_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
437(24'b1_1_101?_0110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
438(24'b0_1_101?_0110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
439
440// geo: -hd=7------i4__e---------------------------
441(24'b1_0_????_0111_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
442(24'b0_0_????_0111_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
443(24'b1_0_????_0111_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
444(24'b0_0_????_0111_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
445
446(24'b1_1_????_0111_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
447(24'b0_1_????_0111_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
448(24'b1_1_????_0111_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
449(24'b0_1_????_0111_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
450
451(24'b?_1_????_0111_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
452
453// geo: -hd=8------i4__e---------------------------
454(24'b1_0_????_1000_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
455(24'b0_0_????_1000_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
456(24'b1_0_????_1000_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
457(24'b0_0_????_1000_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
458
459(24'b1_1_????_1000_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
460(24'b0_1_????_1000_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
461(24'b1_1_????_1000_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
462(24'b0_1_????_1000_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
463
464(24'b?_1_0000_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
465(24'b?_1_0001_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
466(24'b?_1_0010_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
467(24'b?_1_0011_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
468(24'b?_1_0100_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
469(24'b?_1_0101_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
470(24'b?_1_0110_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
471(24'b?_1_0111_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
472(24'b?_1_1000_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
473(24'b?_1_1001_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
474(24'b?_1_1010_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
475(24'b?_1_1011_1000_0_0_????_01_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
476
477// geo: -hd=9------i4__e---------------------------
478(24'b1_0_????_1001_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
479(24'b0_0_????_1001_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
480(24'b1_0_????_1001_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
481(24'b0_0_????_1001_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
482(24'b?_0_????_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
483
484(24'b1_1_????_1001_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
485(24'b0_1_????_1001_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
486(24'b1_1_????_1001_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
487(24'b0_1_????_1001_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
488(24'b?_1_0000_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
489
490(24'b?_1_0001_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
491(24'b?_1_0010_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
492(24'b?_1_0011_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
493(24'b?_1_0100_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
494(24'b?_1_0101_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
495(24'b?_1_0110_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
496(24'b?_1_0111_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
497(24'b?_1_100?_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
498(24'b?_1_101?_1001_0_0_????_01_00_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
499
500// geo: -hd=a------i4__e---------------------------
501(24'b1_0_????_1010_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
502(24'b0_0_????_1010_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
503(24'b1_0_????_1010_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
504(24'b0_0_????_1010_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
505(24'b?_0_????_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
506
507(24'b1_1_????_1010_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
508(24'b0_1_????_1010_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
509(24'b1_1_????_1010_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
510(24'b0_1_????_1010_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
511(24'b?_1_0000_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
512
513(24'b?_1_0001_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
514(24'b?_1_0010_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
515(24'b?_1_0011_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
516(24'b?_1_010?_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
517(24'b?_1_011?_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
518(24'b?_1_100?_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
519(24'b?_1_101?_1010_0_0_????_01_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
520
521// geo: -hd=b------i4__e---------------------------
522(24'b1_0_????_1011_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
523(24'b0_0_????_1011_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
524(24'b1_0_????_1011_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
525(24'b0_0_????_1011_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
526(24'b?_0_????_1011_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
527
528(24'b1_1_????_1011_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
529(24'b0_1_????_1011_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
530(24'b1_1_????_1011_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
531(24'b0_1_????_1011_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
532(24'b?_1_????_1011_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
533
534(24'b?_1_????_1011_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
535
536// geo: -hd=c------i4__e---------------------------
537(24'b1_0_????_1100_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
538(24'b0_0_????_1100_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
539(24'b1_0_????_1100_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
540(24'b0_0_????_1100_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
541(24'b?_0_????_1100_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
542
543(24'b1_1_????_1100_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
544(24'b0_1_????_1100_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
545(24'b1_1_????_1100_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
546(24'b0_1_????_1100_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
547(24'b?_1_????_1100_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
548
549(24'b?_1_0000_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
550(24'b?_1_0001_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
551(24'b?_1_0010_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
552(24'b?_1_0011_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
553(24'b?_1_0100_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
554(24'b?_1_0101_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
555(24'b?_1_0110_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
556(24'b?_1_0111_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
557(24'b?_1_1000_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
558(24'b?_1_1001_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
559(24'b?_1_1010_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
560(24'b?_1_1011_1100_0_0_????_01_00_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
561
562// geo: -hd=d------i4__e---------------------------
563(24'b1_0_????_1101_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
564(24'b0_0_????_1101_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
565(24'b1_0_????_1101_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
566(24'b0_0_????_1101_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
567(24'b?_0_????_1101_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
568(24'b?_0_????_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
569
570(24'b1_1_????_1101_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
571(24'b0_1_????_1101_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
572(24'b1_1_????_1101_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
573(24'b0_1_????_1101_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
574(24'b?_1_????_1101_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
575(24'b?_1_0000_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
576
577(24'b?_1_0001_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
578(24'b?_1_0010_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
579(24'b?_1_0011_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
580(24'b?_1_0100_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
581(24'b?_1_0101_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
582(24'b?_1_0110_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
583(24'b?_1_0111_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
584(24'b?_1_100?_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
585(24'b?_1_101?_1101_0_0_????_01_00_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
586
587// geo: -hd=e------i4__e---------------------------
588(24'b1_0_????_1110_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
589(24'b0_0_????_1110_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
590(24'b1_0_????_1110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
591(24'b0_0_????_1110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
592(24'b?_0_????_1110_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
593(24'b?_0_????_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
594
595(24'b1_1_????_1110_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
596(24'b0_1_????_1110_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
597(24'b1_1_????_1110_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
598(24'b0_1_????_1110_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
599(24'b?_1_????_1110_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
600(24'b?_1_0000_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
601
602(24'b?_1_0001_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
603(24'b?_1_0010_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
604(24'b?_1_0011_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
605(24'b?_1_010?_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
606(24'b?_1_011?_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
607(24'b?_1_100?_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
608(24'b?_1_101?_1110_0_0_????_01_00_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
609
610// geo: -hd=f------i4__e---------------------------
611(24'b1_0_????_1111_0_0_????_01_00_1_001): begin bn=16'b11_00_00_01_00_11_11_11; bw=8'b1000_0000; aw=8'b0000_0000; ul=3'h0; end
612(24'b0_0_????_1111_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
613(24'b1_0_????_1111_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
614(24'b0_0_????_1111_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
615(24'b?_0_????_1111_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
616(24'b?_0_????_1111_0_0_????_01_00_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
617
618(24'b1_1_????_1111_0_0_????_01_00_1_001): begin bn=16'b00_00_00_01_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
619(24'b0_1_????_1111_0_0_????_01_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
620(24'b1_1_????_1111_0_0_????_01_00_1_010): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
621(24'b0_1_????_1111_0_0_????_01_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
622(24'b?_1_????_1111_0_0_????_01_00_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
623(24'b?_1_????_1111_0_0_????_01_00_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
624
625(24'b?_1_????_1111_0_0_????_01_00_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
626
627// geo: -hd=5------i4__v---------------------------
628(24'b1_0_????_0101_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
629(24'b0_0_????_0101_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
630(24'b1_0_????_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
631(24'b0_0_????_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
632
633(24'b1_1_????_0101_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
634(24'b0_1_????_0101_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
635(24'b1_1_0000_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
636(24'b0_1_0000_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
637(24'b1_1_0001_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
638(24'b0_1_0001_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
639(24'b1_1_0010_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
640(24'b0_1_0010_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
641(24'b1_1_0011_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
642(24'b0_1_0011_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
643(24'b1_1_010?_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
644(24'b0_1_010?_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
645(24'b1_1_011?_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
646(24'b0_1_011?_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
647(24'b1_1_100?_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
648(24'b0_1_100?_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
649(24'b1_1_101?_0101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
650(24'b0_1_101?_0101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
651
652// geo: -hd=6------i4__v---------------------------
653(24'b1_0_????_0110_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
654(24'b0_0_????_0110_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
655(24'b1_0_????_0110_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
656(24'b0_0_????_0110_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
657
658(24'b1_1_????_0110_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
659(24'b0_1_????_0110_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
660(24'b1_1_????_0110_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
661(24'b0_1_????_0110_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
662
663(24'b?_1_????_0110_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
664
665// geo: -hd=7------i4__v---------------------------
666(24'b1_0_????_0111_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
667(24'b0_0_????_0111_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
668(24'b1_0_????_0111_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
669(24'b0_0_????_0111_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
670
671(24'b1_1_????_0111_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
672(24'b0_1_????_0111_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
673(24'b1_1_????_0111_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
674(24'b0_1_????_0111_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
675
676(24'b?_1_0000_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
677(24'b?_1_0001_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
678(24'b?_1_0010_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
679(24'b?_1_0011_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
680(24'b?_1_0100_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
681(24'b?_1_0101_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
682(24'b?_1_0110_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
683(24'b?_1_0111_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
684(24'b?_1_1000_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
685(24'b?_1_1001_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
686(24'b?_1_1010_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
687(24'b?_1_1011_0111_0_0_????_01_01_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
688
689// geo: -hd=8------i4__v---------------------------
690(24'b1_0_????_1000_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
691(24'b0_0_????_1000_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
692(24'b1_0_????_1000_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
693(24'b0_0_????_1000_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
694(24'b?_0_????_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
695
696(24'b1_1_????_1000_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
697(24'b0_1_????_1000_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
698(24'b1_1_????_1000_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
699(24'b0_1_????_1000_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
700
701(24'b?_1_0000_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
702(24'b?_1_0001_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
703(24'b?_1_0010_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
704(24'b?_1_0011_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
705(24'b?_1_0100_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
706(24'b?_1_0101_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
707(24'b?_1_0110_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
708(24'b?_1_0111_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
709(24'b?_1_100?_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
710(24'b?_1_101?_1000_0_0_????_01_01_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
711
712// geo: -hd=9------i4__v---------------------------
713(24'b1_0_????_1001_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
714(24'b0_0_????_1001_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
715(24'b1_0_????_1001_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
716(24'b0_0_????_1001_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
717(24'b?_0_????_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
718
719(24'b1_1_????_1001_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
720(24'b0_1_????_1001_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
721(24'b1_1_????_1001_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
722(24'b0_1_????_1001_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
723
724(24'b?_1_0000_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
725(24'b?_1_0001_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
726(24'b?_1_0010_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
727(24'b?_1_0011_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
728(24'b?_1_010?_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
729(24'b?_1_011?_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
730(24'b?_1_100?_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
731(24'b?_1_101?_1001_0_0_????_01_01_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
732
733// geo: -hd=a------i4__v---------------------------
734(24'b1_0_????_1010_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
735(24'b0_0_????_1010_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
736(24'b1_0_????_1010_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
737(24'b0_0_????_1010_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
738(24'b?_0_????_1010_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
739
740(24'b1_1_????_1010_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
741(24'b0_1_????_1010_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
742(24'b1_1_????_1010_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
743(24'b0_1_????_1010_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
744
745(24'b?_1_????_1010_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
746(24'b?_1_????_1010_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
747
748// geo: -hd=b------i4__v---------------------------
749(24'b1_0_????_1011_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
750(24'b0_0_????_1011_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
751(24'b1_0_????_1011_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
752(24'b0_0_????_1011_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
753(24'b?_0_????_1011_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
754
755(24'b1_1_????_1011_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
756(24'b0_1_????_1011_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
757(24'b1_1_????_1011_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
758(24'b0_1_????_1011_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
759
760(24'b?_1_????_1011_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
761(24'b?_1_0000_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
762(24'b?_1_0001_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
763(24'b?_1_0010_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
764(24'b?_1_0011_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
765(24'b?_1_0100_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
766(24'b?_1_0101_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
767(24'b?_1_0110_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
768(24'b?_1_0111_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
769(24'b?_1_1000_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
770(24'b?_1_1001_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
771(24'b?_1_1010_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
772(24'b?_1_1011_1011_0_0_????_01_01_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
773
774// geo: -hd=c------i4__v---------------------------
775(24'b1_0_????_1100_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
776(24'b0_0_????_1100_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
777(24'b1_0_????_1100_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
778(24'b0_0_????_1100_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
779(24'b?_0_????_1100_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
780(24'b?_0_????_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
781
782(24'b1_1_????_1100_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
783(24'b0_1_????_1100_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
784(24'b1_1_????_1100_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
785(24'b0_1_????_1100_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
786
787(24'b?_1_????_1100_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
788(24'b?_1_0000_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
789(24'b?_1_0001_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
790(24'b?_1_0010_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
791(24'b?_1_0011_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
792(24'b?_1_0100_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
793(24'b?_1_0101_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
794(24'b?_1_0110_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
795(24'b?_1_0111_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
796(24'b?_1_100?_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
797(24'b?_1_101?_1100_0_0_????_01_01_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
798
799// geo: -hd=d------i4__v---------------------------
800(24'b1_0_????_1101_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
801(24'b0_0_????_1101_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
802(24'b1_0_????_1101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
803(24'b0_0_????_1101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
804(24'b?_0_????_1101_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
805(24'b?_0_????_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
806
807(24'b1_1_????_1101_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
808(24'b0_1_????_1101_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
809(24'b1_1_????_1101_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
810(24'b0_1_????_1101_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
811
812(24'b?_1_????_1101_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
813(24'b?_1_0000_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
814(24'b?_1_0001_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
815(24'b?_1_0010_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
816(24'b?_1_0011_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
817(24'b?_1_010?_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
818(24'b?_1_011?_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
819(24'b?_1_100?_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
820(24'b?_1_101?_1101_0_0_????_01_01_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
821
822// geo: -hd=e------i4__v---------------------------
823(24'b1_0_????_1110_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
824(24'b0_0_????_1110_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
825(24'b1_0_????_1110_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
826(24'b0_0_????_1110_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
827(24'b?_0_????_1110_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
828(24'b?_0_????_1110_0_0_????_01_01_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
829
830(24'b1_1_????_1110_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
831(24'b0_1_????_1110_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
832(24'b1_1_????_1110_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
833(24'b0_1_????_1110_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
834
835(24'b?_1_????_1110_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
836(24'b?_1_????_1110_0_0_????_01_01_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
837(24'b?_1_????_1110_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
838
839// geo: -hd=f------i4__v---------------------------
840(24'b1_0_????_1111_0_0_????_01_01_1_001): begin bn=16'b00_00_11_00_00_01_00_11; bw=8'b0010_0000; aw=8'b0000_0000; ul=3'h0; end
841(24'b0_0_????_1111_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
842(24'b1_0_????_1111_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
843(24'b0_0_????_1111_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
844(24'b?_0_????_1111_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
845(24'b?_0_????_1111_0_0_????_01_01_1_100): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
846
847(24'b1_1_????_1111_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_01_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
848(24'b0_1_????_1111_0_0_????_01_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
849(24'b1_1_????_1111_0_0_????_01_01_1_010): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
850(24'b0_1_????_1111_0_0_????_01_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
851
852(24'b?_1_????_1111_0_0_????_01_01_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
853(24'b?_1_????_1111_0_0_????_01_01_1_100): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
854(24'b?_1_0000_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
855(24'b?_1_0001_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
856(24'b?_1_0010_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
857(24'b?_1_0011_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
858(24'b?_1_0100_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
859(24'b?_1_0101_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
860(24'b?_1_0110_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
861(24'b?_1_0111_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
862(24'b?_1_1000_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
863(24'b?_1_1001_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
864(24'b?_1_1010_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
865(24'b?_1_1011_1111_0_0_????_01_01_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
866
867// geo: -hd=5------i4_l----------------------------
868(24'b1_0_????_0101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
869(24'b0_0_????_0101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
870(24'b1_0_????_0101_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
871(24'b0_0_????_0101_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
872(24'b?_0_????_0101_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
873
874(24'b1_1_????_0101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
875(24'b0_1_????_0101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
876(24'b1_1_????_0101_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
877(24'b0_1_????_0101_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
878(24'b?_1_????_0101_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
879
880// geo: -hd=6------i4_l----------------------------
881(24'b1_0_????_0110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
882(24'b0_0_????_0110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
883(24'b1_0_????_0110_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
884(24'b0_0_????_0110_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
885
886(24'b1_1_????_0110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
887(24'b0_1_????_0110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
888(24'b1_1_????_0110_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
889(24'b0_1_????_0110_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
890
891(24'b?_1_0000_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
892(24'b?_1_0001_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
893(24'b?_1_0010_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
894(24'b?_1_0011_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
895(24'b?_1_0100_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
896(24'b?_1_0101_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
897(24'b?_1_0110_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
898(24'b?_1_0111_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
899(24'b?_1_1000_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
900(24'b?_1_1001_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
901(24'b?_1_1010_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
902(24'b?_1_1011_0110_0_0_????_01_10_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
903
904// geo: -hd=7------i4_l----------------------------
905(24'b1_0_????_0111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
906(24'b0_0_????_0111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
907(24'b1_0_????_0111_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
908(24'b0_0_????_0111_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
909(24'b?_0_????_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
910
911(24'b1_1_????_0111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
912(24'b0_1_????_0111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
913(24'b1_1_????_0111_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
914(24'b0_1_????_0111_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
915
916(24'b?_1_0000_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
917(24'b?_1_0001_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
918(24'b?_1_0010_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
919(24'b?_1_0011_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
920(24'b?_1_0100_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
921(24'b?_1_0101_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
922(24'b?_1_0110_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
923(24'b?_1_0111_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
924(24'b?_1_100?_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
925(24'b?_1_101?_0111_0_0_????_01_10_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
926
927// geo: -hd=8------i4_l----------------------------
928(24'b1_0_????_1000_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
929(24'b0_0_????_1000_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
930(24'b1_0_????_1000_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
931(24'b0_0_????_1000_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
932(24'b?_0_????_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
933
934(24'b1_1_????_1000_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
935(24'b0_1_????_1000_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
936(24'b1_1_????_1000_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
937(24'b0_1_????_1000_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
938
939(24'b?_1_0000_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
940(24'b?_1_0001_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
941(24'b?_1_0010_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
942(24'b?_1_0011_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
943(24'b?_1_010?_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
944(24'b?_1_011?_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
945(24'b?_1_100?_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
946(24'b?_1_101?_1000_0_0_????_01_10_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
947
948// geo: -hd=9------i4_l----------------------------
949(24'b1_0_????_1001_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
950(24'b0_0_????_1001_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
951(24'b1_0_????_1001_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
952(24'b0_0_????_1001_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
953(24'b?_0_????_1001_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
954
955(24'b1_1_????_1001_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
956(24'b0_1_????_1001_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
957(24'b1_1_????_1001_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
958(24'b0_1_????_1001_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
959
960(24'b?_1_????_1001_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
961(24'b?_1_????_1001_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
962
963// geo: -hd=a------i4_l----------------------------
964(24'b1_0_????_1010_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
965(24'b0_0_????_1010_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
966(24'b1_0_????_1010_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
967(24'b0_0_????_1010_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
968(24'b?_0_????_1010_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
969
970(24'b1_1_????_1010_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
971(24'b0_1_????_1010_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
972(24'b1_1_????_1010_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
973(24'b0_1_????_1010_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
974
975(24'b?_1_????_1010_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
976(24'b?_1_0000_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
977(24'b?_1_0001_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
978(24'b?_1_0010_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
979(24'b?_1_0011_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
980(24'b?_1_0100_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
981(24'b?_1_0101_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
982(24'b?_1_0110_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
983(24'b?_1_0111_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
984(24'b?_1_1000_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
985(24'b?_1_1001_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
986(24'b?_1_1010_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
987(24'b?_1_1011_1010_0_0_????_01_10_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
988
989// geo: -hd=b------i4_l----------------------------
990(24'b1_0_????_1011_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
991(24'b0_0_????_1011_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
992(24'b1_0_????_1011_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
993(24'b0_0_????_1011_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
994(24'b?_0_????_1011_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
995(24'b?_0_????_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
996
997(24'b1_1_????_1011_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
998(24'b0_1_????_1011_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
999(24'b1_1_????_1011_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1000(24'b0_1_????_1011_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1001
1002(24'b?_1_????_1011_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1003(24'b?_1_0000_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1004(24'b?_1_0001_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1005(24'b?_1_0010_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1006(24'b?_1_0011_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1007(24'b?_1_0100_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1008(24'b?_1_0101_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1009(24'b?_1_0110_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1010(24'b?_1_0111_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1011(24'b?_1_100?_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1012(24'b?_1_101?_1011_0_0_????_01_10_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1013
1014// geo: -hd=c------i4_l----------------------------
1015(24'b1_0_????_1100_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
1016(24'b0_0_????_1100_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1017(24'b1_0_????_1100_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1018(24'b0_0_????_1100_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1019(24'b?_0_????_1100_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1020(24'b?_0_????_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1021
1022(24'b1_1_????_1100_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1023(24'b0_1_????_1100_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1024(24'b1_1_????_1100_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1025(24'b0_1_????_1100_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1026
1027(24'b?_1_????_1100_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1028(24'b?_1_0000_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1029(24'b?_1_0001_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1030(24'b?_1_0010_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1031(24'b?_1_0011_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1032(24'b?_1_010?_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1033(24'b?_1_011?_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1034(24'b?_1_100?_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1035(24'b?_1_101?_1100_0_0_????_01_10_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1036
1037// geo: -hd=d------i4_l----------------------------
1038(24'b1_0_????_1101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
1039(24'b0_0_????_1101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1040(24'b1_0_????_1101_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1041(24'b0_0_????_1101_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1042(24'b?_0_????_1101_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1043(24'b?_0_????_1101_0_0_????_01_10_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1044
1045(24'b1_1_????_1101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1046(24'b0_1_????_1101_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1047(24'b1_1_????_1101_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1048(24'b0_1_????_1101_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1049
1050(24'b?_1_????_1101_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1051(24'b?_1_????_1101_0_0_????_01_10_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
1052(24'b?_1_????_1101_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
1053
1054// geo: -hd=e------i4_l----------------------------
1055(24'b1_0_????_1110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
1056(24'b0_0_????_1110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1057(24'b1_0_????_1110_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1058(24'b0_0_????_1110_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1059(24'b?_0_????_1110_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1060(24'b?_0_????_1110_0_0_????_01_10_1_100): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1061
1062(24'b1_1_????_1110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1063(24'b0_1_????_1110_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1064(24'b1_1_????_1110_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1065(24'b0_1_????_1110_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1066
1067(24'b?_1_????_1110_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1068(24'b?_1_????_1110_0_0_????_01_10_1_100): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1069(24'b?_1_0000_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1070(24'b?_1_0001_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1071(24'b?_1_0010_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1072(24'b?_1_0011_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1073(24'b?_1_0100_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1074(24'b?_1_0101_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1075(24'b?_1_0110_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1076(24'b?_1_0111_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1077(24'b?_1_1000_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1078(24'b?_1_1001_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1079(24'b?_1_1010_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1080(24'b?_1_1011_1110_0_0_????_01_10_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1081
1082// geo: -hd=f------i4_l----------------------------
1083(24'b1_0_????_1111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_11_00_00_01; bw=8'b0000_1000; aw=8'b0000_0000; ul=3'h0; end
1084(24'b0_0_????_1111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1085(24'b1_0_????_1111_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1086(24'b0_0_????_1111_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1087(24'b?_0_????_1111_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1088(24'b?_0_????_1111_0_0_????_01_10_1_100): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1089(24'b?_0_????_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1090
1091(24'b1_1_????_1111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_01; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1092(24'b0_1_????_1111_0_0_????_01_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1093(24'b1_1_????_1111_0_0_????_01_10_1_010): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1094(24'b0_1_????_1111_0_0_????_01_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1095
1096(24'b?_1_????_1111_0_0_????_01_10_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1097(24'b?_1_????_1111_0_0_????_01_10_1_100): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1098(24'b?_1_0000_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1099(24'b?_1_0001_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1100(24'b?_1_0010_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1101(24'b?_1_0011_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1102(24'b?_1_0100_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1103(24'b?_1_0101_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1104(24'b?_1_0110_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1105(24'b?_1_0111_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1106(24'b?_1_100?_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1107(24'b?_1_101?_1111_0_0_????_01_10_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1108
1109// geo: -hd=5------i4_vl---------------------------
1110(24'b1_0_????_0101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1111(24'b0_0_????_0101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1112(24'b1_0_????_0101_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1113(24'b0_0_????_0101_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1114
1115(24'b1_1_????_0101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1116(24'b0_1_????_0101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1117(24'b1_1_????_0101_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1118(24'b0_1_????_0101_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1119
1120(24'b?_1_0000_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1121(24'b?_1_0001_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1122(24'b?_1_0010_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1123(24'b?_1_0011_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1124(24'b?_1_0100_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1125(24'b?_1_0101_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1126(24'b?_1_0110_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1127(24'b?_1_0111_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1128(24'b?_1_1000_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1129(24'b?_1_1001_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1130(24'b?_1_1010_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1131(24'b?_1_1011_0101_0_0_????_01_11_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1132
1133// geo: -hd=6------i4_vl---------------------------
1134(24'b1_0_????_0110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1135(24'b0_0_????_0110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1136(24'b1_0_????_0110_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1137(24'b0_0_????_0110_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1138(24'b?_0_????_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1139
1140(24'b1_1_????_0110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1141(24'b0_1_????_0110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1142(24'b1_1_????_0110_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1143(24'b0_1_????_0110_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1144
1145(24'b?_1_0000_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1146(24'b?_1_0001_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1147(24'b?_1_0010_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1148(24'b?_1_0011_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1149(24'b?_1_0100_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1150(24'b?_1_0101_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1151(24'b?_1_0110_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1152(24'b?_1_0111_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1153(24'b?_1_100?_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1154(24'b?_1_101?_0110_0_0_????_01_11_1_011): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1155
1156// geo: -hd=7------i4_vl---------------------------
1157(24'b1_0_????_0111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1158(24'b0_0_????_0111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1159(24'b1_0_????_0111_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1160(24'b0_0_????_0111_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1161(24'b?_0_????_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1162
1163(24'b1_1_????_0111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1164(24'b0_1_????_0111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1165(24'b1_1_????_0111_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1166(24'b0_1_????_0111_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1167
1168(24'b?_1_0000_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1169(24'b?_1_0001_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1170(24'b?_1_0010_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1171(24'b?_1_0011_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1172(24'b?_1_010?_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1173(24'b?_1_011?_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1174(24'b?_1_100?_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1175(24'b?_1_101?_0111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1176
1177// geo: -hd=8------i4_vl---------------------------
1178(24'b1_0_????_1000_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1179(24'b0_0_????_1000_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1180(24'b1_0_????_1000_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1181(24'b0_0_????_1000_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1182(24'b?_0_????_1000_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1183
1184(24'b1_1_????_1000_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1185(24'b0_1_????_1000_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1186(24'b1_1_????_1000_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1187(24'b0_1_????_1000_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1188
1189(24'b?_1_????_1000_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
1190(24'b?_1_????_1000_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
1191
1192// geo: -hd=9------i4_vl---------------------------
1193(24'b1_0_????_1001_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1194(24'b0_0_????_1001_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1195(24'b1_0_????_1001_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1196(24'b0_0_????_1001_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1197(24'b?_0_????_1001_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1198
1199(24'b1_1_????_1001_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1200(24'b0_1_????_1001_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1201(24'b1_1_????_1001_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1202(24'b0_1_????_1001_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1203
1204(24'b?_1_????_1001_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1205(24'b?_1_0000_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1206(24'b?_1_0001_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1207(24'b?_1_0010_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1208(24'b?_1_0011_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1209(24'b?_1_0100_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1210(24'b?_1_0101_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1211(24'b?_1_0110_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1212(24'b?_1_0111_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1213(24'b?_1_1000_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1214(24'b?_1_1001_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1215(24'b?_1_1010_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1216(24'b?_1_1011_1001_0_0_????_01_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1217
1218// geo: -hd=a------i4_vl---------------------------
1219(24'b1_0_????_1010_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1220(24'b0_0_????_1010_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1221(24'b1_0_????_1010_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1222(24'b0_0_????_1010_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1223(24'b?_0_????_1010_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1224(24'b?_0_????_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1225
1226(24'b1_1_????_1010_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1227(24'b0_1_????_1010_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1228(24'b1_1_????_1010_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1229(24'b0_1_????_1010_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1230
1231(24'b?_1_????_1010_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1232(24'b?_1_0000_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1233(24'b?_1_0001_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1234(24'b?_1_0010_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1235(24'b?_1_0011_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1236(24'b?_1_0100_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1237(24'b?_1_0101_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1238(24'b?_1_0110_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1239(24'b?_1_0111_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1240(24'b?_1_100?_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1241(24'b?_1_101?_1010_0_0_????_01_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1242
1243// geo: -hd=b------i4_vl---------------------------
1244(24'b1_0_????_1011_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1245(24'b0_0_????_1011_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1246(24'b1_0_????_1011_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1247(24'b0_0_????_1011_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1248(24'b?_0_????_1011_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1249(24'b?_0_????_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1250
1251(24'b1_1_????_1011_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1252(24'b0_1_????_1011_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1253(24'b1_1_????_1011_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1254(24'b0_1_????_1011_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1255
1256(24'b?_1_????_1011_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1257(24'b?_1_0000_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1258(24'b?_1_0001_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1259(24'b?_1_0010_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1260(24'b?_1_0011_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1261(24'b?_1_010?_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1262(24'b?_1_011?_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1263(24'b?_1_100?_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1264(24'b?_1_101?_1011_0_0_????_01_11_1_100): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1265
1266// geo: -hd=c------i4_vl---------------------------
1267(24'b1_0_????_1100_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1268(24'b0_0_????_1100_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1269(24'b1_0_????_1100_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1270(24'b0_0_????_1100_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1271(24'b?_0_????_1100_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1272(24'b?_0_????_1100_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1273
1274(24'b1_1_????_1100_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1275(24'b0_1_????_1100_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1276(24'b1_1_????_1100_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1277(24'b0_1_????_1100_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1278
1279(24'b?_1_????_1100_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1280(24'b?_1_????_1100_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
1281(24'b?_1_????_1100_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
1282
1283// geo: -hd=d------i4_vl---------------------------
1284(24'b1_0_????_1101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1285(24'b0_0_????_1101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1286(24'b1_0_????_1101_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1287(24'b0_0_????_1101_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1288(24'b?_0_????_1101_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1289(24'b?_0_????_1101_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1290
1291(24'b1_1_????_1101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1292(24'b0_1_????_1101_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1293(24'b1_1_????_1101_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1294(24'b0_1_????_1101_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1295
1296(24'b?_1_????_1101_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1297(24'b?_1_????_1101_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1298(24'b?_1_0000_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1299(24'b?_1_0001_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1300(24'b?_1_0010_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1301(24'b?_1_0011_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1302(24'b?_1_0100_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1303(24'b?_1_0101_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1304(24'b?_1_0110_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1305(24'b?_1_0111_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1306(24'b?_1_1000_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1307(24'b?_1_1001_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1308(24'b?_1_1010_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1309(24'b?_1_1011_1101_0_0_????_01_11_1_101): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1310
1311// geo: -hd=e------i4_vl---------------------------
1312(24'b1_0_????_1110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1313(24'b0_0_????_1110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1314(24'b1_0_????_1110_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1315(24'b0_0_????_1110_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1316(24'b?_0_????_1110_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1317(24'b?_0_????_1110_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1318(24'b?_0_????_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1319
1320(24'b1_1_????_1110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1321(24'b0_1_????_1110_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1322(24'b1_1_????_1110_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1323(24'b0_1_????_1110_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1324
1325(24'b?_1_????_1110_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1326(24'b?_1_????_1110_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1327(24'b?_1_0000_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1328(24'b?_1_0001_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1329(24'b?_1_0010_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1330(24'b?_1_0011_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1331(24'b?_1_0100_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1332(24'b?_1_0101_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1333(24'b?_1_0110_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1334(24'b?_1_0111_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1335(24'b?_1_100?_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1336(24'b?_1_101?_1110_0_0_????_01_11_1_101): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1337
1338// geo: -hd=f------i4_vl---------------------------
1339(24'b1_0_????_1111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_11_00; bw=8'b0000_0010; aw=8'b0000_0000; ul=3'h0; end
1340(24'b0_0_????_1111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1341(24'b1_0_????_1111_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1342(24'b0_0_????_1111_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1343(24'b?_0_????_1111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1344(24'b?_0_????_1111_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1345(24'b?_0_????_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1346
1347(24'b1_1_????_1111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1348(24'b0_1_????_1111_0_0_????_01_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1349(24'b1_1_????_1111_0_0_????_01_11_1_010): begin bn=16'b00_01_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1350(24'b0_1_????_1111_0_0_????_01_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1351
1352(24'b?_1_????_1111_0_0_????_01_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1353(24'b?_1_????_1111_0_0_????_01_11_1_100): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1354(24'b?_1_0000_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1355(24'b?_1_0001_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1356(24'b?_1_0010_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1357(24'b?_1_0011_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1358(24'b?_1_010?_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1359(24'b?_1_011?_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1360(24'b?_1_100?_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1361(24'b?_1_101?_1111_0_0_????_01_11_1_101): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1362
1363// geo: ------------- ipv6 ------------------------
1364// GE (18'b????_0_0_????_10_??_1_000): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1365(24'b?_?_????_????_0_0_????_10_??_1_000): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1366
1367// geo: -----------i6__e---------------------------
1368(24'b1_0_????_????_0_0_????_10_00_1_001): begin bn=16'b00_11_10_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0010_0000; ul=3'h0; end
1369(24'b0_0_????_????_0_0_????_10_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1370(24'b1_0_????_????_0_0_????_10_00_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1371(24'b0_0_????_????_0_0_????_10_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1372(24'b1_0_????_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1373(24'b0_0_????_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1374
1375(24'b1_1_????_????_0_0_????_10_00_1_001): begin bn=16'b00_00_10_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0010_0000; ul=3'h0; end
1376(24'b0_1_????_????_0_0_????_10_00_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1377(24'b1_1_????_????_0_0_????_10_00_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1378(24'b0_1_????_????_0_0_????_10_00_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1379
1380(24'b1_1_0000_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1381(24'b0_1_0000_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1382(24'b1_1_0001_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1383(24'b0_1_0001_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1384(24'b1_1_0010_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1385(24'b0_1_0010_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1386(24'b1_1_0011_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1387(24'b0_1_0011_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1388(24'b1_1_010?_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1389(24'b0_1_010?_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1390(24'b1_1_011?_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1391(24'b0_1_011?_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1392(24'b1_1_100?_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1393(24'b0_1_100?_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1394(24'b1_1_101?_????_0_0_????_10_00_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1395(24'b0_1_101?_????_0_0_????_10_00_1_011): begin bn=16'b00_00_00_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1396
1397// geo: -----------i6__v---------------------------
1398(24'b1_0_????_????_0_0_????_10_01_1_001): begin bn=16'b00_00_00_11_10_11_11_11; bw=8'b0000_0000; aw=8'b0000_1000; ul=3'h0; end
1399(24'b0_0_????_????_0_0_????_10_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1400(24'b1_0_????_????_0_0_????_10_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1401(24'b0_0_????_????_0_0_????_10_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1402(24'b1_0_????_????_0_0_????_10_01_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1403(24'b0_0_????_????_0_0_????_10_01_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1404
1405(24'b1_1_????_????_0_0_????_10_01_1_001): begin bn=16'b00_00_00_00_10_11_11_11; bw=8'b0000_0000; aw=8'b0000_1000; ul=3'h0; end
1406(24'b0_1_????_????_0_0_????_10_01_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1407(24'b1_1_????_????_0_0_????_10_01_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1408(24'b0_1_????_????_0_0_????_10_01_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1409(24'b1_1_????_????_0_0_????_10_01_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
1410(24'b0_1_????_????_0_0_????_10_01_1_011): begin bn=16'b00_00_00_00_00_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h2; end
1411
1412(24'b?_1_????_????_0_0_????_10_01_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h1; end
1413
1414// geo: -----------i6_l----------------------------
1415(24'b1_0_????_????_0_0_????_10_10_1_001): begin bn=16'b00_00_00_00_00_11_10_11; bw=8'b0000_0000; aw=8'b0000_0010; ul=3'h0; end
1416(24'b0_0_????_????_0_0_????_10_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1417(24'b1_0_????_????_0_0_????_10_10_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1418(24'b0_0_????_????_0_0_????_10_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1419(24'b1_0_????_????_0_0_????_10_10_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1420(24'b0_0_????_????_0_0_????_10_10_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1421
1422(24'b1_1_????_????_0_0_????_10_10_1_001): begin bn=16'b00_00_00_00_00_00_10_11; bw=8'b0000_0000; aw=8'b0000_0010; ul=3'h0; end
1423(24'b0_1_????_????_0_0_????_10_10_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1424(24'b1_1_????_????_0_0_????_10_10_1_010): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1425(24'b0_1_????_????_0_0_????_10_10_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1426(24'b1_1_????_????_0_0_????_10_10_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1427(24'b0_1_????_????_0_0_????_10_10_1_011): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1428
1429(24'b?_1_0000_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1430(24'b?_1_0001_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1431(24'b?_1_0010_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1432(24'b?_1_0011_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1433(24'b?_1_0100_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1434(24'b?_1_0101_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1435(24'b?_1_0110_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1436(24'b?_1_0111_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1437(24'b?_1_1000_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1438(24'b?_1_1001_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1439(24'b?_1_1010_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1440(24'b?_1_1011_????_0_0_????_10_10_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1441
1442// geo: -----------i6_vl---------------------------
1443(24'b1_0_????_????_0_0_????_10_11_1_001): begin bn=16'b00_00_00_00_00_00_00_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1444(24'b0_0_????_????_0_0_????_10_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1445(24'b1_0_????_????_0_0_????_10_11_1_010): begin bn=16'b10_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b1000_0000; ul=3'h0; end
1446(24'b0_0_????_????_0_0_????_10_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1447(24'b1_0_????_????_0_0_????_10_11_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1448(24'b0_0_????_????_0_0_????_10_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1449(24'b1_0_????_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1450(24'b0_0_????_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1451
1452(24'b1_1_????_????_0_0_????_10_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1453(24'b0_1_????_????_0_0_????_10_11_1_001): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1454(24'b1_1_????_????_0_0_????_10_11_1_010): begin bn=16'b10_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b1000_0000; ul=3'h0; end
1455(24'b0_1_????_????_0_0_????_10_11_1_010): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1456(24'b1_1_????_????_0_0_????_10_11_1_011): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1457(24'b0_1_????_????_0_0_????_10_11_1_011): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1458
1459(24'b1_1_0000_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1460(24'b0_1_0000_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1461(24'b1_1_0001_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1462(24'b0_1_0001_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1463(24'b1_1_0010_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1464(24'b0_1_0010_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1465(24'b1_1_0011_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1466(24'b0_1_0011_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1467(24'b1_1_0100_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1468(24'b0_1_0100_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1469(24'b1_1_0101_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1470(24'b0_1_0101_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1471(24'b1_1_0110_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1472(24'b0_1_0110_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1473(24'b1_1_0111_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1474(24'b0_1_0111_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h7; end
1475(24'b1_1_100?_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1476(24'b0_1_100?_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1477(24'b1_1_101?_????_0_0_????_10_11_1_100): begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1478(24'b0_1_101?_????_0_0_????_10_11_1_100): begin bn=16'b00_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h3; end
1479
1480// geo: ------------- ip unknown ------------------
1481// GE (18'b????_0_0_????_11_??_?_???): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1482(24'b?_?_????_????_0_0_????_11_??_?_???): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1483
1484// geo: ----------lase-----------------------------
1485(24'b?_?_????_????_0_1_0000_??_??_?_???): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1486(24'b?_?_????_????_0_1_0001_??_??_?_???): begin bn=16'b10_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1487(24'b?_?_????_????_0_1_0010_??_??_?_???): begin bn=16'b11_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1488(24'b?_?_????_????_0_1_0011_??_??_?_???): begin bn=16'b11_10_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1489(24'b?_?_????_????_0_1_0100_??_??_?_???): begin bn=16'b11_11_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1490(24'b?_?_????_????_0_1_0101_??_??_?_???): begin bn=16'b11_11_10_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1491(24'b?_?_????_????_0_1_0110_??_??_?_???): begin bn=16'b11_11_11_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1492(24'b?_?_????_????_0_1_0111_??_??_?_???): begin bn=16'b11_11_11_10_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1493(24'b?_?_????_????_0_1_1000_??_??_?_???): begin bn=16'b11_11_11_11_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1494(24'b?_?_????_????_0_1_1001_??_??_?_???): begin bn=16'b11_11_11_11_10_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1495(24'b?_?_????_????_0_1_1010_??_??_?_???): begin bn=16'b11_11_11_11_11_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1496(24'b?_?_????_????_0_1_1011_??_??_?_???): begin bn=16'b11_11_11_11_11_10_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1497(24'b?_?_????_????_0_1_1100_??_??_?_???): begin bn=16'b11_11_11_11_11_11_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1498(24'b?_?_????_????_0_1_1101_??_??_?_???): begin bn=16'b11_11_11_11_11_11_10_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1499(24'b?_?_????_????_0_1_1110_??_??_?_???): begin bn=16'b11_11_11_11_11_11_11_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1500(24'b?_?_????_????_0_1_1111_??_??_?_???): begin bn=16'b11_11_11_11_11_11_11_10; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1501
1502(24'b?_?_????_????_1_?_????_??_??_?_???): begin bn=16'b00_00_00_00_00_00_00_00; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1503 default: begin bn=16'b11_11_11_11_11_11_11_11; bw=8'b0000_0000; aw=8'b0000_0000; ul=3'h0; end
1504endcase
1505
1506 assign n_byt_ena = bn[15:0];
1507 assign n_sel_bwd = bw[7:0];
1508 assign n_sel_asw = aw[7:0];
1509 assign u_len = ul[2:0];
1510
1511 assign n_get_uln = (c_cksum_st==`NIU_IPP_CKSUM_W3) && udp_r;
1512 assign n_add_uln = (c_cksum_st==`NIU_IPP_CKSUM_UL) && fsum;
1513
1514// geo: ------------ udp_data ----------------
1515
1516 always @(udp_sel_len or
1517 din_wrd)
1518 case (udp_sel_len[1:0]) // synopsys parallel_case
1519 (2'b00): begin udp_dat_len = din_wrd[015:000]; end
1520 (2'b01): begin udp_dat_len = din_wrd[047:032]; end
1521 (2'b10): begin udp_dat_len = din_wrd[079:064]; end
1522 (2'b11): begin udp_dat_len = din_wrd[111:096]; end
1523 default: begin udp_dat_len = din_wrd[015:000]; end
1524 endcase
1525
1526 always @(udp_sel_sum or
1527 din_wrd)
1528 case (udp_sel_sum[1:0]) // synopsys parallel_case
1529 (2'b00): begin udp_dat_sum = din_wrd[031:016]; end
1530 (2'b01): begin udp_dat_sum = din_wrd[063:048]; end
1531 (2'b10): begin udp_dat_sum = din_wrd[095:080]; end
1532 (2'b11): begin udp_dat_sum = din_wrd[127:112]; end
1533 default: begin udp_dat_sum = din_wrd[031:016]; end
1534 endcase
1535
1536 assign nxt_udp_sum_is0 = (udp_dat_sum[15:0]==16'h0) && udp_r;
1537
1538 ipp_sum_reg_w_r_1 su_reg_w_r_1_usu (.di(nxt_udp_sum_is0), .wr(wt_sum_uby), .rs(clr), .ck(clk), .qo(udp_sum_is0));
1539 ipp_sum_reg_w_r_16 su_reg_w_r_16_ule (.di(udp_dat_len[15:0]), .wr(wt_len_uby), .rs(clr), .ck(clk), .qo(udp_dat_len_r[15:0]));
1540
1541// geo: ------------ data_length -------------
1542
1543 always @(ipp_la3_vers_r or ipp_la2_opti_r or
1544 din_wrd)
1545 case ({ipp_la3_vers_r,ipp_la2_opti_r}) // synopsys parallel_case
1546 (4'b00_00): begin nxt_len_fld = 16'd0; nxt_len_off = 17'd14; end
1547 (4'b01_00): begin nxt_len_fld = din_wrd[127:112]; nxt_len_off = 17'd14; end
1548 (4'b10_00): begin nxt_len_fld = din_wrd[111:096]; nxt_len_off = 17'd54; end
1549 (4'b01_01): begin nxt_len_fld = din_wrd[095:080]; nxt_len_off = 17'd18; end
1550 (4'b10_01): begin nxt_len_fld = din_wrd[079:064]; nxt_len_off = 17'd58; end
1551 (4'b01_10): begin nxt_len_fld = din_wrd[063:048]; nxt_len_off = 17'd22; end
1552 (4'b10_10): begin nxt_len_fld = din_wrd[047:032]; nxt_len_off = 17'd62; end
1553 (4'b01_11): begin nxt_len_fld = din_wrd[031:016]; nxt_len_off = 17'd26; end
1554 (4'b10_11): begin nxt_len_fld = din_wrd[015:000]; nxt_len_off = 17'd66; end
1555 default: begin nxt_len_fld = 16'd0; nxt_len_off = 17'd14; end
1556 endcase
1557
1558 assign nxt_sum_dat_byt[16:1] = {1'b0,nxt_len_fld[15:1]} + nxt_len_off[16:1];
1559 assign nxt_sum_dat_byt[0] = nxt_len_fld[0];
1560
1561 ipp_sum_reg_w_r_16 su_reg_w_r_16_fld (nxt_len_fld[15:0], wt_len_byt,clr1,clk,sum_prt_length[15:0]);
1562 ipp_sum_reg_w_r_17 su_reg_w_r_17_sby (nxt_sum_dat_byt[16:0],wt_len_byt,clr, clk,sum_dat_byt[16:0]);
1563
1564 assign nxt_udp_dat_byt[16:1] = {1'b0,udp_dat_len[15:1]} + udp_hdr_off[16:1];
1565 assign nxt_udp_dat_byt[0] = udp_dat_len[0];
1566
1567 ipp_sum_reg_w_r_17 su_reg_w_r_17_uby (nxt_udp_dat_byt[16:0],wt_len_uby,clr,clk,udp_dat_byt[16:0]);
1568
1569// geo: ------------ bus_cyc_cnt ------------
1570
1571 assign rec_bus_cnt = cur_bus_cnt[12:0] + 13'h1;
1572 assign n_beg_bus_cnt = (rec_bus_cnt[12:3]==10'h0);
1573
1574 ipp_sum_reg_w_r_13 su_reg_w_r_13_cnt (rec_bus_cnt[12:0],wt_bus_cnt,clr,clk,cur_bus_cnt[12:0]);
1575 ipp_sum_reg_w_r_1 su_reg_w_r_1_beg (n_beg_bus_cnt, wt_bus_cnt,clr,clk,beg_bus_cnt);
1576
1577// geo: ------------ rec_ful_wrd ------------
1578
1579 assign rem_pkt_bus_cnt = {1'b0,sum_dat_byt[16:4]} + {1'b0,~cur_bus_cnt[12:0]};
1580 assign rem_pkt_bus_emp = (sum_dat_byt[16:4]==rec_bus_cnt[12:0]);
1581 assign cur_pkt_ful_wrd = rem_pkt_bus_cnt[13];
1582
1583// .....
1584
1585 assign rem_udp_bus_cnt = {1'b0,udp_dat_byt[16:4]} + {1'b0,~cur_bus_cnt[12:0]};
1586 assign rem_udp_bus_emp = (udp_dat_byt[16:4]==rec_bus_cnt[12:0]);
1587 assign cur_udp_ful_wrd = rem_udp_bus_cnt[13];
1588
1589 assign n_tot_udp_bus_cnt = wt_len_uby ? nxt_udp_dat_byt[16:4] : udp_dat_byt[16:4];
1590 assign n_udp_sht_pkt_end = (n_tot_udp_bus_cnt[12:0]==rec_bus_cnt[12:0]) && !u_len[2] && wt_len_uby;
1591
1592// .....
1593 assign rem_bus_emp = udp_r ? rem_udp_bus_emp : rem_pkt_bus_emp;
1594 assign cur_ful_wrd = udp_r ? cur_udp_ful_wrd : cur_pkt_ful_wrd;
1595 assign las_wrd_ena = udp_r ? udp_dat_byt[03:0] : sum_dat_byt[03:0];
1596
1597// geo: ------------ control ----------------
1598
1599 assign n_sum_prt_started = !n_cksum_st[0];
1600 assign n_sum_prt_valid = c_cksum_st[7];
1601
1602 assign to_cksum_w0_1 = prt_vld_cyc && cur_ful_wrd && rem_bus_emp;
1603 assign to_cksum_w0_2 = prt_vld_cyc && (cur_ful_wrd && rem_bus_emp || n_udp_sht_pkt_end);
1604 assign to_cksum_w1_2 = prt_vld_cyc && ( u_len[2]);
1605 assign to_cksum_w1_t = prt_vld_cyc && (cur_ful_wrd && rem_bus_emp && (las_wrd_ena[3:0]==4'h0) || u_len[2]);
1606 assign to_cksum_w0_t = prt_vld_cyc && (rem_bus_emp || n_udp_sht_pkt_end) || prt_vld_end;
1607 assign to_cksum_w1_0 = prt_vld_cyc || c_pkt_ended;
1608
1609// geo: ------------ state_machine ----------
1610/* c_cksum_st can have max only2 bits set fot state_variable */
1611/* 0in bits_on -var c_cksum_st -max 3 */
1612
1613/* These checkers check for the transition of the state variable. */
1614/* c_cksum_st can transition from NIU_IPP_IDLE_CKSUM to NIU_IPP_CKSUM_D1 */
1615/* 0in state_transition -var c_cksum_st -val `NIU_IPP_IDLE_CKSUM -next `NIU_IPP_CKSUM_D1 */
1616
1617/* c_cksum_st can transition from NIU_IPP_CKSUM_D1 to NIU_IPP_CKSUM_W4, NIU_IPP_CKSUM_W0, NIU_IPP_CKSUM_D2 */
1618/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_D1 -next `NIU_IPP_CKSUM_W4 `NIU_IPP_CKSUM_W0 `NIU_IPP_CKSUM_D2 */
1619
1620/* c_cksum_st can transition from NIU_IPP_CKSUM_D2 to NIU_IPP_CKSUM_W4, NIU_IPP_CKSUM_W1, NIU_IPP_CKSUM_W0, NIU_IPP_CKSUM_DT */
1621/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_D2 -next `NIU_IPP_CKSUM_W4 `NIU_IPP_CKSUM_W1
1622 `NIU_IPP_CKSUM_W0 `NIU_IPP_CKSUM_DT */
1623
1624/* c_cksum_st can transition from NIU_IPP_CKSUM_DT to NIU_IPP_CKSUM_W1, NIU_IPP_CKSUM_W0 */
1625/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_DT -next `NIU_IPP_CKSUM_W1 `NIU_IPP_CKSUM_W0 */
1626
1627/* c_cksum_st can transition from NIU_IPP_CKSUM_W0 to NIU_IPP_CKSUM_W1 */
1628/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_W0 -next `NIU_IPP_CKSUM_W1 */
1629
1630/* c_cksum_st can transition from NIU_IPP_CKSUM_W1 to NIU_IPP_CKSUM_W2 */
1631/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_W1 -next `NIU_IPP_CKSUM_W2 */
1632
1633/* c_cksum_st can transition from NIU_IPP_CKSUM_W2 to NIU_IPP_CKSUM_W3 */
1634/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_W2 -next `NIU_IPP_CKSUM_W3 */
1635
1636/* c_cksum_st can transition from NIU_IPP_CKSUM_W3 to NIU_IPP_CKSUM_W4, NIU_IPP_CKSUM_UL */
1637/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_W3 -next `NIU_IPP_CKSUM_W4
1638 `NIU_IPP_CKSUM_UL */
1639
1640/* c_cksum_st can transition from NIU_IPP_CKSUM_W4 to NIU_IPP_IDLE_CKSUM */
1641/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_W4 -next `NIU_IPP_IDLE_CKSUM */
1642
1643/* c_cksum_st can transition from NIU_IPP_CKSUM_UL to NIU_IPP_CKSUM_W4 */
1644/* 0in state_transition -var c_cksum_st -val `NIU_IPP_CKSUM_UL -next `NIU_IPP_CKSUM_W4 */
1645
1646
1647 always @(c_cksum_st or
1648 udp_r or
1649 sta_prt or
1650 prt_vld_cyc or
1651 prt_vld_end or
1652 err_dat_byt or
1653 pas_dat_byt or
1654 c_dsum_fail_full or
1655 c_tsum_fail or
1656 c_pkt_ended or
1657 to_cksum_w0_1 or
1658 to_cksum_w0_2 or
1659 to_cksum_w1_2 or
1660 to_cksum_w1_t or
1661 to_cksum_w0_t or
1662 to_cksum_w1_0
1663 ) begin
1664
1665 n_sum_prt_fail = 1'h0;
1666 n_cksum_st = `NIU_IPP_IDLE_CKSUM;
1667
1668 n_tsum_fail = c_tsum_fail;
1669 n_pkt_ended = c_pkt_ended;
1670
1671 case (c_cksum_st) //synopsys parallel_case
1672 (`NIU_IPP_IDLE_CKSUM):
1673 begin
1674 n_tsum_fail = 1'h0;
1675 if (sta_prt) begin
1676 n_cksum_st = `NIU_IPP_CKSUM_D1;
1677 end
1678 else begin
1679 n_cksum_st = `NIU_IPP_IDLE_CKSUM;
1680 end
1681 end
1682 (`NIU_IPP_CKSUM_D1):
1683 begin
1684 n_pkt_ended = prt_vld_end;
1685 if (pas_dat_byt) begin
1686 n_tsum_fail = 1'h0;
1687 n_cksum_st = `NIU_IPP_CKSUM_W4;
1688 end
1689 else if (prt_vld_end) begin
1690 n_tsum_fail = 1'h1;
1691 n_cksum_st = `NIU_IPP_CKSUM_W4;
1692 end
1693 else if (to_cksum_w0_1)
1694 n_cksum_st = `NIU_IPP_CKSUM_W0;
1695 else if (prt_vld_cyc)
1696 n_cksum_st = `NIU_IPP_CKSUM_D2;
1697 else
1698 n_cksum_st = `NIU_IPP_CKSUM_D1;
1699 end
1700 (`NIU_IPP_CKSUM_D2):
1701 begin
1702 n_pkt_ended = prt_vld_end;
1703 if (prt_vld_end || err_dat_byt) begin
1704 n_tsum_fail = 1'h1;
1705 n_cksum_st = `NIU_IPP_CKSUM_W4;
1706 end
1707 else if (to_cksum_w0_2) begin
1708 n_cksum_st = `NIU_IPP_CKSUM_W0;
1709 end
1710 else if (to_cksum_w1_2) begin
1711 n_cksum_st = `NIU_IPP_CKSUM_W1;
1712 end
1713 else if (prt_vld_cyc)
1714 n_cksum_st = `NIU_IPP_CKSUM_DT;
1715 else
1716 n_cksum_st = `NIU_IPP_CKSUM_D2;
1717 end
1718 (`NIU_IPP_CKSUM_DT):
1719 begin
1720 n_pkt_ended = prt_vld_end;
1721 if (to_cksum_w1_t)
1722 n_cksum_st = `NIU_IPP_CKSUM_W1;
1723 else if (to_cksum_w0_t)
1724 n_cksum_st = `NIU_IPP_CKSUM_W0;
1725 else
1726 n_cksum_st = `NIU_IPP_CKSUM_DT;
1727 end
1728 (`NIU_IPP_CKSUM_W0):
1729 begin
1730 if (to_cksum_w1_0)
1731 n_cksum_st = `NIU_IPP_CKSUM_W1;
1732 else
1733 n_cksum_st = `NIU_IPP_CKSUM_W0;
1734 end
1735 (`NIU_IPP_CKSUM_W1): begin n_cksum_st = `NIU_IPP_CKSUM_W2; end
1736 (`NIU_IPP_CKSUM_W2): begin n_cksum_st = `NIU_IPP_CKSUM_W3; end
1737 (`NIU_IPP_CKSUM_W3):
1738 begin
1739 if (udp_r)
1740 n_cksum_st = `NIU_IPP_CKSUM_UL;
1741 else
1742 n_cksum_st = `NIU_IPP_CKSUM_W4;
1743 end
1744 (`NIU_IPP_CKSUM_W4):
1745 begin
1746 n_sum_prt_fail = !pas_dat_byt && (c_tsum_fail || c_dsum_fail_full);
1747 n_cksum_st = `NIU_IPP_IDLE_CKSUM;
1748 end
1749 (`NIU_IPP_CKSUM_UL): begin n_cksum_st = `NIU_IPP_CKSUM_W4; end
1750 default:
1751 begin
1752 n_cksum_st = `NIU_IPP_IDLE_CKSUM;
1753 n_tsum_fail = 1'h0;
1754 n_sum_prt_fail = 1'h0;
1755 n_pkt_ended = 1'h0;
1756 end
1757 endcase
1758 end
1759
1760
1761// geo: ------------ registers --------------
1762 ipp_sum_reg_r_9_s0 su_reg_r_9_s0_sts (n_cksum_st[8:0], reset, clk,c_cksum_st[8:0]);
1763 ipp_sum_reg_r_1 su_reg_r_1_sta (cur_sta_prt, reset, clk,reg_sta_prt);
1764 ipp_sum_reg_w_r_2 su_reg_w_r_2_la4 (ipp_la4_prot[1:0],wt_fet_sta, clr, clk,ipp_la4_prot_r[1:0]);
1765 ipp_sum_reg_w_r_2 su_reg_w_r_2_la3 (ipp_la3_vers[1:0],wt_fet_sta, clr, clk,ipp_la3_vers_r[1:0]);
1766 ipp_sum_reg_w_r_2 su_reg_w_r_2_la2 (ipp_la2_opti[1:0],wt_fet_sta, clr, clk,ipp_la2_opti_r[1:0]);
1767 ipp_sum_reg_w_r_4 su_reg_w_r_4_hdr (ip4_hdr_leng[3:0],wt_fet_sta, clr, clk,hdr_r[3:0]);
1768 ipp_sum_reg_w_r_4 su_reg_w_r_4_off (nxt_hdr_off[3:0], wt_fet_sta, clr, clk,n_hdr_off[3:0]);
1769 ipp_sum_reg_w_r_4 su_reg_w_r_3_l32 (l3l2[3:0], wt_fet_sta, clr, clk,l3l2_r[3:0]);
1770 ipp_sum_reg_w_r_1 su_reg_w_r1_udp (la4_udp, wt_fet_sta, clr, clk,udp_r);
1771 ipp_sum_reg_w_r_17 su_reg_w_r_17_uoff (n_udp_hdr_off[16:0], wt_fet_sta,clr, clk,udp_hdr_off[16:0]);
1772 ipp_sum_reg_w_r_2 su_reg_w_r_2_ulen (n_udp_sel_len[1:0],wt_fet_sta, clr, clk,udp_sel_len[1:0]);
1773 ipp_sum_reg_w_r_2 su_reg_w_r_2_usum (n_udp_sel_sum[1:0],wt_fet_sta, clr, clk,udp_sel_sum[1:0]);
1774 ipp_sum_reg_r_1 su_reg_r_1_std (n_sum_prt_started, clr, clk,sum_prt_started);
1775 ipp_sum_reg_r_1 su_reg_r_1_vld (n_sum_prt_valid, clr1, clk,sum_prt_valid);
1776 ipp_sum_reg_r_1 su_reg_r_1_fai (n_sum_prt_fail, clr1, clk,sum_prt_fail);
1777 ipp_sum_reg_r_1 su_reg_r_1_tfa (n_tsum_fail, clr, clk,c_tsum_fail);
1778 ipp_sum_reg_r_1 su_reg_r_1_ended (n_pkt_ended, clr, clk,c_pkt_ended);
1779 ipp_sum_cnt_i_r_8 su_cnt_i_r_8_vld ( prt_vld_cyc, clr, clk,vld_bus_cnt[7:0]);
1780 ipp_sum_reg_r_1 su_reg_r_1_get_ule (n_get_uln, clr, clk,get_uln);
1781 ipp_sum_reg_r_1 su_reg_r_1_add_ule (n_add_uln, clr, clk,add_uln);
1782 ipp_sum_reg_r_2 su_reg_r_2_sel_awd (nxt_sel_awd[1:0], clr, clk,n_sel_awd[1:0]);
1783
1784 ipp_sum_reg_r_4 su_reg_r_4_off (n_hdr_off[3:0], reset, clk,hdr_off[3:0]);
1785 ipp_sum_reg_r_2 su_reg_r_2_awd (n_sel_awd[1:0], reset, clk,sel_awd[1:0]);
1786 ipp_sum_reg_r_8 su_reg_r_8_asw (n_sel_asw[7:0], reset, clk,sel_asw[7:0]);
1787 ipp_sum_reg_r_8 su_reg_r_8_bwd (n_sel_bwd[7:0], reset, clk,sel_bwd[7:0]);
1788 ipp_sum_reg_r_1 su_reg_r_1_add (n_sel_add, reset, clk,sel_add);
1789 ipp_sum_reg_r_16 su_reg_r_16_ben (n_byt_ena[15:0], reset, clk,byt_ena[15:0]);
1790
1791`ifdef NEPTUNE
1792wire [3:0] do_nad;
1793wire [3:0] do_nor;
1794wire [3:0] do_inv;
1795wire [3:0] do_mux;
1796wire [3:0] do_q;
1797wire so;
1798
1799 nep_spare_ipp spare_ipp_0 (
1800 .di_nd3 ({1'h1, 1'h1, do_q[3]}),
1801 .di_nd2 ({1'h1, 1'h1, do_q[2]}),
1802 .di_nd1 ({1'h1, 1'h1, do_q[1]}),
1803 .di_nd0 ({1'h1, 1'h1, do_q[0]}),
1804 .di_nr3 ({1'h0, 1'h0}),
1805 .di_nr2 ({1'h0, 1'h0}),
1806 .di_nr1 ({1'h0, 1'h0}),
1807 .di_nr0 ({1'h0, 1'h0}),
1808 .di_inv (do_nad[3:0]),
1809 .di_mx3 ({1'h0, 1'h0}),
1810 .di_mx2 ({1'h0, 1'h0}),
1811 .di_mx1 ({1'h0, 1'h0}),
1812 .di_mx0 ({1'h0, 1'h0}),
1813 .mx_sel (do_nor[3:0]),
1814 .di_reg (do_inv[3:0]),
1815 .wt_ena (do_mux[3:0]),
1816 .rst ({reset,reset,reset,reset}),
1817 .si (1'h0),
1818 .se (1'h0),
1819 .clk (clk),
1820 .do_nad (do_nad[3:0]),
1821 .do_nor (do_nor[3:0]),
1822 .do_inv (do_inv[3:0]),
1823 .do_mux (do_mux[3:0]),
1824 .do_q (do_q[3:0]),
1825 .so (so)
1826 );
1827`endif
1828
1829endmodule