yowasp-yosys 0.35.0.0.post605__py3-none-any.whl → 0.36.0.8.post623.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. yowasp_yosys/share/cmp2softlogic.v +117 -0
  2. yowasp_yosys/share/include/backends/cxxrtl/{cxxrtl_capi.cc → runtime/cxxrtl/capi/cxxrtl_capi.cc} +3 -3
  3. yowasp_yosys/share/include/backends/cxxrtl/{cxxrtl_vcd_capi.cc → runtime/cxxrtl/capi/cxxrtl_capi_vcd.cc} +3 -3
  4. yowasp_yosys/share/include/backends/cxxrtl/{cxxrtl_vcd_capi.h → runtime/cxxrtl/capi/cxxrtl_capi_vcd.h} +3 -3
  5. yowasp_yosys/share/include/backends/cxxrtl/{cxxrtl.h → runtime/cxxrtl/cxxrtl.h} +2 -1
  6. yowasp_yosys/share/include/backends/cxxrtl/{cxxrtl_vcd.h → runtime/cxxrtl/cxxrtl_vcd.h} +1 -1
  7. yowasp_yosys/share/include/kernel/rtlil.h +3 -0
  8. yowasp_yosys/share/nexus/brams_map.v +6 -6
  9. yowasp_yosys/share/python3/ywio.py +8 -2
  10. yowasp_yosys/share/quicklogic/{pp3_cells_sim.v → pp3/cells_sim.v} +77 -0
  11. yowasp_yosys/share/quicklogic/qlf_k6n10f/TDP18K_FIFO.v +344 -0
  12. yowasp_yosys/share/quicklogic/qlf_k6n10f/arith_map.v +99 -0
  13. yowasp_yosys/share/quicklogic/qlf_k6n10f/bram_types_sim.v +74035 -0
  14. yowasp_yosys/share/quicklogic/qlf_k6n10f/brams_map.v +4288 -0
  15. yowasp_yosys/share/quicklogic/qlf_k6n10f/brams_sim.v +10949 -0
  16. yowasp_yosys/share/quicklogic/qlf_k6n10f/cells_sim.v +375 -0
  17. yowasp_yosys/share/quicklogic/qlf_k6n10f/dsp_final_map.v +265 -0
  18. yowasp_yosys/share/quicklogic/qlf_k6n10f/dsp_map.v +102 -0
  19. yowasp_yosys/share/quicklogic/qlf_k6n10f/dsp_sim.v +4527 -0
  20. yowasp_yosys/share/quicklogic/qlf_k6n10f/ffs_map.v +133 -0
  21. yowasp_yosys/share/quicklogic/qlf_k6n10f/libmap_brams.txt +22 -0
  22. yowasp_yosys/share/quicklogic/qlf_k6n10f/libmap_brams_map.v +483 -0
  23. yowasp_yosys/share/quicklogic/qlf_k6n10f/sram1024x18_mem.v +64 -0
  24. yowasp_yosys/share/quicklogic/qlf_k6n10f/ufifo_ctl.v +620 -0
  25. yowasp_yosys/smtbmc.py +99 -55
  26. yowasp_yosys/witness.py +16 -7
  27. yowasp_yosys/yosys.wasm +0 -0
  28. yowasp_yosys/ywio.py +8 -2
  29. {yowasp_yosys-0.35.0.0.post605.dist-info → yowasp_yosys-0.36.0.8.post623.dev0.dist-info}/METADATA +12 -12
  30. {yowasp_yosys-0.35.0.0.post605.dist-info → yowasp_yosys-0.36.0.8.post623.dev0.dist-info}/RECORD +42 -28
  31. {yowasp_yosys-0.35.0.0.post605.dist-info → yowasp_yosys-0.36.0.8.post623.dev0.dist-info}/WHEEL +1 -1
  32. yowasp_yosys/share/quicklogic/lut_sim.v +0 -76
  33. /yowasp_yosys/share/include/backends/cxxrtl/{cxxrtl_capi.h → runtime/cxxrtl/capi/cxxrtl_capi.h} +0 -0
  34. /yowasp_yosys/share/quicklogic/{cells_sim.v → common/cells_sim.v} +0 -0
  35. /yowasp_yosys/share/quicklogic/{abc9_map.v → pp3/abc9_map.v} +0 -0
  36. /yowasp_yosys/share/quicklogic/{abc9_model.v → pp3/abc9_model.v} +0 -0
  37. /yowasp_yosys/share/quicklogic/{abc9_unmap.v → pp3/abc9_unmap.v} +0 -0
  38. /yowasp_yosys/share/quicklogic/{pp3_cells_map.v → pp3/cells_map.v} +0 -0
  39. /yowasp_yosys/share/quicklogic/{pp3_ffs_map.v → pp3/ffs_map.v} +0 -0
  40. /yowasp_yosys/share/quicklogic/{pp3_latches_map.v → pp3/latches_map.v} +0 -0
  41. /yowasp_yosys/share/quicklogic/{pp3_lut_map.v → pp3/lut_map.v} +0 -0
  42. {yowasp_yosys-0.35.0.0.post605.dist-info → yowasp_yosys-0.36.0.8.post623.dev0.dist-info}/entry_points.txt +0 -0
  43. {yowasp_yosys-0.35.0.0.post605.dist-info → yowasp_yosys-0.36.0.8.post623.dev0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,4527 @@
1
+ // Copyright 2020-2022 F4PGA Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // SPDX-License-Identifier: Apache-2.0
16
+
17
+ `timescale 1ps/1ps
18
+
19
+ `default_nettype none
20
+
21
+ (* blackbox *)
22
+ module QL_DSP1 (
23
+ input wire [19:0] a,
24
+ input wire [17:0] b,
25
+ (* clkbuf_sink *)
26
+ input wire clk0,
27
+ (* clkbuf_sink *)
28
+ input wire clk1,
29
+ input wire [ 1:0] feedback0,
30
+ input wire [ 1:0] feedback1,
31
+ input wire load_acc0,
32
+ input wire load_acc1,
33
+ input wire reset0,
34
+ input wire reset1,
35
+ output reg [37:0] z
36
+ );
37
+ parameter MODE_BITS = 27'b00000000000000000000000000;
38
+ endmodule /* QL_DSP1 */
39
+
40
+
41
+
42
+ // ---------------------------------------- //
43
+ // ----- DSP cells simulation modules ----- //
44
+ // --------- Control bits in ports -------- //
45
+ // ---------------------------------------- //
46
+
47
+ module QL_DSP2 ( // TODO: Name subject to change
48
+ input wire [19:0] a,
49
+ input wire [17:0] b,
50
+ input wire [ 5:0] acc_fir,
51
+ output wire [37:0] z,
52
+ output wire [17:0] dly_b,
53
+
54
+ (* clkbuf_sink *)
55
+ input wire clk,
56
+ input wire reset,
57
+
58
+ input wire [2:0] feedback,
59
+ input wire load_acc,
60
+ input wire unsigned_a,
61
+ input wire unsigned_b,
62
+
63
+ input wire f_mode,
64
+ input wire [2:0] output_select,
65
+ input wire saturate_enable,
66
+ input wire [5:0] shift_right,
67
+ input wire round,
68
+ input wire subtract,
69
+ input wire register_inputs
70
+ );
71
+
72
+ parameter [79:0] MODE_BITS = 80'd0;
73
+
74
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
75
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
76
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
77
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
78
+
79
+ localparam NBITS_ACC = 64;
80
+ localparam NBITS_A = 20;
81
+ localparam NBITS_B = 18;
82
+ localparam NBITS_Z = 38;
83
+
84
+ wire [NBITS_Z-1:0] dsp_full_z;
85
+ wire [(NBITS_Z/2)-1:0] dsp_frac0_z;
86
+ wire [(NBITS_Z/2)-1:0] dsp_frac1_z;
87
+
88
+ wire [NBITS_B-1:0] dsp_full_dly_b;
89
+ wire [(NBITS_B/2)-1:0] dsp_frac0_dly_b;
90
+ wire [(NBITS_B/2)-1:0] dsp_frac1_dly_b;
91
+
92
+ assign z = f_mode ? {dsp_frac1_z, dsp_frac0_z} : dsp_full_z;
93
+ assign dly_b = f_mode ? {dsp_frac1_dly_b, dsp_frac0_dly_b} : dsp_full_dly_b;
94
+
95
+ // Output used when fmode == 1
96
+ dsp_t1_sim_cfg_ports #(
97
+ .NBITS_A(NBITS_A/2),
98
+ .NBITS_B(NBITS_B/2),
99
+ .NBITS_ACC(NBITS_ACC/2),
100
+ .NBITS_Z(NBITS_Z/2)
101
+ ) dsp_frac0 (
102
+ .a_i(a[(NBITS_A/2)-1:0]),
103
+ .b_i(b[(NBITS_B/2)-1:0]),
104
+ .z_o(dsp_frac0_z),
105
+ .dly_b_o(dsp_frac0_dly_b),
106
+
107
+ .acc_fir_i(acc_fir),
108
+ .feedback_i(feedback),
109
+ .load_acc_i(load_acc),
110
+
111
+ .unsigned_a_i(unsigned_a),
112
+ .unsigned_b_i(unsigned_b),
113
+
114
+ .clock_i(clk),
115
+ .s_reset(reset),
116
+
117
+ .saturate_enable_i(saturate_enable),
118
+ .output_select_i(output_select),
119
+ .round_i(round),
120
+ .shift_right_i(shift_right),
121
+ .subtract_i(subtract),
122
+ .register_inputs_i(register_inputs),
123
+ .coef_0_i(COEFF_0[(NBITS_A/2)-1:0]),
124
+ .coef_1_i(COEFF_1[(NBITS_A/2)-1:0]),
125
+ .coef_2_i(COEFF_2[(NBITS_A/2)-1:0]),
126
+ .coef_3_i(COEFF_3[(NBITS_A/2)-1:0])
127
+ );
128
+
129
+ // Output used when fmode == 1
130
+ dsp_t1_sim_cfg_ports #(
131
+ .NBITS_A(NBITS_A/2),
132
+ .NBITS_B(NBITS_B/2),
133
+ .NBITS_ACC(NBITS_ACC/2),
134
+ .NBITS_Z(NBITS_Z/2)
135
+ ) dsp_frac1 (
136
+ .a_i(a[NBITS_A-1:NBITS_A/2]),
137
+ .b_i(b[NBITS_B-1:NBITS_B/2]),
138
+ .z_o(dsp_frac1_z),
139
+ .dly_b_o(dsp_frac1_dly_b),
140
+
141
+ .acc_fir_i(acc_fir),
142
+ .feedback_i(feedback),
143
+ .load_acc_i(load_acc),
144
+
145
+ .unsigned_a_i(unsigned_a),
146
+ .unsigned_b_i(unsigned_b),
147
+
148
+ .clock_i(clk),
149
+ .s_reset(reset),
150
+
151
+ .saturate_enable_i(saturate_enable),
152
+ .output_select_i(output_select),
153
+ .round_i(round),
154
+ .shift_right_i(shift_right),
155
+ .subtract_i(subtract),
156
+ .register_inputs_i(register_inputs),
157
+ .coef_0_i(COEFF_0[NBITS_A-1:NBITS_A/2]),
158
+ .coef_1_i(COEFF_1[NBITS_A-1:NBITS_A/2]),
159
+ .coef_2_i(COEFF_2[NBITS_A-1:NBITS_A/2]),
160
+ .coef_3_i(COEFF_3[NBITS_A-1:NBITS_A/2])
161
+ );
162
+
163
+ // Output used when fmode == 0
164
+ dsp_t1_sim_cfg_ports #(
165
+ .NBITS_A(NBITS_A),
166
+ .NBITS_B(NBITS_B),
167
+ .NBITS_ACC(NBITS_ACC),
168
+ .NBITS_Z(NBITS_Z)
169
+ ) dsp_full (
170
+ .a_i(a),
171
+ .b_i(b),
172
+ .z_o(dsp_full_z),
173
+ .dly_b_o(dsp_full_dly_b),
174
+
175
+ .acc_fir_i(acc_fir),
176
+ .feedback_i(feedback),
177
+ .load_acc_i(load_acc),
178
+
179
+ .unsigned_a_i(unsigned_a),
180
+ .unsigned_b_i(unsigned_b),
181
+
182
+ .clock_i(clk),
183
+ .s_reset(reset),
184
+
185
+ .saturate_enable_i(saturate_enable),
186
+ .output_select_i(output_select),
187
+ .round_i(round),
188
+ .shift_right_i(shift_right),
189
+ .subtract_i(subtract),
190
+ .register_inputs_i(register_inputs),
191
+ .coef_0_i(COEFF_0),
192
+ .coef_1_i(COEFF_1),
193
+ .coef_2_i(COEFF_2),
194
+ .coef_3_i(COEFF_3)
195
+ );
196
+ endmodule
197
+
198
+ module QL_DSP2_MULT ( // TODO: Name subject to change
199
+ input wire [19:0] a,
200
+ input wire [17:0] b,
201
+ output wire [37:0] z,
202
+
203
+ input wire reset,
204
+
205
+ input wire [2:0] feedback,
206
+ input wire unsigned_a,
207
+ input wire unsigned_b,
208
+
209
+ input wire f_mode,
210
+ input wire [2:0] output_select,
211
+ input wire register_inputs
212
+ );
213
+
214
+ parameter [79:0] MODE_BITS = 80'd0;
215
+
216
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
217
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
218
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
219
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
220
+
221
+ QL_DSP2 #(
222
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
223
+ ) dsp (
224
+ .a(a),
225
+ .b(b),
226
+ .acc_fir(6'b0),
227
+ .z(z),
228
+ .dly_b(),
229
+
230
+ .clk(1'b0),
231
+ .reset(reset),
232
+
233
+ .f_mode(f_mode),
234
+
235
+ .feedback(feedback),
236
+ .load_acc(1'b0),
237
+
238
+ .unsigned_a(unsigned_a),
239
+ .unsigned_b(unsigned_b),
240
+
241
+ .output_select(output_select), // unregistered output: a * b (0)
242
+ .saturate_enable(1'b0),
243
+ .shift_right(6'b0),
244
+ .round(1'b0),
245
+ .subtract(1'b0),
246
+ .register_inputs(register_inputs) // unregistered inputs
247
+ );
248
+
249
+ `ifdef SDF_SIM
250
+ specify
251
+ (a[0] => z[0]) = 0;
252
+ (a[1] => z[0]) = 0;
253
+ (a[2] => z[0]) = 0;
254
+ (a[3] => z[0]) = 0;
255
+ (a[4] => z[0]) = 0;
256
+ (a[5] => z[0]) = 0;
257
+ (a[6] => z[0]) = 0;
258
+ (a[7] => z[0]) = 0;
259
+ (a[8] => z[0]) = 0;
260
+ (a[9] => z[0]) = 0;
261
+ (a[10] => z[0]) = 0;
262
+ (a[11] => z[0]) = 0;
263
+ (a[12] => z[0]) = 0;
264
+ (a[13] => z[0]) = 0;
265
+ (a[14] => z[0]) = 0;
266
+ (a[15] => z[0]) = 0;
267
+ (a[16] => z[0]) = 0;
268
+ (a[17] => z[0]) = 0;
269
+ (a[18] => z[0]) = 0;
270
+ (a[19] => z[0]) = 0;
271
+ (b[0] => z[0]) = 0;
272
+ (b[1] => z[0]) = 0;
273
+ (b[2] => z[0]) = 0;
274
+ (b[3] => z[0]) = 0;
275
+ (b[4] => z[0]) = 0;
276
+ (b[5] => z[0]) = 0;
277
+ (b[6] => z[0]) = 0;
278
+ (b[7] => z[0]) = 0;
279
+ (b[8] => z[0]) = 0;
280
+ (b[9] => z[0]) = 0;
281
+ (b[10] => z[0]) = 0;
282
+ (b[11] => z[0]) = 0;
283
+ (b[12] => z[0]) = 0;
284
+ (b[13] => z[0]) = 0;
285
+ (b[14] => z[0]) = 0;
286
+ (b[15] => z[0]) = 0;
287
+ (b[16] => z[0]) = 0;
288
+ (b[17] => z[0]) = 0;
289
+ (a[0] => z[1]) = 0;
290
+ (a[1] => z[1]) = 0;
291
+ (a[2] => z[1]) = 0;
292
+ (a[3] => z[1]) = 0;
293
+ (a[4] => z[1]) = 0;
294
+ (a[5] => z[1]) = 0;
295
+ (a[6] => z[1]) = 0;
296
+ (a[7] => z[1]) = 0;
297
+ (a[8] => z[1]) = 0;
298
+ (a[9] => z[1]) = 0;
299
+ (a[10] => z[1]) = 0;
300
+ (a[11] => z[1]) = 0;
301
+ (a[12] => z[1]) = 0;
302
+ (a[13] => z[1]) = 0;
303
+ (a[14] => z[1]) = 0;
304
+ (a[15] => z[1]) = 0;
305
+ (a[16] => z[1]) = 0;
306
+ (a[17] => z[1]) = 0;
307
+ (a[18] => z[1]) = 0;
308
+ (a[19] => z[1]) = 0;
309
+ (b[0] => z[1]) = 0;
310
+ (b[1] => z[1]) = 0;
311
+ (b[2] => z[1]) = 0;
312
+ (b[3] => z[1]) = 0;
313
+ (b[4] => z[1]) = 0;
314
+ (b[5] => z[1]) = 0;
315
+ (b[6] => z[1]) = 0;
316
+ (b[7] => z[1]) = 0;
317
+ (b[8] => z[1]) = 0;
318
+ (b[9] => z[1]) = 0;
319
+ (b[10] => z[1]) = 0;
320
+ (b[11] => z[1]) = 0;
321
+ (b[12] => z[1]) = 0;
322
+ (b[13] => z[1]) = 0;
323
+ (b[14] => z[1]) = 0;
324
+ (b[15] => z[1]) = 0;
325
+ (b[16] => z[1]) = 0;
326
+ (b[17] => z[1]) = 0;
327
+ (a[0] => z[2]) = 0;
328
+ (a[1] => z[2]) = 0;
329
+ (a[2] => z[2]) = 0;
330
+ (a[3] => z[2]) = 0;
331
+ (a[4] => z[2]) = 0;
332
+ (a[5] => z[2]) = 0;
333
+ (a[6] => z[2]) = 0;
334
+ (a[7] => z[2]) = 0;
335
+ (a[8] => z[2]) = 0;
336
+ (a[9] => z[2]) = 0;
337
+ (a[10] => z[2]) = 0;
338
+ (a[11] => z[2]) = 0;
339
+ (a[12] => z[2]) = 0;
340
+ (a[13] => z[2]) = 0;
341
+ (a[14] => z[2]) = 0;
342
+ (a[15] => z[2]) = 0;
343
+ (a[16] => z[2]) = 0;
344
+ (a[17] => z[2]) = 0;
345
+ (a[18] => z[2]) = 0;
346
+ (a[19] => z[2]) = 0;
347
+ (b[0] => z[2]) = 0;
348
+ (b[1] => z[2]) = 0;
349
+ (b[2] => z[2]) = 0;
350
+ (b[3] => z[2]) = 0;
351
+ (b[4] => z[2]) = 0;
352
+ (b[5] => z[2]) = 0;
353
+ (b[6] => z[2]) = 0;
354
+ (b[7] => z[2]) = 0;
355
+ (b[8] => z[2]) = 0;
356
+ (b[9] => z[2]) = 0;
357
+ (b[10] => z[2]) = 0;
358
+ (b[11] => z[2]) = 0;
359
+ (b[12] => z[2]) = 0;
360
+ (b[13] => z[2]) = 0;
361
+ (b[14] => z[2]) = 0;
362
+ (b[15] => z[2]) = 0;
363
+ (b[16] => z[2]) = 0;
364
+ (b[17] => z[2]) = 0;
365
+ (a[0] => z[3]) = 0;
366
+ (a[1] => z[3]) = 0;
367
+ (a[2] => z[3]) = 0;
368
+ (a[3] => z[3]) = 0;
369
+ (a[4] => z[3]) = 0;
370
+ (a[5] => z[3]) = 0;
371
+ (a[6] => z[3]) = 0;
372
+ (a[7] => z[3]) = 0;
373
+ (a[8] => z[3]) = 0;
374
+ (a[9] => z[3]) = 0;
375
+ (a[10] => z[3]) = 0;
376
+ (a[11] => z[3]) = 0;
377
+ (a[12] => z[3]) = 0;
378
+ (a[13] => z[3]) = 0;
379
+ (a[14] => z[3]) = 0;
380
+ (a[15] => z[3]) = 0;
381
+ (a[16] => z[3]) = 0;
382
+ (a[17] => z[3]) = 0;
383
+ (a[18] => z[3]) = 0;
384
+ (a[19] => z[3]) = 0;
385
+ (b[0] => z[3]) = 0;
386
+ (b[1] => z[3]) = 0;
387
+ (b[2] => z[3]) = 0;
388
+ (b[3] => z[3]) = 0;
389
+ (b[4] => z[3]) = 0;
390
+ (b[5] => z[3]) = 0;
391
+ (b[6] => z[3]) = 0;
392
+ (b[7] => z[3]) = 0;
393
+ (b[8] => z[3]) = 0;
394
+ (b[9] => z[3]) = 0;
395
+ (b[10] => z[3]) = 0;
396
+ (b[11] => z[3]) = 0;
397
+ (b[12] => z[3]) = 0;
398
+ (b[13] => z[3]) = 0;
399
+ (b[14] => z[3]) = 0;
400
+ (b[15] => z[3]) = 0;
401
+ (b[16] => z[3]) = 0;
402
+ (b[17] => z[3]) = 0;
403
+ (a[0] => z[4]) = 0;
404
+ (a[1] => z[4]) = 0;
405
+ (a[2] => z[4]) = 0;
406
+ (a[3] => z[4]) = 0;
407
+ (a[4] => z[4]) = 0;
408
+ (a[5] => z[4]) = 0;
409
+ (a[6] => z[4]) = 0;
410
+ (a[7] => z[4]) = 0;
411
+ (a[8] => z[4]) = 0;
412
+ (a[9] => z[4]) = 0;
413
+ (a[10] => z[4]) = 0;
414
+ (a[11] => z[4]) = 0;
415
+ (a[12] => z[4]) = 0;
416
+ (a[13] => z[4]) = 0;
417
+ (a[14] => z[4]) = 0;
418
+ (a[15] => z[4]) = 0;
419
+ (a[16] => z[4]) = 0;
420
+ (a[17] => z[4]) = 0;
421
+ (a[18] => z[4]) = 0;
422
+ (a[19] => z[4]) = 0;
423
+ (b[0] => z[4]) = 0;
424
+ (b[1] => z[4]) = 0;
425
+ (b[2] => z[4]) = 0;
426
+ (b[3] => z[4]) = 0;
427
+ (b[4] => z[4]) = 0;
428
+ (b[5] => z[4]) = 0;
429
+ (b[6] => z[4]) = 0;
430
+ (b[7] => z[4]) = 0;
431
+ (b[8] => z[4]) = 0;
432
+ (b[9] => z[4]) = 0;
433
+ (b[10] => z[4]) = 0;
434
+ (b[11] => z[4]) = 0;
435
+ (b[12] => z[4]) = 0;
436
+ (b[13] => z[4]) = 0;
437
+ (b[14] => z[4]) = 0;
438
+ (b[15] => z[4]) = 0;
439
+ (b[16] => z[4]) = 0;
440
+ (b[17] => z[4]) = 0;
441
+ (a[0] => z[5]) = 0;
442
+ (a[1] => z[5]) = 0;
443
+ (a[2] => z[5]) = 0;
444
+ (a[3] => z[5]) = 0;
445
+ (a[4] => z[5]) = 0;
446
+ (a[5] => z[5]) = 0;
447
+ (a[6] => z[5]) = 0;
448
+ (a[7] => z[5]) = 0;
449
+ (a[8] => z[5]) = 0;
450
+ (a[9] => z[5]) = 0;
451
+ (a[10] => z[5]) = 0;
452
+ (a[11] => z[5]) = 0;
453
+ (a[12] => z[5]) = 0;
454
+ (a[13] => z[5]) = 0;
455
+ (a[14] => z[5]) = 0;
456
+ (a[15] => z[5]) = 0;
457
+ (a[16] => z[5]) = 0;
458
+ (a[17] => z[5]) = 0;
459
+ (a[18] => z[5]) = 0;
460
+ (a[19] => z[5]) = 0;
461
+ (b[0] => z[5]) = 0;
462
+ (b[1] => z[5]) = 0;
463
+ (b[2] => z[5]) = 0;
464
+ (b[3] => z[5]) = 0;
465
+ (b[4] => z[5]) = 0;
466
+ (b[5] => z[5]) = 0;
467
+ (b[6] => z[5]) = 0;
468
+ (b[7] => z[5]) = 0;
469
+ (b[8] => z[5]) = 0;
470
+ (b[9] => z[5]) = 0;
471
+ (b[10] => z[5]) = 0;
472
+ (b[11] => z[5]) = 0;
473
+ (b[12] => z[5]) = 0;
474
+ (b[13] => z[5]) = 0;
475
+ (b[14] => z[5]) = 0;
476
+ (b[15] => z[5]) = 0;
477
+ (b[16] => z[5]) = 0;
478
+ (b[17] => z[5]) = 0;
479
+ (a[0] => z[6]) = 0;
480
+ (a[1] => z[6]) = 0;
481
+ (a[2] => z[6]) = 0;
482
+ (a[3] => z[6]) = 0;
483
+ (a[4] => z[6]) = 0;
484
+ (a[5] => z[6]) = 0;
485
+ (a[6] => z[6]) = 0;
486
+ (a[7] => z[6]) = 0;
487
+ (a[8] => z[6]) = 0;
488
+ (a[9] => z[6]) = 0;
489
+ (a[10] => z[6]) = 0;
490
+ (a[11] => z[6]) = 0;
491
+ (a[12] => z[6]) = 0;
492
+ (a[13] => z[6]) = 0;
493
+ (a[14] => z[6]) = 0;
494
+ (a[15] => z[6]) = 0;
495
+ (a[16] => z[6]) = 0;
496
+ (a[17] => z[6]) = 0;
497
+ (a[18] => z[6]) = 0;
498
+ (a[19] => z[6]) = 0;
499
+ (b[0] => z[6]) = 0;
500
+ (b[1] => z[6]) = 0;
501
+ (b[2] => z[6]) = 0;
502
+ (b[3] => z[6]) = 0;
503
+ (b[4] => z[6]) = 0;
504
+ (b[5] => z[6]) = 0;
505
+ (b[6] => z[6]) = 0;
506
+ (b[7] => z[6]) = 0;
507
+ (b[8] => z[6]) = 0;
508
+ (b[9] => z[6]) = 0;
509
+ (b[10] => z[6]) = 0;
510
+ (b[11] => z[6]) = 0;
511
+ (b[12] => z[6]) = 0;
512
+ (b[13] => z[6]) = 0;
513
+ (b[14] => z[6]) = 0;
514
+ (b[15] => z[6]) = 0;
515
+ (b[16] => z[6]) = 0;
516
+ (b[17] => z[6]) = 0;
517
+ (a[0] => z[7]) = 0;
518
+ (a[1] => z[7]) = 0;
519
+ (a[2] => z[7]) = 0;
520
+ (a[3] => z[7]) = 0;
521
+ (a[4] => z[7]) = 0;
522
+ (a[5] => z[7]) = 0;
523
+ (a[6] => z[7]) = 0;
524
+ (a[7] => z[7]) = 0;
525
+ (a[8] => z[7]) = 0;
526
+ (a[9] => z[7]) = 0;
527
+ (a[10] => z[7]) = 0;
528
+ (a[11] => z[7]) = 0;
529
+ (a[12] => z[7]) = 0;
530
+ (a[13] => z[7]) = 0;
531
+ (a[14] => z[7]) = 0;
532
+ (a[15] => z[7]) = 0;
533
+ (a[16] => z[7]) = 0;
534
+ (a[17] => z[7]) = 0;
535
+ (a[18] => z[7]) = 0;
536
+ (a[19] => z[7]) = 0;
537
+ (b[0] => z[7]) = 0;
538
+ (b[1] => z[7]) = 0;
539
+ (b[2] => z[7]) = 0;
540
+ (b[3] => z[7]) = 0;
541
+ (b[4] => z[7]) = 0;
542
+ (b[5] => z[7]) = 0;
543
+ (b[6] => z[7]) = 0;
544
+ (b[7] => z[7]) = 0;
545
+ (b[8] => z[7]) = 0;
546
+ (b[9] => z[7]) = 0;
547
+ (b[10] => z[7]) = 0;
548
+ (b[11] => z[7]) = 0;
549
+ (b[12] => z[7]) = 0;
550
+ (b[13] => z[7]) = 0;
551
+ (b[14] => z[7]) = 0;
552
+ (b[15] => z[7]) = 0;
553
+ (b[16] => z[7]) = 0;
554
+ (b[17] => z[7]) = 0;
555
+ (a[0] => z[8]) = 0;
556
+ (a[1] => z[8]) = 0;
557
+ (a[2] => z[8]) = 0;
558
+ (a[3] => z[8]) = 0;
559
+ (a[4] => z[8]) = 0;
560
+ (a[5] => z[8]) = 0;
561
+ (a[6] => z[8]) = 0;
562
+ (a[7] => z[8]) = 0;
563
+ (a[8] => z[8]) = 0;
564
+ (a[9] => z[8]) = 0;
565
+ (a[10] => z[8]) = 0;
566
+ (a[11] => z[8]) = 0;
567
+ (a[12] => z[8]) = 0;
568
+ (a[13] => z[8]) = 0;
569
+ (a[14] => z[8]) = 0;
570
+ (a[15] => z[8]) = 0;
571
+ (a[16] => z[8]) = 0;
572
+ (a[17] => z[8]) = 0;
573
+ (a[18] => z[8]) = 0;
574
+ (a[19] => z[8]) = 0;
575
+ (b[0] => z[8]) = 0;
576
+ (b[1] => z[8]) = 0;
577
+ (b[2] => z[8]) = 0;
578
+ (b[3] => z[8]) = 0;
579
+ (b[4] => z[8]) = 0;
580
+ (b[5] => z[8]) = 0;
581
+ (b[6] => z[8]) = 0;
582
+ (b[7] => z[8]) = 0;
583
+ (b[8] => z[8]) = 0;
584
+ (b[9] => z[8]) = 0;
585
+ (b[10] => z[8]) = 0;
586
+ (b[11] => z[8]) = 0;
587
+ (b[12] => z[8]) = 0;
588
+ (b[13] => z[8]) = 0;
589
+ (b[14] => z[8]) = 0;
590
+ (b[15] => z[8]) = 0;
591
+ (b[16] => z[8]) = 0;
592
+ (b[17] => z[8]) = 0;
593
+ (a[0] => z[9]) = 0;
594
+ (a[1] => z[9]) = 0;
595
+ (a[2] => z[9]) = 0;
596
+ (a[3] => z[9]) = 0;
597
+ (a[4] => z[9]) = 0;
598
+ (a[5] => z[9]) = 0;
599
+ (a[6] => z[9]) = 0;
600
+ (a[7] => z[9]) = 0;
601
+ (a[8] => z[9]) = 0;
602
+ (a[9] => z[9]) = 0;
603
+ (a[10] => z[9]) = 0;
604
+ (a[11] => z[9]) = 0;
605
+ (a[12] => z[9]) = 0;
606
+ (a[13] => z[9]) = 0;
607
+ (a[14] => z[9]) = 0;
608
+ (a[15] => z[9]) = 0;
609
+ (a[16] => z[9]) = 0;
610
+ (a[17] => z[9]) = 0;
611
+ (a[18] => z[9]) = 0;
612
+ (a[19] => z[9]) = 0;
613
+ (b[0] => z[9]) = 0;
614
+ (b[1] => z[9]) = 0;
615
+ (b[2] => z[9]) = 0;
616
+ (b[3] => z[9]) = 0;
617
+ (b[4] => z[9]) = 0;
618
+ (b[5] => z[9]) = 0;
619
+ (b[6] => z[9]) = 0;
620
+ (b[7] => z[9]) = 0;
621
+ (b[8] => z[9]) = 0;
622
+ (b[9] => z[9]) = 0;
623
+ (b[10] => z[9]) = 0;
624
+ (b[11] => z[9]) = 0;
625
+ (b[12] => z[9]) = 0;
626
+ (b[13] => z[9]) = 0;
627
+ (b[14] => z[9]) = 0;
628
+ (b[15] => z[9]) = 0;
629
+ (b[16] => z[9]) = 0;
630
+ (b[17] => z[9]) = 0;
631
+ (a[0] => z[10]) = 0;
632
+ (a[1] => z[10]) = 0;
633
+ (a[2] => z[10]) = 0;
634
+ (a[3] => z[10]) = 0;
635
+ (a[4] => z[10]) = 0;
636
+ (a[5] => z[10]) = 0;
637
+ (a[6] => z[10]) = 0;
638
+ (a[7] => z[10]) = 0;
639
+ (a[8] => z[10]) = 0;
640
+ (a[9] => z[10]) = 0;
641
+ (a[10] => z[10]) = 0;
642
+ (a[11] => z[10]) = 0;
643
+ (a[12] => z[10]) = 0;
644
+ (a[13] => z[10]) = 0;
645
+ (a[14] => z[10]) = 0;
646
+ (a[15] => z[10]) = 0;
647
+ (a[16] => z[10]) = 0;
648
+ (a[17] => z[10]) = 0;
649
+ (a[18] => z[10]) = 0;
650
+ (a[19] => z[10]) = 0;
651
+ (b[0] => z[10]) = 0;
652
+ (b[1] => z[10]) = 0;
653
+ (b[2] => z[10]) = 0;
654
+ (b[3] => z[10]) = 0;
655
+ (b[4] => z[10]) = 0;
656
+ (b[5] => z[10]) = 0;
657
+ (b[6] => z[10]) = 0;
658
+ (b[7] => z[10]) = 0;
659
+ (b[8] => z[10]) = 0;
660
+ (b[9] => z[10]) = 0;
661
+ (b[10] => z[10]) = 0;
662
+ (b[11] => z[10]) = 0;
663
+ (b[12] => z[10]) = 0;
664
+ (b[13] => z[10]) = 0;
665
+ (b[14] => z[10]) = 0;
666
+ (b[15] => z[10]) = 0;
667
+ (b[16] => z[10]) = 0;
668
+ (b[17] => z[10]) = 0;
669
+ (a[0] => z[11]) = 0;
670
+ (a[1] => z[11]) = 0;
671
+ (a[2] => z[11]) = 0;
672
+ (a[3] => z[11]) = 0;
673
+ (a[4] => z[11]) = 0;
674
+ (a[5] => z[11]) = 0;
675
+ (a[6] => z[11]) = 0;
676
+ (a[7] => z[11]) = 0;
677
+ (a[8] => z[11]) = 0;
678
+ (a[9] => z[11]) = 0;
679
+ (a[10] => z[11]) = 0;
680
+ (a[11] => z[11]) = 0;
681
+ (a[12] => z[11]) = 0;
682
+ (a[13] => z[11]) = 0;
683
+ (a[14] => z[11]) = 0;
684
+ (a[15] => z[11]) = 0;
685
+ (a[16] => z[11]) = 0;
686
+ (a[17] => z[11]) = 0;
687
+ (a[18] => z[11]) = 0;
688
+ (a[19] => z[11]) = 0;
689
+ (b[0] => z[11]) = 0;
690
+ (b[1] => z[11]) = 0;
691
+ (b[2] => z[11]) = 0;
692
+ (b[3] => z[11]) = 0;
693
+ (b[4] => z[11]) = 0;
694
+ (b[5] => z[11]) = 0;
695
+ (b[6] => z[11]) = 0;
696
+ (b[7] => z[11]) = 0;
697
+ (b[8] => z[11]) = 0;
698
+ (b[9] => z[11]) = 0;
699
+ (b[10] => z[11]) = 0;
700
+ (b[11] => z[11]) = 0;
701
+ (b[12] => z[11]) = 0;
702
+ (b[13] => z[11]) = 0;
703
+ (b[14] => z[11]) = 0;
704
+ (b[15] => z[11]) = 0;
705
+ (b[16] => z[11]) = 0;
706
+ (b[17] => z[11]) = 0;
707
+ (a[0] => z[12]) = 0;
708
+ (a[1] => z[12]) = 0;
709
+ (a[2] => z[12]) = 0;
710
+ (a[3] => z[12]) = 0;
711
+ (a[4] => z[12]) = 0;
712
+ (a[5] => z[12]) = 0;
713
+ (a[6] => z[12]) = 0;
714
+ (a[7] => z[12]) = 0;
715
+ (a[8] => z[12]) = 0;
716
+ (a[9] => z[12]) = 0;
717
+ (a[10] => z[12]) = 0;
718
+ (a[11] => z[12]) = 0;
719
+ (a[12] => z[12]) = 0;
720
+ (a[13] => z[12]) = 0;
721
+ (a[14] => z[12]) = 0;
722
+ (a[15] => z[12]) = 0;
723
+ (a[16] => z[12]) = 0;
724
+ (a[17] => z[12]) = 0;
725
+ (a[18] => z[12]) = 0;
726
+ (a[19] => z[12]) = 0;
727
+ (b[0] => z[12]) = 0;
728
+ (b[1] => z[12]) = 0;
729
+ (b[2] => z[12]) = 0;
730
+ (b[3] => z[12]) = 0;
731
+ (b[4] => z[12]) = 0;
732
+ (b[5] => z[12]) = 0;
733
+ (b[6] => z[12]) = 0;
734
+ (b[7] => z[12]) = 0;
735
+ (b[8] => z[12]) = 0;
736
+ (b[9] => z[12]) = 0;
737
+ (b[10] => z[12]) = 0;
738
+ (b[11] => z[12]) = 0;
739
+ (b[12] => z[12]) = 0;
740
+ (b[13] => z[12]) = 0;
741
+ (b[14] => z[12]) = 0;
742
+ (b[15] => z[12]) = 0;
743
+ (b[16] => z[12]) = 0;
744
+ (b[17] => z[12]) = 0;
745
+ (a[0] => z[13]) = 0;
746
+ (a[1] => z[13]) = 0;
747
+ (a[2] => z[13]) = 0;
748
+ (a[3] => z[13]) = 0;
749
+ (a[4] => z[13]) = 0;
750
+ (a[5] => z[13]) = 0;
751
+ (a[6] => z[13]) = 0;
752
+ (a[7] => z[13]) = 0;
753
+ (a[8] => z[13]) = 0;
754
+ (a[9] => z[13]) = 0;
755
+ (a[10] => z[13]) = 0;
756
+ (a[11] => z[13]) = 0;
757
+ (a[12] => z[13]) = 0;
758
+ (a[13] => z[13]) = 0;
759
+ (a[14] => z[13]) = 0;
760
+ (a[15] => z[13]) = 0;
761
+ (a[16] => z[13]) = 0;
762
+ (a[17] => z[13]) = 0;
763
+ (a[18] => z[13]) = 0;
764
+ (a[19] => z[13]) = 0;
765
+ (b[0] => z[13]) = 0;
766
+ (b[1] => z[13]) = 0;
767
+ (b[2] => z[13]) = 0;
768
+ (b[3] => z[13]) = 0;
769
+ (b[4] => z[13]) = 0;
770
+ (b[5] => z[13]) = 0;
771
+ (b[6] => z[13]) = 0;
772
+ (b[7] => z[13]) = 0;
773
+ (b[8] => z[13]) = 0;
774
+ (b[9] => z[13]) = 0;
775
+ (b[10] => z[13]) = 0;
776
+ (b[11] => z[13]) = 0;
777
+ (b[12] => z[13]) = 0;
778
+ (b[13] => z[13]) = 0;
779
+ (b[14] => z[13]) = 0;
780
+ (b[15] => z[13]) = 0;
781
+ (b[16] => z[13]) = 0;
782
+ (b[17] => z[13]) = 0;
783
+ (a[0] => z[14]) = 0;
784
+ (a[1] => z[14]) = 0;
785
+ (a[2] => z[14]) = 0;
786
+ (a[3] => z[14]) = 0;
787
+ (a[4] => z[14]) = 0;
788
+ (a[5] => z[14]) = 0;
789
+ (a[6] => z[14]) = 0;
790
+ (a[7] => z[14]) = 0;
791
+ (a[8] => z[14]) = 0;
792
+ (a[9] => z[14]) = 0;
793
+ (a[10] => z[14]) = 0;
794
+ (a[11] => z[14]) = 0;
795
+ (a[12] => z[14]) = 0;
796
+ (a[13] => z[14]) = 0;
797
+ (a[14] => z[14]) = 0;
798
+ (a[15] => z[14]) = 0;
799
+ (a[16] => z[14]) = 0;
800
+ (a[17] => z[14]) = 0;
801
+ (a[18] => z[14]) = 0;
802
+ (a[19] => z[14]) = 0;
803
+ (b[0] => z[14]) = 0;
804
+ (b[1] => z[14]) = 0;
805
+ (b[2] => z[14]) = 0;
806
+ (b[3] => z[14]) = 0;
807
+ (b[4] => z[14]) = 0;
808
+ (b[5] => z[14]) = 0;
809
+ (b[6] => z[14]) = 0;
810
+ (b[7] => z[14]) = 0;
811
+ (b[8] => z[14]) = 0;
812
+ (b[9] => z[14]) = 0;
813
+ (b[10] => z[14]) = 0;
814
+ (b[11] => z[14]) = 0;
815
+ (b[12] => z[14]) = 0;
816
+ (b[13] => z[14]) = 0;
817
+ (b[14] => z[14]) = 0;
818
+ (b[15] => z[14]) = 0;
819
+ (b[16] => z[14]) = 0;
820
+ (b[17] => z[14]) = 0;
821
+ (a[0] => z[15]) = 0;
822
+ (a[1] => z[15]) = 0;
823
+ (a[2] => z[15]) = 0;
824
+ (a[3] => z[15]) = 0;
825
+ (a[4] => z[15]) = 0;
826
+ (a[5] => z[15]) = 0;
827
+ (a[6] => z[15]) = 0;
828
+ (a[7] => z[15]) = 0;
829
+ (a[8] => z[15]) = 0;
830
+ (a[9] => z[15]) = 0;
831
+ (a[10] => z[15]) = 0;
832
+ (a[11] => z[15]) = 0;
833
+ (a[12] => z[15]) = 0;
834
+ (a[13] => z[15]) = 0;
835
+ (a[14] => z[15]) = 0;
836
+ (a[15] => z[15]) = 0;
837
+ (a[16] => z[15]) = 0;
838
+ (a[17] => z[15]) = 0;
839
+ (a[18] => z[15]) = 0;
840
+ (a[19] => z[15]) = 0;
841
+ (b[0] => z[15]) = 0;
842
+ (b[1] => z[15]) = 0;
843
+ (b[2] => z[15]) = 0;
844
+ (b[3] => z[15]) = 0;
845
+ (b[4] => z[15]) = 0;
846
+ (b[5] => z[15]) = 0;
847
+ (b[6] => z[15]) = 0;
848
+ (b[7] => z[15]) = 0;
849
+ (b[8] => z[15]) = 0;
850
+ (b[9] => z[15]) = 0;
851
+ (b[10] => z[15]) = 0;
852
+ (b[11] => z[15]) = 0;
853
+ (b[12] => z[15]) = 0;
854
+ (b[13] => z[15]) = 0;
855
+ (b[14] => z[15]) = 0;
856
+ (b[15] => z[15]) = 0;
857
+ (b[16] => z[15]) = 0;
858
+ (b[17] => z[15]) = 0;
859
+ (a[0] => z[16]) = 0;
860
+ (a[1] => z[16]) = 0;
861
+ (a[2] => z[16]) = 0;
862
+ (a[3] => z[16]) = 0;
863
+ (a[4] => z[16]) = 0;
864
+ (a[5] => z[16]) = 0;
865
+ (a[6] => z[16]) = 0;
866
+ (a[7] => z[16]) = 0;
867
+ (a[8] => z[16]) = 0;
868
+ (a[9] => z[16]) = 0;
869
+ (a[10] => z[16]) = 0;
870
+ (a[11] => z[16]) = 0;
871
+ (a[12] => z[16]) = 0;
872
+ (a[13] => z[16]) = 0;
873
+ (a[14] => z[16]) = 0;
874
+ (a[15] => z[16]) = 0;
875
+ (a[16] => z[16]) = 0;
876
+ (a[17] => z[16]) = 0;
877
+ (a[18] => z[16]) = 0;
878
+ (a[19] => z[16]) = 0;
879
+ (b[0] => z[16]) = 0;
880
+ (b[1] => z[16]) = 0;
881
+ (b[2] => z[16]) = 0;
882
+ (b[3] => z[16]) = 0;
883
+ (b[4] => z[16]) = 0;
884
+ (b[5] => z[16]) = 0;
885
+ (b[6] => z[16]) = 0;
886
+ (b[7] => z[16]) = 0;
887
+ (b[8] => z[16]) = 0;
888
+ (b[9] => z[16]) = 0;
889
+ (b[10] => z[16]) = 0;
890
+ (b[11] => z[16]) = 0;
891
+ (b[12] => z[16]) = 0;
892
+ (b[13] => z[16]) = 0;
893
+ (b[14] => z[16]) = 0;
894
+ (b[15] => z[16]) = 0;
895
+ (b[16] => z[16]) = 0;
896
+ (b[17] => z[16]) = 0;
897
+ (a[0] => z[17]) = 0;
898
+ (a[1] => z[17]) = 0;
899
+ (a[2] => z[17]) = 0;
900
+ (a[3] => z[17]) = 0;
901
+ (a[4] => z[17]) = 0;
902
+ (a[5] => z[17]) = 0;
903
+ (a[6] => z[17]) = 0;
904
+ (a[7] => z[17]) = 0;
905
+ (a[8] => z[17]) = 0;
906
+ (a[9] => z[17]) = 0;
907
+ (a[10] => z[17]) = 0;
908
+ (a[11] => z[17]) = 0;
909
+ (a[12] => z[17]) = 0;
910
+ (a[13] => z[17]) = 0;
911
+ (a[14] => z[17]) = 0;
912
+ (a[15] => z[17]) = 0;
913
+ (a[16] => z[17]) = 0;
914
+ (a[17] => z[17]) = 0;
915
+ (a[18] => z[17]) = 0;
916
+ (a[19] => z[17]) = 0;
917
+ (b[0] => z[17]) = 0;
918
+ (b[1] => z[17]) = 0;
919
+ (b[2] => z[17]) = 0;
920
+ (b[3] => z[17]) = 0;
921
+ (b[4] => z[17]) = 0;
922
+ (b[5] => z[17]) = 0;
923
+ (b[6] => z[17]) = 0;
924
+ (b[7] => z[17]) = 0;
925
+ (b[8] => z[17]) = 0;
926
+ (b[9] => z[17]) = 0;
927
+ (b[10] => z[17]) = 0;
928
+ (b[11] => z[17]) = 0;
929
+ (b[12] => z[17]) = 0;
930
+ (b[13] => z[17]) = 0;
931
+ (b[14] => z[17]) = 0;
932
+ (b[15] => z[17]) = 0;
933
+ (b[16] => z[17]) = 0;
934
+ (b[17] => z[17]) = 0;
935
+ (a[0] => z[18]) = 0;
936
+ (a[1] => z[18]) = 0;
937
+ (a[2] => z[18]) = 0;
938
+ (a[3] => z[18]) = 0;
939
+ (a[4] => z[18]) = 0;
940
+ (a[5] => z[18]) = 0;
941
+ (a[6] => z[18]) = 0;
942
+ (a[7] => z[18]) = 0;
943
+ (a[8] => z[18]) = 0;
944
+ (a[9] => z[18]) = 0;
945
+ (a[10] => z[18]) = 0;
946
+ (a[11] => z[18]) = 0;
947
+ (a[12] => z[18]) = 0;
948
+ (a[13] => z[18]) = 0;
949
+ (a[14] => z[18]) = 0;
950
+ (a[15] => z[18]) = 0;
951
+ (a[16] => z[18]) = 0;
952
+ (a[17] => z[18]) = 0;
953
+ (a[18] => z[18]) = 0;
954
+ (a[19] => z[18]) = 0;
955
+ (b[0] => z[18]) = 0;
956
+ (b[1] => z[18]) = 0;
957
+ (b[2] => z[18]) = 0;
958
+ (b[3] => z[18]) = 0;
959
+ (b[4] => z[18]) = 0;
960
+ (b[5] => z[18]) = 0;
961
+ (b[6] => z[18]) = 0;
962
+ (b[7] => z[18]) = 0;
963
+ (b[8] => z[18]) = 0;
964
+ (b[9] => z[18]) = 0;
965
+ (b[10] => z[18]) = 0;
966
+ (b[11] => z[18]) = 0;
967
+ (b[12] => z[18]) = 0;
968
+ (b[13] => z[18]) = 0;
969
+ (b[14] => z[18]) = 0;
970
+ (b[15] => z[18]) = 0;
971
+ (b[16] => z[18]) = 0;
972
+ (b[17] => z[18]) = 0;
973
+ (a[0] => z[19]) = 0;
974
+ (a[1] => z[19]) = 0;
975
+ (a[2] => z[19]) = 0;
976
+ (a[3] => z[19]) = 0;
977
+ (a[4] => z[19]) = 0;
978
+ (a[5] => z[19]) = 0;
979
+ (a[6] => z[19]) = 0;
980
+ (a[7] => z[19]) = 0;
981
+ (a[8] => z[19]) = 0;
982
+ (a[9] => z[19]) = 0;
983
+ (a[10] => z[19]) = 0;
984
+ (a[11] => z[19]) = 0;
985
+ (a[12] => z[19]) = 0;
986
+ (a[13] => z[19]) = 0;
987
+ (a[14] => z[19]) = 0;
988
+ (a[15] => z[19]) = 0;
989
+ (a[16] => z[19]) = 0;
990
+ (a[17] => z[19]) = 0;
991
+ (a[18] => z[19]) = 0;
992
+ (a[19] => z[19]) = 0;
993
+ (b[0] => z[19]) = 0;
994
+ (b[1] => z[19]) = 0;
995
+ (b[2] => z[19]) = 0;
996
+ (b[3] => z[19]) = 0;
997
+ (b[4] => z[19]) = 0;
998
+ (b[5] => z[19]) = 0;
999
+ (b[6] => z[19]) = 0;
1000
+ (b[7] => z[19]) = 0;
1001
+ (b[8] => z[19]) = 0;
1002
+ (b[9] => z[19]) = 0;
1003
+ (b[10] => z[19]) = 0;
1004
+ (b[11] => z[19]) = 0;
1005
+ (b[12] => z[19]) = 0;
1006
+ (b[13] => z[19]) = 0;
1007
+ (b[14] => z[19]) = 0;
1008
+ (b[15] => z[19]) = 0;
1009
+ (b[16] => z[19]) = 0;
1010
+ (b[17] => z[19]) = 0;
1011
+ (a[0] => z[20]) = 0;
1012
+ (a[1] => z[20]) = 0;
1013
+ (a[2] => z[20]) = 0;
1014
+ (a[3] => z[20]) = 0;
1015
+ (a[4] => z[20]) = 0;
1016
+ (a[5] => z[20]) = 0;
1017
+ (a[6] => z[20]) = 0;
1018
+ (a[7] => z[20]) = 0;
1019
+ (a[8] => z[20]) = 0;
1020
+ (a[9] => z[20]) = 0;
1021
+ (a[10] => z[20]) = 0;
1022
+ (a[11] => z[20]) = 0;
1023
+ (a[12] => z[20]) = 0;
1024
+ (a[13] => z[20]) = 0;
1025
+ (a[14] => z[20]) = 0;
1026
+ (a[15] => z[20]) = 0;
1027
+ (a[16] => z[20]) = 0;
1028
+ (a[17] => z[20]) = 0;
1029
+ (a[18] => z[20]) = 0;
1030
+ (a[19] => z[20]) = 0;
1031
+ (b[0] => z[20]) = 0;
1032
+ (b[1] => z[20]) = 0;
1033
+ (b[2] => z[20]) = 0;
1034
+ (b[3] => z[20]) = 0;
1035
+ (b[4] => z[20]) = 0;
1036
+ (b[5] => z[20]) = 0;
1037
+ (b[6] => z[20]) = 0;
1038
+ (b[7] => z[20]) = 0;
1039
+ (b[8] => z[20]) = 0;
1040
+ (b[9] => z[20]) = 0;
1041
+ (b[10] => z[20]) = 0;
1042
+ (b[11] => z[20]) = 0;
1043
+ (b[12] => z[20]) = 0;
1044
+ (b[13] => z[20]) = 0;
1045
+ (b[14] => z[20]) = 0;
1046
+ (b[15] => z[20]) = 0;
1047
+ (b[16] => z[20]) = 0;
1048
+ (b[17] => z[20]) = 0;
1049
+ (a[0] => z[21]) = 0;
1050
+ (a[1] => z[21]) = 0;
1051
+ (a[2] => z[21]) = 0;
1052
+ (a[3] => z[21]) = 0;
1053
+ (a[4] => z[21]) = 0;
1054
+ (a[5] => z[21]) = 0;
1055
+ (a[6] => z[21]) = 0;
1056
+ (a[7] => z[21]) = 0;
1057
+ (a[8] => z[21]) = 0;
1058
+ (a[9] => z[21]) = 0;
1059
+ (a[10] => z[21]) = 0;
1060
+ (a[11] => z[21]) = 0;
1061
+ (a[12] => z[21]) = 0;
1062
+ (a[13] => z[21]) = 0;
1063
+ (a[14] => z[21]) = 0;
1064
+ (a[15] => z[21]) = 0;
1065
+ (a[16] => z[21]) = 0;
1066
+ (a[17] => z[21]) = 0;
1067
+ (a[18] => z[21]) = 0;
1068
+ (a[19] => z[21]) = 0;
1069
+ (b[0] => z[21]) = 0;
1070
+ (b[1] => z[21]) = 0;
1071
+ (b[2] => z[21]) = 0;
1072
+ (b[3] => z[21]) = 0;
1073
+ (b[4] => z[21]) = 0;
1074
+ (b[5] => z[21]) = 0;
1075
+ (b[6] => z[21]) = 0;
1076
+ (b[7] => z[21]) = 0;
1077
+ (b[8] => z[21]) = 0;
1078
+ (b[9] => z[21]) = 0;
1079
+ (b[10] => z[21]) = 0;
1080
+ (b[11] => z[21]) = 0;
1081
+ (b[12] => z[21]) = 0;
1082
+ (b[13] => z[21]) = 0;
1083
+ (b[14] => z[21]) = 0;
1084
+ (b[15] => z[21]) = 0;
1085
+ (b[16] => z[21]) = 0;
1086
+ (b[17] => z[21]) = 0;
1087
+ (a[0] => z[22]) = 0;
1088
+ (a[1] => z[22]) = 0;
1089
+ (a[2] => z[22]) = 0;
1090
+ (a[3] => z[22]) = 0;
1091
+ (a[4] => z[22]) = 0;
1092
+ (a[5] => z[22]) = 0;
1093
+ (a[6] => z[22]) = 0;
1094
+ (a[7] => z[22]) = 0;
1095
+ (a[8] => z[22]) = 0;
1096
+ (a[9] => z[22]) = 0;
1097
+ (a[10] => z[22]) = 0;
1098
+ (a[11] => z[22]) = 0;
1099
+ (a[12] => z[22]) = 0;
1100
+ (a[13] => z[22]) = 0;
1101
+ (a[14] => z[22]) = 0;
1102
+ (a[15] => z[22]) = 0;
1103
+ (a[16] => z[22]) = 0;
1104
+ (a[17] => z[22]) = 0;
1105
+ (a[18] => z[22]) = 0;
1106
+ (a[19] => z[22]) = 0;
1107
+ (b[0] => z[22]) = 0;
1108
+ (b[1] => z[22]) = 0;
1109
+ (b[2] => z[22]) = 0;
1110
+ (b[3] => z[22]) = 0;
1111
+ (b[4] => z[22]) = 0;
1112
+ (b[5] => z[22]) = 0;
1113
+ (b[6] => z[22]) = 0;
1114
+ (b[7] => z[22]) = 0;
1115
+ (b[8] => z[22]) = 0;
1116
+ (b[9] => z[22]) = 0;
1117
+ (b[10] => z[22]) = 0;
1118
+ (b[11] => z[22]) = 0;
1119
+ (b[12] => z[22]) = 0;
1120
+ (b[13] => z[22]) = 0;
1121
+ (b[14] => z[22]) = 0;
1122
+ (b[15] => z[22]) = 0;
1123
+ (b[16] => z[22]) = 0;
1124
+ (b[17] => z[22]) = 0;
1125
+ (a[0] => z[23]) = 0;
1126
+ (a[1] => z[23]) = 0;
1127
+ (a[2] => z[23]) = 0;
1128
+ (a[3] => z[23]) = 0;
1129
+ (a[4] => z[23]) = 0;
1130
+ (a[5] => z[23]) = 0;
1131
+ (a[6] => z[23]) = 0;
1132
+ (a[7] => z[23]) = 0;
1133
+ (a[8] => z[23]) = 0;
1134
+ (a[9] => z[23]) = 0;
1135
+ (a[10] => z[23]) = 0;
1136
+ (a[11] => z[23]) = 0;
1137
+ (a[12] => z[23]) = 0;
1138
+ (a[13] => z[23]) = 0;
1139
+ (a[14] => z[23]) = 0;
1140
+ (a[15] => z[23]) = 0;
1141
+ (a[16] => z[23]) = 0;
1142
+ (a[17] => z[23]) = 0;
1143
+ (a[18] => z[23]) = 0;
1144
+ (a[19] => z[23]) = 0;
1145
+ (b[0] => z[23]) = 0;
1146
+ (b[1] => z[23]) = 0;
1147
+ (b[2] => z[23]) = 0;
1148
+ (b[3] => z[23]) = 0;
1149
+ (b[4] => z[23]) = 0;
1150
+ (b[5] => z[23]) = 0;
1151
+ (b[6] => z[23]) = 0;
1152
+ (b[7] => z[23]) = 0;
1153
+ (b[8] => z[23]) = 0;
1154
+ (b[9] => z[23]) = 0;
1155
+ (b[10] => z[23]) = 0;
1156
+ (b[11] => z[23]) = 0;
1157
+ (b[12] => z[23]) = 0;
1158
+ (b[13] => z[23]) = 0;
1159
+ (b[14] => z[23]) = 0;
1160
+ (b[15] => z[23]) = 0;
1161
+ (b[16] => z[23]) = 0;
1162
+ (b[17] => z[23]) = 0;
1163
+ (a[0] => z[24]) = 0;
1164
+ (a[1] => z[24]) = 0;
1165
+ (a[2] => z[24]) = 0;
1166
+ (a[3] => z[24]) = 0;
1167
+ (a[4] => z[24]) = 0;
1168
+ (a[5] => z[24]) = 0;
1169
+ (a[6] => z[24]) = 0;
1170
+ (a[7] => z[24]) = 0;
1171
+ (a[8] => z[24]) = 0;
1172
+ (a[9] => z[24]) = 0;
1173
+ (a[10] => z[24]) = 0;
1174
+ (a[11] => z[24]) = 0;
1175
+ (a[12] => z[24]) = 0;
1176
+ (a[13] => z[24]) = 0;
1177
+ (a[14] => z[24]) = 0;
1178
+ (a[15] => z[24]) = 0;
1179
+ (a[16] => z[24]) = 0;
1180
+ (a[17] => z[24]) = 0;
1181
+ (a[18] => z[24]) = 0;
1182
+ (a[19] => z[24]) = 0;
1183
+ (b[0] => z[24]) = 0;
1184
+ (b[1] => z[24]) = 0;
1185
+ (b[2] => z[24]) = 0;
1186
+ (b[3] => z[24]) = 0;
1187
+ (b[4] => z[24]) = 0;
1188
+ (b[5] => z[24]) = 0;
1189
+ (b[6] => z[24]) = 0;
1190
+ (b[7] => z[24]) = 0;
1191
+ (b[8] => z[24]) = 0;
1192
+ (b[9] => z[24]) = 0;
1193
+ (b[10] => z[24]) = 0;
1194
+ (b[11] => z[24]) = 0;
1195
+ (b[12] => z[24]) = 0;
1196
+ (b[13] => z[24]) = 0;
1197
+ (b[14] => z[24]) = 0;
1198
+ (b[15] => z[24]) = 0;
1199
+ (b[16] => z[24]) = 0;
1200
+ (b[17] => z[24]) = 0;
1201
+ (a[0] => z[25]) = 0;
1202
+ (a[1] => z[25]) = 0;
1203
+ (a[2] => z[25]) = 0;
1204
+ (a[3] => z[25]) = 0;
1205
+ (a[4] => z[25]) = 0;
1206
+ (a[5] => z[25]) = 0;
1207
+ (a[6] => z[25]) = 0;
1208
+ (a[7] => z[25]) = 0;
1209
+ (a[8] => z[25]) = 0;
1210
+ (a[9] => z[25]) = 0;
1211
+ (a[10] => z[25]) = 0;
1212
+ (a[11] => z[25]) = 0;
1213
+ (a[12] => z[25]) = 0;
1214
+ (a[13] => z[25]) = 0;
1215
+ (a[14] => z[25]) = 0;
1216
+ (a[15] => z[25]) = 0;
1217
+ (a[16] => z[25]) = 0;
1218
+ (a[17] => z[25]) = 0;
1219
+ (a[18] => z[25]) = 0;
1220
+ (a[19] => z[25]) = 0;
1221
+ (b[0] => z[25]) = 0;
1222
+ (b[1] => z[25]) = 0;
1223
+ (b[2] => z[25]) = 0;
1224
+ (b[3] => z[25]) = 0;
1225
+ (b[4] => z[25]) = 0;
1226
+ (b[5] => z[25]) = 0;
1227
+ (b[6] => z[25]) = 0;
1228
+ (b[7] => z[25]) = 0;
1229
+ (b[8] => z[25]) = 0;
1230
+ (b[9] => z[25]) = 0;
1231
+ (b[10] => z[25]) = 0;
1232
+ (b[11] => z[25]) = 0;
1233
+ (b[12] => z[25]) = 0;
1234
+ (b[13] => z[25]) = 0;
1235
+ (b[14] => z[25]) = 0;
1236
+ (b[15] => z[25]) = 0;
1237
+ (b[16] => z[25]) = 0;
1238
+ (b[17] => z[25]) = 0;
1239
+ (a[0] => z[26]) = 0;
1240
+ (a[1] => z[26]) = 0;
1241
+ (a[2] => z[26]) = 0;
1242
+ (a[3] => z[26]) = 0;
1243
+ (a[4] => z[26]) = 0;
1244
+ (a[5] => z[26]) = 0;
1245
+ (a[6] => z[26]) = 0;
1246
+ (a[7] => z[26]) = 0;
1247
+ (a[8] => z[26]) = 0;
1248
+ (a[9] => z[26]) = 0;
1249
+ (a[10] => z[26]) = 0;
1250
+ (a[11] => z[26]) = 0;
1251
+ (a[12] => z[26]) = 0;
1252
+ (a[13] => z[26]) = 0;
1253
+ (a[14] => z[26]) = 0;
1254
+ (a[15] => z[26]) = 0;
1255
+ (a[16] => z[26]) = 0;
1256
+ (a[17] => z[26]) = 0;
1257
+ (a[18] => z[26]) = 0;
1258
+ (a[19] => z[26]) = 0;
1259
+ (b[0] => z[26]) = 0;
1260
+ (b[1] => z[26]) = 0;
1261
+ (b[2] => z[26]) = 0;
1262
+ (b[3] => z[26]) = 0;
1263
+ (b[4] => z[26]) = 0;
1264
+ (b[5] => z[26]) = 0;
1265
+ (b[6] => z[26]) = 0;
1266
+ (b[7] => z[26]) = 0;
1267
+ (b[8] => z[26]) = 0;
1268
+ (b[9] => z[26]) = 0;
1269
+ (b[10] => z[26]) = 0;
1270
+ (b[11] => z[26]) = 0;
1271
+ (b[12] => z[26]) = 0;
1272
+ (b[13] => z[26]) = 0;
1273
+ (b[14] => z[26]) = 0;
1274
+ (b[15] => z[26]) = 0;
1275
+ (b[16] => z[26]) = 0;
1276
+ (b[17] => z[26]) = 0;
1277
+ (a[0] => z[27]) = 0;
1278
+ (a[1] => z[27]) = 0;
1279
+ (a[2] => z[27]) = 0;
1280
+ (a[3] => z[27]) = 0;
1281
+ (a[4] => z[27]) = 0;
1282
+ (a[5] => z[27]) = 0;
1283
+ (a[6] => z[27]) = 0;
1284
+ (a[7] => z[27]) = 0;
1285
+ (a[8] => z[27]) = 0;
1286
+ (a[9] => z[27]) = 0;
1287
+ (a[10] => z[27]) = 0;
1288
+ (a[11] => z[27]) = 0;
1289
+ (a[12] => z[27]) = 0;
1290
+ (a[13] => z[27]) = 0;
1291
+ (a[14] => z[27]) = 0;
1292
+ (a[15] => z[27]) = 0;
1293
+ (a[16] => z[27]) = 0;
1294
+ (a[17] => z[27]) = 0;
1295
+ (a[18] => z[27]) = 0;
1296
+ (a[19] => z[27]) = 0;
1297
+ (b[0] => z[27]) = 0;
1298
+ (b[1] => z[27]) = 0;
1299
+ (b[2] => z[27]) = 0;
1300
+ (b[3] => z[27]) = 0;
1301
+ (b[4] => z[27]) = 0;
1302
+ (b[5] => z[27]) = 0;
1303
+ (b[6] => z[27]) = 0;
1304
+ (b[7] => z[27]) = 0;
1305
+ (b[8] => z[27]) = 0;
1306
+ (b[9] => z[27]) = 0;
1307
+ (b[10] => z[27]) = 0;
1308
+ (b[11] => z[27]) = 0;
1309
+ (b[12] => z[27]) = 0;
1310
+ (b[13] => z[27]) = 0;
1311
+ (b[14] => z[27]) = 0;
1312
+ (b[15] => z[27]) = 0;
1313
+ (b[16] => z[27]) = 0;
1314
+ (b[17] => z[27]) = 0;
1315
+ (a[0] => z[28]) = 0;
1316
+ (a[1] => z[28]) = 0;
1317
+ (a[2] => z[28]) = 0;
1318
+ (a[3] => z[28]) = 0;
1319
+ (a[4] => z[28]) = 0;
1320
+ (a[5] => z[28]) = 0;
1321
+ (a[6] => z[28]) = 0;
1322
+ (a[7] => z[28]) = 0;
1323
+ (a[8] => z[28]) = 0;
1324
+ (a[9] => z[28]) = 0;
1325
+ (a[10] => z[28]) = 0;
1326
+ (a[11] => z[28]) = 0;
1327
+ (a[12] => z[28]) = 0;
1328
+ (a[13] => z[28]) = 0;
1329
+ (a[14] => z[28]) = 0;
1330
+ (a[15] => z[28]) = 0;
1331
+ (a[16] => z[28]) = 0;
1332
+ (a[17] => z[28]) = 0;
1333
+ (a[18] => z[28]) = 0;
1334
+ (a[19] => z[28]) = 0;
1335
+ (b[0] => z[28]) = 0;
1336
+ (b[1] => z[28]) = 0;
1337
+ (b[2] => z[28]) = 0;
1338
+ (b[3] => z[28]) = 0;
1339
+ (b[4] => z[28]) = 0;
1340
+ (b[5] => z[28]) = 0;
1341
+ (b[6] => z[28]) = 0;
1342
+ (b[7] => z[28]) = 0;
1343
+ (b[8] => z[28]) = 0;
1344
+ (b[9] => z[28]) = 0;
1345
+ (b[10] => z[28]) = 0;
1346
+ (b[11] => z[28]) = 0;
1347
+ (b[12] => z[28]) = 0;
1348
+ (b[13] => z[28]) = 0;
1349
+ (b[14] => z[28]) = 0;
1350
+ (b[15] => z[28]) = 0;
1351
+ (b[16] => z[28]) = 0;
1352
+ (b[17] => z[28]) = 0;
1353
+ (a[0] => z[29]) = 0;
1354
+ (a[1] => z[29]) = 0;
1355
+ (a[2] => z[29]) = 0;
1356
+ (a[3] => z[29]) = 0;
1357
+ (a[4] => z[29]) = 0;
1358
+ (a[5] => z[29]) = 0;
1359
+ (a[6] => z[29]) = 0;
1360
+ (a[7] => z[29]) = 0;
1361
+ (a[8] => z[29]) = 0;
1362
+ (a[9] => z[29]) = 0;
1363
+ (a[10] => z[29]) = 0;
1364
+ (a[11] => z[29]) = 0;
1365
+ (a[12] => z[29]) = 0;
1366
+ (a[13] => z[29]) = 0;
1367
+ (a[14] => z[29]) = 0;
1368
+ (a[15] => z[29]) = 0;
1369
+ (a[16] => z[29]) = 0;
1370
+ (a[17] => z[29]) = 0;
1371
+ (a[18] => z[29]) = 0;
1372
+ (a[19] => z[29]) = 0;
1373
+ (b[0] => z[29]) = 0;
1374
+ (b[1] => z[29]) = 0;
1375
+ (b[2] => z[29]) = 0;
1376
+ (b[3] => z[29]) = 0;
1377
+ (b[4] => z[29]) = 0;
1378
+ (b[5] => z[29]) = 0;
1379
+ (b[6] => z[29]) = 0;
1380
+ (b[7] => z[29]) = 0;
1381
+ (b[8] => z[29]) = 0;
1382
+ (b[9] => z[29]) = 0;
1383
+ (b[10] => z[29]) = 0;
1384
+ (b[11] => z[29]) = 0;
1385
+ (b[12] => z[29]) = 0;
1386
+ (b[13] => z[29]) = 0;
1387
+ (b[14] => z[29]) = 0;
1388
+ (b[15] => z[29]) = 0;
1389
+ (b[16] => z[29]) = 0;
1390
+ (b[17] => z[29]) = 0;
1391
+ (a[0] => z[30]) = 0;
1392
+ (a[1] => z[30]) = 0;
1393
+ (a[2] => z[30]) = 0;
1394
+ (a[3] => z[30]) = 0;
1395
+ (a[4] => z[30]) = 0;
1396
+ (a[5] => z[30]) = 0;
1397
+ (a[6] => z[30]) = 0;
1398
+ (a[7] => z[30]) = 0;
1399
+ (a[8] => z[30]) = 0;
1400
+ (a[9] => z[30]) = 0;
1401
+ (a[10] => z[30]) = 0;
1402
+ (a[11] => z[30]) = 0;
1403
+ (a[12] => z[30]) = 0;
1404
+ (a[13] => z[30]) = 0;
1405
+ (a[14] => z[30]) = 0;
1406
+ (a[15] => z[30]) = 0;
1407
+ (a[16] => z[30]) = 0;
1408
+ (a[17] => z[30]) = 0;
1409
+ (a[18] => z[30]) = 0;
1410
+ (a[19] => z[30]) = 0;
1411
+ (b[0] => z[30]) = 0;
1412
+ (b[1] => z[30]) = 0;
1413
+ (b[2] => z[30]) = 0;
1414
+ (b[3] => z[30]) = 0;
1415
+ (b[4] => z[30]) = 0;
1416
+ (b[5] => z[30]) = 0;
1417
+ (b[6] => z[30]) = 0;
1418
+ (b[7] => z[30]) = 0;
1419
+ (b[8] => z[30]) = 0;
1420
+ (b[9] => z[30]) = 0;
1421
+ (b[10] => z[30]) = 0;
1422
+ (b[11] => z[30]) = 0;
1423
+ (b[12] => z[30]) = 0;
1424
+ (b[13] => z[30]) = 0;
1425
+ (b[14] => z[30]) = 0;
1426
+ (b[15] => z[30]) = 0;
1427
+ (b[16] => z[30]) = 0;
1428
+ (b[17] => z[30]) = 0;
1429
+ (a[0] => z[31]) = 0;
1430
+ (a[1] => z[31]) = 0;
1431
+ (a[2] => z[31]) = 0;
1432
+ (a[3] => z[31]) = 0;
1433
+ (a[4] => z[31]) = 0;
1434
+ (a[5] => z[31]) = 0;
1435
+ (a[6] => z[31]) = 0;
1436
+ (a[7] => z[31]) = 0;
1437
+ (a[8] => z[31]) = 0;
1438
+ (a[9] => z[31]) = 0;
1439
+ (a[10] => z[31]) = 0;
1440
+ (a[11] => z[31]) = 0;
1441
+ (a[12] => z[31]) = 0;
1442
+ (a[13] => z[31]) = 0;
1443
+ (a[14] => z[31]) = 0;
1444
+ (a[15] => z[31]) = 0;
1445
+ (a[16] => z[31]) = 0;
1446
+ (a[17] => z[31]) = 0;
1447
+ (a[18] => z[31]) = 0;
1448
+ (a[19] => z[31]) = 0;
1449
+ (b[0] => z[31]) = 0;
1450
+ (b[1] => z[31]) = 0;
1451
+ (b[2] => z[31]) = 0;
1452
+ (b[3] => z[31]) = 0;
1453
+ (b[4] => z[31]) = 0;
1454
+ (b[5] => z[31]) = 0;
1455
+ (b[6] => z[31]) = 0;
1456
+ (b[7] => z[31]) = 0;
1457
+ (b[8] => z[31]) = 0;
1458
+ (b[9] => z[31]) = 0;
1459
+ (b[10] => z[31]) = 0;
1460
+ (b[11] => z[31]) = 0;
1461
+ (b[12] => z[31]) = 0;
1462
+ (b[13] => z[31]) = 0;
1463
+ (b[14] => z[31]) = 0;
1464
+ (b[15] => z[31]) = 0;
1465
+ (b[16] => z[31]) = 0;
1466
+ (b[17] => z[31]) = 0;
1467
+ (a[0] => z[32]) = 0;
1468
+ (a[1] => z[32]) = 0;
1469
+ (a[2] => z[32]) = 0;
1470
+ (a[3] => z[32]) = 0;
1471
+ (a[4] => z[32]) = 0;
1472
+ (a[5] => z[32]) = 0;
1473
+ (a[6] => z[32]) = 0;
1474
+ (a[7] => z[32]) = 0;
1475
+ (a[8] => z[32]) = 0;
1476
+ (a[9] => z[32]) = 0;
1477
+ (a[10] => z[32]) = 0;
1478
+ (a[11] => z[32]) = 0;
1479
+ (a[12] => z[32]) = 0;
1480
+ (a[13] => z[32]) = 0;
1481
+ (a[14] => z[32]) = 0;
1482
+ (a[15] => z[32]) = 0;
1483
+ (a[16] => z[32]) = 0;
1484
+ (a[17] => z[32]) = 0;
1485
+ (a[18] => z[32]) = 0;
1486
+ (a[19] => z[32]) = 0;
1487
+ (b[0] => z[32]) = 0;
1488
+ (b[1] => z[32]) = 0;
1489
+ (b[2] => z[32]) = 0;
1490
+ (b[3] => z[32]) = 0;
1491
+ (b[4] => z[32]) = 0;
1492
+ (b[5] => z[32]) = 0;
1493
+ (b[6] => z[32]) = 0;
1494
+ (b[7] => z[32]) = 0;
1495
+ (b[8] => z[32]) = 0;
1496
+ (b[9] => z[32]) = 0;
1497
+ (b[10] => z[32]) = 0;
1498
+ (b[11] => z[32]) = 0;
1499
+ (b[12] => z[32]) = 0;
1500
+ (b[13] => z[32]) = 0;
1501
+ (b[14] => z[32]) = 0;
1502
+ (b[15] => z[32]) = 0;
1503
+ (b[16] => z[32]) = 0;
1504
+ (b[17] => z[32]) = 0;
1505
+ (a[0] => z[33]) = 0;
1506
+ (a[1] => z[33]) = 0;
1507
+ (a[2] => z[33]) = 0;
1508
+ (a[3] => z[33]) = 0;
1509
+ (a[4] => z[33]) = 0;
1510
+ (a[5] => z[33]) = 0;
1511
+ (a[6] => z[33]) = 0;
1512
+ (a[7] => z[33]) = 0;
1513
+ (a[8] => z[33]) = 0;
1514
+ (a[9] => z[33]) = 0;
1515
+ (a[10] => z[33]) = 0;
1516
+ (a[11] => z[33]) = 0;
1517
+ (a[12] => z[33]) = 0;
1518
+ (a[13] => z[33]) = 0;
1519
+ (a[14] => z[33]) = 0;
1520
+ (a[15] => z[33]) = 0;
1521
+ (a[16] => z[33]) = 0;
1522
+ (a[17] => z[33]) = 0;
1523
+ (a[18] => z[33]) = 0;
1524
+ (a[19] => z[33]) = 0;
1525
+ (b[0] => z[33]) = 0;
1526
+ (b[1] => z[33]) = 0;
1527
+ (b[2] => z[33]) = 0;
1528
+ (b[3] => z[33]) = 0;
1529
+ (b[4] => z[33]) = 0;
1530
+ (b[5] => z[33]) = 0;
1531
+ (b[6] => z[33]) = 0;
1532
+ (b[7] => z[33]) = 0;
1533
+ (b[8] => z[33]) = 0;
1534
+ (b[9] => z[33]) = 0;
1535
+ (b[10] => z[33]) = 0;
1536
+ (b[11] => z[33]) = 0;
1537
+ (b[12] => z[33]) = 0;
1538
+ (b[13] => z[33]) = 0;
1539
+ (b[14] => z[33]) = 0;
1540
+ (b[15] => z[33]) = 0;
1541
+ (b[16] => z[33]) = 0;
1542
+ (b[17] => z[33]) = 0;
1543
+ (a[0] => z[34]) = 0;
1544
+ (a[1] => z[34]) = 0;
1545
+ (a[2] => z[34]) = 0;
1546
+ (a[3] => z[34]) = 0;
1547
+ (a[4] => z[34]) = 0;
1548
+ (a[5] => z[34]) = 0;
1549
+ (a[6] => z[34]) = 0;
1550
+ (a[7] => z[34]) = 0;
1551
+ (a[8] => z[34]) = 0;
1552
+ (a[9] => z[34]) = 0;
1553
+ (a[10] => z[34]) = 0;
1554
+ (a[11] => z[34]) = 0;
1555
+ (a[12] => z[34]) = 0;
1556
+ (a[13] => z[34]) = 0;
1557
+ (a[14] => z[34]) = 0;
1558
+ (a[15] => z[34]) = 0;
1559
+ (a[16] => z[34]) = 0;
1560
+ (a[17] => z[34]) = 0;
1561
+ (a[18] => z[34]) = 0;
1562
+ (a[19] => z[34]) = 0;
1563
+ (b[0] => z[34]) = 0;
1564
+ (b[1] => z[34]) = 0;
1565
+ (b[2] => z[34]) = 0;
1566
+ (b[3] => z[34]) = 0;
1567
+ (b[4] => z[34]) = 0;
1568
+ (b[5] => z[34]) = 0;
1569
+ (b[6] => z[34]) = 0;
1570
+ (b[7] => z[34]) = 0;
1571
+ (b[8] => z[34]) = 0;
1572
+ (b[9] => z[34]) = 0;
1573
+ (b[10] => z[34]) = 0;
1574
+ (b[11] => z[34]) = 0;
1575
+ (b[12] => z[34]) = 0;
1576
+ (b[13] => z[34]) = 0;
1577
+ (b[14] => z[34]) = 0;
1578
+ (b[15] => z[34]) = 0;
1579
+ (b[16] => z[34]) = 0;
1580
+ (b[17] => z[34]) = 0;
1581
+ (a[0] => z[35]) = 0;
1582
+ (a[1] => z[35]) = 0;
1583
+ (a[2] => z[35]) = 0;
1584
+ (a[3] => z[35]) = 0;
1585
+ (a[4] => z[35]) = 0;
1586
+ (a[5] => z[35]) = 0;
1587
+ (a[6] => z[35]) = 0;
1588
+ (a[7] => z[35]) = 0;
1589
+ (a[8] => z[35]) = 0;
1590
+ (a[9] => z[35]) = 0;
1591
+ (a[10] => z[35]) = 0;
1592
+ (a[11] => z[35]) = 0;
1593
+ (a[12] => z[35]) = 0;
1594
+ (a[13] => z[35]) = 0;
1595
+ (a[14] => z[35]) = 0;
1596
+ (a[15] => z[35]) = 0;
1597
+ (a[16] => z[35]) = 0;
1598
+ (a[17] => z[35]) = 0;
1599
+ (a[18] => z[35]) = 0;
1600
+ (a[19] => z[35]) = 0;
1601
+ (b[0] => z[35]) = 0;
1602
+ (b[1] => z[35]) = 0;
1603
+ (b[2] => z[35]) = 0;
1604
+ (b[3] => z[35]) = 0;
1605
+ (b[4] => z[35]) = 0;
1606
+ (b[5] => z[35]) = 0;
1607
+ (b[6] => z[35]) = 0;
1608
+ (b[7] => z[35]) = 0;
1609
+ (b[8] => z[35]) = 0;
1610
+ (b[9] => z[35]) = 0;
1611
+ (b[10] => z[35]) = 0;
1612
+ (b[11] => z[35]) = 0;
1613
+ (b[12] => z[35]) = 0;
1614
+ (b[13] => z[35]) = 0;
1615
+ (b[14] => z[35]) = 0;
1616
+ (b[15] => z[35]) = 0;
1617
+ (b[16] => z[35]) = 0;
1618
+ (b[17] => z[35]) = 0;
1619
+ (a[0] => z[36]) = 0;
1620
+ (a[1] => z[36]) = 0;
1621
+ (a[2] => z[36]) = 0;
1622
+ (a[3] => z[36]) = 0;
1623
+ (a[4] => z[36]) = 0;
1624
+ (a[5] => z[36]) = 0;
1625
+ (a[6] => z[36]) = 0;
1626
+ (a[7] => z[36]) = 0;
1627
+ (a[8] => z[36]) = 0;
1628
+ (a[9] => z[36]) = 0;
1629
+ (a[10] => z[36]) = 0;
1630
+ (a[11] => z[36]) = 0;
1631
+ (a[12] => z[36]) = 0;
1632
+ (a[13] => z[36]) = 0;
1633
+ (a[14] => z[36]) = 0;
1634
+ (a[15] => z[36]) = 0;
1635
+ (a[16] => z[36]) = 0;
1636
+ (a[17] => z[36]) = 0;
1637
+ (a[18] => z[36]) = 0;
1638
+ (a[19] => z[36]) = 0;
1639
+ (b[0] => z[36]) = 0;
1640
+ (b[1] => z[36]) = 0;
1641
+ (b[2] => z[36]) = 0;
1642
+ (b[3] => z[36]) = 0;
1643
+ (b[4] => z[36]) = 0;
1644
+ (b[5] => z[36]) = 0;
1645
+ (b[6] => z[36]) = 0;
1646
+ (b[7] => z[36]) = 0;
1647
+ (b[8] => z[36]) = 0;
1648
+ (b[9] => z[36]) = 0;
1649
+ (b[10] => z[36]) = 0;
1650
+ (b[11] => z[36]) = 0;
1651
+ (b[12] => z[36]) = 0;
1652
+ (b[13] => z[36]) = 0;
1653
+ (b[14] => z[36]) = 0;
1654
+ (b[15] => z[36]) = 0;
1655
+ (b[16] => z[36]) = 0;
1656
+ (b[17] => z[36]) = 0;
1657
+ (a[0] => z[37]) = 0;
1658
+ (a[1] => z[37]) = 0;
1659
+ (a[2] => z[37]) = 0;
1660
+ (a[3] => z[37]) = 0;
1661
+ (a[4] => z[37]) = 0;
1662
+ (a[5] => z[37]) = 0;
1663
+ (a[6] => z[37]) = 0;
1664
+ (a[7] => z[37]) = 0;
1665
+ (a[8] => z[37]) = 0;
1666
+ (a[9] => z[37]) = 0;
1667
+ (a[10] => z[37]) = 0;
1668
+ (a[11] => z[37]) = 0;
1669
+ (a[12] => z[37]) = 0;
1670
+ (a[13] => z[37]) = 0;
1671
+ (a[14] => z[37]) = 0;
1672
+ (a[15] => z[37]) = 0;
1673
+ (a[16] => z[37]) = 0;
1674
+ (a[17] => z[37]) = 0;
1675
+ (a[18] => z[37]) = 0;
1676
+ (a[19] => z[37]) = 0;
1677
+ (b[0] => z[37]) = 0;
1678
+ (b[1] => z[37]) = 0;
1679
+ (b[2] => z[37]) = 0;
1680
+ (b[3] => z[37]) = 0;
1681
+ (b[4] => z[37]) = 0;
1682
+ (b[5] => z[37]) = 0;
1683
+ (b[6] => z[37]) = 0;
1684
+ (b[7] => z[37]) = 0;
1685
+ (b[8] => z[37]) = 0;
1686
+ (b[9] => z[37]) = 0;
1687
+ (b[10] => z[37]) = 0;
1688
+ (b[11] => z[37]) = 0;
1689
+ (b[12] => z[37]) = 0;
1690
+ (b[13] => z[37]) = 0;
1691
+ (b[14] => z[37]) = 0;
1692
+ (b[15] => z[37]) = 0;
1693
+ (b[16] => z[37]) = 0;
1694
+ (b[17] => z[37]) = 0;
1695
+ endspecify
1696
+ `endif
1697
+
1698
+ endmodule
1699
+
1700
+ module QL_DSP2_MULT_REGIN ( // TODO: Name subject to change
1701
+ input wire [19:0] a,
1702
+ input wire [17:0] b,
1703
+ output wire [37:0] z,
1704
+
1705
+ (* clkbuf_sink *)
1706
+ input wire clk,
1707
+ input wire reset,
1708
+
1709
+ input wire [2:0] feedback,
1710
+ input wire unsigned_a,
1711
+ input wire unsigned_b,
1712
+
1713
+ input wire f_mode,
1714
+ input wire [2:0] output_select,
1715
+ input wire register_inputs
1716
+ );
1717
+
1718
+ parameter [79:0] MODE_BITS = 80'd0;
1719
+
1720
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
1721
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
1722
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
1723
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
1724
+
1725
+ QL_DSP2 #(
1726
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
1727
+ ) dsp (
1728
+ .a(a),
1729
+ .b(b),
1730
+ .acc_fir(6'b0),
1731
+ .z(z),
1732
+ .dly_b(),
1733
+
1734
+ .f_mode(f_mode),
1735
+
1736
+ .feedback(feedback),
1737
+ .load_acc(1'b0),
1738
+
1739
+ .unsigned_a(unsigned_a),
1740
+ .unsigned_b(unsigned_b),
1741
+
1742
+ .clk(clk),
1743
+ .reset(reset),
1744
+
1745
+ .output_select(output_select), // unregistered output: a * b (0)
1746
+ .saturate_enable(1'b0),
1747
+ .shift_right(6'b0),
1748
+ .round(1'b0),
1749
+ .subtract(1'b0),
1750
+ .register_inputs(register_inputs) // registered inputs
1751
+ );
1752
+
1753
+ `ifdef SDF_SIM
1754
+ specify
1755
+ (posedge clk => (z +: a)) = 0;
1756
+ (posedge clk => (z +: b)) = 0;
1757
+ $setuphold(posedge clk, a, 0, 0);
1758
+ $setuphold(posedge clk, b, 0, 0);
1759
+ $setuphold(posedge clk, feedback, 0, 0);
1760
+ endspecify
1761
+ `endif
1762
+
1763
+ endmodule
1764
+
1765
+ module QL_DSP2_MULT_REGOUT ( // TODO: Name subject to change
1766
+ input wire [19:0] a,
1767
+ input wire [17:0] b,
1768
+ output wire [37:0] z,
1769
+
1770
+ (* clkbuf_sink *)
1771
+ input wire clk,
1772
+ input wire reset,
1773
+
1774
+ input wire [2:0] feedback,
1775
+ input wire unsigned_a,
1776
+ input wire unsigned_b,
1777
+ input wire f_mode,
1778
+ input wire [2:0] output_select,
1779
+ input wire register_inputs
1780
+ );
1781
+
1782
+ parameter [79:0] MODE_BITS = 80'd0;
1783
+
1784
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
1785
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
1786
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
1787
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
1788
+
1789
+ QL_DSP2 #(
1790
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
1791
+ ) dsp (
1792
+ .a(a),
1793
+ .b(b),
1794
+ .acc_fir(6'b0),
1795
+ .z(z),
1796
+ .dly_b(),
1797
+
1798
+ .f_mode(f_mode),
1799
+
1800
+ .feedback(feedback),
1801
+ .load_acc(1'b0),
1802
+
1803
+ .unsigned_a(unsigned_a),
1804
+ .unsigned_b(unsigned_b),
1805
+
1806
+ .clk(clk),
1807
+ .reset(reset),
1808
+
1809
+ .output_select(output_select), // registered output: a * b (4)
1810
+ .saturate_enable(1'b0),
1811
+ .shift_right(6'b0),
1812
+ .round(1'b0),
1813
+ .subtract(1'b0),
1814
+ .register_inputs(register_inputs) // unregistered inputs
1815
+ );
1816
+
1817
+ `ifdef SDF_SIM
1818
+ specify
1819
+ (posedge clk => (z +: a)) = 0;
1820
+ (posedge clk => (z +: b)) = 0;
1821
+ $setuphold(posedge clk, a, 0, 0);
1822
+ $setuphold(posedge clk, b, 0, 0);
1823
+ $setuphold(posedge clk, feedback, 0, 0);
1824
+ endspecify
1825
+ `endif
1826
+
1827
+ endmodule
1828
+
1829
+ module QL_DSP2_MULT_REGIN_REGOUT ( // TODO: Name subject to change
1830
+ input wire [19:0] a,
1831
+ input wire [17:0] b,
1832
+ output wire [37:0] z,
1833
+
1834
+ (* clkbuf_sink *)
1835
+ input wire clk,
1836
+ input wire reset,
1837
+
1838
+ input wire [2:0] feedback,
1839
+ input wire unsigned_a,
1840
+ input wire unsigned_b,
1841
+ input wire f_mode,
1842
+ input wire [2:0] output_select,
1843
+ input wire register_inputs
1844
+ );
1845
+
1846
+ parameter [79:0] MODE_BITS = 80'd0;
1847
+
1848
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
1849
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
1850
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
1851
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
1852
+
1853
+ QL_DSP2 #(
1854
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
1855
+ ) dsp (
1856
+ .a(a),
1857
+ .b(b),
1858
+ .acc_fir(6'b0),
1859
+ .z(z),
1860
+ .dly_b(),
1861
+
1862
+ .f_mode(f_mode),
1863
+
1864
+ .feedback(feedback),
1865
+ .load_acc(1'b0),
1866
+
1867
+ .unsigned_a(unsigned_a),
1868
+ .unsigned_b(unsigned_b),
1869
+
1870
+ .clk(clk),
1871
+ .reset(reset),
1872
+
1873
+ .output_select(output_select), // registered output: a * b (4)
1874
+ .saturate_enable(1'b0),
1875
+ .shift_right(6'b0),
1876
+ .round(1'b0),
1877
+ .subtract(1'b0),
1878
+ .register_inputs(register_inputs) // registered inputs
1879
+ );
1880
+
1881
+ `ifdef SDF_SIM
1882
+ specify
1883
+ (posedge clk => (z +: a)) = 0;
1884
+ (posedge clk => (z +: b)) = 0;
1885
+ $setuphold(posedge clk, a, 0, 0);
1886
+ $setuphold(posedge clk, b, 0, 0);
1887
+ $setuphold(posedge clk, feedback, 0, 0);
1888
+ endspecify
1889
+ `endif
1890
+
1891
+ endmodule
1892
+
1893
+ module QL_DSP2_MULTADD (
1894
+ input wire [19:0] a,
1895
+ input wire [17:0] b,
1896
+ output wire [37:0] z,
1897
+
1898
+ input wire reset,
1899
+
1900
+ input wire [ 2:0] feedback,
1901
+ input wire [ 5:0] acc_fir,
1902
+ input wire load_acc,
1903
+ input wire unsigned_a,
1904
+ input wire unsigned_b,
1905
+
1906
+ input wire f_mode,
1907
+ input wire [ 2:0] output_select,
1908
+ input wire saturate_enable,
1909
+ input wire [ 5:0] shift_right,
1910
+ input wire round,
1911
+ input wire subtract,
1912
+ input wire register_inputs
1913
+ );
1914
+
1915
+ parameter [79:0] MODE_BITS = 80'd0;
1916
+
1917
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
1918
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
1919
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
1920
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
1921
+
1922
+ QL_DSP2 #(
1923
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
1924
+ ) dsp (
1925
+ .a(a),
1926
+ .b(b),
1927
+ .dly_b(),
1928
+ .z(z),
1929
+
1930
+ .f_mode(f_mode),
1931
+
1932
+ .feedback(feedback),
1933
+ .acc_fir(acc_fir),
1934
+ .load_acc(load_acc),
1935
+
1936
+ .unsigned_a(unsigned_a),
1937
+ .unsigned_b(unsigned_b),
1938
+
1939
+ //.clk(1'b0),
1940
+ .reset(reset),
1941
+
1942
+ .output_select(output_select), // unregistered output: ACCin (2, 3)
1943
+ .saturate_enable(saturate_enable),
1944
+ .shift_right(shift_right),
1945
+ .round(round),
1946
+ .subtract(subtract),
1947
+ .register_inputs(register_inputs) // unregistered inputs
1948
+ );
1949
+
1950
+ `ifdef SDF_SIM
1951
+ specify
1952
+ (a[0] => z[0]) = 0;
1953
+ (a[1] => z[0]) = 0;
1954
+ (a[2] => z[0]) = 0;
1955
+ (a[3] => z[0]) = 0;
1956
+ (a[4] => z[0]) = 0;
1957
+ (a[5] => z[0]) = 0;
1958
+ (a[6] => z[0]) = 0;
1959
+ (a[7] => z[0]) = 0;
1960
+ (a[8] => z[0]) = 0;
1961
+ (a[9] => z[0]) = 0;
1962
+ (a[10] => z[0]) = 0;
1963
+ (a[11] => z[0]) = 0;
1964
+ (a[12] => z[0]) = 0;
1965
+ (a[13] => z[0]) = 0;
1966
+ (a[14] => z[0]) = 0;
1967
+ (a[15] => z[0]) = 0;
1968
+ (a[16] => z[0]) = 0;
1969
+ (a[17] => z[0]) = 0;
1970
+ (a[18] => z[0]) = 0;
1971
+ (a[19] => z[0]) = 0;
1972
+ (b[0] => z[0]) = 0;
1973
+ (b[1] => z[0]) = 0;
1974
+ (b[2] => z[0]) = 0;
1975
+ (b[3] => z[0]) = 0;
1976
+ (b[4] => z[0]) = 0;
1977
+ (b[5] => z[0]) = 0;
1978
+ (b[6] => z[0]) = 0;
1979
+ (b[7] => z[0]) = 0;
1980
+ (b[8] => z[0]) = 0;
1981
+ (b[9] => z[0]) = 0;
1982
+ (b[10] => z[0]) = 0;
1983
+ (b[11] => z[0]) = 0;
1984
+ (b[12] => z[0]) = 0;
1985
+ (b[13] => z[0]) = 0;
1986
+ (b[14] => z[0]) = 0;
1987
+ (b[15] => z[0]) = 0;
1988
+ (b[16] => z[0]) = 0;
1989
+ (b[17] => z[0]) = 0;
1990
+ (a[0] => z[1]) = 0;
1991
+ (a[1] => z[1]) = 0;
1992
+ (a[2] => z[1]) = 0;
1993
+ (a[3] => z[1]) = 0;
1994
+ (a[4] => z[1]) = 0;
1995
+ (a[5] => z[1]) = 0;
1996
+ (a[6] => z[1]) = 0;
1997
+ (a[7] => z[1]) = 0;
1998
+ (a[8] => z[1]) = 0;
1999
+ (a[9] => z[1]) = 0;
2000
+ (a[10] => z[1]) = 0;
2001
+ (a[11] => z[1]) = 0;
2002
+ (a[12] => z[1]) = 0;
2003
+ (a[13] => z[1]) = 0;
2004
+ (a[14] => z[1]) = 0;
2005
+ (a[15] => z[1]) = 0;
2006
+ (a[16] => z[1]) = 0;
2007
+ (a[17] => z[1]) = 0;
2008
+ (a[18] => z[1]) = 0;
2009
+ (a[19] => z[1]) = 0;
2010
+ (b[0] => z[1]) = 0;
2011
+ (b[1] => z[1]) = 0;
2012
+ (b[2] => z[1]) = 0;
2013
+ (b[3] => z[1]) = 0;
2014
+ (b[4] => z[1]) = 0;
2015
+ (b[5] => z[1]) = 0;
2016
+ (b[6] => z[1]) = 0;
2017
+ (b[7] => z[1]) = 0;
2018
+ (b[8] => z[1]) = 0;
2019
+ (b[9] => z[1]) = 0;
2020
+ (b[10] => z[1]) = 0;
2021
+ (b[11] => z[1]) = 0;
2022
+ (b[12] => z[1]) = 0;
2023
+ (b[13] => z[1]) = 0;
2024
+ (b[14] => z[1]) = 0;
2025
+ (b[15] => z[1]) = 0;
2026
+ (b[16] => z[1]) = 0;
2027
+ (b[17] => z[1]) = 0;
2028
+ (a[0] => z[2]) = 0;
2029
+ (a[1] => z[2]) = 0;
2030
+ (a[2] => z[2]) = 0;
2031
+ (a[3] => z[2]) = 0;
2032
+ (a[4] => z[2]) = 0;
2033
+ (a[5] => z[2]) = 0;
2034
+ (a[6] => z[2]) = 0;
2035
+ (a[7] => z[2]) = 0;
2036
+ (a[8] => z[2]) = 0;
2037
+ (a[9] => z[2]) = 0;
2038
+ (a[10] => z[2]) = 0;
2039
+ (a[11] => z[2]) = 0;
2040
+ (a[12] => z[2]) = 0;
2041
+ (a[13] => z[2]) = 0;
2042
+ (a[14] => z[2]) = 0;
2043
+ (a[15] => z[2]) = 0;
2044
+ (a[16] => z[2]) = 0;
2045
+ (a[17] => z[2]) = 0;
2046
+ (a[18] => z[2]) = 0;
2047
+ (a[19] => z[2]) = 0;
2048
+ (b[0] => z[2]) = 0;
2049
+ (b[1] => z[2]) = 0;
2050
+ (b[2] => z[2]) = 0;
2051
+ (b[3] => z[2]) = 0;
2052
+ (b[4] => z[2]) = 0;
2053
+ (b[5] => z[2]) = 0;
2054
+ (b[6] => z[2]) = 0;
2055
+ (b[7] => z[2]) = 0;
2056
+ (b[8] => z[2]) = 0;
2057
+ (b[9] => z[2]) = 0;
2058
+ (b[10] => z[2]) = 0;
2059
+ (b[11] => z[2]) = 0;
2060
+ (b[12] => z[2]) = 0;
2061
+ (b[13] => z[2]) = 0;
2062
+ (b[14] => z[2]) = 0;
2063
+ (b[15] => z[2]) = 0;
2064
+ (b[16] => z[2]) = 0;
2065
+ (b[17] => z[2]) = 0;
2066
+ (a[0] => z[3]) = 0;
2067
+ (a[1] => z[3]) = 0;
2068
+ (a[2] => z[3]) = 0;
2069
+ (a[3] => z[3]) = 0;
2070
+ (a[4] => z[3]) = 0;
2071
+ (a[5] => z[3]) = 0;
2072
+ (a[6] => z[3]) = 0;
2073
+ (a[7] => z[3]) = 0;
2074
+ (a[8] => z[3]) = 0;
2075
+ (a[9] => z[3]) = 0;
2076
+ (a[10] => z[3]) = 0;
2077
+ (a[11] => z[3]) = 0;
2078
+ (a[12] => z[3]) = 0;
2079
+ (a[13] => z[3]) = 0;
2080
+ (a[14] => z[3]) = 0;
2081
+ (a[15] => z[3]) = 0;
2082
+ (a[16] => z[3]) = 0;
2083
+ (a[17] => z[3]) = 0;
2084
+ (a[18] => z[3]) = 0;
2085
+ (a[19] => z[3]) = 0;
2086
+ (b[0] => z[3]) = 0;
2087
+ (b[1] => z[3]) = 0;
2088
+ (b[2] => z[3]) = 0;
2089
+ (b[3] => z[3]) = 0;
2090
+ (b[4] => z[3]) = 0;
2091
+ (b[5] => z[3]) = 0;
2092
+ (b[6] => z[3]) = 0;
2093
+ (b[7] => z[3]) = 0;
2094
+ (b[8] => z[3]) = 0;
2095
+ (b[9] => z[3]) = 0;
2096
+ (b[10] => z[3]) = 0;
2097
+ (b[11] => z[3]) = 0;
2098
+ (b[12] => z[3]) = 0;
2099
+ (b[13] => z[3]) = 0;
2100
+ (b[14] => z[3]) = 0;
2101
+ (b[15] => z[3]) = 0;
2102
+ (b[16] => z[3]) = 0;
2103
+ (b[17] => z[3]) = 0;
2104
+ (a[0] => z[4]) = 0;
2105
+ (a[1] => z[4]) = 0;
2106
+ (a[2] => z[4]) = 0;
2107
+ (a[3] => z[4]) = 0;
2108
+ (a[4] => z[4]) = 0;
2109
+ (a[5] => z[4]) = 0;
2110
+ (a[6] => z[4]) = 0;
2111
+ (a[7] => z[4]) = 0;
2112
+ (a[8] => z[4]) = 0;
2113
+ (a[9] => z[4]) = 0;
2114
+ (a[10] => z[4]) = 0;
2115
+ (a[11] => z[4]) = 0;
2116
+ (a[12] => z[4]) = 0;
2117
+ (a[13] => z[4]) = 0;
2118
+ (a[14] => z[4]) = 0;
2119
+ (a[15] => z[4]) = 0;
2120
+ (a[16] => z[4]) = 0;
2121
+ (a[17] => z[4]) = 0;
2122
+ (a[18] => z[4]) = 0;
2123
+ (a[19] => z[4]) = 0;
2124
+ (b[0] => z[4]) = 0;
2125
+ (b[1] => z[4]) = 0;
2126
+ (b[2] => z[4]) = 0;
2127
+ (b[3] => z[4]) = 0;
2128
+ (b[4] => z[4]) = 0;
2129
+ (b[5] => z[4]) = 0;
2130
+ (b[6] => z[4]) = 0;
2131
+ (b[7] => z[4]) = 0;
2132
+ (b[8] => z[4]) = 0;
2133
+ (b[9] => z[4]) = 0;
2134
+ (b[10] => z[4]) = 0;
2135
+ (b[11] => z[4]) = 0;
2136
+ (b[12] => z[4]) = 0;
2137
+ (b[13] => z[4]) = 0;
2138
+ (b[14] => z[4]) = 0;
2139
+ (b[15] => z[4]) = 0;
2140
+ (b[16] => z[4]) = 0;
2141
+ (b[17] => z[4]) = 0;
2142
+ (a[0] => z[5]) = 0;
2143
+ (a[1] => z[5]) = 0;
2144
+ (a[2] => z[5]) = 0;
2145
+ (a[3] => z[5]) = 0;
2146
+ (a[4] => z[5]) = 0;
2147
+ (a[5] => z[5]) = 0;
2148
+ (a[6] => z[5]) = 0;
2149
+ (a[7] => z[5]) = 0;
2150
+ (a[8] => z[5]) = 0;
2151
+ (a[9] => z[5]) = 0;
2152
+ (a[10] => z[5]) = 0;
2153
+ (a[11] => z[5]) = 0;
2154
+ (a[12] => z[5]) = 0;
2155
+ (a[13] => z[5]) = 0;
2156
+ (a[14] => z[5]) = 0;
2157
+ (a[15] => z[5]) = 0;
2158
+ (a[16] => z[5]) = 0;
2159
+ (a[17] => z[5]) = 0;
2160
+ (a[18] => z[5]) = 0;
2161
+ (a[19] => z[5]) = 0;
2162
+ (b[0] => z[5]) = 0;
2163
+ (b[1] => z[5]) = 0;
2164
+ (b[2] => z[5]) = 0;
2165
+ (b[3] => z[5]) = 0;
2166
+ (b[4] => z[5]) = 0;
2167
+ (b[5] => z[5]) = 0;
2168
+ (b[6] => z[5]) = 0;
2169
+ (b[7] => z[5]) = 0;
2170
+ (b[8] => z[5]) = 0;
2171
+ (b[9] => z[5]) = 0;
2172
+ (b[10] => z[5]) = 0;
2173
+ (b[11] => z[5]) = 0;
2174
+ (b[12] => z[5]) = 0;
2175
+ (b[13] => z[5]) = 0;
2176
+ (b[14] => z[5]) = 0;
2177
+ (b[15] => z[5]) = 0;
2178
+ (b[16] => z[5]) = 0;
2179
+ (b[17] => z[5]) = 0;
2180
+ (a[0] => z[6]) = 0;
2181
+ (a[1] => z[6]) = 0;
2182
+ (a[2] => z[6]) = 0;
2183
+ (a[3] => z[6]) = 0;
2184
+ (a[4] => z[6]) = 0;
2185
+ (a[5] => z[6]) = 0;
2186
+ (a[6] => z[6]) = 0;
2187
+ (a[7] => z[6]) = 0;
2188
+ (a[8] => z[6]) = 0;
2189
+ (a[9] => z[6]) = 0;
2190
+ (a[10] => z[6]) = 0;
2191
+ (a[11] => z[6]) = 0;
2192
+ (a[12] => z[6]) = 0;
2193
+ (a[13] => z[6]) = 0;
2194
+ (a[14] => z[6]) = 0;
2195
+ (a[15] => z[6]) = 0;
2196
+ (a[16] => z[6]) = 0;
2197
+ (a[17] => z[6]) = 0;
2198
+ (a[18] => z[6]) = 0;
2199
+ (a[19] => z[6]) = 0;
2200
+ (b[0] => z[6]) = 0;
2201
+ (b[1] => z[6]) = 0;
2202
+ (b[2] => z[6]) = 0;
2203
+ (b[3] => z[6]) = 0;
2204
+ (b[4] => z[6]) = 0;
2205
+ (b[5] => z[6]) = 0;
2206
+ (b[6] => z[6]) = 0;
2207
+ (b[7] => z[6]) = 0;
2208
+ (b[8] => z[6]) = 0;
2209
+ (b[9] => z[6]) = 0;
2210
+ (b[10] => z[6]) = 0;
2211
+ (b[11] => z[6]) = 0;
2212
+ (b[12] => z[6]) = 0;
2213
+ (b[13] => z[6]) = 0;
2214
+ (b[14] => z[6]) = 0;
2215
+ (b[15] => z[6]) = 0;
2216
+ (b[16] => z[6]) = 0;
2217
+ (b[17] => z[6]) = 0;
2218
+ (a[0] => z[7]) = 0;
2219
+ (a[1] => z[7]) = 0;
2220
+ (a[2] => z[7]) = 0;
2221
+ (a[3] => z[7]) = 0;
2222
+ (a[4] => z[7]) = 0;
2223
+ (a[5] => z[7]) = 0;
2224
+ (a[6] => z[7]) = 0;
2225
+ (a[7] => z[7]) = 0;
2226
+ (a[8] => z[7]) = 0;
2227
+ (a[9] => z[7]) = 0;
2228
+ (a[10] => z[7]) = 0;
2229
+ (a[11] => z[7]) = 0;
2230
+ (a[12] => z[7]) = 0;
2231
+ (a[13] => z[7]) = 0;
2232
+ (a[14] => z[7]) = 0;
2233
+ (a[15] => z[7]) = 0;
2234
+ (a[16] => z[7]) = 0;
2235
+ (a[17] => z[7]) = 0;
2236
+ (a[18] => z[7]) = 0;
2237
+ (a[19] => z[7]) = 0;
2238
+ (b[0] => z[7]) = 0;
2239
+ (b[1] => z[7]) = 0;
2240
+ (b[2] => z[7]) = 0;
2241
+ (b[3] => z[7]) = 0;
2242
+ (b[4] => z[7]) = 0;
2243
+ (b[5] => z[7]) = 0;
2244
+ (b[6] => z[7]) = 0;
2245
+ (b[7] => z[7]) = 0;
2246
+ (b[8] => z[7]) = 0;
2247
+ (b[9] => z[7]) = 0;
2248
+ (b[10] => z[7]) = 0;
2249
+ (b[11] => z[7]) = 0;
2250
+ (b[12] => z[7]) = 0;
2251
+ (b[13] => z[7]) = 0;
2252
+ (b[14] => z[7]) = 0;
2253
+ (b[15] => z[7]) = 0;
2254
+ (b[16] => z[7]) = 0;
2255
+ (b[17] => z[7]) = 0;
2256
+ (a[0] => z[8]) = 0;
2257
+ (a[1] => z[8]) = 0;
2258
+ (a[2] => z[8]) = 0;
2259
+ (a[3] => z[8]) = 0;
2260
+ (a[4] => z[8]) = 0;
2261
+ (a[5] => z[8]) = 0;
2262
+ (a[6] => z[8]) = 0;
2263
+ (a[7] => z[8]) = 0;
2264
+ (a[8] => z[8]) = 0;
2265
+ (a[9] => z[8]) = 0;
2266
+ (a[10] => z[8]) = 0;
2267
+ (a[11] => z[8]) = 0;
2268
+ (a[12] => z[8]) = 0;
2269
+ (a[13] => z[8]) = 0;
2270
+ (a[14] => z[8]) = 0;
2271
+ (a[15] => z[8]) = 0;
2272
+ (a[16] => z[8]) = 0;
2273
+ (a[17] => z[8]) = 0;
2274
+ (a[18] => z[8]) = 0;
2275
+ (a[19] => z[8]) = 0;
2276
+ (b[0] => z[8]) = 0;
2277
+ (b[1] => z[8]) = 0;
2278
+ (b[2] => z[8]) = 0;
2279
+ (b[3] => z[8]) = 0;
2280
+ (b[4] => z[8]) = 0;
2281
+ (b[5] => z[8]) = 0;
2282
+ (b[6] => z[8]) = 0;
2283
+ (b[7] => z[8]) = 0;
2284
+ (b[8] => z[8]) = 0;
2285
+ (b[9] => z[8]) = 0;
2286
+ (b[10] => z[8]) = 0;
2287
+ (b[11] => z[8]) = 0;
2288
+ (b[12] => z[8]) = 0;
2289
+ (b[13] => z[8]) = 0;
2290
+ (b[14] => z[8]) = 0;
2291
+ (b[15] => z[8]) = 0;
2292
+ (b[16] => z[8]) = 0;
2293
+ (b[17] => z[8]) = 0;
2294
+ (a[0] => z[9]) = 0;
2295
+ (a[1] => z[9]) = 0;
2296
+ (a[2] => z[9]) = 0;
2297
+ (a[3] => z[9]) = 0;
2298
+ (a[4] => z[9]) = 0;
2299
+ (a[5] => z[9]) = 0;
2300
+ (a[6] => z[9]) = 0;
2301
+ (a[7] => z[9]) = 0;
2302
+ (a[8] => z[9]) = 0;
2303
+ (a[9] => z[9]) = 0;
2304
+ (a[10] => z[9]) = 0;
2305
+ (a[11] => z[9]) = 0;
2306
+ (a[12] => z[9]) = 0;
2307
+ (a[13] => z[9]) = 0;
2308
+ (a[14] => z[9]) = 0;
2309
+ (a[15] => z[9]) = 0;
2310
+ (a[16] => z[9]) = 0;
2311
+ (a[17] => z[9]) = 0;
2312
+ (a[18] => z[9]) = 0;
2313
+ (a[19] => z[9]) = 0;
2314
+ (b[0] => z[9]) = 0;
2315
+ (b[1] => z[9]) = 0;
2316
+ (b[2] => z[9]) = 0;
2317
+ (b[3] => z[9]) = 0;
2318
+ (b[4] => z[9]) = 0;
2319
+ (b[5] => z[9]) = 0;
2320
+ (b[6] => z[9]) = 0;
2321
+ (b[7] => z[9]) = 0;
2322
+ (b[8] => z[9]) = 0;
2323
+ (b[9] => z[9]) = 0;
2324
+ (b[10] => z[9]) = 0;
2325
+ (b[11] => z[9]) = 0;
2326
+ (b[12] => z[9]) = 0;
2327
+ (b[13] => z[9]) = 0;
2328
+ (b[14] => z[9]) = 0;
2329
+ (b[15] => z[9]) = 0;
2330
+ (b[16] => z[9]) = 0;
2331
+ (b[17] => z[9]) = 0;
2332
+ (a[0] => z[10]) = 0;
2333
+ (a[1] => z[10]) = 0;
2334
+ (a[2] => z[10]) = 0;
2335
+ (a[3] => z[10]) = 0;
2336
+ (a[4] => z[10]) = 0;
2337
+ (a[5] => z[10]) = 0;
2338
+ (a[6] => z[10]) = 0;
2339
+ (a[7] => z[10]) = 0;
2340
+ (a[8] => z[10]) = 0;
2341
+ (a[9] => z[10]) = 0;
2342
+ (a[10] => z[10]) = 0;
2343
+ (a[11] => z[10]) = 0;
2344
+ (a[12] => z[10]) = 0;
2345
+ (a[13] => z[10]) = 0;
2346
+ (a[14] => z[10]) = 0;
2347
+ (a[15] => z[10]) = 0;
2348
+ (a[16] => z[10]) = 0;
2349
+ (a[17] => z[10]) = 0;
2350
+ (a[18] => z[10]) = 0;
2351
+ (a[19] => z[10]) = 0;
2352
+ (b[0] => z[10]) = 0;
2353
+ (b[1] => z[10]) = 0;
2354
+ (b[2] => z[10]) = 0;
2355
+ (b[3] => z[10]) = 0;
2356
+ (b[4] => z[10]) = 0;
2357
+ (b[5] => z[10]) = 0;
2358
+ (b[6] => z[10]) = 0;
2359
+ (b[7] => z[10]) = 0;
2360
+ (b[8] => z[10]) = 0;
2361
+ (b[9] => z[10]) = 0;
2362
+ (b[10] => z[10]) = 0;
2363
+ (b[11] => z[10]) = 0;
2364
+ (b[12] => z[10]) = 0;
2365
+ (b[13] => z[10]) = 0;
2366
+ (b[14] => z[10]) = 0;
2367
+ (b[15] => z[10]) = 0;
2368
+ (b[16] => z[10]) = 0;
2369
+ (b[17] => z[10]) = 0;
2370
+ (a[0] => z[11]) = 0;
2371
+ (a[1] => z[11]) = 0;
2372
+ (a[2] => z[11]) = 0;
2373
+ (a[3] => z[11]) = 0;
2374
+ (a[4] => z[11]) = 0;
2375
+ (a[5] => z[11]) = 0;
2376
+ (a[6] => z[11]) = 0;
2377
+ (a[7] => z[11]) = 0;
2378
+ (a[8] => z[11]) = 0;
2379
+ (a[9] => z[11]) = 0;
2380
+ (a[10] => z[11]) = 0;
2381
+ (a[11] => z[11]) = 0;
2382
+ (a[12] => z[11]) = 0;
2383
+ (a[13] => z[11]) = 0;
2384
+ (a[14] => z[11]) = 0;
2385
+ (a[15] => z[11]) = 0;
2386
+ (a[16] => z[11]) = 0;
2387
+ (a[17] => z[11]) = 0;
2388
+ (a[18] => z[11]) = 0;
2389
+ (a[19] => z[11]) = 0;
2390
+ (b[0] => z[11]) = 0;
2391
+ (b[1] => z[11]) = 0;
2392
+ (b[2] => z[11]) = 0;
2393
+ (b[3] => z[11]) = 0;
2394
+ (b[4] => z[11]) = 0;
2395
+ (b[5] => z[11]) = 0;
2396
+ (b[6] => z[11]) = 0;
2397
+ (b[7] => z[11]) = 0;
2398
+ (b[8] => z[11]) = 0;
2399
+ (b[9] => z[11]) = 0;
2400
+ (b[10] => z[11]) = 0;
2401
+ (b[11] => z[11]) = 0;
2402
+ (b[12] => z[11]) = 0;
2403
+ (b[13] => z[11]) = 0;
2404
+ (b[14] => z[11]) = 0;
2405
+ (b[15] => z[11]) = 0;
2406
+ (b[16] => z[11]) = 0;
2407
+ (b[17] => z[11]) = 0;
2408
+ (a[0] => z[12]) = 0;
2409
+ (a[1] => z[12]) = 0;
2410
+ (a[2] => z[12]) = 0;
2411
+ (a[3] => z[12]) = 0;
2412
+ (a[4] => z[12]) = 0;
2413
+ (a[5] => z[12]) = 0;
2414
+ (a[6] => z[12]) = 0;
2415
+ (a[7] => z[12]) = 0;
2416
+ (a[8] => z[12]) = 0;
2417
+ (a[9] => z[12]) = 0;
2418
+ (a[10] => z[12]) = 0;
2419
+ (a[11] => z[12]) = 0;
2420
+ (a[12] => z[12]) = 0;
2421
+ (a[13] => z[12]) = 0;
2422
+ (a[14] => z[12]) = 0;
2423
+ (a[15] => z[12]) = 0;
2424
+ (a[16] => z[12]) = 0;
2425
+ (a[17] => z[12]) = 0;
2426
+ (a[18] => z[12]) = 0;
2427
+ (a[19] => z[12]) = 0;
2428
+ (b[0] => z[12]) = 0;
2429
+ (b[1] => z[12]) = 0;
2430
+ (b[2] => z[12]) = 0;
2431
+ (b[3] => z[12]) = 0;
2432
+ (b[4] => z[12]) = 0;
2433
+ (b[5] => z[12]) = 0;
2434
+ (b[6] => z[12]) = 0;
2435
+ (b[7] => z[12]) = 0;
2436
+ (b[8] => z[12]) = 0;
2437
+ (b[9] => z[12]) = 0;
2438
+ (b[10] => z[12]) = 0;
2439
+ (b[11] => z[12]) = 0;
2440
+ (b[12] => z[12]) = 0;
2441
+ (b[13] => z[12]) = 0;
2442
+ (b[14] => z[12]) = 0;
2443
+ (b[15] => z[12]) = 0;
2444
+ (b[16] => z[12]) = 0;
2445
+ (b[17] => z[12]) = 0;
2446
+ (a[0] => z[13]) = 0;
2447
+ (a[1] => z[13]) = 0;
2448
+ (a[2] => z[13]) = 0;
2449
+ (a[3] => z[13]) = 0;
2450
+ (a[4] => z[13]) = 0;
2451
+ (a[5] => z[13]) = 0;
2452
+ (a[6] => z[13]) = 0;
2453
+ (a[7] => z[13]) = 0;
2454
+ (a[8] => z[13]) = 0;
2455
+ (a[9] => z[13]) = 0;
2456
+ (a[10] => z[13]) = 0;
2457
+ (a[11] => z[13]) = 0;
2458
+ (a[12] => z[13]) = 0;
2459
+ (a[13] => z[13]) = 0;
2460
+ (a[14] => z[13]) = 0;
2461
+ (a[15] => z[13]) = 0;
2462
+ (a[16] => z[13]) = 0;
2463
+ (a[17] => z[13]) = 0;
2464
+ (a[18] => z[13]) = 0;
2465
+ (a[19] => z[13]) = 0;
2466
+ (b[0] => z[13]) = 0;
2467
+ (b[1] => z[13]) = 0;
2468
+ (b[2] => z[13]) = 0;
2469
+ (b[3] => z[13]) = 0;
2470
+ (b[4] => z[13]) = 0;
2471
+ (b[5] => z[13]) = 0;
2472
+ (b[6] => z[13]) = 0;
2473
+ (b[7] => z[13]) = 0;
2474
+ (b[8] => z[13]) = 0;
2475
+ (b[9] => z[13]) = 0;
2476
+ (b[10] => z[13]) = 0;
2477
+ (b[11] => z[13]) = 0;
2478
+ (b[12] => z[13]) = 0;
2479
+ (b[13] => z[13]) = 0;
2480
+ (b[14] => z[13]) = 0;
2481
+ (b[15] => z[13]) = 0;
2482
+ (b[16] => z[13]) = 0;
2483
+ (b[17] => z[13]) = 0;
2484
+ (a[0] => z[14]) = 0;
2485
+ (a[1] => z[14]) = 0;
2486
+ (a[2] => z[14]) = 0;
2487
+ (a[3] => z[14]) = 0;
2488
+ (a[4] => z[14]) = 0;
2489
+ (a[5] => z[14]) = 0;
2490
+ (a[6] => z[14]) = 0;
2491
+ (a[7] => z[14]) = 0;
2492
+ (a[8] => z[14]) = 0;
2493
+ (a[9] => z[14]) = 0;
2494
+ (a[10] => z[14]) = 0;
2495
+ (a[11] => z[14]) = 0;
2496
+ (a[12] => z[14]) = 0;
2497
+ (a[13] => z[14]) = 0;
2498
+ (a[14] => z[14]) = 0;
2499
+ (a[15] => z[14]) = 0;
2500
+ (a[16] => z[14]) = 0;
2501
+ (a[17] => z[14]) = 0;
2502
+ (a[18] => z[14]) = 0;
2503
+ (a[19] => z[14]) = 0;
2504
+ (b[0] => z[14]) = 0;
2505
+ (b[1] => z[14]) = 0;
2506
+ (b[2] => z[14]) = 0;
2507
+ (b[3] => z[14]) = 0;
2508
+ (b[4] => z[14]) = 0;
2509
+ (b[5] => z[14]) = 0;
2510
+ (b[6] => z[14]) = 0;
2511
+ (b[7] => z[14]) = 0;
2512
+ (b[8] => z[14]) = 0;
2513
+ (b[9] => z[14]) = 0;
2514
+ (b[10] => z[14]) = 0;
2515
+ (b[11] => z[14]) = 0;
2516
+ (b[12] => z[14]) = 0;
2517
+ (b[13] => z[14]) = 0;
2518
+ (b[14] => z[14]) = 0;
2519
+ (b[15] => z[14]) = 0;
2520
+ (b[16] => z[14]) = 0;
2521
+ (b[17] => z[14]) = 0;
2522
+ (a[0] => z[15]) = 0;
2523
+ (a[1] => z[15]) = 0;
2524
+ (a[2] => z[15]) = 0;
2525
+ (a[3] => z[15]) = 0;
2526
+ (a[4] => z[15]) = 0;
2527
+ (a[5] => z[15]) = 0;
2528
+ (a[6] => z[15]) = 0;
2529
+ (a[7] => z[15]) = 0;
2530
+ (a[8] => z[15]) = 0;
2531
+ (a[9] => z[15]) = 0;
2532
+ (a[10] => z[15]) = 0;
2533
+ (a[11] => z[15]) = 0;
2534
+ (a[12] => z[15]) = 0;
2535
+ (a[13] => z[15]) = 0;
2536
+ (a[14] => z[15]) = 0;
2537
+ (a[15] => z[15]) = 0;
2538
+ (a[16] => z[15]) = 0;
2539
+ (a[17] => z[15]) = 0;
2540
+ (a[18] => z[15]) = 0;
2541
+ (a[19] => z[15]) = 0;
2542
+ (b[0] => z[15]) = 0;
2543
+ (b[1] => z[15]) = 0;
2544
+ (b[2] => z[15]) = 0;
2545
+ (b[3] => z[15]) = 0;
2546
+ (b[4] => z[15]) = 0;
2547
+ (b[5] => z[15]) = 0;
2548
+ (b[6] => z[15]) = 0;
2549
+ (b[7] => z[15]) = 0;
2550
+ (b[8] => z[15]) = 0;
2551
+ (b[9] => z[15]) = 0;
2552
+ (b[10] => z[15]) = 0;
2553
+ (b[11] => z[15]) = 0;
2554
+ (b[12] => z[15]) = 0;
2555
+ (b[13] => z[15]) = 0;
2556
+ (b[14] => z[15]) = 0;
2557
+ (b[15] => z[15]) = 0;
2558
+ (b[16] => z[15]) = 0;
2559
+ (b[17] => z[15]) = 0;
2560
+ (a[0] => z[16]) = 0;
2561
+ (a[1] => z[16]) = 0;
2562
+ (a[2] => z[16]) = 0;
2563
+ (a[3] => z[16]) = 0;
2564
+ (a[4] => z[16]) = 0;
2565
+ (a[5] => z[16]) = 0;
2566
+ (a[6] => z[16]) = 0;
2567
+ (a[7] => z[16]) = 0;
2568
+ (a[8] => z[16]) = 0;
2569
+ (a[9] => z[16]) = 0;
2570
+ (a[10] => z[16]) = 0;
2571
+ (a[11] => z[16]) = 0;
2572
+ (a[12] => z[16]) = 0;
2573
+ (a[13] => z[16]) = 0;
2574
+ (a[14] => z[16]) = 0;
2575
+ (a[15] => z[16]) = 0;
2576
+ (a[16] => z[16]) = 0;
2577
+ (a[17] => z[16]) = 0;
2578
+ (a[18] => z[16]) = 0;
2579
+ (a[19] => z[16]) = 0;
2580
+ (b[0] => z[16]) = 0;
2581
+ (b[1] => z[16]) = 0;
2582
+ (b[2] => z[16]) = 0;
2583
+ (b[3] => z[16]) = 0;
2584
+ (b[4] => z[16]) = 0;
2585
+ (b[5] => z[16]) = 0;
2586
+ (b[6] => z[16]) = 0;
2587
+ (b[7] => z[16]) = 0;
2588
+ (b[8] => z[16]) = 0;
2589
+ (b[9] => z[16]) = 0;
2590
+ (b[10] => z[16]) = 0;
2591
+ (b[11] => z[16]) = 0;
2592
+ (b[12] => z[16]) = 0;
2593
+ (b[13] => z[16]) = 0;
2594
+ (b[14] => z[16]) = 0;
2595
+ (b[15] => z[16]) = 0;
2596
+ (b[16] => z[16]) = 0;
2597
+ (b[17] => z[16]) = 0;
2598
+ (a[0] => z[17]) = 0;
2599
+ (a[1] => z[17]) = 0;
2600
+ (a[2] => z[17]) = 0;
2601
+ (a[3] => z[17]) = 0;
2602
+ (a[4] => z[17]) = 0;
2603
+ (a[5] => z[17]) = 0;
2604
+ (a[6] => z[17]) = 0;
2605
+ (a[7] => z[17]) = 0;
2606
+ (a[8] => z[17]) = 0;
2607
+ (a[9] => z[17]) = 0;
2608
+ (a[10] => z[17]) = 0;
2609
+ (a[11] => z[17]) = 0;
2610
+ (a[12] => z[17]) = 0;
2611
+ (a[13] => z[17]) = 0;
2612
+ (a[14] => z[17]) = 0;
2613
+ (a[15] => z[17]) = 0;
2614
+ (a[16] => z[17]) = 0;
2615
+ (a[17] => z[17]) = 0;
2616
+ (a[18] => z[17]) = 0;
2617
+ (a[19] => z[17]) = 0;
2618
+ (b[0] => z[17]) = 0;
2619
+ (b[1] => z[17]) = 0;
2620
+ (b[2] => z[17]) = 0;
2621
+ (b[3] => z[17]) = 0;
2622
+ (b[4] => z[17]) = 0;
2623
+ (b[5] => z[17]) = 0;
2624
+ (b[6] => z[17]) = 0;
2625
+ (b[7] => z[17]) = 0;
2626
+ (b[8] => z[17]) = 0;
2627
+ (b[9] => z[17]) = 0;
2628
+ (b[10] => z[17]) = 0;
2629
+ (b[11] => z[17]) = 0;
2630
+ (b[12] => z[17]) = 0;
2631
+ (b[13] => z[17]) = 0;
2632
+ (b[14] => z[17]) = 0;
2633
+ (b[15] => z[17]) = 0;
2634
+ (b[16] => z[17]) = 0;
2635
+ (b[17] => z[17]) = 0;
2636
+ (a[0] => z[18]) = 0;
2637
+ (a[1] => z[18]) = 0;
2638
+ (a[2] => z[18]) = 0;
2639
+ (a[3] => z[18]) = 0;
2640
+ (a[4] => z[18]) = 0;
2641
+ (a[5] => z[18]) = 0;
2642
+ (a[6] => z[18]) = 0;
2643
+ (a[7] => z[18]) = 0;
2644
+ (a[8] => z[18]) = 0;
2645
+ (a[9] => z[18]) = 0;
2646
+ (a[10] => z[18]) = 0;
2647
+ (a[11] => z[18]) = 0;
2648
+ (a[12] => z[18]) = 0;
2649
+ (a[13] => z[18]) = 0;
2650
+ (a[14] => z[18]) = 0;
2651
+ (a[15] => z[18]) = 0;
2652
+ (a[16] => z[18]) = 0;
2653
+ (a[17] => z[18]) = 0;
2654
+ (a[18] => z[18]) = 0;
2655
+ (a[19] => z[18]) = 0;
2656
+ (b[0] => z[18]) = 0;
2657
+ (b[1] => z[18]) = 0;
2658
+ (b[2] => z[18]) = 0;
2659
+ (b[3] => z[18]) = 0;
2660
+ (b[4] => z[18]) = 0;
2661
+ (b[5] => z[18]) = 0;
2662
+ (b[6] => z[18]) = 0;
2663
+ (b[7] => z[18]) = 0;
2664
+ (b[8] => z[18]) = 0;
2665
+ (b[9] => z[18]) = 0;
2666
+ (b[10] => z[18]) = 0;
2667
+ (b[11] => z[18]) = 0;
2668
+ (b[12] => z[18]) = 0;
2669
+ (b[13] => z[18]) = 0;
2670
+ (b[14] => z[18]) = 0;
2671
+ (b[15] => z[18]) = 0;
2672
+ (b[16] => z[18]) = 0;
2673
+ (b[17] => z[18]) = 0;
2674
+ (a[0] => z[19]) = 0;
2675
+ (a[1] => z[19]) = 0;
2676
+ (a[2] => z[19]) = 0;
2677
+ (a[3] => z[19]) = 0;
2678
+ (a[4] => z[19]) = 0;
2679
+ (a[5] => z[19]) = 0;
2680
+ (a[6] => z[19]) = 0;
2681
+ (a[7] => z[19]) = 0;
2682
+ (a[8] => z[19]) = 0;
2683
+ (a[9] => z[19]) = 0;
2684
+ (a[10] => z[19]) = 0;
2685
+ (a[11] => z[19]) = 0;
2686
+ (a[12] => z[19]) = 0;
2687
+ (a[13] => z[19]) = 0;
2688
+ (a[14] => z[19]) = 0;
2689
+ (a[15] => z[19]) = 0;
2690
+ (a[16] => z[19]) = 0;
2691
+ (a[17] => z[19]) = 0;
2692
+ (a[18] => z[19]) = 0;
2693
+ (a[19] => z[19]) = 0;
2694
+ (b[0] => z[19]) = 0;
2695
+ (b[1] => z[19]) = 0;
2696
+ (b[2] => z[19]) = 0;
2697
+ (b[3] => z[19]) = 0;
2698
+ (b[4] => z[19]) = 0;
2699
+ (b[5] => z[19]) = 0;
2700
+ (b[6] => z[19]) = 0;
2701
+ (b[7] => z[19]) = 0;
2702
+ (b[8] => z[19]) = 0;
2703
+ (b[9] => z[19]) = 0;
2704
+ (b[10] => z[19]) = 0;
2705
+ (b[11] => z[19]) = 0;
2706
+ (b[12] => z[19]) = 0;
2707
+ (b[13] => z[19]) = 0;
2708
+ (b[14] => z[19]) = 0;
2709
+ (b[15] => z[19]) = 0;
2710
+ (b[16] => z[19]) = 0;
2711
+ (b[17] => z[19]) = 0;
2712
+ (a[0] => z[20]) = 0;
2713
+ (a[1] => z[20]) = 0;
2714
+ (a[2] => z[20]) = 0;
2715
+ (a[3] => z[20]) = 0;
2716
+ (a[4] => z[20]) = 0;
2717
+ (a[5] => z[20]) = 0;
2718
+ (a[6] => z[20]) = 0;
2719
+ (a[7] => z[20]) = 0;
2720
+ (a[8] => z[20]) = 0;
2721
+ (a[9] => z[20]) = 0;
2722
+ (a[10] => z[20]) = 0;
2723
+ (a[11] => z[20]) = 0;
2724
+ (a[12] => z[20]) = 0;
2725
+ (a[13] => z[20]) = 0;
2726
+ (a[14] => z[20]) = 0;
2727
+ (a[15] => z[20]) = 0;
2728
+ (a[16] => z[20]) = 0;
2729
+ (a[17] => z[20]) = 0;
2730
+ (a[18] => z[20]) = 0;
2731
+ (a[19] => z[20]) = 0;
2732
+ (b[0] => z[20]) = 0;
2733
+ (b[1] => z[20]) = 0;
2734
+ (b[2] => z[20]) = 0;
2735
+ (b[3] => z[20]) = 0;
2736
+ (b[4] => z[20]) = 0;
2737
+ (b[5] => z[20]) = 0;
2738
+ (b[6] => z[20]) = 0;
2739
+ (b[7] => z[20]) = 0;
2740
+ (b[8] => z[20]) = 0;
2741
+ (b[9] => z[20]) = 0;
2742
+ (b[10] => z[20]) = 0;
2743
+ (b[11] => z[20]) = 0;
2744
+ (b[12] => z[20]) = 0;
2745
+ (b[13] => z[20]) = 0;
2746
+ (b[14] => z[20]) = 0;
2747
+ (b[15] => z[20]) = 0;
2748
+ (b[16] => z[20]) = 0;
2749
+ (b[17] => z[20]) = 0;
2750
+ (a[0] => z[21]) = 0;
2751
+ (a[1] => z[21]) = 0;
2752
+ (a[2] => z[21]) = 0;
2753
+ (a[3] => z[21]) = 0;
2754
+ (a[4] => z[21]) = 0;
2755
+ (a[5] => z[21]) = 0;
2756
+ (a[6] => z[21]) = 0;
2757
+ (a[7] => z[21]) = 0;
2758
+ (a[8] => z[21]) = 0;
2759
+ (a[9] => z[21]) = 0;
2760
+ (a[10] => z[21]) = 0;
2761
+ (a[11] => z[21]) = 0;
2762
+ (a[12] => z[21]) = 0;
2763
+ (a[13] => z[21]) = 0;
2764
+ (a[14] => z[21]) = 0;
2765
+ (a[15] => z[21]) = 0;
2766
+ (a[16] => z[21]) = 0;
2767
+ (a[17] => z[21]) = 0;
2768
+ (a[18] => z[21]) = 0;
2769
+ (a[19] => z[21]) = 0;
2770
+ (b[0] => z[21]) = 0;
2771
+ (b[1] => z[21]) = 0;
2772
+ (b[2] => z[21]) = 0;
2773
+ (b[3] => z[21]) = 0;
2774
+ (b[4] => z[21]) = 0;
2775
+ (b[5] => z[21]) = 0;
2776
+ (b[6] => z[21]) = 0;
2777
+ (b[7] => z[21]) = 0;
2778
+ (b[8] => z[21]) = 0;
2779
+ (b[9] => z[21]) = 0;
2780
+ (b[10] => z[21]) = 0;
2781
+ (b[11] => z[21]) = 0;
2782
+ (b[12] => z[21]) = 0;
2783
+ (b[13] => z[21]) = 0;
2784
+ (b[14] => z[21]) = 0;
2785
+ (b[15] => z[21]) = 0;
2786
+ (b[16] => z[21]) = 0;
2787
+ (b[17] => z[21]) = 0;
2788
+ (a[0] => z[22]) = 0;
2789
+ (a[1] => z[22]) = 0;
2790
+ (a[2] => z[22]) = 0;
2791
+ (a[3] => z[22]) = 0;
2792
+ (a[4] => z[22]) = 0;
2793
+ (a[5] => z[22]) = 0;
2794
+ (a[6] => z[22]) = 0;
2795
+ (a[7] => z[22]) = 0;
2796
+ (a[8] => z[22]) = 0;
2797
+ (a[9] => z[22]) = 0;
2798
+ (a[10] => z[22]) = 0;
2799
+ (a[11] => z[22]) = 0;
2800
+ (a[12] => z[22]) = 0;
2801
+ (a[13] => z[22]) = 0;
2802
+ (a[14] => z[22]) = 0;
2803
+ (a[15] => z[22]) = 0;
2804
+ (a[16] => z[22]) = 0;
2805
+ (a[17] => z[22]) = 0;
2806
+ (a[18] => z[22]) = 0;
2807
+ (a[19] => z[22]) = 0;
2808
+ (b[0] => z[22]) = 0;
2809
+ (b[1] => z[22]) = 0;
2810
+ (b[2] => z[22]) = 0;
2811
+ (b[3] => z[22]) = 0;
2812
+ (b[4] => z[22]) = 0;
2813
+ (b[5] => z[22]) = 0;
2814
+ (b[6] => z[22]) = 0;
2815
+ (b[7] => z[22]) = 0;
2816
+ (b[8] => z[22]) = 0;
2817
+ (b[9] => z[22]) = 0;
2818
+ (b[10] => z[22]) = 0;
2819
+ (b[11] => z[22]) = 0;
2820
+ (b[12] => z[22]) = 0;
2821
+ (b[13] => z[22]) = 0;
2822
+ (b[14] => z[22]) = 0;
2823
+ (b[15] => z[22]) = 0;
2824
+ (b[16] => z[22]) = 0;
2825
+ (b[17] => z[22]) = 0;
2826
+ (a[0] => z[23]) = 0;
2827
+ (a[1] => z[23]) = 0;
2828
+ (a[2] => z[23]) = 0;
2829
+ (a[3] => z[23]) = 0;
2830
+ (a[4] => z[23]) = 0;
2831
+ (a[5] => z[23]) = 0;
2832
+ (a[6] => z[23]) = 0;
2833
+ (a[7] => z[23]) = 0;
2834
+ (a[8] => z[23]) = 0;
2835
+ (a[9] => z[23]) = 0;
2836
+ (a[10] => z[23]) = 0;
2837
+ (a[11] => z[23]) = 0;
2838
+ (a[12] => z[23]) = 0;
2839
+ (a[13] => z[23]) = 0;
2840
+ (a[14] => z[23]) = 0;
2841
+ (a[15] => z[23]) = 0;
2842
+ (a[16] => z[23]) = 0;
2843
+ (a[17] => z[23]) = 0;
2844
+ (a[18] => z[23]) = 0;
2845
+ (a[19] => z[23]) = 0;
2846
+ (b[0] => z[23]) = 0;
2847
+ (b[1] => z[23]) = 0;
2848
+ (b[2] => z[23]) = 0;
2849
+ (b[3] => z[23]) = 0;
2850
+ (b[4] => z[23]) = 0;
2851
+ (b[5] => z[23]) = 0;
2852
+ (b[6] => z[23]) = 0;
2853
+ (b[7] => z[23]) = 0;
2854
+ (b[8] => z[23]) = 0;
2855
+ (b[9] => z[23]) = 0;
2856
+ (b[10] => z[23]) = 0;
2857
+ (b[11] => z[23]) = 0;
2858
+ (b[12] => z[23]) = 0;
2859
+ (b[13] => z[23]) = 0;
2860
+ (b[14] => z[23]) = 0;
2861
+ (b[15] => z[23]) = 0;
2862
+ (b[16] => z[23]) = 0;
2863
+ (b[17] => z[23]) = 0;
2864
+ (a[0] => z[24]) = 0;
2865
+ (a[1] => z[24]) = 0;
2866
+ (a[2] => z[24]) = 0;
2867
+ (a[3] => z[24]) = 0;
2868
+ (a[4] => z[24]) = 0;
2869
+ (a[5] => z[24]) = 0;
2870
+ (a[6] => z[24]) = 0;
2871
+ (a[7] => z[24]) = 0;
2872
+ (a[8] => z[24]) = 0;
2873
+ (a[9] => z[24]) = 0;
2874
+ (a[10] => z[24]) = 0;
2875
+ (a[11] => z[24]) = 0;
2876
+ (a[12] => z[24]) = 0;
2877
+ (a[13] => z[24]) = 0;
2878
+ (a[14] => z[24]) = 0;
2879
+ (a[15] => z[24]) = 0;
2880
+ (a[16] => z[24]) = 0;
2881
+ (a[17] => z[24]) = 0;
2882
+ (a[18] => z[24]) = 0;
2883
+ (a[19] => z[24]) = 0;
2884
+ (b[0] => z[24]) = 0;
2885
+ (b[1] => z[24]) = 0;
2886
+ (b[2] => z[24]) = 0;
2887
+ (b[3] => z[24]) = 0;
2888
+ (b[4] => z[24]) = 0;
2889
+ (b[5] => z[24]) = 0;
2890
+ (b[6] => z[24]) = 0;
2891
+ (b[7] => z[24]) = 0;
2892
+ (b[8] => z[24]) = 0;
2893
+ (b[9] => z[24]) = 0;
2894
+ (b[10] => z[24]) = 0;
2895
+ (b[11] => z[24]) = 0;
2896
+ (b[12] => z[24]) = 0;
2897
+ (b[13] => z[24]) = 0;
2898
+ (b[14] => z[24]) = 0;
2899
+ (b[15] => z[24]) = 0;
2900
+ (b[16] => z[24]) = 0;
2901
+ (b[17] => z[24]) = 0;
2902
+ (a[0] => z[25]) = 0;
2903
+ (a[1] => z[25]) = 0;
2904
+ (a[2] => z[25]) = 0;
2905
+ (a[3] => z[25]) = 0;
2906
+ (a[4] => z[25]) = 0;
2907
+ (a[5] => z[25]) = 0;
2908
+ (a[6] => z[25]) = 0;
2909
+ (a[7] => z[25]) = 0;
2910
+ (a[8] => z[25]) = 0;
2911
+ (a[9] => z[25]) = 0;
2912
+ (a[10] => z[25]) = 0;
2913
+ (a[11] => z[25]) = 0;
2914
+ (a[12] => z[25]) = 0;
2915
+ (a[13] => z[25]) = 0;
2916
+ (a[14] => z[25]) = 0;
2917
+ (a[15] => z[25]) = 0;
2918
+ (a[16] => z[25]) = 0;
2919
+ (a[17] => z[25]) = 0;
2920
+ (a[18] => z[25]) = 0;
2921
+ (a[19] => z[25]) = 0;
2922
+ (b[0] => z[25]) = 0;
2923
+ (b[1] => z[25]) = 0;
2924
+ (b[2] => z[25]) = 0;
2925
+ (b[3] => z[25]) = 0;
2926
+ (b[4] => z[25]) = 0;
2927
+ (b[5] => z[25]) = 0;
2928
+ (b[6] => z[25]) = 0;
2929
+ (b[7] => z[25]) = 0;
2930
+ (b[8] => z[25]) = 0;
2931
+ (b[9] => z[25]) = 0;
2932
+ (b[10] => z[25]) = 0;
2933
+ (b[11] => z[25]) = 0;
2934
+ (b[12] => z[25]) = 0;
2935
+ (b[13] => z[25]) = 0;
2936
+ (b[14] => z[25]) = 0;
2937
+ (b[15] => z[25]) = 0;
2938
+ (b[16] => z[25]) = 0;
2939
+ (b[17] => z[25]) = 0;
2940
+ (a[0] => z[26]) = 0;
2941
+ (a[1] => z[26]) = 0;
2942
+ (a[2] => z[26]) = 0;
2943
+ (a[3] => z[26]) = 0;
2944
+ (a[4] => z[26]) = 0;
2945
+ (a[5] => z[26]) = 0;
2946
+ (a[6] => z[26]) = 0;
2947
+ (a[7] => z[26]) = 0;
2948
+ (a[8] => z[26]) = 0;
2949
+ (a[9] => z[26]) = 0;
2950
+ (a[10] => z[26]) = 0;
2951
+ (a[11] => z[26]) = 0;
2952
+ (a[12] => z[26]) = 0;
2953
+ (a[13] => z[26]) = 0;
2954
+ (a[14] => z[26]) = 0;
2955
+ (a[15] => z[26]) = 0;
2956
+ (a[16] => z[26]) = 0;
2957
+ (a[17] => z[26]) = 0;
2958
+ (a[18] => z[26]) = 0;
2959
+ (a[19] => z[26]) = 0;
2960
+ (b[0] => z[26]) = 0;
2961
+ (b[1] => z[26]) = 0;
2962
+ (b[2] => z[26]) = 0;
2963
+ (b[3] => z[26]) = 0;
2964
+ (b[4] => z[26]) = 0;
2965
+ (b[5] => z[26]) = 0;
2966
+ (b[6] => z[26]) = 0;
2967
+ (b[7] => z[26]) = 0;
2968
+ (b[8] => z[26]) = 0;
2969
+ (b[9] => z[26]) = 0;
2970
+ (b[10] => z[26]) = 0;
2971
+ (b[11] => z[26]) = 0;
2972
+ (b[12] => z[26]) = 0;
2973
+ (b[13] => z[26]) = 0;
2974
+ (b[14] => z[26]) = 0;
2975
+ (b[15] => z[26]) = 0;
2976
+ (b[16] => z[26]) = 0;
2977
+ (b[17] => z[26]) = 0;
2978
+ (a[0] => z[27]) = 0;
2979
+ (a[1] => z[27]) = 0;
2980
+ (a[2] => z[27]) = 0;
2981
+ (a[3] => z[27]) = 0;
2982
+ (a[4] => z[27]) = 0;
2983
+ (a[5] => z[27]) = 0;
2984
+ (a[6] => z[27]) = 0;
2985
+ (a[7] => z[27]) = 0;
2986
+ (a[8] => z[27]) = 0;
2987
+ (a[9] => z[27]) = 0;
2988
+ (a[10] => z[27]) = 0;
2989
+ (a[11] => z[27]) = 0;
2990
+ (a[12] => z[27]) = 0;
2991
+ (a[13] => z[27]) = 0;
2992
+ (a[14] => z[27]) = 0;
2993
+ (a[15] => z[27]) = 0;
2994
+ (a[16] => z[27]) = 0;
2995
+ (a[17] => z[27]) = 0;
2996
+ (a[18] => z[27]) = 0;
2997
+ (a[19] => z[27]) = 0;
2998
+ (b[0] => z[27]) = 0;
2999
+ (b[1] => z[27]) = 0;
3000
+ (b[2] => z[27]) = 0;
3001
+ (b[3] => z[27]) = 0;
3002
+ (b[4] => z[27]) = 0;
3003
+ (b[5] => z[27]) = 0;
3004
+ (b[6] => z[27]) = 0;
3005
+ (b[7] => z[27]) = 0;
3006
+ (b[8] => z[27]) = 0;
3007
+ (b[9] => z[27]) = 0;
3008
+ (b[10] => z[27]) = 0;
3009
+ (b[11] => z[27]) = 0;
3010
+ (b[12] => z[27]) = 0;
3011
+ (b[13] => z[27]) = 0;
3012
+ (b[14] => z[27]) = 0;
3013
+ (b[15] => z[27]) = 0;
3014
+ (b[16] => z[27]) = 0;
3015
+ (b[17] => z[27]) = 0;
3016
+ (a[0] => z[28]) = 0;
3017
+ (a[1] => z[28]) = 0;
3018
+ (a[2] => z[28]) = 0;
3019
+ (a[3] => z[28]) = 0;
3020
+ (a[4] => z[28]) = 0;
3021
+ (a[5] => z[28]) = 0;
3022
+ (a[6] => z[28]) = 0;
3023
+ (a[7] => z[28]) = 0;
3024
+ (a[8] => z[28]) = 0;
3025
+ (a[9] => z[28]) = 0;
3026
+ (a[10] => z[28]) = 0;
3027
+ (a[11] => z[28]) = 0;
3028
+ (a[12] => z[28]) = 0;
3029
+ (a[13] => z[28]) = 0;
3030
+ (a[14] => z[28]) = 0;
3031
+ (a[15] => z[28]) = 0;
3032
+ (a[16] => z[28]) = 0;
3033
+ (a[17] => z[28]) = 0;
3034
+ (a[18] => z[28]) = 0;
3035
+ (a[19] => z[28]) = 0;
3036
+ (b[0] => z[28]) = 0;
3037
+ (b[1] => z[28]) = 0;
3038
+ (b[2] => z[28]) = 0;
3039
+ (b[3] => z[28]) = 0;
3040
+ (b[4] => z[28]) = 0;
3041
+ (b[5] => z[28]) = 0;
3042
+ (b[6] => z[28]) = 0;
3043
+ (b[7] => z[28]) = 0;
3044
+ (b[8] => z[28]) = 0;
3045
+ (b[9] => z[28]) = 0;
3046
+ (b[10] => z[28]) = 0;
3047
+ (b[11] => z[28]) = 0;
3048
+ (b[12] => z[28]) = 0;
3049
+ (b[13] => z[28]) = 0;
3050
+ (b[14] => z[28]) = 0;
3051
+ (b[15] => z[28]) = 0;
3052
+ (b[16] => z[28]) = 0;
3053
+ (b[17] => z[28]) = 0;
3054
+ (a[0] => z[29]) = 0;
3055
+ (a[1] => z[29]) = 0;
3056
+ (a[2] => z[29]) = 0;
3057
+ (a[3] => z[29]) = 0;
3058
+ (a[4] => z[29]) = 0;
3059
+ (a[5] => z[29]) = 0;
3060
+ (a[6] => z[29]) = 0;
3061
+ (a[7] => z[29]) = 0;
3062
+ (a[8] => z[29]) = 0;
3063
+ (a[9] => z[29]) = 0;
3064
+ (a[10] => z[29]) = 0;
3065
+ (a[11] => z[29]) = 0;
3066
+ (a[12] => z[29]) = 0;
3067
+ (a[13] => z[29]) = 0;
3068
+ (a[14] => z[29]) = 0;
3069
+ (a[15] => z[29]) = 0;
3070
+ (a[16] => z[29]) = 0;
3071
+ (a[17] => z[29]) = 0;
3072
+ (a[18] => z[29]) = 0;
3073
+ (a[19] => z[29]) = 0;
3074
+ (b[0] => z[29]) = 0;
3075
+ (b[1] => z[29]) = 0;
3076
+ (b[2] => z[29]) = 0;
3077
+ (b[3] => z[29]) = 0;
3078
+ (b[4] => z[29]) = 0;
3079
+ (b[5] => z[29]) = 0;
3080
+ (b[6] => z[29]) = 0;
3081
+ (b[7] => z[29]) = 0;
3082
+ (b[8] => z[29]) = 0;
3083
+ (b[9] => z[29]) = 0;
3084
+ (b[10] => z[29]) = 0;
3085
+ (b[11] => z[29]) = 0;
3086
+ (b[12] => z[29]) = 0;
3087
+ (b[13] => z[29]) = 0;
3088
+ (b[14] => z[29]) = 0;
3089
+ (b[15] => z[29]) = 0;
3090
+ (b[16] => z[29]) = 0;
3091
+ (b[17] => z[29]) = 0;
3092
+ (a[0] => z[30]) = 0;
3093
+ (a[1] => z[30]) = 0;
3094
+ (a[2] => z[30]) = 0;
3095
+ (a[3] => z[30]) = 0;
3096
+ (a[4] => z[30]) = 0;
3097
+ (a[5] => z[30]) = 0;
3098
+ (a[6] => z[30]) = 0;
3099
+ (a[7] => z[30]) = 0;
3100
+ (a[8] => z[30]) = 0;
3101
+ (a[9] => z[30]) = 0;
3102
+ (a[10] => z[30]) = 0;
3103
+ (a[11] => z[30]) = 0;
3104
+ (a[12] => z[30]) = 0;
3105
+ (a[13] => z[30]) = 0;
3106
+ (a[14] => z[30]) = 0;
3107
+ (a[15] => z[30]) = 0;
3108
+ (a[16] => z[30]) = 0;
3109
+ (a[17] => z[30]) = 0;
3110
+ (a[18] => z[30]) = 0;
3111
+ (a[19] => z[30]) = 0;
3112
+ (b[0] => z[30]) = 0;
3113
+ (b[1] => z[30]) = 0;
3114
+ (b[2] => z[30]) = 0;
3115
+ (b[3] => z[30]) = 0;
3116
+ (b[4] => z[30]) = 0;
3117
+ (b[5] => z[30]) = 0;
3118
+ (b[6] => z[30]) = 0;
3119
+ (b[7] => z[30]) = 0;
3120
+ (b[8] => z[30]) = 0;
3121
+ (b[9] => z[30]) = 0;
3122
+ (b[10] => z[30]) = 0;
3123
+ (b[11] => z[30]) = 0;
3124
+ (b[12] => z[30]) = 0;
3125
+ (b[13] => z[30]) = 0;
3126
+ (b[14] => z[30]) = 0;
3127
+ (b[15] => z[30]) = 0;
3128
+ (b[16] => z[30]) = 0;
3129
+ (b[17] => z[30]) = 0;
3130
+ (a[0] => z[31]) = 0;
3131
+ (a[1] => z[31]) = 0;
3132
+ (a[2] => z[31]) = 0;
3133
+ (a[3] => z[31]) = 0;
3134
+ (a[4] => z[31]) = 0;
3135
+ (a[5] => z[31]) = 0;
3136
+ (a[6] => z[31]) = 0;
3137
+ (a[7] => z[31]) = 0;
3138
+ (a[8] => z[31]) = 0;
3139
+ (a[9] => z[31]) = 0;
3140
+ (a[10] => z[31]) = 0;
3141
+ (a[11] => z[31]) = 0;
3142
+ (a[12] => z[31]) = 0;
3143
+ (a[13] => z[31]) = 0;
3144
+ (a[14] => z[31]) = 0;
3145
+ (a[15] => z[31]) = 0;
3146
+ (a[16] => z[31]) = 0;
3147
+ (a[17] => z[31]) = 0;
3148
+ (a[18] => z[31]) = 0;
3149
+ (a[19] => z[31]) = 0;
3150
+ (b[0] => z[31]) = 0;
3151
+ (b[1] => z[31]) = 0;
3152
+ (b[2] => z[31]) = 0;
3153
+ (b[3] => z[31]) = 0;
3154
+ (b[4] => z[31]) = 0;
3155
+ (b[5] => z[31]) = 0;
3156
+ (b[6] => z[31]) = 0;
3157
+ (b[7] => z[31]) = 0;
3158
+ (b[8] => z[31]) = 0;
3159
+ (b[9] => z[31]) = 0;
3160
+ (b[10] => z[31]) = 0;
3161
+ (b[11] => z[31]) = 0;
3162
+ (b[12] => z[31]) = 0;
3163
+ (b[13] => z[31]) = 0;
3164
+ (b[14] => z[31]) = 0;
3165
+ (b[15] => z[31]) = 0;
3166
+ (b[16] => z[31]) = 0;
3167
+ (b[17] => z[31]) = 0;
3168
+ (a[0] => z[32]) = 0;
3169
+ (a[1] => z[32]) = 0;
3170
+ (a[2] => z[32]) = 0;
3171
+ (a[3] => z[32]) = 0;
3172
+ (a[4] => z[32]) = 0;
3173
+ (a[5] => z[32]) = 0;
3174
+ (a[6] => z[32]) = 0;
3175
+ (a[7] => z[32]) = 0;
3176
+ (a[8] => z[32]) = 0;
3177
+ (a[9] => z[32]) = 0;
3178
+ (a[10] => z[32]) = 0;
3179
+ (a[11] => z[32]) = 0;
3180
+ (a[12] => z[32]) = 0;
3181
+ (a[13] => z[32]) = 0;
3182
+ (a[14] => z[32]) = 0;
3183
+ (a[15] => z[32]) = 0;
3184
+ (a[16] => z[32]) = 0;
3185
+ (a[17] => z[32]) = 0;
3186
+ (a[18] => z[32]) = 0;
3187
+ (a[19] => z[32]) = 0;
3188
+ (b[0] => z[32]) = 0;
3189
+ (b[1] => z[32]) = 0;
3190
+ (b[2] => z[32]) = 0;
3191
+ (b[3] => z[32]) = 0;
3192
+ (b[4] => z[32]) = 0;
3193
+ (b[5] => z[32]) = 0;
3194
+ (b[6] => z[32]) = 0;
3195
+ (b[7] => z[32]) = 0;
3196
+ (b[8] => z[32]) = 0;
3197
+ (b[9] => z[32]) = 0;
3198
+ (b[10] => z[32]) = 0;
3199
+ (b[11] => z[32]) = 0;
3200
+ (b[12] => z[32]) = 0;
3201
+ (b[13] => z[32]) = 0;
3202
+ (b[14] => z[32]) = 0;
3203
+ (b[15] => z[32]) = 0;
3204
+ (b[16] => z[32]) = 0;
3205
+ (b[17] => z[32]) = 0;
3206
+ (a[0] => z[33]) = 0;
3207
+ (a[1] => z[33]) = 0;
3208
+ (a[2] => z[33]) = 0;
3209
+ (a[3] => z[33]) = 0;
3210
+ (a[4] => z[33]) = 0;
3211
+ (a[5] => z[33]) = 0;
3212
+ (a[6] => z[33]) = 0;
3213
+ (a[7] => z[33]) = 0;
3214
+ (a[8] => z[33]) = 0;
3215
+ (a[9] => z[33]) = 0;
3216
+ (a[10] => z[33]) = 0;
3217
+ (a[11] => z[33]) = 0;
3218
+ (a[12] => z[33]) = 0;
3219
+ (a[13] => z[33]) = 0;
3220
+ (a[14] => z[33]) = 0;
3221
+ (a[15] => z[33]) = 0;
3222
+ (a[16] => z[33]) = 0;
3223
+ (a[17] => z[33]) = 0;
3224
+ (a[18] => z[33]) = 0;
3225
+ (a[19] => z[33]) = 0;
3226
+ (b[0] => z[33]) = 0;
3227
+ (b[1] => z[33]) = 0;
3228
+ (b[2] => z[33]) = 0;
3229
+ (b[3] => z[33]) = 0;
3230
+ (b[4] => z[33]) = 0;
3231
+ (b[5] => z[33]) = 0;
3232
+ (b[6] => z[33]) = 0;
3233
+ (b[7] => z[33]) = 0;
3234
+ (b[8] => z[33]) = 0;
3235
+ (b[9] => z[33]) = 0;
3236
+ (b[10] => z[33]) = 0;
3237
+ (b[11] => z[33]) = 0;
3238
+ (b[12] => z[33]) = 0;
3239
+ (b[13] => z[33]) = 0;
3240
+ (b[14] => z[33]) = 0;
3241
+ (b[15] => z[33]) = 0;
3242
+ (b[16] => z[33]) = 0;
3243
+ (b[17] => z[33]) = 0;
3244
+ (a[0] => z[34]) = 0;
3245
+ (a[1] => z[34]) = 0;
3246
+ (a[2] => z[34]) = 0;
3247
+ (a[3] => z[34]) = 0;
3248
+ (a[4] => z[34]) = 0;
3249
+ (a[5] => z[34]) = 0;
3250
+ (a[6] => z[34]) = 0;
3251
+ (a[7] => z[34]) = 0;
3252
+ (a[8] => z[34]) = 0;
3253
+ (a[9] => z[34]) = 0;
3254
+ (a[10] => z[34]) = 0;
3255
+ (a[11] => z[34]) = 0;
3256
+ (a[12] => z[34]) = 0;
3257
+ (a[13] => z[34]) = 0;
3258
+ (a[14] => z[34]) = 0;
3259
+ (a[15] => z[34]) = 0;
3260
+ (a[16] => z[34]) = 0;
3261
+ (a[17] => z[34]) = 0;
3262
+ (a[18] => z[34]) = 0;
3263
+ (a[19] => z[34]) = 0;
3264
+ (b[0] => z[34]) = 0;
3265
+ (b[1] => z[34]) = 0;
3266
+ (b[2] => z[34]) = 0;
3267
+ (b[3] => z[34]) = 0;
3268
+ (b[4] => z[34]) = 0;
3269
+ (b[5] => z[34]) = 0;
3270
+ (b[6] => z[34]) = 0;
3271
+ (b[7] => z[34]) = 0;
3272
+ (b[8] => z[34]) = 0;
3273
+ (b[9] => z[34]) = 0;
3274
+ (b[10] => z[34]) = 0;
3275
+ (b[11] => z[34]) = 0;
3276
+ (b[12] => z[34]) = 0;
3277
+ (b[13] => z[34]) = 0;
3278
+ (b[14] => z[34]) = 0;
3279
+ (b[15] => z[34]) = 0;
3280
+ (b[16] => z[34]) = 0;
3281
+ (b[17] => z[34]) = 0;
3282
+ (a[0] => z[35]) = 0;
3283
+ (a[1] => z[35]) = 0;
3284
+ (a[2] => z[35]) = 0;
3285
+ (a[3] => z[35]) = 0;
3286
+ (a[4] => z[35]) = 0;
3287
+ (a[5] => z[35]) = 0;
3288
+ (a[6] => z[35]) = 0;
3289
+ (a[7] => z[35]) = 0;
3290
+ (a[8] => z[35]) = 0;
3291
+ (a[9] => z[35]) = 0;
3292
+ (a[10] => z[35]) = 0;
3293
+ (a[11] => z[35]) = 0;
3294
+ (a[12] => z[35]) = 0;
3295
+ (a[13] => z[35]) = 0;
3296
+ (a[14] => z[35]) = 0;
3297
+ (a[15] => z[35]) = 0;
3298
+ (a[16] => z[35]) = 0;
3299
+ (a[17] => z[35]) = 0;
3300
+ (a[18] => z[35]) = 0;
3301
+ (a[19] => z[35]) = 0;
3302
+ (b[0] => z[35]) = 0;
3303
+ (b[1] => z[35]) = 0;
3304
+ (b[2] => z[35]) = 0;
3305
+ (b[3] => z[35]) = 0;
3306
+ (b[4] => z[35]) = 0;
3307
+ (b[5] => z[35]) = 0;
3308
+ (b[6] => z[35]) = 0;
3309
+ (b[7] => z[35]) = 0;
3310
+ (b[8] => z[35]) = 0;
3311
+ (b[9] => z[35]) = 0;
3312
+ (b[10] => z[35]) = 0;
3313
+ (b[11] => z[35]) = 0;
3314
+ (b[12] => z[35]) = 0;
3315
+ (b[13] => z[35]) = 0;
3316
+ (b[14] => z[35]) = 0;
3317
+ (b[15] => z[35]) = 0;
3318
+ (b[16] => z[35]) = 0;
3319
+ (b[17] => z[35]) = 0;
3320
+ (a[0] => z[36]) = 0;
3321
+ (a[1] => z[36]) = 0;
3322
+ (a[2] => z[36]) = 0;
3323
+ (a[3] => z[36]) = 0;
3324
+ (a[4] => z[36]) = 0;
3325
+ (a[5] => z[36]) = 0;
3326
+ (a[6] => z[36]) = 0;
3327
+ (a[7] => z[36]) = 0;
3328
+ (a[8] => z[36]) = 0;
3329
+ (a[9] => z[36]) = 0;
3330
+ (a[10] => z[36]) = 0;
3331
+ (a[11] => z[36]) = 0;
3332
+ (a[12] => z[36]) = 0;
3333
+ (a[13] => z[36]) = 0;
3334
+ (a[14] => z[36]) = 0;
3335
+ (a[15] => z[36]) = 0;
3336
+ (a[16] => z[36]) = 0;
3337
+ (a[17] => z[36]) = 0;
3338
+ (a[18] => z[36]) = 0;
3339
+ (a[19] => z[36]) = 0;
3340
+ (b[0] => z[36]) = 0;
3341
+ (b[1] => z[36]) = 0;
3342
+ (b[2] => z[36]) = 0;
3343
+ (b[3] => z[36]) = 0;
3344
+ (b[4] => z[36]) = 0;
3345
+ (b[5] => z[36]) = 0;
3346
+ (b[6] => z[36]) = 0;
3347
+ (b[7] => z[36]) = 0;
3348
+ (b[8] => z[36]) = 0;
3349
+ (b[9] => z[36]) = 0;
3350
+ (b[10] => z[36]) = 0;
3351
+ (b[11] => z[36]) = 0;
3352
+ (b[12] => z[36]) = 0;
3353
+ (b[13] => z[36]) = 0;
3354
+ (b[14] => z[36]) = 0;
3355
+ (b[15] => z[36]) = 0;
3356
+ (b[16] => z[36]) = 0;
3357
+ (b[17] => z[36]) = 0;
3358
+ (a[0] => z[37]) = 0;
3359
+ (a[1] => z[37]) = 0;
3360
+ (a[2] => z[37]) = 0;
3361
+ (a[3] => z[37]) = 0;
3362
+ (a[4] => z[37]) = 0;
3363
+ (a[5] => z[37]) = 0;
3364
+ (a[6] => z[37]) = 0;
3365
+ (a[7] => z[37]) = 0;
3366
+ (a[8] => z[37]) = 0;
3367
+ (a[9] => z[37]) = 0;
3368
+ (a[10] => z[37]) = 0;
3369
+ (a[11] => z[37]) = 0;
3370
+ (a[12] => z[37]) = 0;
3371
+ (a[13] => z[37]) = 0;
3372
+ (a[14] => z[37]) = 0;
3373
+ (a[15] => z[37]) = 0;
3374
+ (a[16] => z[37]) = 0;
3375
+ (a[17] => z[37]) = 0;
3376
+ (a[18] => z[37]) = 0;
3377
+ (a[19] => z[37]) = 0;
3378
+ (b[0] => z[37]) = 0;
3379
+ (b[1] => z[37]) = 0;
3380
+ (b[2] => z[37]) = 0;
3381
+ (b[3] => z[37]) = 0;
3382
+ (b[4] => z[37]) = 0;
3383
+ (b[5] => z[37]) = 0;
3384
+ (b[6] => z[37]) = 0;
3385
+ (b[7] => z[37]) = 0;
3386
+ (b[8] => z[37]) = 0;
3387
+ (b[9] => z[37]) = 0;
3388
+ (b[10] => z[37]) = 0;
3389
+ (b[11] => z[37]) = 0;
3390
+ (b[12] => z[37]) = 0;
3391
+ (b[13] => z[37]) = 0;
3392
+ (b[14] => z[37]) = 0;
3393
+ (b[15] => z[37]) = 0;
3394
+ (b[16] => z[37]) = 0;
3395
+ (b[17] => z[37]) = 0;
3396
+ (subtract => z[0]) = 0;
3397
+ (subtract => z[1]) = 0;
3398
+ (subtract => z[2]) = 0;
3399
+ (subtract => z[3]) = 0;
3400
+ (subtract => z[4]) = 0;
3401
+ (subtract => z[5]) = 0;
3402
+ (subtract => z[6]) = 0;
3403
+ (subtract => z[7]) = 0;
3404
+ (subtract => z[8]) = 0;
3405
+ (subtract => z[9]) = 0;
3406
+ (subtract => z[10]) = 0;
3407
+ (subtract => z[11]) = 0;
3408
+ (subtract => z[12]) = 0;
3409
+ (subtract => z[13]) = 0;
3410
+ (subtract => z[14]) = 0;
3411
+ (subtract => z[15]) = 0;
3412
+ (subtract => z[16]) = 0;
3413
+ (subtract => z[17]) = 0;
3414
+ (subtract => z[18]) = 0;
3415
+ (subtract => z[19]) = 0;
3416
+ (subtract => z[20]) = 0;
3417
+ (subtract => z[21]) = 0;
3418
+ (subtract => z[22]) = 0;
3419
+ (subtract => z[23]) = 0;
3420
+ (subtract => z[24]) = 0;
3421
+ (subtract => z[25]) = 0;
3422
+ (subtract => z[26]) = 0;
3423
+ (subtract => z[27]) = 0;
3424
+ (subtract => z[28]) = 0;
3425
+ (subtract => z[29]) = 0;
3426
+ (subtract => z[30]) = 0;
3427
+ (subtract => z[31]) = 0;
3428
+ (subtract => z[32]) = 0;
3429
+ (subtract => z[33]) = 0;
3430
+ (subtract => z[34]) = 0;
3431
+ (subtract => z[35]) = 0;
3432
+ (subtract => z[36]) = 0;
3433
+ (subtract => z[37]) = 0;
3434
+ (acc_fir[0] => z[0]) = 0;
3435
+ (acc_fir[1] => z[0]) = 0;
3436
+ (acc_fir[2] => z[0]) = 0;
3437
+ (acc_fir[3] => z[0]) = 0;
3438
+ (acc_fir[4] => z[0]) = 0;
3439
+ (acc_fir[5] => z[0]) = 0;
3440
+ (acc_fir[0] => z[1]) = 0;
3441
+ (acc_fir[1] => z[1]) = 0;
3442
+ (acc_fir[2] => z[1]) = 0;
3443
+ (acc_fir[3] => z[1]) = 0;
3444
+ (acc_fir[4] => z[1]) = 0;
3445
+ (acc_fir[5] => z[1]) = 0;
3446
+ (acc_fir[0] => z[2]) = 0;
3447
+ (acc_fir[1] => z[2]) = 0;
3448
+ (acc_fir[2] => z[2]) = 0;
3449
+ (acc_fir[3] => z[2]) = 0;
3450
+ (acc_fir[4] => z[2]) = 0;
3451
+ (acc_fir[5] => z[2]) = 0;
3452
+ (acc_fir[0] => z[3]) = 0;
3453
+ (acc_fir[1] => z[3]) = 0;
3454
+ (acc_fir[2] => z[3]) = 0;
3455
+ (acc_fir[3] => z[3]) = 0;
3456
+ (acc_fir[4] => z[3]) = 0;
3457
+ (acc_fir[5] => z[3]) = 0;
3458
+ (acc_fir[0] => z[4]) = 0;
3459
+ (acc_fir[1] => z[4]) = 0;
3460
+ (acc_fir[2] => z[4]) = 0;
3461
+ (acc_fir[3] => z[4]) = 0;
3462
+ (acc_fir[4] => z[4]) = 0;
3463
+ (acc_fir[5] => z[4]) = 0;
3464
+ (acc_fir[0] => z[5]) = 0;
3465
+ (acc_fir[1] => z[5]) = 0;
3466
+ (acc_fir[2] => z[5]) = 0;
3467
+ (acc_fir[3] => z[5]) = 0;
3468
+ (acc_fir[4] => z[5]) = 0;
3469
+ (acc_fir[5] => z[5]) = 0;
3470
+ (acc_fir[0] => z[6]) = 0;
3471
+ (acc_fir[1] => z[6]) = 0;
3472
+ (acc_fir[2] => z[6]) = 0;
3473
+ (acc_fir[3] => z[6]) = 0;
3474
+ (acc_fir[4] => z[6]) = 0;
3475
+ (acc_fir[5] => z[6]) = 0;
3476
+ (acc_fir[0] => z[7]) = 0;
3477
+ (acc_fir[1] => z[7]) = 0;
3478
+ (acc_fir[2] => z[7]) = 0;
3479
+ (acc_fir[3] => z[7]) = 0;
3480
+ (acc_fir[4] => z[7]) = 0;
3481
+ (acc_fir[5] => z[7]) = 0;
3482
+ (acc_fir[0] => z[8]) = 0;
3483
+ (acc_fir[1] => z[8]) = 0;
3484
+ (acc_fir[2] => z[8]) = 0;
3485
+ (acc_fir[3] => z[8]) = 0;
3486
+ (acc_fir[4] => z[8]) = 0;
3487
+ (acc_fir[5] => z[8]) = 0;
3488
+ (acc_fir[0] => z[9]) = 0;
3489
+ (acc_fir[1] => z[9]) = 0;
3490
+ (acc_fir[2] => z[9]) = 0;
3491
+ (acc_fir[3] => z[9]) = 0;
3492
+ (acc_fir[4] => z[9]) = 0;
3493
+ (acc_fir[5] => z[9]) = 0;
3494
+ (acc_fir[0] => z[10]) = 0;
3495
+ (acc_fir[1] => z[10]) = 0;
3496
+ (acc_fir[2] => z[10]) = 0;
3497
+ (acc_fir[3] => z[10]) = 0;
3498
+ (acc_fir[4] => z[10]) = 0;
3499
+ (acc_fir[5] => z[10]) = 0;
3500
+ (acc_fir[0] => z[11]) = 0;
3501
+ (acc_fir[1] => z[11]) = 0;
3502
+ (acc_fir[2] => z[11]) = 0;
3503
+ (acc_fir[3] => z[11]) = 0;
3504
+ (acc_fir[4] => z[11]) = 0;
3505
+ (acc_fir[5] => z[11]) = 0;
3506
+ (acc_fir[0] => z[12]) = 0;
3507
+ (acc_fir[1] => z[12]) = 0;
3508
+ (acc_fir[2] => z[12]) = 0;
3509
+ (acc_fir[3] => z[12]) = 0;
3510
+ (acc_fir[4] => z[12]) = 0;
3511
+ (acc_fir[5] => z[12]) = 0;
3512
+ (acc_fir[0] => z[13]) = 0;
3513
+ (acc_fir[1] => z[13]) = 0;
3514
+ (acc_fir[2] => z[13]) = 0;
3515
+ (acc_fir[3] => z[13]) = 0;
3516
+ (acc_fir[4] => z[13]) = 0;
3517
+ (acc_fir[5] => z[13]) = 0;
3518
+ (acc_fir[0] => z[14]) = 0;
3519
+ (acc_fir[1] => z[14]) = 0;
3520
+ (acc_fir[2] => z[14]) = 0;
3521
+ (acc_fir[3] => z[14]) = 0;
3522
+ (acc_fir[4] => z[14]) = 0;
3523
+ (acc_fir[5] => z[14]) = 0;
3524
+ (acc_fir[0] => z[15]) = 0;
3525
+ (acc_fir[1] => z[15]) = 0;
3526
+ (acc_fir[2] => z[15]) = 0;
3527
+ (acc_fir[3] => z[15]) = 0;
3528
+ (acc_fir[4] => z[15]) = 0;
3529
+ (acc_fir[5] => z[15]) = 0;
3530
+ (acc_fir[0] => z[16]) = 0;
3531
+ (acc_fir[1] => z[16]) = 0;
3532
+ (acc_fir[2] => z[16]) = 0;
3533
+ (acc_fir[3] => z[16]) = 0;
3534
+ (acc_fir[4] => z[16]) = 0;
3535
+ (acc_fir[5] => z[16]) = 0;
3536
+ (acc_fir[0] => z[17]) = 0;
3537
+ (acc_fir[1] => z[17]) = 0;
3538
+ (acc_fir[2] => z[17]) = 0;
3539
+ (acc_fir[3] => z[17]) = 0;
3540
+ (acc_fir[4] => z[17]) = 0;
3541
+ (acc_fir[5] => z[17]) = 0;
3542
+ (acc_fir[0] => z[18]) = 0;
3543
+ (acc_fir[1] => z[18]) = 0;
3544
+ (acc_fir[2] => z[18]) = 0;
3545
+ (acc_fir[3] => z[18]) = 0;
3546
+ (acc_fir[4] => z[18]) = 0;
3547
+ (acc_fir[5] => z[18]) = 0;
3548
+ (acc_fir[0] => z[19]) = 0;
3549
+ (acc_fir[1] => z[19]) = 0;
3550
+ (acc_fir[2] => z[19]) = 0;
3551
+ (acc_fir[3] => z[19]) = 0;
3552
+ (acc_fir[4] => z[19]) = 0;
3553
+ (acc_fir[5] => z[19]) = 0;
3554
+ (acc_fir[0] => z[20]) = 0;
3555
+ (acc_fir[1] => z[20]) = 0;
3556
+ (acc_fir[2] => z[20]) = 0;
3557
+ (acc_fir[3] => z[20]) = 0;
3558
+ (acc_fir[4] => z[20]) = 0;
3559
+ (acc_fir[5] => z[20]) = 0;
3560
+ (acc_fir[0] => z[21]) = 0;
3561
+ (acc_fir[1] => z[21]) = 0;
3562
+ (acc_fir[2] => z[21]) = 0;
3563
+ (acc_fir[3] => z[21]) = 0;
3564
+ (acc_fir[4] => z[21]) = 0;
3565
+ (acc_fir[5] => z[21]) = 0;
3566
+ (acc_fir[0] => z[22]) = 0;
3567
+ (acc_fir[1] => z[22]) = 0;
3568
+ (acc_fir[2] => z[22]) = 0;
3569
+ (acc_fir[3] => z[22]) = 0;
3570
+ (acc_fir[4] => z[22]) = 0;
3571
+ (acc_fir[5] => z[22]) = 0;
3572
+ (acc_fir[0] => z[23]) = 0;
3573
+ (acc_fir[1] => z[23]) = 0;
3574
+ (acc_fir[2] => z[23]) = 0;
3575
+ (acc_fir[3] => z[23]) = 0;
3576
+ (acc_fir[4] => z[23]) = 0;
3577
+ (acc_fir[5] => z[23]) = 0;
3578
+ (acc_fir[0] => z[24]) = 0;
3579
+ (acc_fir[1] => z[24]) = 0;
3580
+ (acc_fir[2] => z[24]) = 0;
3581
+ (acc_fir[3] => z[24]) = 0;
3582
+ (acc_fir[4] => z[24]) = 0;
3583
+ (acc_fir[5] => z[24]) = 0;
3584
+ (acc_fir[0] => z[25]) = 0;
3585
+ (acc_fir[1] => z[25]) = 0;
3586
+ (acc_fir[2] => z[25]) = 0;
3587
+ (acc_fir[3] => z[25]) = 0;
3588
+ (acc_fir[4] => z[25]) = 0;
3589
+ (acc_fir[5] => z[25]) = 0;
3590
+ (acc_fir[0] => z[26]) = 0;
3591
+ (acc_fir[1] => z[26]) = 0;
3592
+ (acc_fir[2] => z[26]) = 0;
3593
+ (acc_fir[3] => z[26]) = 0;
3594
+ (acc_fir[4] => z[26]) = 0;
3595
+ (acc_fir[5] => z[26]) = 0;
3596
+ (acc_fir[0] => z[27]) = 0;
3597
+ (acc_fir[1] => z[27]) = 0;
3598
+ (acc_fir[2] => z[27]) = 0;
3599
+ (acc_fir[3] => z[27]) = 0;
3600
+ (acc_fir[4] => z[27]) = 0;
3601
+ (acc_fir[5] => z[27]) = 0;
3602
+ (acc_fir[0] => z[28]) = 0;
3603
+ (acc_fir[1] => z[28]) = 0;
3604
+ (acc_fir[2] => z[28]) = 0;
3605
+ (acc_fir[3] => z[28]) = 0;
3606
+ (acc_fir[4] => z[28]) = 0;
3607
+ (acc_fir[5] => z[28]) = 0;
3608
+ (acc_fir[0] => z[29]) = 0;
3609
+ (acc_fir[1] => z[29]) = 0;
3610
+ (acc_fir[2] => z[29]) = 0;
3611
+ (acc_fir[3] => z[29]) = 0;
3612
+ (acc_fir[4] => z[29]) = 0;
3613
+ (acc_fir[5] => z[29]) = 0;
3614
+ (acc_fir[0] => z[30]) = 0;
3615
+ (acc_fir[1] => z[30]) = 0;
3616
+ (acc_fir[2] => z[30]) = 0;
3617
+ (acc_fir[3] => z[30]) = 0;
3618
+ (acc_fir[4] => z[30]) = 0;
3619
+ (acc_fir[5] => z[30]) = 0;
3620
+ (acc_fir[0] => z[31]) = 0;
3621
+ (acc_fir[1] => z[31]) = 0;
3622
+ (acc_fir[2] => z[31]) = 0;
3623
+ (acc_fir[3] => z[31]) = 0;
3624
+ (acc_fir[4] => z[31]) = 0;
3625
+ (acc_fir[5] => z[31]) = 0;
3626
+ (acc_fir[0] => z[32]) = 0;
3627
+ (acc_fir[1] => z[32]) = 0;
3628
+ (acc_fir[2] => z[32]) = 0;
3629
+ (acc_fir[3] => z[32]) = 0;
3630
+ (acc_fir[4] => z[32]) = 0;
3631
+ (acc_fir[5] => z[32]) = 0;
3632
+ (acc_fir[0] => z[33]) = 0;
3633
+ (acc_fir[1] => z[33]) = 0;
3634
+ (acc_fir[2] => z[33]) = 0;
3635
+ (acc_fir[3] => z[33]) = 0;
3636
+ (acc_fir[4] => z[33]) = 0;
3637
+ (acc_fir[5] => z[33]) = 0;
3638
+ (acc_fir[0] => z[34]) = 0;
3639
+ (acc_fir[1] => z[34]) = 0;
3640
+ (acc_fir[2] => z[34]) = 0;
3641
+ (acc_fir[3] => z[34]) = 0;
3642
+ (acc_fir[4] => z[34]) = 0;
3643
+ (acc_fir[5] => z[34]) = 0;
3644
+ (acc_fir[0] => z[35]) = 0;
3645
+ (acc_fir[1] => z[35]) = 0;
3646
+ (acc_fir[2] => z[35]) = 0;
3647
+ (acc_fir[3] => z[35]) = 0;
3648
+ (acc_fir[4] => z[35]) = 0;
3649
+ (acc_fir[5] => z[35]) = 0;
3650
+ (acc_fir[0] => z[36]) = 0;
3651
+ (acc_fir[1] => z[36]) = 0;
3652
+ (acc_fir[2] => z[36]) = 0;
3653
+ (acc_fir[3] => z[36]) = 0;
3654
+ (acc_fir[4] => z[36]) = 0;
3655
+ (acc_fir[5] => z[36]) = 0;
3656
+ (acc_fir[0] => z[37]) = 0;
3657
+ (acc_fir[1] => z[37]) = 0;
3658
+ (acc_fir[2] => z[37]) = 0;
3659
+ (acc_fir[3] => z[37]) = 0;
3660
+ (acc_fir[4] => z[37]) = 0;
3661
+ (acc_fir[5] => z[37]) = 0;
3662
+ endspecify
3663
+ `endif
3664
+
3665
+ endmodule
3666
+
3667
+ module QL_DSP2_MULTADD_REGIN (
3668
+ input wire [19:0] a,
3669
+ input wire [17:0] b,
3670
+ output wire [37:0] z,
3671
+
3672
+ (* clkbuf_sink *)
3673
+ input wire clk,
3674
+ input wire reset,
3675
+
3676
+ input wire [ 2:0] feedback,
3677
+ input wire [ 5:0] acc_fir,
3678
+ input wire load_acc,
3679
+ input wire unsigned_a,
3680
+ input wire unsigned_b,
3681
+
3682
+ input wire f_mode,
3683
+ input wire [ 2:0] output_select,
3684
+ input wire saturate_enable,
3685
+ input wire [ 5:0] shift_right,
3686
+ input wire round,
3687
+ input wire subtract,
3688
+ input wire register_inputs
3689
+ );
3690
+
3691
+ parameter [79:0] MODE_BITS = 80'd0;
3692
+
3693
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
3694
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
3695
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
3696
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
3697
+
3698
+ QL_DSP2 #(
3699
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
3700
+ ) dsp (
3701
+ .a(a),
3702
+ .b(b),
3703
+ .dly_b(),
3704
+ .z(z),
3705
+
3706
+ .f_mode(f_mode),
3707
+
3708
+ .feedback(feedback),
3709
+ .acc_fir(acc_fir),
3710
+ .load_acc(load_acc),
3711
+
3712
+ .unsigned_a(unsigned_a),
3713
+ .unsigned_b(unsigned_b),
3714
+
3715
+ .clk(clk),
3716
+ .reset(reset),
3717
+
3718
+ .output_select(output_select), // unregistered output: ACCin (2, 3)
3719
+ .saturate_enable(saturate_enable),
3720
+ .shift_right(shift_right),
3721
+ .round(round),
3722
+ .subtract(subtract),
3723
+ .register_inputs(register_inputs) // registered inputs
3724
+ );
3725
+
3726
+ `ifdef SDF_SIM
3727
+ specify
3728
+ (posedge clk => (z +: a)) = 0;
3729
+ (posedge clk => (z +: b)) = 0;
3730
+ $setuphold(posedge clk, a, 0, 0);
3731
+ $setuphold(posedge clk, b, 0, 0);
3732
+ $setuphold(posedge clk, feedback, 0, 0);
3733
+ $setuphold(posedge clk, load_acc, 0, 0);
3734
+ $setuphold(posedge clk, subtract, 0, 0);
3735
+ $setuphold(posedge clk, acc_fir, 0, 0);
3736
+ endspecify
3737
+ `endif
3738
+
3739
+ endmodule
3740
+
3741
+ module QL_DSP2_MULTADD_REGOUT (
3742
+ input wire [19:0] a,
3743
+ input wire [17:0] b,
3744
+ output wire [37:0] z,
3745
+
3746
+ (* clkbuf_sink *)
3747
+ input wire clk,
3748
+ input wire reset,
3749
+
3750
+ input wire [ 2:0] feedback,
3751
+ input wire [ 5:0] acc_fir,
3752
+ input wire load_acc,
3753
+ input wire unsigned_a,
3754
+ input wire unsigned_b,
3755
+
3756
+ input wire f_mode,
3757
+ input wire [ 2:0] output_select,
3758
+ input wire saturate_enable,
3759
+ input wire [ 5:0] shift_right,
3760
+ input wire round,
3761
+ input wire subtract,
3762
+ input wire register_inputs
3763
+ );
3764
+
3765
+ parameter [79:0] MODE_BITS = 80'd0;
3766
+
3767
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
3768
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
3769
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
3770
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
3771
+
3772
+ QL_DSP2 #(
3773
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
3774
+ ) dsp (
3775
+ .a(a),
3776
+ .b(b),
3777
+ .dly_b(),
3778
+ .z(z),
3779
+
3780
+ .f_mode(f_mode),
3781
+
3782
+ .feedback(feedback),
3783
+ .acc_fir(acc_fir),
3784
+ .load_acc(load_acc),
3785
+
3786
+ .unsigned_a(unsigned_a),
3787
+ .unsigned_b(unsigned_b),
3788
+
3789
+ .clk(clk),
3790
+ .reset(reset),
3791
+
3792
+ .output_select(output_select), // registered output: ACCin (6, 7)
3793
+ .saturate_enable(saturate_enable),
3794
+ .shift_right(shift_right),
3795
+ .round(round),
3796
+ .subtract(subtract),
3797
+ .register_inputs(register_inputs) // unregistered inputs
3798
+ );
3799
+
3800
+ `ifdef SDF_SIM
3801
+ specify
3802
+ (posedge clk => (z +: a)) = 0;
3803
+ (posedge clk => (z +: b)) = 0;
3804
+ $setuphold(posedge clk, a, 0, 0);
3805
+ $setuphold(posedge clk, b, 0, 0);
3806
+ $setuphold(posedge clk, feedback, 0, 0);
3807
+ $setuphold(posedge clk, load_acc, 0, 0);
3808
+ $setuphold(posedge clk, subtract, 0, 0);
3809
+ $setuphold(posedge clk, acc_fir, 0, 0);
3810
+ endspecify
3811
+ `endif
3812
+
3813
+ endmodule
3814
+
3815
+ module QL_DSP2_MULTADD_REGIN_REGOUT (
3816
+ input wire [19:0] a,
3817
+ input wire [17:0] b,
3818
+ output wire [37:0] z,
3819
+
3820
+ (* clkbuf_sink *)
3821
+ input wire clk,
3822
+ input wire reset,
3823
+
3824
+ input wire [ 2:0] feedback,
3825
+ input wire [ 5:0] acc_fir,
3826
+ input wire load_acc,
3827
+ input wire unsigned_a,
3828
+ input wire unsigned_b,
3829
+
3830
+ input wire f_mode,
3831
+ input wire [ 2:0] output_select,
3832
+ input wire saturate_enable,
3833
+ input wire [ 5:0] shift_right,
3834
+ input wire round,
3835
+ input wire subtract,
3836
+ input wire register_inputs
3837
+ );
3838
+
3839
+ parameter [79:0] MODE_BITS = 80'd0;
3840
+
3841
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
3842
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
3843
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
3844
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
3845
+
3846
+ QL_DSP2 #(
3847
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
3848
+ ) dsp (
3849
+ .a(a),
3850
+ .b(b),
3851
+ .dly_b(),
3852
+ .z(z),
3853
+
3854
+ .f_mode(f_mode),
3855
+
3856
+ .feedback(feedback),
3857
+ .acc_fir(acc_fir),
3858
+ .load_acc(load_acc),
3859
+
3860
+ .unsigned_a(unsigned_a),
3861
+ .unsigned_b(unsigned_b),
3862
+
3863
+ .clk(clk),
3864
+ .reset(reset),
3865
+
3866
+ .output_select(output_select), // registered output: ACCin (6, 7)
3867
+ .saturate_enable(saturate_enable),
3868
+ .shift_right(shift_right),
3869
+ .round(round),
3870
+ .subtract(subtract),
3871
+ .register_inputs(register_inputs) // registered inputs
3872
+ );
3873
+
3874
+ `ifdef SDF_SIM
3875
+ specify
3876
+ (posedge clk => (z +: a)) = 0;
3877
+ (posedge clk => (z +: b)) = 0;
3878
+ $setuphold(posedge clk, a, 0, 0);
3879
+ $setuphold(posedge clk, b, 0, 0);
3880
+ $setuphold(posedge clk, feedback, 0, 0);
3881
+ $setuphold(posedge clk, load_acc, 0, 0);
3882
+ $setuphold(posedge clk, subtract, 0, 0);
3883
+ $setuphold(posedge clk, acc_fir, 0, 0);
3884
+ endspecify
3885
+ `endif
3886
+
3887
+ endmodule
3888
+
3889
+ module QL_DSP2_MULTACC (
3890
+ input wire [19:0] a,
3891
+ input wire [17:0] b,
3892
+ output wire [37:0] z,
3893
+
3894
+ (* clkbuf_sink *)
3895
+ input wire clk,
3896
+ input wire reset,
3897
+
3898
+ input wire load_acc,
3899
+ input wire [ 2:0] feedback,
3900
+ input wire unsigned_a,
3901
+ input wire unsigned_b,
3902
+
3903
+ input wire f_mode,
3904
+ input wire [ 2:0] output_select,
3905
+ input wire saturate_enable,
3906
+ input wire [ 5:0] shift_right,
3907
+ input wire round,
3908
+ input wire subtract,
3909
+ input wire register_inputs
3910
+ );
3911
+
3912
+ parameter [79:0] MODE_BITS = 80'd0;
3913
+
3914
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
3915
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
3916
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
3917
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
3918
+
3919
+ QL_DSP2 #(
3920
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
3921
+ ) dsp (
3922
+ .a(a),
3923
+ .b(b),
3924
+ .acc_fir(6'b0),
3925
+ .z(z),
3926
+ .dly_b(),
3927
+
3928
+ .f_mode(f_mode),
3929
+
3930
+ .feedback(feedback),
3931
+ .load_acc(load_acc),
3932
+
3933
+ .unsigned_a(unsigned_a),
3934
+ .unsigned_b(unsigned_b),
3935
+
3936
+ .clk(clk),
3937
+ .reset(reset),
3938
+
3939
+ .output_select(output_select), // unregistered output: ACCout (1)
3940
+ .saturate_enable(saturate_enable),
3941
+ .shift_right(shift_right),
3942
+ .round(round),
3943
+ .subtract(subtract),
3944
+ .register_inputs(register_inputs) // unregistered inputs
3945
+ );
3946
+
3947
+ `ifdef SDF_SIM
3948
+ specify
3949
+ (posedge clk => (z +: a)) = 0;
3950
+ (posedge clk => (z +: b)) = 0;
3951
+ $setuphold(posedge clk, a, 0, 0);
3952
+ $setuphold(posedge clk, b, 0, 0);
3953
+ $setuphold(posedge clk, feedback, 0, 0);
3954
+ $setuphold(posedge clk, load_acc, 0, 0);
3955
+ $setuphold(posedge clk, subtract, 0, 0);
3956
+ endspecify
3957
+ `endif
3958
+
3959
+ endmodule
3960
+
3961
+ module QL_DSP2_MULTACC_REGIN (
3962
+ input wire [19:0] a,
3963
+ input wire [17:0] b,
3964
+ output wire [37:0] z,
3965
+
3966
+ (* clkbuf_sink *)
3967
+ input wire clk,
3968
+ input wire reset,
3969
+
3970
+ input wire [ 2:0] feedback,
3971
+ input wire load_acc,
3972
+ input wire unsigned_a,
3973
+ input wire unsigned_b,
3974
+
3975
+ input wire f_mode,
3976
+ input wire [ 2:0] output_select,
3977
+ input wire saturate_enable,
3978
+ input wire [ 5:0] shift_right,
3979
+ input wire round,
3980
+ input wire subtract,
3981
+ input wire register_inputs
3982
+ );
3983
+
3984
+ parameter [79:0] MODE_BITS = 80'd0;
3985
+
3986
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
3987
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
3988
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
3989
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
3990
+
3991
+ QL_DSP2 #(
3992
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
3993
+ ) dsp (
3994
+ .a(a),
3995
+ .b(b),
3996
+ .acc_fir(6'b0),
3997
+ .z(z),
3998
+ .dly_b(),
3999
+
4000
+ .f_mode(f_mode),
4001
+
4002
+ .feedback(feedback),
4003
+ .load_acc(load_acc),
4004
+
4005
+ .unsigned_a(unsigned_a),
4006
+ .unsigned_b(unsigned_b),
4007
+
4008
+ .clk(clk),
4009
+ .reset(reset),
4010
+
4011
+ .output_select(output_select), // unregistered output: ACCout (1)
4012
+ .saturate_enable(saturate_enable),
4013
+ .shift_right(shift_right),
4014
+ .round(round),
4015
+ .subtract(subtract),
4016
+ .register_inputs(register_inputs) // registered inputs
4017
+ );
4018
+
4019
+ `ifdef SDF_SIM
4020
+ specify
4021
+ (posedge clk => (z +: a)) = 0;
4022
+ (posedge clk => (z +: b)) = 0;
4023
+ $setuphold(posedge clk, a, 0, 0);
4024
+ $setuphold(posedge clk, b, 0, 0);
4025
+ $setuphold(posedge clk, feedback, 0, 0);
4026
+ $setuphold(posedge clk, load_acc, 0, 0);
4027
+ $setuphold(posedge clk, subtract, 0, 0);
4028
+ endspecify
4029
+ `endif
4030
+
4031
+ endmodule
4032
+
4033
+ module QL_DSP2_MULTACC_REGOUT (
4034
+ input wire [19:0] a,
4035
+ input wire [17:0] b,
4036
+ output wire [37:0] z,
4037
+
4038
+ (* clkbuf_sink *)
4039
+ input wire clk,
4040
+ input wire reset,
4041
+
4042
+ input wire [ 2:0] feedback,
4043
+ input wire load_acc,
4044
+ input wire unsigned_a,
4045
+ input wire unsigned_b,
4046
+
4047
+ input wire f_mode,
4048
+ input wire [ 2:0] output_select,
4049
+ input wire saturate_enable,
4050
+ input wire [ 5:0] shift_right,
4051
+ input wire round,
4052
+ input wire subtract,
4053
+ input wire register_inputs
4054
+ );
4055
+
4056
+ parameter [79:0] MODE_BITS = 80'd0;
4057
+
4058
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
4059
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
4060
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
4061
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
4062
+
4063
+ QL_DSP2 #(
4064
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
4065
+ ) dsp (
4066
+ .a(a),
4067
+ .b(b),
4068
+ .acc_fir(6'b0),
4069
+ .z(z),
4070
+ .dly_b(),
4071
+
4072
+ .f_mode(f_mode),
4073
+
4074
+ .feedback(feedback),
4075
+ .load_acc(load_acc),
4076
+
4077
+ .unsigned_a(unsigned_a),
4078
+ .unsigned_b(unsigned_b),
4079
+
4080
+ .clk(clk),
4081
+ .reset(reset),
4082
+
4083
+ .output_select(output_select), // registered output: ACCout (5)
4084
+ .saturate_enable(saturate_enable),
4085
+ .shift_right(shift_right),
4086
+ .round(round),
4087
+ .subtract(subtract),
4088
+ .register_inputs(register_inputs) // unregistered inputs
4089
+ );
4090
+
4091
+ `ifdef SDF_SIM
4092
+ specify
4093
+ (posedge clk => (z +: a)) = 0;
4094
+ (posedge clk => (z +: b)) = 0;
4095
+ $setuphold(posedge clk, a, 0, 0);
4096
+ $setuphold(posedge clk, b, 0, 0);
4097
+ $setuphold(posedge clk, feedback, 0, 0);
4098
+ $setuphold(posedge clk, load_acc, 0, 0);
4099
+ $setuphold(posedge clk, subtract, 0, 0);
4100
+ endspecify
4101
+ `endif
4102
+
4103
+ endmodule
4104
+
4105
+ module QL_DSP2_MULTACC_REGIN_REGOUT (
4106
+ input wire [19:0] a,
4107
+ input wire [17:0] b,
4108
+ output wire [37:0] z,
4109
+
4110
+ (* clkbuf_sink *)
4111
+ input wire clk,
4112
+ input wire reset,
4113
+
4114
+ input wire [ 2:0] feedback,
4115
+ input wire load_acc,
4116
+ input wire unsigned_a,
4117
+ input wire unsigned_b,
4118
+
4119
+ input wire f_mode,
4120
+ input wire [ 2:0] output_select,
4121
+ input wire saturate_enable,
4122
+ input wire [ 5:0] shift_right,
4123
+ input wire round,
4124
+ input wire subtract,
4125
+ input wire register_inputs
4126
+ );
4127
+
4128
+ parameter [79:0] MODE_BITS = 80'd0;
4129
+
4130
+ localparam [19:0] COEFF_0 = MODE_BITS[19:0];
4131
+ localparam [19:0] COEFF_1 = MODE_BITS[39:20];
4132
+ localparam [19:0] COEFF_2 = MODE_BITS[59:40];
4133
+ localparam [19:0] COEFF_3 = MODE_BITS[79:60];
4134
+
4135
+ QL_DSP2 #(
4136
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
4137
+ ) dsp (
4138
+ .a(a),
4139
+ .b(b),
4140
+ .acc_fir(6'b0),
4141
+ .z(z),
4142
+ .dly_b(),
4143
+
4144
+ .f_mode(f_mode),
4145
+
4146
+ .feedback(feedback),
4147
+ .load_acc(load_acc),
4148
+
4149
+ .unsigned_a(unsigned_a),
4150
+ .unsigned_b(unsigned_b),
4151
+
4152
+ .clk(clk),
4153
+ .reset(reset),
4154
+
4155
+ .output_select(output_select), // registered output: ACCout (5)
4156
+ .saturate_enable(saturate_enable),
4157
+ .shift_right(shift_right),
4158
+ .round(round),
4159
+ .subtract(subtract),
4160
+ .register_inputs(register_inputs) // registered inputs
4161
+ );
4162
+
4163
+ `ifdef SDF_SIM
4164
+ specify
4165
+ (posedge clk => (z +: a)) = 0;
4166
+ (posedge clk => (z +: b)) = 0;
4167
+ $setuphold(posedge clk, a, 0, 0);
4168
+ $setuphold(posedge clk, b, 0, 0);
4169
+ $setuphold(posedge clk, feedback, 0, 0);
4170
+ $setuphold(posedge clk, load_acc, 0, 0);
4171
+ $setuphold(posedge clk, subtract, 0, 0);
4172
+ endspecify
4173
+ `endif
4174
+
4175
+ endmodule
4176
+
4177
+ module dsp_t1_20x18x64_cfg_ports (
4178
+ input wire [19:0] a_i,
4179
+ input wire [17:0] b_i,
4180
+ input wire [ 5:0] acc_fir_i,
4181
+ output wire [37:0] z_o,
4182
+ output wire [17:0] dly_b_o,
4183
+
4184
+ (* clkbuf_sink *)
4185
+ input wire clock_i,
4186
+ input wire reset_i,
4187
+
4188
+ input wire [ 2:0] feedback_i,
4189
+ input wire load_acc_i,
4190
+ input wire unsigned_a_i,
4191
+ input wire unsigned_b_i,
4192
+
4193
+ input wire [ 2:0] output_select_i,
4194
+ input wire saturate_enable_i,
4195
+ input wire [ 5:0] shift_right_i,
4196
+ input wire round_i,
4197
+ input wire subtract_i,
4198
+ input wire register_inputs_i
4199
+ );
4200
+
4201
+ parameter [19:0] COEFF_0 = 20'd0;
4202
+ parameter [19:0] COEFF_1 = 20'd0;
4203
+ parameter [19:0] COEFF_2 = 20'd0;
4204
+ parameter [19:0] COEFF_3 = 20'd0;
4205
+
4206
+ QL_DSP2 #(
4207
+ .MODE_BITS({COEFF_3, COEFF_2, COEFF_1, COEFF_0})
4208
+ ) dsp (
4209
+ .a(a_i),
4210
+ .b(b_i),
4211
+ .z(z_o),
4212
+ .dly_b(dly_b_o),
4213
+
4214
+ .f_mode(1'b0), // 20x18x64 DSP
4215
+
4216
+ .acc_fir(acc_fir_i),
4217
+ .feedback(feedback_i),
4218
+ .load_acc(load_acc_i),
4219
+
4220
+ .unsigned_a(unsigned_a_i),
4221
+ .unsigned_b(unsigned_b_i),
4222
+
4223
+ .clk(clock_i),
4224
+ .reset(reset_i),
4225
+
4226
+ .saturate_enable(saturate_enable_i),
4227
+ .output_select(output_select_i),
4228
+ .round(round_i),
4229
+ .shift_right(shift_right_i),
4230
+ .subtract(subtract_i),
4231
+ .register_inputs(register_inputs_i)
4232
+ );
4233
+ endmodule
4234
+
4235
+ module dsp_t1_10x9x32_cfg_ports (
4236
+ input wire [ 9:0] a_i,
4237
+ input wire [ 8:0] b_i,
4238
+ input wire [ 5:0] acc_fir_i,
4239
+ output wire [18:0] z_o,
4240
+ output wire [ 8:0] dly_b_o,
4241
+
4242
+ (* clkbuf_sink *)
4243
+ input wire clock_i,
4244
+ input wire reset_i,
4245
+
4246
+ input wire [ 2:0] feedback_i,
4247
+ input wire load_acc_i,
4248
+ input wire unsigned_a_i,
4249
+ input wire unsigned_b_i,
4250
+
4251
+ input wire [ 2:0] output_select_i,
4252
+ input wire saturate_enable_i,
4253
+ input wire [ 5:0] shift_right_i,
4254
+ input wire round_i,
4255
+ input wire subtract_i,
4256
+ input wire register_inputs_i
4257
+ );
4258
+
4259
+ parameter [9:0] COEFF_0 = 10'd0;
4260
+ parameter [9:0] COEFF_1 = 10'd0;
4261
+ parameter [9:0] COEFF_2 = 10'd0;
4262
+ parameter [9:0] COEFF_3 = 10'd0;
4263
+
4264
+ wire [18:0] z_rem;
4265
+ wire [8:0] dly_b_rem;
4266
+
4267
+ QL_DSP2 #(
4268
+ .MODE_BITS({10'd0, COEFF_3,
4269
+ 10'd0, COEFF_2,
4270
+ 10'd0, COEFF_1,
4271
+ 10'd0, COEFF_0})
4272
+ ) dsp (
4273
+ .a({10'd0, a_i}),
4274
+ .b({9'd0, b_i}),
4275
+ .z({z_rem, z_o}),
4276
+ .dly_b({dly_b_rem, dly_b_o}),
4277
+
4278
+ .f_mode(1'b1), // 10x9x32 DSP
4279
+
4280
+ .acc_fir(acc_fir_i),
4281
+ .feedback(feedback_i),
4282
+ .load_acc(load_acc_i),
4283
+
4284
+ .unsigned_a(unsigned_a_i),
4285
+ .unsigned_b(unsigned_b_i),
4286
+
4287
+ .clk(clock_i),
4288
+ .reset(reset_i),
4289
+
4290
+ .saturate_enable(saturate_enable_i),
4291
+ .output_select(output_select_i),
4292
+ .round(round_i),
4293
+ .shift_right(shift_right_i),
4294
+ .subtract(subtract_i),
4295
+ .register_inputs(register_inputs_i)
4296
+ );
4297
+ endmodule
4298
+
4299
+ module dsp_t1_sim_cfg_ports # (
4300
+ parameter NBITS_ACC = 64,
4301
+ parameter NBITS_A = 20,
4302
+ parameter NBITS_B = 18,
4303
+ parameter NBITS_Z = 38
4304
+ )(
4305
+ input wire [NBITS_A-1:0] a_i,
4306
+ input wire [NBITS_B-1:0] b_i,
4307
+ output wire [NBITS_Z-1:0] z_o,
4308
+ output reg [NBITS_B-1:0] dly_b_o,
4309
+
4310
+ input wire [5:0] acc_fir_i,
4311
+ input wire [2:0] feedback_i,
4312
+ input wire load_acc_i,
4313
+
4314
+ input wire unsigned_a_i,
4315
+ input wire unsigned_b_i,
4316
+
4317
+ input wire clock_i,
4318
+ input wire s_reset,
4319
+
4320
+ input wire saturate_enable_i,
4321
+ input wire [2:0] output_select_i,
4322
+ input wire round_i,
4323
+ input wire [5:0] shift_right_i,
4324
+ input wire subtract_i,
4325
+ input wire register_inputs_i,
4326
+ input wire [NBITS_A-1:0] coef_0_i,
4327
+ input wire [NBITS_A-1:0] coef_1_i,
4328
+ input wire [NBITS_A-1:0] coef_2_i,
4329
+ input wire [NBITS_A-1:0] coef_3_i
4330
+ );
4331
+
4332
+ // FIXME: The version of Icarus Verilog from Conda seems not to recognize the
4333
+ // $error macro. Disable this sanity check for now because of that.
4334
+
4335
+
4336
+ // Input registers
4337
+ reg [NBITS_A-1:0] r_a;
4338
+ reg [NBITS_B-1:0] r_b;
4339
+ reg [5:0] r_acc_fir;
4340
+ reg r_unsigned_a;
4341
+ reg r_unsigned_b;
4342
+ reg r_load_acc;
4343
+ reg [2:0] r_feedback;
4344
+ reg [5:0] r_shift_d1;
4345
+ reg [5:0] r_shift_d2;
4346
+ reg r_subtract;
4347
+ reg r_sat;
4348
+ reg r_rnd;
4349
+ reg [NBITS_ACC-1:0] acc;
4350
+
4351
+ initial begin
4352
+ r_a <= 0;
4353
+ r_b <= 0;
4354
+
4355
+ r_acc_fir <= 0;
4356
+ r_unsigned_a <= 0;
4357
+ r_unsigned_b <= 0;
4358
+ r_feedback <= 0;
4359
+ r_shift_d1 <= 0;
4360
+ r_shift_d2 <= 0;
4361
+ r_subtract <= 0;
4362
+ r_load_acc <= 0;
4363
+ r_sat <= 0;
4364
+ r_rnd <= 0;
4365
+ end
4366
+
4367
+ always @(posedge clock_i or posedge s_reset) begin
4368
+ if (s_reset) begin
4369
+
4370
+ r_a <= 'h0;
4371
+ r_b <= 'h0;
4372
+
4373
+ r_acc_fir <= 0;
4374
+ r_unsigned_a <= 0;
4375
+ r_unsigned_b <= 0;
4376
+ r_feedback <= 0;
4377
+ r_shift_d1 <= 0;
4378
+ r_shift_d2 <= 0;
4379
+ r_subtract <= 0;
4380
+ r_load_acc <= 0;
4381
+ r_sat <= 0;
4382
+ r_rnd <= 0;
4383
+
4384
+ end else begin
4385
+
4386
+ r_a <= a_i;
4387
+ r_b <= b_i;
4388
+
4389
+ r_acc_fir <= acc_fir_i;
4390
+ r_unsigned_a <= unsigned_a_i;
4391
+ r_unsigned_b <= unsigned_b_i;
4392
+ r_feedback <= feedback_i;
4393
+ r_shift_d1 <= shift_right_i;
4394
+ r_shift_d2 <= r_shift_d1;
4395
+ r_subtract <= subtract_i;
4396
+ r_load_acc <= load_acc_i;
4397
+ r_sat <= r_sat;
4398
+ r_rnd <= r_rnd;
4399
+
4400
+ end
4401
+ end
4402
+
4403
+ // Registered / non-registered input path select
4404
+ wire [NBITS_A-1:0] a = register_inputs_i ? r_a : a_i;
4405
+ wire [NBITS_B-1:0] b = register_inputs_i ? r_b : b_i;
4406
+
4407
+ wire [5:0] acc_fir = register_inputs_i ? r_acc_fir : acc_fir_i;
4408
+ wire unsigned_a = register_inputs_i ? r_unsigned_a : unsigned_a_i;
4409
+ wire unsigned_b = register_inputs_i ? r_unsigned_b : unsigned_b_i;
4410
+ wire [2:0] feedback = register_inputs_i ? r_feedback : feedback_i;
4411
+ wire load_acc = register_inputs_i ? r_load_acc : load_acc_i;
4412
+ wire subtract = register_inputs_i ? r_subtract : subtract_i;
4413
+ wire sat = register_inputs_i ? r_sat : saturate_enable_i;
4414
+ wire rnd = register_inputs_i ? r_rnd : round_i;
4415
+
4416
+ // Shift right control
4417
+ wire [5:0] shift_d1 = register_inputs_i ? r_shift_d1 : shift_right_i;
4418
+ wire [5:0] shift_d2 = output_select_i[1] ? shift_d1 : r_shift_d2;
4419
+
4420
+ // Multiplier
4421
+ wire unsigned_mode = unsigned_a & unsigned_b;
4422
+ wire [NBITS_A-1:0] mult_a;
4423
+ assign mult_a = (feedback == 3'h0) ? a :
4424
+ (feedback == 3'h1) ? a :
4425
+ (feedback == 3'h2) ? a :
4426
+ (feedback == 3'h3) ? acc[NBITS_A-1:0] :
4427
+ (feedback == 3'h4) ? coef_0_i :
4428
+ (feedback == 3'h5) ? coef_1_i :
4429
+ (feedback == 3'h6) ? coef_2_i :
4430
+ coef_3_i; // if feedback == 3'h7
4431
+
4432
+ wire [NBITS_B-1:0] mult_b = (feedback == 2'h2) ? {NBITS_B{1'b0}} : b;
4433
+
4434
+ wire [NBITS_A-1:0] mult_sgn_a = mult_a[NBITS_A-1];
4435
+ wire [NBITS_A-1:0] mult_mag_a = (mult_sgn_a && !unsigned_a) ? (~mult_a + 1) : mult_a;
4436
+ wire [NBITS_B-1:0] mult_sgn_b = mult_b[NBITS_B-1];
4437
+ wire [NBITS_B-1:0] mult_mag_b = (mult_sgn_b && !unsigned_b) ? (~mult_b + 1) : mult_b;
4438
+
4439
+ wire [NBITS_A+NBITS_B-1:0] mult_mag = mult_mag_a * mult_mag_b;
4440
+ wire mult_sgn = (mult_sgn_a && !unsigned_a) ^ (mult_sgn_b && !unsigned_b);
4441
+
4442
+ wire [NBITS_A+NBITS_B-1:0] mult = (unsigned_a && unsigned_b) ?
4443
+ (mult_a * mult_b) : (mult_sgn ? (~mult_mag + 1) : mult_mag);
4444
+
4445
+ // Sign extension
4446
+ wire [NBITS_ACC-1:0] mult_xtnd = unsigned_mode ?
4447
+ {{(NBITS_ACC-NBITS_A-NBITS_B){1'b0}}, mult[NBITS_A+NBITS_B-1:0]} :
4448
+ {{(NBITS_ACC-NBITS_A-NBITS_B){mult[NBITS_A+NBITS_B-1]}}, mult[NBITS_A+NBITS_B-1:0]};
4449
+
4450
+ // Adder
4451
+ wire [NBITS_ACC-1:0] acc_fir_int = unsigned_a ? {{(NBITS_ACC-NBITS_A){1'b0}}, a} :
4452
+ {{(NBITS_ACC-NBITS_A){a[NBITS_A-1]}}, a} ;
4453
+
4454
+ wire [NBITS_ACC-1:0] add_a = (subtract) ? (~mult_xtnd + 1) : mult_xtnd;
4455
+ wire [NBITS_ACC-1:0] add_b = (feedback_i == 3'h0) ? acc :
4456
+ (feedback_i == 3'h1) ? {{NBITS_ACC}{1'b0}} : (acc_fir_int << acc_fir);
4457
+
4458
+ wire [NBITS_ACC-1:0] add_o = add_a + add_b;
4459
+
4460
+ // Accumulator
4461
+ initial acc <= 0;
4462
+
4463
+ always @(posedge clock_i or posedge s_reset)
4464
+ if (s_reset) acc <= 'h0;
4465
+ else begin
4466
+ if (load_acc)
4467
+ acc <= add_o;
4468
+ else
4469
+ acc <= acc;
4470
+ end
4471
+
4472
+ // Adder/accumulator output selection
4473
+ wire [NBITS_ACC-1:0] acc_out = (output_select_i[1]) ? add_o : acc;
4474
+
4475
+ // Round, shift, saturate
4476
+ wire [NBITS_ACC-1:0] acc_rnd = (rnd && (shift_right_i != 0)) ? (acc_out + ({{(NBITS_ACC-1){1'b0}}, 1'b1} << (shift_right_i - 1))) :
4477
+ acc_out;
4478
+
4479
+ wire [NBITS_ACC-1:0] acc_shr = (unsigned_mode) ? (acc_rnd >> shift_right_i) :
4480
+ (acc_rnd >>> shift_right_i);
4481
+
4482
+ wire [NBITS_ACC-1:0] acc_sat_u = (acc_shr[NBITS_ACC-1:NBITS_Z] != 0) ? {{(NBITS_ACC-NBITS_Z){1'b0}},{NBITS_Z{1'b1}}} :
4483
+ {{(NBITS_ACC-NBITS_Z){1'b0}},{acc_shr[NBITS_Z-1:0]}};
4484
+
4485
+ wire [NBITS_ACC-1:0] acc_sat_s = ((|acc_shr[NBITS_ACC-1:NBITS_Z-1] == 1'b0) ||
4486
+ (&acc_shr[NBITS_ACC-1:NBITS_Z-1] == 1'b1)) ? {{(NBITS_ACC-NBITS_Z){1'b0}},{acc_shr[NBITS_Z-1:0]}} :
4487
+ {{(NBITS_ACC-NBITS_Z){1'b0}},{acc_shr[NBITS_ACC-1],{NBITS_Z-1{~acc_shr[NBITS_ACC-1]}}}};
4488
+
4489
+ wire [NBITS_ACC-1:0] acc_sat = (sat) ? ((unsigned_mode) ? acc_sat_u : acc_sat_s) : acc_shr;
4490
+
4491
+ // Output signals
4492
+ wire [NBITS_Z-1:0] z0;
4493
+ reg [NBITS_Z-1:0] z1;
4494
+ wire [NBITS_Z-1:0] z2;
4495
+
4496
+ assign z0 = mult_xtnd[NBITS_Z-1:0];
4497
+ assign z2 = acc_sat[NBITS_Z-1:0];
4498
+
4499
+ initial z1 <= 0;
4500
+
4501
+ always @(posedge clock_i or posedge s_reset)
4502
+ if (s_reset)
4503
+ z1 <= 0;
4504
+ else begin
4505
+ z1 <= (output_select_i == 3'b100) ? z0 : z2;
4506
+ end
4507
+
4508
+ // Output mux
4509
+ assign z_o = (output_select_i == 3'h0) ? z0 :
4510
+ (output_select_i == 3'h1) ? z2 :
4511
+ (output_select_i == 3'h2) ? z2 :
4512
+ (output_select_i == 3'h3) ? z2 :
4513
+ (output_select_i == 3'h4) ? z1 :
4514
+ (output_select_i == 3'h5) ? z1 :
4515
+ (output_select_i == 3'h6) ? z1 :
4516
+ z1; // if output_select_i == 3'h7
4517
+
4518
+ // B input delayed passthrough
4519
+ initial dly_b_o <= 0;
4520
+
4521
+ always @(posedge clock_i or posedge s_reset)
4522
+ if (s_reset)
4523
+ dly_b_o <= 0;
4524
+ else
4525
+ dly_b_o <= b_i;
4526
+
4527
+ endmodule