OpenCores
URL https://opencores.org/ocsvn/hdl-deflate/hdl-deflate/trunk

Subversion Repositories hdl-deflate

[/] [hdl-deflate/] [trunk/] [test_deflate_bench.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tomtor
// File: test_deflate_bench.v
2
// Generated by MyHDL 0.10
3
// Date: Thu Dec 20 18:23:03 2018
4
 
5
 
6
`timescale 1ns/10ps
7
 
8
module test_deflate_bench (
9
    i_clk,
10
    o_led,
11
    led0_g,
12
    led1_b,
13
    led2_r
14
);
15
 
16
 
17
input i_clk;
18
output [3:0] o_led;
19
reg [3:0] o_led;
20
output led0_g;
21
reg led0_g;
22
output led1_b;
23
reg led1_b;
24
output led2_r;
25
reg led2_r;
26
 
27
reg [12:0] o_iprogress;
28
reg [12:0] resultlen;
29
reg reset;
30
reg [12:0] o_oprogress;
31
reg o_done;
32
reg [7:0] o_byte;
33
reg [2:0] i_mode;
34
reg [7:0] i_data;
35
reg [12:0] i_addr;
36
reg [21:0] scounter;
37
reg [15:0] counter;
38
reg [4:0] tstate;
39
reg [14:0] tbi;
40
reg wtick;
41
reg [5:0] resume;
42
reg [7:0] copy;
43
reg [18:0] deflate0_wleaf;
44
reg [9:0] deflate0_step;
45
reg deflate0_static;
46
reg [4:0] deflate0_state;
47
reg [8:0] deflate0_spread_i;
48
reg [9:0] deflate0_spread;
49
reg [9:0] deflate0_reverse;
50
reg [7:0] deflate0_orbyte;
51
reg [12:0] deflate0_oraddr;
52
reg [12:0] deflate0_offset;
53
reg [7:0] deflate0_obyte;
54
reg [7:0] deflate0_ob1;
55
reg [12:0] deflate0_oaddr;
56
reg [8:0] deflate0_numLiterals;
57
reg [5:0] deflate0_numDistance;
58
reg [8:0] deflate0_numCodeLength;
59
reg [2:0] deflate0_nb;
60
reg [4:0] deflate0_minBits;
61
reg [2:0] deflate0_method;
62
reg [4:0] deflate0_maxBits;
63
reg [8:0] deflate0_lwaddr;
64
reg [12:0] deflate0_length;
65
reg [18:0] deflate0_leaf;
66
reg [14:0] deflate0_lastToken;
67
reg [15:0] deflate0_ladler1;
68
reg [12:0] deflate0_isize;
69
reg [9:0] deflate0_instantMaxBit;
70
reg [14:0] deflate0_instantMask;
71
reg [8:0] deflate0_howOften;
72
reg deflate0_flush;
73
reg deflate0_final;
74
reg deflate0_filled;
75
reg [2:0] deflate0_doo;
76
reg deflate0_do_compress;
77
reg [12:0] deflate0_do;
78
reg [2:0] deflate0_dio;
79
reg [12:0] deflate0_di;
80
reg [4:0] deflate0_d_maxBits;
81
reg [9:0] deflate0_d_instantMaxBit;
82
reg [14:0] deflate0_d_instantMask;
83
reg [8:0] deflate0_cur_static;
84
reg signed [7:0] deflate0_cur_search;
85
reg deflate0_cur_next;
86
reg [12:0] deflate0_cur_i;
87
reg signed [7:0] deflate0_cur_dist;
88
reg [12:0] deflate0_cur_cstatic;
89
reg [9:0] deflate0_cur_HF1;
90
reg [7:0] deflate0_copy1;
91
reg [14:0] deflate0_code;
92
reg [3:0] deflate0_bits;
93
reg [8:0] deflate0_b_numCodeLength;
94
wire [31:0] deflate0_b41;
95
reg [7:0] deflate0_b4;
96
reg [7:0] deflate0_b3;
97
reg [7:0] deflate0_b2;
98
reg [7:0] deflate0_b1;
99
reg [15:0] deflate0_adler2;
100
reg [15:0] deflate0_adler1;
101
reg [7:0] deflate0_oram [0:8192-1];
102
reg [9:0] deflate0_nextCode [0:15-1];
103
reg [18:0] deflate0_leaves [0:512-1];
104
reg [7:0] deflate0_iram [0:128-1];
105
reg [3:0] deflate0_distanceLength [0:32-1];
106
reg [18:0] deflate0_d_leaves [0:128-1];
107
reg [8:0] deflate0_code_bits [0:288-1];
108
reg [3:0] deflate0_codeLength [0:290-1];
109
reg [8:0] deflate0_bitLengthCount [0:16-1];
110
 
111
assign deflate0_b41[32-1:24] = deflate0_b4;
112
assign deflate0_b41[24-1:16] = deflate0_b3;
113
assign deflate0_b41[16-1:8] = deflate0_b2;
114
assign deflate0_b41[8-1:0] = deflate0_b1;
115
 
116
task MYHDL3_adv;
117
    input width;
118
    integer width;
119
    integer nshift;
120
begin: MYHDL79_RETURN
121
    nshift = ((deflate0_dio + width) >>> 3);
122
    o_iprogress <= deflate0_di;
123
    deflate0_dio <= ((deflate0_dio + width) & 7);
124
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
125
    if ((nshift != 0)) begin
126
        deflate0_filled <= 1'b0;
127
    end
128
end
129
endtask
130
 
131
function integer MYHDL4_get4;
132
    input boffset;
133
    input width;
134
begin: MYHDL80_RETURN
135
    if ((deflate0_nb != 4)) begin
136
        $write("----NB----");
137
        $write("\n");
138
        $finish;
139
    end
140
    MYHDL4_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
141
    disable MYHDL80_RETURN;
142
end
143
endfunction
144
 
145
function integer MYHDL5_get4;
146
    input boffset;
147
    input width;
148
    integer width;
149
begin: MYHDL81_RETURN
150
    if ((deflate0_nb != 4)) begin
151
        $write("----NB----");
152
        $write("\n");
153
        $finish;
154
    end
155
    MYHDL5_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
156
    disable MYHDL81_RETURN;
157
end
158
endfunction
159
 
160
task MYHDL6_adv;
161
    input width;
162
    integer width;
163
    integer nshift;
164
begin: MYHDL82_RETURN
165
    nshift = ((deflate0_dio + width) >>> 3);
166
    o_iprogress <= deflate0_di;
167
    deflate0_dio <= ((deflate0_dio + width) & 7);
168
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
169
    if ((nshift != 0)) begin
170
        deflate0_filled <= 1'b0;
171
    end
172
end
173
endtask
174
 
175
task MYHDL7_adv;
176
    input width;
177
    integer width;
178
    integer nshift;
179
begin: MYHDL83_RETURN
180
    nshift = ((deflate0_dio + width) >>> 3);
181
    o_iprogress <= deflate0_di;
182
    deflate0_dio <= ((deflate0_dio + width) & 7);
183
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
184
    if ((nshift != 0)) begin
185
        deflate0_filled <= 1'b0;
186
    end
187
end
188
endtask
189
 
190
function integer MYHDL8_get4;
191
    input boffset;
192
    integer boffset;
193
    input width;
194
    integer width;
195
begin: MYHDL84_RETURN
196
    if ((deflate0_nb != 4)) begin
197
        $write("----NB----");
198
        $write("\n");
199
        $finish;
200
    end
201
    MYHDL8_get4 = ($signed($signed({1'b0, deflate0_b41}) >>> ($signed({1'b0, deflate0_dio}) + boffset)) & ((1 << width) - 1));
202
    disable MYHDL84_RETURN;
203
end
204
endfunction
205
 
206
task MYHDL9_adv;
207
    input width;
208
    integer width;
209
    integer nshift;
210
begin: MYHDL85_RETURN
211
    nshift = $signed(($signed({1'b0, deflate0_dio}) + width) >>> 3);
212
    o_iprogress <= deflate0_di;
213
    deflate0_dio <= (($signed({1'b0, deflate0_dio}) + width) & 7);
214
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
215
    if ((nshift != 0)) begin
216
        deflate0_filled <= 1'b0;
217
    end
218
end
219
endtask
220
 
221
function integer MYHDL10_put;
222
    input d;
223
    integer d;
224
    input width;
225
    integer width;
226
begin: MYHDL86_RETURN
227
    if ((width > 9)) begin
228
        $finish;
229
    end
230
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
231
        $finish;
232
    end
233
    MYHDL10_put = ((deflate0_ob1 | (d << deflate0_doo)) & 255);
234
    disable MYHDL86_RETURN;
235
end
236
endfunction
237
 
238
task MYHDL11_put_adv;
239
    input d;
240
    integer d;
241
    input width;
242
    integer width;
243
    reg pshift;
244
    integer carry;
245
    integer doo_next;
246
begin: MYHDL87_RETURN
247
    if ((width > 9)) begin
248
        $finish;
249
    end
250
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
251
        $finish;
252
    end
253
    pshift = ((deflate0_doo + width) > 8);
254
    if (pshift) begin
255
        carry = ($signed({1'b0, width}) - (8 - $signed({1'b0, deflate0_doo})));
256
        deflate0_ob1 <= $signed($signed({1'b0, d}) >>> ($signed({1'b0, width}) - carry));
257
    end
258
    else begin
259
        deflate0_ob1 <= (deflate0_ob1 | (d << deflate0_doo));
260
    end
261
    deflate0_do <= (deflate0_do + pshift);
262
    o_oprogress <= (deflate0_do + pshift);
263
    doo_next = ((deflate0_doo + width) & 7);
264
    if ((doo_next == 0)) begin
265
        deflate0_flush <= 1'b1;
266
    end
267
    deflate0_doo <= doo_next;
268
end
269
endtask
270
 
271
task MYHDL12_do_flush;
272
begin: MYHDL88_RETURN
273
    deflate0_flush <= 1'b0;
274
    deflate0_ob1 <= 0;
275
    o_oprogress <= (deflate0_do + 1);
276
    deflate0_do <= (deflate0_do + 1);
277
end
278
endtask
279
 
280
function integer MYHDL13_put;
281
    input [9-1:0] d;
282
    input [4-1:0] width;
283
begin: MYHDL89_RETURN
284
    if ((width > 9)) begin
285
        $finish;
286
    end
287
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
288
        $finish;
289
    end
290
    MYHDL13_put = ((deflate0_ob1 | (d << deflate0_doo)) & 255);
291
    disable MYHDL89_RETURN;
292
end
293
endfunction
294
 
295
task MYHDL14_put_adv;
296
    input [9-1:0] d;
297
    input [4-1:0] width;
298
    reg pshift;
299
    integer carry;
300
    integer doo_next;
301
begin: MYHDL90_RETURN
302
    if ((width > 9)) begin
303
        $finish;
304
    end
305
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
306
        $finish;
307
    end
308
    pshift = ((deflate0_doo + width) > 8);
309
    if (pshift) begin
310
        carry = ($signed({1'b0, width}) - (8 - $signed({1'b0, deflate0_doo})));
311
        deflate0_ob1 <= $signed($signed({1'b0, d}) >>> ($signed({1'b0, width}) - carry));
312
    end
313
    else begin
314
        deflate0_ob1 <= (deflate0_ob1 | (d << deflate0_doo));
315
    end
316
    deflate0_do <= (deflate0_do + pshift);
317
    o_oprogress <= (deflate0_do + pshift);
318
    doo_next = ((deflate0_doo + width) & 7);
319
    if ((doo_next == 0)) begin
320
        deflate0_flush <= 1'b1;
321
    end
322
    deflate0_doo <= doo_next;
323
end
324
endtask
325
 
326
task MYHDL15_do_flush;
327
begin: MYHDL91_RETURN
328
    deflate0_flush <= 1'b0;
329
    deflate0_ob1 <= 0;
330
    o_oprogress <= (deflate0_do + 1);
331
    deflate0_do <= (deflate0_do + 1);
332
end
333
endtask
334
 
335
function integer MYHDL16_rev_bits;
336
    input [13-1:0] b;
337
    input nb;
338
    integer nb;
339
    integer r;
340
begin: MYHDL92_RETURN
341
    if ((b >= (1 << nb))) begin
342
        $finish;
343
        $write("too few bits");
344
        $write("\n");
345
    end
346
    r = (((((((((((((((((b >>> 14) & 1) << 0) | (((b >>> 13) & 1) << 1)) | (((b >>> 12) & 1) << 2)) | (((b >>> 11) & 1) << 3)) | (((b >>> 10) & 1) << 4)) | (((b >>> 9) & 1) << 5)) | (((b >>> 8) & 1) << 6)) | (((b >>> 7) & 1) << 7)) | (((b >>> 6) & 1) << 8)) | (((b >>> 5) & 1) << 9)) | (((b >>> 4) & 1) << 10)) | (((b >>> 3) & 1) << 11)) | (((b >>> 2) & 1) << 12)) | (((b >>> 1) & 1) << 13)) | (((b >>> 0) & 1) << 14));
347
    r = r >>> (15 - $signed({1'b0, nb}));
348
    MYHDL16_rev_bits = r;
349
    disable MYHDL92_RETURN;
350
end
351
endfunction
352
 
353
function integer MYHDL17_put;
354
    input d;
355
    integer d;
356
    input width;
357
    integer width;
358
begin: MYHDL93_RETURN
359
    if ((width > 9)) begin
360
        $finish;
361
    end
362
    if ((d > ((1 << width) - 1))) begin
363
        $finish;
364
    end
365
    MYHDL17_put = (($signed({1'b0, deflate0_ob1}) | (d << $signed({1'b0, deflate0_doo}))) & 255);
366
    disable MYHDL93_RETURN;
367
end
368
endfunction
369
 
370
task MYHDL18_put_adv;
371
    input d;
372
    integer d;
373
    input width;
374
    integer width;
375
    reg pshift;
376
    integer carry;
377
    integer doo_next;
378
begin: MYHDL94_RETURN
379
    if ((width > 9)) begin
380
        $finish;
381
    end
382
    if ((d > ((1 << width) - 1))) begin
383
        $finish;
384
    end
385
    pshift = (($signed({1'b0, deflate0_doo}) + width) > 8);
386
    if (pshift) begin
387
        carry = (width - (8 - $signed({1'b0, deflate0_doo})));
388
        deflate0_ob1 <= $signed(d >>> (width - carry));
389
    end
390
    else begin
391
        deflate0_ob1 <= ($signed({1'b0, deflate0_ob1}) | (d << $signed({1'b0, deflate0_doo})));
392
    end
393
    deflate0_do <= (deflate0_do + pshift);
394
    o_oprogress <= (deflate0_do + pshift);
395
    doo_next = (($signed({1'b0, deflate0_doo}) + width) & 7);
396
    if ((doo_next == 0)) begin
397
        deflate0_flush <= 1'b1;
398
    end
399
    deflate0_doo <= doo_next;
400
end
401
endtask
402
 
403
function integer MYHDL19_put;
404
    input [9-1:0] d;
405
    input [4-1:0] width;
406
begin: MYHDL95_RETURN
407
    if ((width > 9)) begin
408
        $finish;
409
    end
410
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
411
        $finish;
412
    end
413
    MYHDL19_put = ((deflate0_ob1 | (d << deflate0_doo)) & 255);
414
    disable MYHDL95_RETURN;
415
end
416
endfunction
417
 
418
task MYHDL20_put_adv;
419
    input [9-1:0] d;
420
    input [4-1:0] width;
421
    reg pshift;
422
    integer carry;
423
    integer doo_next;
424
begin: MYHDL96_RETURN
425
    if ((width > 9)) begin
426
        $finish;
427
    end
428
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
429
        $finish;
430
    end
431
    pshift = ((deflate0_doo + width) > 8);
432
    if (pshift) begin
433
        carry = ($signed({1'b0, width}) - (8 - $signed({1'b0, deflate0_doo})));
434
        deflate0_ob1 <= $signed($signed({1'b0, d}) >>> ($signed({1'b0, width}) - carry));
435
    end
436
    else begin
437
        deflate0_ob1 <= (deflate0_ob1 | (d << deflate0_doo));
438
    end
439
    deflate0_do <= (deflate0_do + pshift);
440
    o_oprogress <= (deflate0_do + pshift);
441
    doo_next = ((deflate0_doo + width) & 7);
442
    if ((doo_next == 0)) begin
443
        deflate0_flush <= 1'b1;
444
    end
445
    deflate0_doo <= doo_next;
446
end
447
endtask
448
 
449
function integer MYHDL21_put;
450
    input [9-1:0] d;
451
    input [4-1:0] width;
452
begin: MYHDL97_RETURN
453
    if ((width > 9)) begin
454
        $finish;
455
    end
456
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
457
        $finish;
458
    end
459
    MYHDL21_put = ((deflate0_ob1 | (d << deflate0_doo)) & 255);
460
    disable MYHDL97_RETURN;
461
end
462
endfunction
463
 
464
task MYHDL22_put_adv;
465
    input [9-1:0] d;
466
    input [4-1:0] width;
467
    reg pshift;
468
    integer carry;
469
    integer doo_next;
470
begin: MYHDL98_RETURN
471
    if ((width > 9)) begin
472
        $finish;
473
    end
474
    if (($signed({1'b0, d}) > ((1 << width) - 1))) begin
475
        $finish;
476
    end
477
    pshift = ((deflate0_doo + width) > 8);
478
    if (pshift) begin
479
        carry = ($signed({1'b0, width}) - (8 - $signed({1'b0, deflate0_doo})));
480
        deflate0_ob1 <= $signed($signed({1'b0, d}) >>> ($signed({1'b0, width}) - carry));
481
    end
482
    else begin
483
        deflate0_ob1 <= (deflate0_ob1 | (d << deflate0_doo));
484
    end
485
    deflate0_do <= (deflate0_do + pshift);
486
    o_oprogress <= (deflate0_do + pshift);
487
    doo_next = ((deflate0_doo + width) & 7);
488
    if ((doo_next == 0)) begin
489
        deflate0_flush <= 1'b1;
490
    end
491
    deflate0_doo <= doo_next;
492
end
493
endtask
494
 
495
function integer MYHDL31_get4;
496
    input boffset;
497
    input width;
498
    integer width;
499
begin: MYHDL99_RETURN
500
    if ((deflate0_nb != 4)) begin
501
        $write("----NB----");
502
        $write("\n");
503
        $finish;
504
    end
505
    MYHDL31_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
506
    disable MYHDL99_RETURN;
507
end
508
endfunction
509
 
510
function integer MYHDL32_get4;
511
    input boffset;
512
    input width;
513
    integer width;
514
begin: MYHDL100_RETURN
515
    if ((deflate0_nb != 4)) begin
516
        $write("----NB----");
517
        $write("\n");
518
        $finish;
519
    end
520
    MYHDL32_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
521
    disable MYHDL100_RETURN;
522
end
523
endfunction
524
 
525
function integer MYHDL33_get4;
526
    input boffset;
527
    integer boffset;
528
    input width;
529
    integer width;
530
begin: MYHDL101_RETURN
531
    if ((deflate0_nb != 4)) begin
532
        $write("----NB----");
533
        $write("\n");
534
        $finish;
535
    end
536
    MYHDL33_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
537
    disable MYHDL101_RETURN;
538
end
539
endfunction
540
 
541
function integer MYHDL34_get4;
542
    input boffset;
543
    integer boffset;
544
    input width;
545
    integer width;
546
begin: MYHDL102_RETURN
547
    if ((deflate0_nb != 4)) begin
548
        $write("----NB----");
549
        $write("\n");
550
        $finish;
551
    end
552
    MYHDL34_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
553
    disable MYHDL102_RETURN;
554
end
555
endfunction
556
 
557
function integer MYHDL35_get4;
558
    input boffset;
559
    integer boffset;
560
    input width;
561
    integer width;
562
begin: MYHDL103_RETURN
563
    if ((deflate0_nb != 4)) begin
564
        $write("----NB----");
565
        $write("\n");
566
        $finish;
567
    end
568
    MYHDL35_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
569
    disable MYHDL103_RETURN;
570
end
571
endfunction
572
 
573
function integer MYHDL36_get4;
574
    input boffset;
575
    integer boffset;
576
    input width;
577
    integer width;
578
begin: MYHDL104_RETURN
579
    if ((deflate0_nb != 4)) begin
580
        $write("----NB----");
581
        $write("\n");
582
        $finish;
583
    end
584
    MYHDL36_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
585
    disable MYHDL104_RETURN;
586
end
587
endfunction
588
 
589
task MYHDL37_adv;
590
    input width;
591
    integer width;
592
    integer nshift;
593
begin: MYHDL105_RETURN
594
    nshift = ((deflate0_dio + width) >>> 3);
595
    o_iprogress <= deflate0_di;
596
    deflate0_dio <= ((deflate0_dio + width) & 7);
597
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
598
    if ((nshift != 0)) begin
599
        deflate0_filled <= 1'b0;
600
    end
601
end
602
endtask
603
 
604
function integer MYHDL38_get4;
605
    input boffset;
606
    input width;
607
    integer width;
608
begin: MYHDL106_RETURN
609
    if ((deflate0_nb != 4)) begin
610
        $write("----NB----");
611
        $write("\n");
612
        $finish;
613
    end
614
    MYHDL38_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
615
    disable MYHDL106_RETURN;
616
end
617
endfunction
618
 
619
task MYHDL39_adv;
620
    input width;
621
    integer width;
622
    integer nshift;
623
begin: MYHDL107_RETURN
624
    nshift = ((deflate0_dio + width) >>> 3);
625
    o_iprogress <= deflate0_di;
626
    deflate0_dio <= ((deflate0_dio + width) & 7);
627
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
628
    if ((nshift != 0)) begin
629
        deflate0_filled <= 1'b0;
630
    end
631
end
632
endtask
633
 
634
function integer MYHDL40_get4;
635
    input boffset;
636
    input width;
637
    integer width;
638
begin: MYHDL108_RETURN
639
    if ((deflate0_nb != 4)) begin
640
        $write("----NB----");
641
        $write("\n");
642
        $finish;
643
    end
644
    MYHDL40_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
645
    disable MYHDL108_RETURN;
646
end
647
endfunction
648
 
649
function integer MYHDL41_get4;
650
    input boffset;
651
    input width;
652
    integer width;
653
begin: MYHDL109_RETURN
654
    if ((deflate0_nb != 4)) begin
655
        $write("----NB----");
656
        $write("\n");
657
        $finish;
658
    end
659
    MYHDL41_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
660
    disable MYHDL109_RETURN;
661
end
662
endfunction
663
 
664
function integer MYHDL42_get4;
665
    input boffset;
666
    input width;
667
    integer width;
668
begin: MYHDL110_RETURN
669
    if ((deflate0_nb != 4)) begin
670
        $write("----NB----");
671
        $write("\n");
672
        $finish;
673
    end
674
    MYHDL42_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
675
    disable MYHDL110_RETURN;
676
end
677
endfunction
678
 
679
task MYHDL43_adv;
680
    input width;
681
    integer width;
682
    integer nshift;
683
begin: MYHDL111_RETURN
684
    nshift = ((deflate0_dio + width) >>> 3);
685
    o_iprogress <= deflate0_di;
686
    deflate0_dio <= ((deflate0_dio + width) & 7);
687
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
688
    if ((nshift != 0)) begin
689
        deflate0_filled <= 1'b0;
690
    end
691
end
692
endtask
693
 
694
function integer MYHDL50_rev_bits;
695
    input [10-1:0] b;
696
    input [4-1:0] nb;
697
    integer r;
698
begin: MYHDL112_RETURN
699
    if ((b >= (1 << nb))) begin
700
        $finish;
701
        $write("too few bits");
702
        $write("\n");
703
    end
704
    r = (((((((((((((((((b >>> 14) & 1) << 0) | (((b >>> 13) & 1) << 1)) | (((b >>> 12) & 1) << 2)) | (((b >>> 11) & 1) << 3)) | (((b >>> 10) & 1) << 4)) | (((b >>> 9) & 1) << 5)) | (((b >>> 8) & 1) << 6)) | (((b >>> 7) & 1) << 7)) | (((b >>> 6) & 1) << 8)) | (((b >>> 5) & 1) << 9)) | (((b >>> 4) & 1) << 10)) | (((b >>> 3) & 1) << 11)) | (((b >>> 2) & 1) << 12)) | (((b >>> 1) & 1) << 13)) | (((b >>> 0) & 1) << 14));
705
    r = r >>> (15 - $signed({1'b0, nb}));
706
    MYHDL50_rev_bits = r;
707
    disable MYHDL112_RETURN;
708
end
709
endfunction
710
 
711
function integer MYHDL51_makeLeaf;
712
    input [9-1:0] lcode;
713
    input [4-1:0] lbits;
714
begin: MYHDL113_RETURN
715
    if ((lcode >= (1 << 10))) begin
716
        $finish;
717
    end
718
    if ((lbits >= (1 << 9))) begin
719
        $finish;
720
    end
721
    MYHDL51_makeLeaf = ((lcode << 9) | lbits);
722
    disable MYHDL113_RETURN;
723
end
724
endfunction
725
 
726
function integer MYHDL52_makeLeaf;
727
    input [9-1:0] lcode;
728
    input [4-1:0] lbits;
729
begin: MYHDL114_RETURN
730
    if ((lcode >= (1 << 10))) begin
731
        $finish;
732
    end
733
    if ((lbits >= (1 << 9))) begin
734
        $finish;
735
    end
736
    MYHDL52_makeLeaf = ((lcode << 9) | lbits);
737
    disable MYHDL114_RETURN;
738
end
739
endfunction
740
 
741
function integer MYHDL53_makeLeaf;
742
    input [9-1:0] lcode;
743
    input [4-1:0] lbits;
744
begin: MYHDL115_RETURN
745
    if ((lcode >= (1 << 10))) begin
746
        $finish;
747
    end
748
    if ((lbits >= (1 << 9))) begin
749
        $finish;
750
    end
751
    MYHDL53_makeLeaf = ((lcode << 9) | lbits);
752
    disable MYHDL115_RETURN;
753
end
754
endfunction
755
 
756
function integer MYHDL54_get4;
757
    input boffset;
758
    input [5-1:0] width;
759
begin: MYHDL116_RETURN
760
    if ((deflate0_nb != 4)) begin
761
        $write("----NB----");
762
        $write("\n");
763
        $finish;
764
    end
765
    MYHDL54_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
766
    disable MYHDL116_RETURN;
767
end
768
endfunction
769
 
770
function integer MYHDL55_get_bits;
771
    input [19-1:0] aleaf;
772
begin: MYHDL117_RETURN
773
    MYHDL55_get_bits = ($signed({1'b0, aleaf}) & ((1 << 9) - 1));
774
    disable MYHDL117_RETURN;
775
end
776
endfunction
777
 
778
function integer MYHDL56_get_bits;
779
    input [19-1:0] aleaf;
780
begin: MYHDL118_RETURN
781
    MYHDL56_get_bits = ($signed({1'b0, aleaf}) & ((1 << 9) - 1));
782
    disable MYHDL118_RETURN;
783
end
784
endfunction
785
 
786
task MYHDL57_adv;
787
    input width;
788
    integer width;
789
    integer nshift;
790
begin: MYHDL119_RETURN
791
    nshift = $signed(($signed({1'b0, deflate0_dio}) + width) >>> 3);
792
    o_iprogress <= deflate0_di;
793
    deflate0_dio <= (($signed({1'b0, deflate0_dio}) + width) & 7);
794
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
795
    if ((nshift != 0)) begin
796
        deflate0_filled <= 1'b0;
797
    end
798
end
799
endtask
800
 
801
function integer MYHDL58_get_code;
802
    input [19-1:0] aleaf;
803
begin: MYHDL120_RETURN
804
    MYHDL58_get_code = (aleaf >>> 9);
805
    disable MYHDL120_RETURN;
806
end
807
endfunction
808
 
809
function integer MYHDL59_get_code;
810
    input [19-1:0] aleaf;
811
begin: MYHDL121_RETURN
812
    MYHDL59_get_code = (aleaf >>> 9);
813
    disable MYHDL121_RETURN;
814
end
815
endfunction
816
 
817
function integer MYHDL60_get4;
818
    input boffset;
819
    integer boffset;
820
    input [5-1:0] width;
821
begin: MYHDL122_RETURN
822
    if ((deflate0_nb != 4)) begin
823
        $write("----NB----");
824
        $write("\n");
825
        $finish;
826
    end
827
    MYHDL60_get4 = ($signed($signed({1'b0, deflate0_b41}) >>> ($signed({1'b0, deflate0_dio}) + boffset)) & ((1 << width) - 1));
828
    disable MYHDL122_RETURN;
829
end
830
endfunction
831
 
832
function integer MYHDL61_get_bits;
833
    input [19-1:0] aleaf;
834
begin: MYHDL123_RETURN
835
    MYHDL61_get_bits = ($signed({1'b0, aleaf}) & ((1 << 9) - 1));
836
    disable MYHDL123_RETURN;
837
end
838
endfunction
839
 
840
function integer MYHDL62_get4;
841
    input boffset;
842
    input width;
843
    integer width;
844
begin: MYHDL124_RETURN
845
    if ((deflate0_nb != 4)) begin
846
        $write("----NB----");
847
        $write("\n");
848
        $finish;
849
    end
850
    MYHDL62_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
851
    disable MYHDL124_RETURN;
852
end
853
endfunction
854
 
855
function integer MYHDL63_get_code;
856
    input [19-1:0] aleaf;
857
begin: MYHDL125_RETURN
858
    MYHDL63_get_code = (aleaf >>> 9);
859
    disable MYHDL125_RETURN;
860
end
861
endfunction
862
 
863
function integer MYHDL64_get_bits;
864
    input [19-1:0] aleaf;
865
begin: MYHDL126_RETURN
866
    MYHDL64_get_bits = ($signed({1'b0, aleaf}) & ((1 << 9) - 1));
867
    disable MYHDL126_RETURN;
868
end
869
endfunction
870
 
871
function integer MYHDL65_get4;
872
    input boffset;
873
    integer boffset;
874
    input width;
875
    integer width;
876
begin: MYHDL127_RETURN
877
    if ((deflate0_nb != 4)) begin
878
        $write("----NB----");
879
        $write("\n");
880
        $finish;
881
    end
882
    MYHDL65_get4 = ($signed($signed({1'b0, deflate0_b41}) >>> ($signed({1'b0, deflate0_dio}) + boffset)) & ((1 << width) - 1));
883
    disable MYHDL127_RETURN;
884
end
885
endfunction
886
 
887
function integer MYHDL66_get_bits;
888
    input [19-1:0] aleaf;
889
begin: MYHDL128_RETURN
890
    MYHDL66_get_bits = ($signed({1'b0, aleaf}) & ((1 << 9) - 1));
891
    disable MYHDL128_RETURN;
892
end
893
endfunction
894
 
895
task MYHDL67_adv;
896
    input width;
897
    integer width;
898
    integer nshift;
899
begin: MYHDL129_RETURN
900
    nshift = $signed(($signed({1'b0, deflate0_dio}) + width) >>> 3);
901
    o_iprogress <= deflate0_di;
902
    deflate0_dio <= (($signed({1'b0, deflate0_dio}) + width) & 7);
903
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
904
    if ((nshift != 0)) begin
905
        deflate0_filled <= 1'b0;
906
    end
907
end
908
endtask
909
 
910
function integer MYHDL68_get4;
911
    input boffset;
912
    input width;
913
    integer width;
914
begin: MYHDL130_RETURN
915
    if ((deflate0_nb != 4)) begin
916
        $write("----NB----");
917
        $write("\n");
918
        $finish;
919
    end
920
    MYHDL68_get4 = ((deflate0_b41 >>> (deflate0_dio + boffset)) & ((1 << width) - 1));
921
    disable MYHDL130_RETURN;
922
end
923
endfunction
924
 
925
function integer MYHDL69_get4;
926
    input boffset;
927
    integer boffset;
928
    input width;
929
    integer width;
930
begin: MYHDL131_RETURN
931
    if ((deflate0_nb != 4)) begin
932
        $write("----NB----");
933
        $write("\n");
934
        $finish;
935
    end
936
    MYHDL69_get4 = ($signed($signed({1'b0, deflate0_b41}) >>> ($signed({1'b0, deflate0_dio}) + boffset)) & ((1 << width) - 1));
937
    disable MYHDL131_RETURN;
938
end
939
endfunction
940
 
941
function integer MYHDL70_rev_bits;
942
    input b;
943
    integer b;
944
    input nb;
945
    integer nb;
946
    integer r;
947
begin: MYHDL132_RETURN
948
    if ((b >= (1 << nb))) begin
949
        $finish;
950
        $write("too few bits");
951
        $write("\n");
952
    end
953
    r = (((((((((((((((((b >>> 14) & 1) << 0) | (((b >>> 13) & 1) << 1)) | (((b >>> 12) & 1) << 2)) | (((b >>> 11) & 1) << 3)) | (((b >>> 10) & 1) << 4)) | (((b >>> 9) & 1) << 5)) | (((b >>> 8) & 1) << 6)) | (((b >>> 7) & 1) << 7)) | (((b >>> 6) & 1) << 8)) | (((b >>> 5) & 1) << 9)) | (((b >>> 4) & 1) << 10)) | (((b >>> 3) & 1) << 11)) | (((b >>> 2) & 1) << 12)) | (((b >>> 1) & 1) << 13)) | (((b >>> 0) & 1) << 14));
954
    r = r >>> (15 - $signed({1'b0, nb}));
955
    MYHDL70_rev_bits = r;
956
    disable MYHDL132_RETURN;
957
end
958
endfunction
959
 
960
function integer MYHDL71_get4;
961
    input boffset;
962
    integer boffset;
963
    input width;
964
    integer width;
965
begin: MYHDL133_RETURN
966
    if ((deflate0_nb != 4)) begin
967
        $write("----NB----");
968
        $write("\n");
969
        $finish;
970
    end
971
    MYHDL71_get4 = ($signed($signed({1'b0, deflate0_b41}) >>> ($signed({1'b0, deflate0_dio}) + boffset)) & ((1 << width) - 1));
972
    disable MYHDL133_RETURN;
973
end
974
endfunction
975
 
976
task MYHDL72_adv;
977
    input width;
978
    integer width;
979
    integer nshift;
980
begin: MYHDL134_RETURN
981
    nshift = $signed(($signed({1'b0, deflate0_dio}) + width) >>> 3);
982
    o_iprogress <= deflate0_di;
983
    deflate0_dio <= (($signed({1'b0, deflate0_dio}) + width) & 7);
984
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
985
    if ((nshift != 0)) begin
986
        deflate0_filled <= 1'b0;
987
    end
988
end
989
endtask
990
 
991
task MYHDL73_adv;
992
    input width;
993
    integer width;
994
    integer nshift;
995
begin: MYHDL135_RETURN
996
    nshift = ((deflate0_dio + width) >>> 3);
997
    o_iprogress <= deflate0_di;
998
    deflate0_dio <= ((deflate0_dio + width) & 7);
999
    deflate0_di <= ($signed({1'b0, deflate0_di}) + nshift);
1000
    if ((nshift != 0)) begin
1001
        deflate0_filled <= 1'b0;
1002
    end
1003
end
1004
endtask
1005
 
1006
 
1007
always @(posedge i_clk) begin: TEST_DEFLATE_BENCH_DEFLATE0_IO_LOGIC
1008
    case (i_mode)
1009
        'h2: begin
1010
            deflate0_iram[(i_addr & 127)] <= i_data;
1011
            deflate0_isize <= i_addr;
1012
        end
1013
        'h3: begin
1014
            o_byte <= deflate0_oram[i_addr];
1015
        end
1016
        default: begin
1017
            // pass
1018
        end
1019
    endcase
1020
end
1021
 
1022
 
1023
always @(posedge i_clk) begin: TEST_DEFLATE_BENCH_DEFLATE0_LOGIC
1024
    integer hm;
1025
    integer skip;
1026
    reg no_adv;
1027
    integer cs_i;
1028
    reg [4-1:0] outlen;
1029
    reg [9-1:0] outbits;
1030
    reg [8-1:0] bdata;
1031
    integer adler1_next;
1032
    integer nextdist;
1033
    integer copydist;
1034
    integer extra_dist;
1035
    integer extra_bits;
1036
    integer outcode;
1037
    integer lencode;
1038
    integer match;
1039
    integer distance;
1040
    integer stat_i;
1041
    integer clo_i;
1042
    integer n_adv;
1043
    integer dbl_i;
1044
    integer dbl;
1045
    integer dist_i;
1046
    integer limit;
1047
    reg [4-1:0] j;
1048
    integer t;
1049
    integer hf2_i;
1050
    reg [5-1:0] amb;
1051
    integer ncode;
1052
    reg [10-1:0] canonical;
1053
    reg [4-1:0] bits_next;
1054
    reg [15-1:0] aim;
1055
    integer cto;
1056
    integer mask;
1057
    integer token;
1058
    integer extraLength;
1059
    integer tlength;
1060
    integer distanceCode;
1061
    integer moreBits;
1062
    integer mored;
1063
    if ((!reset)) begin
1064
        $write("DEFLATE RESET");
1065
        $write("\n");
1066
        deflate0_state <= 5'b00000;
1067
        o_done <= 1'b0;
1068
    end
1069
    else begin
1070
        case (deflate0_state)
1071
            5'b00000: begin
1072
                case (i_mode)
1073
                    'h4: begin
1074
                        $write("STARTC");
1075
                        $write("\n");
1076
                        deflate0_do_compress <= 1'b1;
1077
                        deflate0_method <= 1;
1078
                        o_done <= 1'b0;
1079
                        o_iprogress <= 0;
1080
                        o_oprogress <= 0;
1081
                        deflate0_di <= 0;
1082
                        deflate0_dio <= 0;
1083
                        deflate0_do <= 0;
1084
                        deflate0_doo <= 0;
1085
                        deflate0_filled <= 1'b1;
1086
                        deflate0_cur_static <= 0;
1087
                        deflate0_state <= 5'b01110;
1088
                    end
1089
                    'h5: begin
1090
                        deflate0_do_compress <= 1'b0;
1091
                        o_done <= 1'b0;
1092
                        o_iprogress <= 0;
1093
                        o_oprogress <= 0;
1094
                        deflate0_di <= 0;
1095
                        deflate0_dio <= 0;
1096
                        deflate0_do <= 0;
1097
                        deflate0_doo <= 0;
1098
                        deflate0_filled <= 1'b1;
1099
                        deflate0_state <= 5'b00001;
1100
                    end
1101
                    default: begin
1102
                        // pass
1103
                    end
1104
                endcase
1105
            end
1106
            5'b00001: begin
1107
                if ((!deflate0_filled)) begin
1108
                    deflate0_filled <= 1'b1;
1109
                end
1110
                else if ((deflate0_nb < 4)) begin
1111
                    // pass
1112
                end
1113
                else if ((deflate0_di == 0)) begin
1114
                    if ((deflate0_b1 == 120)) begin
1115
                        $write("deflate mode");
1116
                        $write("\n");
1117
                    end
1118
                    else begin
1119
                        $write("%h", deflate0_di);
1120
                        $write(" ");
1121
                        $write("%h", deflate0_dio);
1122
                        $write(" ");
1123
                        $write("%h", deflate0_nb);
1124
                        $write(" ");
1125
                        $write("%h", deflate0_b1);
1126
                        $write(" ");
1127
                        $write("%h", deflate0_b2);
1128
                        $write(" ");
1129
                        $write("%h", deflate0_b3);
1130
                        $write(" ");
1131
                        $write("%h", deflate0_b4);
1132
                        $write(" ");
1133
                        $write("%h", deflate0_isize);
1134
                        $write("\n");
1135
                        $finish;
1136
                        o_done <= 1'b1;
1137
                        deflate0_state <= 5'b00000;
1138
                    end
1139
                    MYHDL3_adv(16);
1140
                end
1141
                else begin
1142
                    if (MYHDL4_get4(0, 1)) begin
1143
                        $write("final");
1144
                        $write("\n");
1145
                        deflate0_final <= 1'b1;
1146
                    end
1147
                    hm = MYHDL5_get4(1, 2);
1148
                    deflate0_method <= hm;
1149
                    $write("method");
1150
                    $write(" ");
1151
                    $write("%0d", hm);
1152
                    $write("\n");
1153
                    case (hm)
1154
                        'h2: begin
1155
                            deflate0_state <= 5'b00010;
1156
                            deflate0_numCodeLength <= 0;
1157
                            deflate0_numLiterals <= 0;
1158
                            deflate0_static <= 1'b0;
1159
                            MYHDL6_adv(3);
1160
                        end
1161
                        'h1: begin
1162
                            deflate0_static <= 1'b1;
1163
                            deflate0_cur_static <= 0;
1164
                            deflate0_state <= 5'b01110;
1165
                            MYHDL7_adv(3);
1166
                        end
1167
                        'h0: begin
1168
                            deflate0_state <= 5'b10101;
1169
                            skip = (8 - deflate0_dio);
1170
                            if ((skip <= 2)) begin
1171
                                skip = (16 - deflate0_dio);
1172
                            end
1173
                            deflate0_length <= MYHDL8_get4(skip, 16);
1174
                            MYHDL9_adv((skip + 16));
1175
                            deflate0_cur_i <= 0;
1176
                            deflate0_offset <= 7;
1177
                        end
1178
                        default: begin
1179
                            deflate0_state <= 5'b00000;
1180
                            $write("Bad method");
1181
                            $write("\n");
1182
                            $finish;
1183
                        end
1184
                    endcase
1185
                end
1186
            end
1187
            5'b10110: begin
1188
                no_adv = 0;
1189
                if ((!deflate0_filled)) begin
1190
                    no_adv = 1;
1191
                    deflate0_filled <= 1'b1;
1192
                end
1193
                else if ((deflate0_nb < 4)) begin
1194
                    no_adv = 1;
1195
                    // pass
1196
                end
1197
                else if ((deflate0_cur_cstatic == 0)) begin
1198
                    deflate0_flush <= 1'b0;
1199
                    deflate0_ob1 <= 0;
1200
                    deflate0_adler1 <= 1;
1201
                    deflate0_adler2 <= 0;
1202
                    deflate0_ladler1 <= 0;
1203
                    deflate0_oaddr <= 0;
1204
                    deflate0_obyte <= 120;
1205
                end
1206
                else if ((deflate0_cur_cstatic == 1)) begin
1207
                    deflate0_oaddr <= 1;
1208
                    deflate0_obyte <= 156;
1209
                    deflate0_do <= 2;
1210
                end
1211
                else if ((deflate0_cur_cstatic == 2)) begin
1212
                    deflate0_oaddr <= deflate0_do;
1213
                    deflate0_obyte <= MYHDL10_put(3, 3);
1214
                    MYHDL11_put_adv(3, 3);
1215
                end
1216
                else if (deflate0_flush) begin
1217
                    $write("flush");
1218
                    $write(" ");
1219
                    $write("%h", deflate0_do);
1220
                    $write(" ");
1221
                    $write("%h", deflate0_ob1);
1222
                    $write("\n");
1223
                    no_adv = 1;
1224
                    deflate0_oaddr <= deflate0_do;
1225
                    deflate0_obyte <= deflate0_ob1;
1226
                    MYHDL12_do_flush;
1227
                end
1228
                else if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) > deflate0_isize)) begin
1229
                    if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) == (deflate0_isize + 1))) begin
1230
                        $write("Put EOF");
1231
                        $write(" ");
1232
                        $write("%h", deflate0_do);
1233
                        $write("\n");
1234
                        cs_i = 256;
1235
                        outlen = deflate0_codeLength[cs_i];
1236
                        outbits = deflate0_code_bits[cs_i];
1237
                        $write("EOF BITS:");
1238
                        $write(" ");
1239
                        $write("%0d", cs_i);
1240
                        $write(" ");
1241
                        $write("%h", outlen);
1242
                        $write(" ");
1243
                        $write("%h", outbits);
1244
                        $write("\n");
1245
                        deflate0_oaddr <= deflate0_do;
1246
                        deflate0_obyte <= MYHDL13_put(outbits, outlen);
1247
                        MYHDL14_put_adv(outbits, outlen);
1248
                    end
1249
                    else if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) == (deflate0_isize + 2))) begin
1250
                        $write("calc end adler");
1251
                        $write("\n");
1252
                        deflate0_adler2 <= ((deflate0_adler2 + deflate0_ladler1) % 65521);
1253
                        if ((deflate0_doo != 0)) begin
1254
                            deflate0_oaddr <= deflate0_do;
1255
                            deflate0_obyte <= deflate0_ob1;
1256
                            deflate0_do <= (deflate0_do + 1);
1257
                        end
1258
                    end
1259
                    else if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) == (deflate0_isize + 3))) begin
1260
                        $write("c1");
1261
                        $write("\n");
1262
                        deflate0_oaddr <= deflate0_do;
1263
                        deflate0_obyte <= (deflate0_adler2 >>> 8);
1264
                        deflate0_do <= (deflate0_do + 1);
1265
                    end
1266
                    else if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) == (deflate0_isize + 4))) begin
1267
                        $write("c2");
1268
                        $write("\n");
1269
                        deflate0_oaddr <= deflate0_do;
1270
                        deflate0_obyte <= (deflate0_adler2 & 255);
1271
                        deflate0_do <= (deflate0_do + 1);
1272
                    end
1273
                    else if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) == (deflate0_isize + 5))) begin
1274
                        $write("c3");
1275
                        $write("\n");
1276
                        deflate0_oaddr <= deflate0_do;
1277
                        deflate0_obyte <= (deflate0_adler1 >>> 8);
1278
                        deflate0_do <= (deflate0_do + 1);
1279
                    end
1280
                    else if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) == (deflate0_isize + 6))) begin
1281
                        $write("c4");
1282
                        $write("\n");
1283
                        deflate0_oaddr <= deflate0_do;
1284
                        deflate0_obyte <= (deflate0_adler1 & 255);
1285
                    end
1286
                    else if ((($signed({1'b0, deflate0_cur_cstatic}) - 3) == (deflate0_isize + 7))) begin
1287
                        $write("EOF finish");
1288
                        $write(" ");
1289
                        $write("%h", deflate0_do);
1290
                        $write("\n");
1291
                        o_done <= 1'b1;
1292
                        o_oprogress <= (deflate0_do + 1);
1293
                        deflate0_state <= 5'b00000;
1294
                    end
1295
                    else begin
1296
                        $write("%h", deflate0_cur_cstatic);
1297
                        $write(" ");
1298
                        $write("%h", deflate0_isize);
1299
                        $write("\n");
1300
                        $finish;
1301
                    end
1302
                end
1303
                else begin
1304
                    bdata = deflate0_iram[deflate0_di];
1305
                    adler1_next = ((deflate0_adler1 + bdata) % 65521);
1306
                    deflate0_adler1 <= adler1_next;
1307
                    deflate0_adler2 <= ((deflate0_adler2 + deflate0_ladler1) % 65521);
1308
                    deflate0_ladler1 <= adler1_next;
1309
                    deflate0_state <= 5'b10111;
1310
                    deflate0_cur_search <= (deflate0_di - 1);
1311
                end
1312
                if ((!no_adv)) begin
1313
                    deflate0_cur_cstatic <= (deflate0_cur_cstatic + 1);
1314
                end
1315
            end
1316
            5'b11000: begin
1317
                if (deflate0_flush) begin
1318
                    MYHDL15_do_flush;
1319
                end
1320
                else begin
1321
                    case ((deflate0_cur_i + 1))
1322
                        0: nextdist = 1;
1323
                        1: nextdist = 2;
1324
                        2: nextdist = 3;
1325
                        3: nextdist = 4;
1326
                        4: nextdist = 5;
1327
                        5: nextdist = 7;
1328
                        6: nextdist = 9;
1329
                        7: nextdist = 13;
1330
                        8: nextdist = 17;
1331
                        9: nextdist = 25;
1332
                        10: nextdist = 33;
1333
                        11: nextdist = 49;
1334
                        12: nextdist = 65;
1335
                        13: nextdist = 97;
1336
                        14: nextdist = 129;
1337
                        15: nextdist = 193;
1338
                        16: nextdist = 257;
1339
                        17: nextdist = 385;
1340
                        18: nextdist = 513;
1341
                        19: nextdist = 769;
1342
                        20: nextdist = 1025;
1343
                        21: nextdist = 1537;
1344
                        22: nextdist = 2049;
1345
                        23: nextdist = 3073;
1346
                        24: nextdist = 4097;
1347
                        25: nextdist = 6145;
1348
                        26: nextdist = 8193;
1349
                        27: nextdist = 12289;
1350
                        28: nextdist = 16385;
1351
                        default: nextdist = 24577;
1352
                    endcase
1353
                    if ((nextdist > deflate0_cur_dist)) begin
1354
                        case (deflate0_cur_i)
1355
                            0: copydist = 1;
1356
                            1: copydist = 2;
1357
                            2: copydist = 3;
1358
                            3: copydist = 4;
1359
                            4: copydist = 5;
1360
                            5: copydist = 7;
1361
                            6: copydist = 9;
1362
                            7: copydist = 13;
1363
                            8: copydist = 17;
1364
                            9: copydist = 25;
1365
                            10: copydist = 33;
1366
                            11: copydist = 49;
1367
                            12: copydist = 65;
1368
                            13: copydist = 97;
1369
                            14: copydist = 129;
1370
                            15: copydist = 193;
1371
                            16: copydist = 257;
1372
                            17: copydist = 385;
1373
                            18: copydist = 513;
1374
                            19: copydist = 769;
1375
                            20: copydist = 1025;
1376
                            21: copydist = 1537;
1377
                            22: copydist = 2049;
1378
                            23: copydist = 3073;
1379
                            24: copydist = 4097;
1380
                            25: copydist = 6145;
1381
                            26: copydist = 8193;
1382
                            27: copydist = 12289;
1383
                            28: copydist = 16385;
1384
                            default: copydist = 24577;
1385
                        endcase
1386
                        extra_dist = (deflate0_cur_dist - copydist);
1387
                        case ((deflate0_cur_i / 2))
1388
                            0: extra_bits = 0;
1389
                            1: extra_bits = 0;
1390
                            2: extra_bits = 1;
1391
                            3: extra_bits = 2;
1392
                            4: extra_bits = 3;
1393
                            5: extra_bits = 4;
1394
                            6: extra_bits = 5;
1395
                            7: extra_bits = 6;
1396
                            8: extra_bits = 7;
1397
                            9: extra_bits = 8;
1398
                            10: extra_bits = 9;
1399
                            11: extra_bits = 10;
1400
                            12: extra_bits = 11;
1401
                            13: extra_bits = 12;
1402
                            default: extra_bits = 13;
1403
                        endcase
1404
                        if ((extra_dist > ((1 << extra_bits) - 1))) begin
1405
                            $finish;
1406
                        end
1407
                        outcode = (MYHDL16_rev_bits(deflate0_cur_i, 5) | (extra_dist << 5));
1408
                        deflate0_oaddr <= deflate0_do;
1409
                        deflate0_obyte <= MYHDL17_put(outcode, (5 + extra_bits));
1410
                        MYHDL18_put_adv(outcode, (5 + extra_bits));
1411
                        deflate0_cur_i <= (($signed({1'b0, deflate0_di}) - $signed({1'b0, deflate0_length})) + 1);
1412
                        deflate0_state <= 5'b11001;
1413
                    end
1414
                    else begin
1415
                        deflate0_cur_i <= (deflate0_cur_i + 1);
1416
                    end
1417
                end
1418
            end
1419
            5'b11001: begin
1420
                if ((deflate0_cur_i < deflate0_di)) begin
1421
                    bdata = deflate0_iram[(deflate0_cur_i & 127)];
1422
                    adler1_next = ((deflate0_adler1 + bdata) % 65521);
1423
                    deflate0_adler1 <= adler1_next;
1424
                    deflate0_adler2 <= ((deflate0_adler2 + deflate0_ladler1) % 65521);
1425
                    deflate0_ladler1 <= adler1_next;
1426
                    deflate0_cur_i <= (deflate0_cur_i + 1);
1427
                end
1428
                else begin
1429
                    deflate0_state <= 5'b10110;
1430
                end
1431
            end
1432
            5'b10111: begin
1433
                if ((!deflate0_filled)) begin
1434
                    deflate0_filled <= 1'b1;
1435
                end
1436
                else if ((deflate0_nb < 4)) begin
1437
                    // pass
1438
                end
1439
                else begin
1440
                    if (((deflate0_cur_search >= 0) && (deflate0_cur_search >= ($signed({1'b0, deflate0_di}) - 32)) && ($signed({1'b0, deflate0_di}) < ($signed({1'b0, deflate0_isize}) - 3)))) begin
1441
                        if (((deflate0_iram[(deflate0_cur_search & 127)] == deflate0_b1) && (deflate0_iram[((deflate0_cur_search + 1) & 127)] == deflate0_b2) && (deflate0_iram[((deflate0_cur_search + 2) & 127)] == deflate0_b3))) begin
1442
                            lencode = 257;
1443
                            match = 3;
1444
                            if ((($signed({1'b0, deflate0_di}) < ($signed({1'b0, deflate0_isize}) - 4)) && (deflate0_iram[((deflate0_cur_search + 3) & 127)] == deflate0_b4))) begin
1445
                                lencode = 258;
1446
                                match = 4;
1447
                                if ((($signed({1'b0, deflate0_di}) < ($signed({1'b0, deflate0_isize}) - 5)) && (deflate0_iram[((deflate0_cur_search + 4) & 127)] == deflate0_iram[((deflate0_di + 4) & 127)]))) begin
1448
                                    lencode = 259;
1449
                                    match = 5;
1450
                                end
1451
                            end
1452
                            // if di < isize - 6 and                                             iram[cur_search+5 & IBS] == iram[di + 5 & IBS]:
1453
                            //     lencode = 260
1454
                            //     match = 6
1455
                            //     if di < isize - 7 and                                                 iram[cur_search+6 & IBS] == iram[di + 6 & IBS]:
1456
                            //         lencode = 261
1457
                            //         match = 7
1458
                            //         if di < isize - 8 and                                                     iram[cur_search+7 & IBS] == iram[di + 7 & IBS]:
1459
                            //             lencode = 262
1460
                            //             match = 8
1461
                            //             if di < isize - 9 and                                                         iram[cur_search+8 & IBS] == iram[di + 8 & IBS]:
1462
                            //                 lencode = 263
1463
                            //                 match = 9
1464
                            //                 if di < isize - 10 and                                                             iram[cur_search+9 & IBS] == iram[di + 9 & IBS]:
1465
                            //                     lencode = 264
1466
                            //                     match = 10
1467
                            $write("found:");
1468
                            $write(" ");
1469
                            $write("%h", deflate0_cur_search);
1470
                            $write(" ");
1471
                            $write("%h", deflate0_di);
1472
                            $write(" ");
1473
                            $write("%h", deflate0_isize);
1474
                            $write(" ");
1475
                            $write("%0d", match);
1476
                            $write("\n");
1477
                            outlen = deflate0_codeLength[lencode];
1478
                            outbits = deflate0_code_bits[lencode];
1479
                            deflate0_oaddr <= deflate0_do;
1480
                            deflate0_obyte <= MYHDL19_put(outbits, outlen);
1481
                            MYHDL20_put_adv(outbits, outlen);
1482
                            distance = ($signed({1'b0, deflate0_di}) - deflate0_cur_search);
1483
                            deflate0_cur_dist <= distance;
1484
                            deflate0_cur_i <= 0;
1485
                            deflate0_di <= (deflate0_di + match);
1486
                            deflate0_cur_cstatic <= ((deflate0_cur_cstatic + match) - 1);
1487
                            deflate0_length <= match;
1488
                            deflate0_state <= 5'b11000;
1489
                        end
1490
                        else begin
1491
                            deflate0_cur_search <= (deflate0_cur_search - 1);
1492
                        end
1493
                    end
1494
                    else begin
1495
                        bdata = deflate0_iram[deflate0_di];
1496
                        deflate0_di <= (deflate0_di + 1);
1497
                        outlen = deflate0_codeLength[bdata];
1498
                        outbits = deflate0_code_bits[bdata];
1499
                        deflate0_oaddr <= deflate0_do;
1500
                        deflate0_obyte <= MYHDL21_put(outbits, outlen);
1501
                        MYHDL22_put_adv(outbits, outlen);
1502
                        deflate0_state <= 5'b10110;
1503
                    end
1504
                end
1505
            end
1506
            5'b01110: begin
1507
                for (stat_i=0; stat_i<144; stat_i=stat_i+1) begin
1508
                    deflate0_codeLength[stat_i] <= 8;
1509
                end
1510
                for (stat_i=144; stat_i<256; stat_i=stat_i+1) begin
1511
                    deflate0_codeLength[stat_i] <= 9;
1512
                end
1513
                for (stat_i=256; stat_i<280; stat_i=stat_i+1) begin
1514
                    deflate0_codeLength[stat_i] <= 7;
1515
                end
1516
                for (stat_i=280; stat_i<288; stat_i=stat_i+1) begin
1517
                    deflate0_codeLength[stat_i] <= 8;
1518
                end
1519
                deflate0_numCodeLength <= 288;
1520
                deflate0_cur_HF1 <= 0;
1521
                deflate0_state <= 5'b00111;
1522
                // if cur_static < 288:
1523
                //     if cur_static < 144:
1524
                //         codeLength[cur_static].next = 8
1525
                //     elif cur_static < 256:
1526
                //         codeLength[cur_static].next = 9
1527
                //     elif cur_static < 280:
1528
                //         codeLength[cur_static].next = 7
1529
                //     else:
1530
                //         codeLength[cur_static].next = 8
1531
                //     cur_static.next = cur_static + 1
1532
                // else:
1533
                //     numCodeLength.next = 288
1534
                //     cur_HF1.next = 0
1535
                //     state.next = d_state.HF1
1536
            end
1537
            5'b00010: begin
1538
                if ((!deflate0_filled)) begin
1539
                    deflate0_filled <= 1'b1;
1540
                end
1541
                else if ((deflate0_nb < 4)) begin
1542
                    // pass
1543
                end
1544
                else if ((deflate0_numLiterals == 0)) begin
1545
                    deflate0_numLiterals <= (257 + MYHDL31_get4(0, 5));
1546
                    $write("NL:");
1547
                    $write(" ");
1548
                    $write("%0d", (257 + MYHDL32_get4(0, 5)));
1549
                    $write("\n");
1550
                    deflate0_numDistance <= (1 + MYHDL33_get4(5, 5));
1551
                    $write("ND:");
1552
                    $write(" ");
1553
                    $write("%0d", (1 + MYHDL34_get4(5, 5)));
1554
                    $write("\n");
1555
                    deflate0_b_numCodeLength <= (4 + MYHDL35_get4(10, 4));
1556
                    $write("NCL:");
1557
                    $write(" ");
1558
                    $write("%0d", (4 + MYHDL36_get4(10, 4)));
1559
                    $write("\n");
1560
                    deflate0_numCodeLength <= 0;
1561
                    MYHDL37_adv(14);
1562
                end
1563
                else begin
1564
                    if ((deflate0_numCodeLength < 19)) begin
1565
                        case (deflate0_numCodeLength)
1566
                            0: clo_i = 16;
1567
                            1: clo_i = 17;
1568
                            2: clo_i = 18;
1569
                            3: clo_i = 0;
1570
                            4: clo_i = 8;
1571
                            5: clo_i = 7;
1572
                            6: clo_i = 9;
1573
                            7: clo_i = 6;
1574
                            8: clo_i = 10;
1575
                            9: clo_i = 5;
1576
                            10: clo_i = 11;
1577
                            11: clo_i = 4;
1578
                            12: clo_i = 12;
1579
                            13: clo_i = 3;
1580
                            14: clo_i = 13;
1581
                            15: clo_i = 2;
1582
                            16: clo_i = 14;
1583
                            17: clo_i = 1;
1584
                            default: clo_i = 15;
1585
                        endcase
1586
                        if ((deflate0_numCodeLength < deflate0_b_numCodeLength)) begin
1587
                            deflate0_codeLength[clo_i] <= MYHDL38_get4(0, 3);
1588
                            MYHDL39_adv(3);
1589
                        end
1590
                        else begin
1591
                            deflate0_codeLength[clo_i] <= 0;
1592
                        end
1593
                        deflate0_numCodeLength <= (deflate0_numCodeLength + 1);
1594
                    end
1595
                    else begin
1596
                        deflate0_numCodeLength <= 19;
1597
                        deflate0_cur_HF1 <= 0;
1598
                        deflate0_state <= 5'b00111;
1599
                    end
1600
                end
1601
            end
1602
            5'b00011: begin
1603
                if ((!deflate0_filled)) begin
1604
                    deflate0_filled <= 1'b1;
1605
                end
1606
                else if ((deflate0_nb < 4)) begin
1607
                    // pass
1608
                end
1609
                else if ((deflate0_numCodeLength < (deflate0_numLiterals + deflate0_numDistance))) begin
1610
                    n_adv = 0;
1611
                    if ((deflate0_code < 16)) begin
1612
                        deflate0_howOften <= 1;
1613
                        deflate0_lastToken <= deflate0_code;
1614
                    end
1615
                    else if ((deflate0_code == 16)) begin
1616
                        deflate0_howOften <= (3 + MYHDL40_get4(0, 2));
1617
                        n_adv = 2;
1618
                    end
1619
                    else if ((deflate0_code == 17)) begin
1620
                        deflate0_howOften <= (3 + MYHDL41_get4(0, 3));
1621
                        deflate0_lastToken <= 0;
1622
                        n_adv = 3;
1623
                    end
1624
                    else if ((deflate0_code == 18)) begin
1625
                        deflate0_howOften <= (11 + MYHDL42_get4(0, 7));
1626
                        deflate0_lastToken <= 0;
1627
                        n_adv = 7;
1628
                    end
1629
                    else begin
1630
                        $finish;
1631
                    end
1632
                    if ((n_adv != 0)) begin
1633
                        MYHDL43_adv(n_adv);
1634
                    end
1635
                    deflate0_state <= 5'b00100;
1636
                end
1637
                else begin
1638
                    $write("FILL UP");
1639
                    $write("\n");
1640
                    for (dbl_i=0; dbl_i<32; dbl_i=dbl_i+1) begin
1641
                        dbl = 0;
1642
                        if (((dbl_i + $signed({1'b0, deflate0_numLiterals})) < deflate0_numCodeLength)) begin
1643
                            dbl = deflate0_codeLength[(dbl_i + $signed({1'b0, deflate0_numLiterals}))];
1644
                        end
1645
                        deflate0_distanceLength[dbl_i] <= dbl;
1646
                    end
1647
                    deflate0_cur_i <= deflate0_numLiterals;
1648
                    deflate0_state <= 5'b00110;
1649
                end
1650
            end
1651
            default: begin
1652
                if ((deflate0_state == 5'b00110)) begin
1653
                    if ((deflate0_cur_i < 288)) begin
1654
                        deflate0_codeLength[deflate0_cur_i] <= 0;
1655
                        deflate0_cur_i <= (deflate0_cur_i + 1);
1656
                    end
1657
                    else begin
1658
                        deflate0_numCodeLength <= 288;
1659
                        deflate0_method <= 3;
1660
                        deflate0_cur_HF1 <= 0;
1661
                        deflate0_state <= 5'b00111;
1662
                    end
1663
                end
1664
                else begin
1665
                    case (deflate0_state)
1666
                        5'b00101: begin
1667
                            $write("DISTTREE");
1668
                            $write("\n");
1669
                            for (dist_i=0; dist_i<32; dist_i=dist_i+1) begin
1670
                                deflate0_codeLength[dist_i] <= deflate0_distanceLength[dist_i];
1671
                            end
1672
                            deflate0_numCodeLength <= 32;
1673
                            deflate0_method <= 4;
1674
                            deflate0_cur_HF1 <= 0;
1675
                            deflate0_state <= 5'b00111;
1676
                        end
1677
                        5'b00100: begin
1678
                            if ((deflate0_howOften != 0)) begin
1679
                                deflate0_codeLength[deflate0_numCodeLength] <= deflate0_lastToken;
1680
                                deflate0_howOften <= (deflate0_howOften - 1);
1681
                                deflate0_numCodeLength <= (deflate0_numCodeLength + 1);
1682
                            end
1683
                            else if ((deflate0_numCodeLength < (deflate0_numLiterals + deflate0_numDistance))) begin
1684
                                deflate0_cur_next <= 0;
1685
                                deflate0_state <= 5'b10011;
1686
                            end
1687
                            else begin
1688
                                deflate0_state <= 5'b00011;
1689
                            end
1690
                        end
1691
                        5'b00111: begin
1692
                            if ((deflate0_cur_HF1 < 16)) begin
1693
                                deflate0_bitLengthCount[deflate0_cur_HF1] <= 0;
1694
                            end
1695
                            if ((deflate0_cur_HF1 < 128)) begin
1696
                                deflate0_d_leaves[deflate0_cur_HF1] <= 0;
1697
                            end
1698
                            if (((deflate0_method != 4) && (deflate0_cur_HF1 < 512))) begin
1699
                                deflate0_lwaddr <= deflate0_cur_HF1;
1700
                                deflate0_wleaf <= 0;
1701
                            end
1702
                            limit = 512;
1703
                            if ((deflate0_method == 4)) begin
1704
                                limit = 128;
1705
                            end
1706
                            if ((deflate0_cur_HF1 < limit)) begin
1707
                                deflate0_cur_HF1 <= (deflate0_cur_HF1 + 1);
1708
                            end
1709
                            else begin
1710
                                $write("DID HF1 INIT");
1711
                                $write("\n");
1712
                                deflate0_cur_i <= 0;
1713
                                deflate0_state <= 5'b01000;
1714
                            end
1715
                        end
1716
                        5'b01000: begin
1717
                            if ((deflate0_cur_i < deflate0_numCodeLength)) begin
1718
                                j = deflate0_codeLength[deflate0_cur_i];
1719
                                deflate0_bitLengthCount[j] <= (deflate0_bitLengthCount[j] + 1);
1720
                                deflate0_cur_i <= (deflate0_cur_i + 1);
1721
                            end
1722
                            else begin
1723
                                deflate0_bitLengthCount[0] <= 0;
1724
                                deflate0_state <= 5'b01001;
1725
                                deflate0_cur_i <= 1;
1726
                                if ((deflate0_method == 4)) begin
1727
                                    deflate0_d_maxBits <= 0;
1728
                                end
1729
                                else begin
1730
                                    deflate0_maxBits <= 0;
1731
                                end
1732
                                deflate0_minBits <= 15;
1733
                            end
1734
                        end
1735
                        5'b01001: begin
1736
                            if ((deflate0_cur_i <= 15)) begin
1737
                                if ((deflate0_bitLengthCount[deflate0_cur_i] != 0)) begin
1738
                                    if ((deflate0_cur_i < deflate0_minBits)) begin
1739
                                        deflate0_minBits <= deflate0_cur_i;
1740
                                    end
1741
                                    if ((deflate0_method == 4)) begin
1742
                                        if ((deflate0_cur_i > deflate0_d_maxBits)) begin
1743
                                            deflate0_d_maxBits <= deflate0_cur_i;
1744
                                        end
1745
                                    end
1746
                                    else begin
1747
                                        if ((deflate0_cur_i > deflate0_maxBits)) begin
1748
                                            deflate0_maxBits <= deflate0_cur_i;
1749
                                        end
1750
                                    end
1751
                                end
1752
                                deflate0_cur_i <= (deflate0_cur_i + 1);
1753
                            end
1754
                            else begin
1755
                                $write("%h", deflate0_minBits);
1756
                                $write(" ");
1757
                                $write("%h", deflate0_maxBits);
1758
                                $write("\n");
1759
                                t = 10;
1760
                                if ((deflate0_method == 4)) begin
1761
                                    if ((t > deflate0_d_maxBits)) begin
1762
                                        t = deflate0_d_maxBits;
1763
                                    end
1764
                                    deflate0_d_instantMaxBit <= t;
1765
                                    deflate0_d_instantMask <= ((1 << t) - 1);
1766
                                end
1767
                                else begin
1768
                                    if ((t > deflate0_maxBits)) begin
1769
                                        t = deflate0_maxBits;
1770
                                    end
1771
                                    deflate0_instantMaxBit <= t;
1772
                                    deflate0_instantMask <= ((1 << t) - 1);
1773
                                end
1774
                                $write("%0d", ((1 << t) - 1));
1775
                                $write("\n");
1776
                                deflate0_state <= 5'b01010;
1777
                                deflate0_cur_i <= deflate0_minBits;
1778
                                deflate0_code <= 0;
1779
                                for (hf2_i=0; hf2_i<15; hf2_i=hf2_i+1) begin
1780
                                    deflate0_nextCode[hf2_i] <= 0;
1781
                                end
1782
                                $write("to HF3");
1783
                                $write("\n");
1784
                            end
1785
                        end
1786
                        5'b01010: begin
1787
                            amb = deflate0_maxBits;
1788
                            if ((deflate0_method == 4)) begin
1789
                                amb = deflate0_d_maxBits;
1790
                            end
1791
                            if ((deflate0_cur_i <= amb)) begin
1792
                                ncode = ((deflate0_code + deflate0_bitLengthCount[($signed({1'b0, deflate0_cur_i}) - 1)]) << 1);
1793
                                deflate0_code <= ncode;
1794
                                deflate0_nextCode[deflate0_cur_i] <= ncode;
1795
                                deflate0_cur_i <= (deflate0_cur_i + 1);
1796
                            end
1797
                            else begin
1798
                                deflate0_state <= 5'b01011;
1799
                                deflate0_cur_i <= 0;
1800
                                deflate0_spread_i <= 0;
1801
                                $write("to HF4");
1802
                                $write("\n");
1803
                            end
1804
                        end
1805
                        5'b01100: begin
1806
                            canonical = deflate0_nextCode[deflate0_bits];
1807
                            deflate0_nextCode[deflate0_bits] <= (deflate0_nextCode[deflate0_bits] + 1);
1808
                            if ((deflate0_bits > 15)) begin
1809
                                $finish;
1810
                            end
1811
                            deflate0_reverse <= MYHDL50_rev_bits(canonical, deflate0_bits);
1812
                            deflate0_leaf <= MYHDL51_makeLeaf(deflate0_spread_i, deflate0_bits);
1813
                            deflate0_state <= 5'b01101;
1814
                        end
1815
                        5'b01101: begin
1816
                            if ((deflate0_method == 4)) begin
1817
                                deflate0_d_leaves[deflate0_reverse] <= deflate0_leaf;
1818
                                if ((deflate0_bits <= deflate0_d_instantMaxBit)) begin
1819
                                    if (((deflate0_reverse + (1 << deflate0_bits)) <= deflate0_d_instantMask)) begin
1820
                                        deflate0_step <= (1 << deflate0_bits);
1821
                                        deflate0_spread <= (deflate0_reverse + (1 << deflate0_bits));
1822
                                        deflate0_state <= 5'b10010;
1823
                                    end
1824
                                    else begin
1825
                                        deflate0_spread_i <= (deflate0_spread_i + 1);
1826
                                        deflate0_state <= 5'b01011;
1827
                                    end
1828
                                end
1829
                                else begin
1830
                                    deflate0_state <= 5'b01011;
1831
                                    deflate0_spread_i <= (deflate0_spread_i + 1);
1832
                                end
1833
                            end
1834
                            else begin
1835
                                deflate0_wleaf <= deflate0_leaf;
1836
                                deflate0_lwaddr <= deflate0_reverse;
1837
                                deflate0_code_bits[deflate0_spread_i] <= deflate0_reverse;
1838
                                if ((deflate0_bits <= deflate0_instantMaxBit)) begin
1839
                                    if (((deflate0_reverse + (1 << deflate0_bits)) <= deflate0_instantMask)) begin
1840
                                        deflate0_step <= (1 << deflate0_bits);
1841
                                        deflate0_spread <= (deflate0_reverse + (1 << deflate0_bits));
1842
                                        deflate0_state <= 5'b10010;
1843
                                    end
1844
                                    else begin
1845
                                        deflate0_spread_i <= (deflate0_spread_i + 1);
1846
                                        deflate0_state <= 5'b01011;
1847
                                    end
1848
                                end
1849
                                else begin
1850
                                    deflate0_spread_i <= (deflate0_spread_i + 1);
1851
                                    deflate0_state <= 5'b01011;
1852
                                end
1853
                            end
1854
                        end
1855
                        5'b01011: begin
1856
                            if ((deflate0_spread_i < deflate0_numCodeLength)) begin
1857
                                bits_next = deflate0_codeLength[deflate0_spread_i];
1858
                                if ((bits_next != 0)) begin
1859
                                    deflate0_bits <= bits_next;
1860
                                    deflate0_state <= 5'b01100;
1861
                                end
1862
                                else begin
1863
                                    deflate0_spread_i <= (deflate0_spread_i + 1);
1864
                                end
1865
                            end
1866
                            else begin
1867
                                if (deflate0_do_compress) begin
1868
                                    deflate0_state <= 5'b10110;
1869
                                    deflate0_cur_cstatic <= 0;
1870
                                end
1871
                                else if ((deflate0_method == 3)) begin
1872
                                    deflate0_state <= 5'b00101;
1873
                                end
1874
                                else if ((deflate0_method == 4)) begin
1875
                                    $write("DEFLATE m2!");
1876
                                    $write("\n");
1877
                                    deflate0_state <= 5'b10011;
1878
                                end
1879
                                else if ((deflate0_method == 2)) begin
1880
                                    deflate0_numCodeLength <= 0;
1881
                                    deflate0_state <= 5'b10011;
1882
                                end
1883
                                else begin
1884
                                    deflate0_state <= 5'b10011;
1885
                                end
1886
                                deflate0_cur_next <= 0;
1887
                                deflate0_cur_i <= 0;
1888
                            end
1889
                        end
1890
                        5'b10010: begin
1891
                            if ((deflate0_method == 4)) begin
1892
                                deflate0_d_leaves[deflate0_spread] <= MYHDL52_makeLeaf(deflate0_spread_i, deflate0_codeLength[deflate0_spread_i]);
1893
                            end
1894
                            else begin
1895
                                deflate0_lwaddr <= deflate0_spread;
1896
                                deflate0_wleaf <= MYHDL53_makeLeaf(deflate0_spread_i, deflate0_codeLength[deflate0_spread_i]);
1897
                            end
1898
                            aim = deflate0_instantMask;
1899
                            if ((deflate0_method == 4)) begin
1900
                                aim = deflate0_d_instantMask;
1901
                            end
1902
                            if (($signed({1'b0, deflate0_spread}) > ($signed({1'b0, aim}) - $signed({1'b0, deflate0_step})))) begin
1903
                                deflate0_spread_i <= (deflate0_spread_i + 1);
1904
                                deflate0_state <= 5'b01011;
1905
                            end
1906
                            else begin
1907
                                deflate0_spread <= (deflate0_spread + deflate0_step);
1908
                            end
1909
                        end
1910
                        5'b10011: begin
1911
                            if ((!deflate0_filled)) begin
1912
                                deflate0_filled <= 1'b1;
1913
                            end
1914
                            else if ((deflate0_nb < 4)) begin
1915
                                // pass
1916
                            end
1917
                            else if ((deflate0_cur_next == 0)) begin
1918
                                cto = MYHDL54_get4(0, deflate0_maxBits);
1919
                                deflate0_cur_next <= 1;
1920
                                mask = ((1 << deflate0_instantMaxBit) - 1);
1921
                                deflate0_leaf <= deflate0_leaves[(cto & mask)];
1922
                            end
1923
                            else begin
1924
                                if ((MYHDL55_get_bits(deflate0_leaf) < 1)) begin
1925
                                    $write("< 1 bits: ");
1926
                                    $write("\n");
1927
                                    $finish;
1928
                                end
1929
                                MYHDL57_adv(MYHDL56_get_bits(deflate0_leaf));
1930
                                if ((MYHDL58_get_code(deflate0_leaf) == 0)) begin
1931
                                    $write("leaf 0");
1932
                                    $write("\n");
1933
                                end
1934
                                deflate0_code <= MYHDL59_get_code(deflate0_leaf);
1935
                                if ((deflate0_method == 2)) begin
1936
                                    deflate0_state <= 5'b00011;
1937
                                end
1938
                                else begin
1939
                                    deflate0_state <= 5'b10100;
1940
                                end
1941
                            end
1942
                        end
1943
                        5'b01111: begin
1944
                            if ((!deflate0_filled)) begin
1945
                                deflate0_filled <= 1'b1;
1946
                            end
1947
                            else if ((deflate0_nb < 4)) begin
1948
                                // pass
1949
                            end
1950
                            else begin
1951
                                token = (deflate0_code - 257);
1952
                                case (token)
1953
                                    0: extraLength = 0;
1954
                                    1: extraLength = 0;
1955
                                    2: extraLength = 0;
1956
                                    3: extraLength = 0;
1957
                                    4: extraLength = 0;
1958
                                    5: extraLength = 0;
1959
                                    6: extraLength = 0;
1960
                                    7: extraLength = 0;
1961
                                    8: extraLength = 1;
1962
                                    9: extraLength = 1;
1963
                                    10: extraLength = 1;
1964
                                    11: extraLength = 1;
1965
                                    12: extraLength = 2;
1966
                                    13: extraLength = 2;
1967
                                    14: extraLength = 2;
1968
                                    15: extraLength = 2;
1969
                                    16: extraLength = 3;
1970
                                    17: extraLength = 3;
1971
                                    18: extraLength = 3;
1972
                                    19: extraLength = 3;
1973
                                    20: extraLength = 4;
1974
                                    21: extraLength = 4;
1975
                                    22: extraLength = 4;
1976
                                    23: extraLength = 4;
1977
                                    24: extraLength = 5;
1978
                                    25: extraLength = 5;
1979
                                    26: extraLength = 5;
1980
                                    27: extraLength = 5;
1981
                                    default: extraLength = 0;
1982
                                endcase
1983
                                cto = MYHDL60_get4(extraLength, deflate0_d_maxBits);
1984
                                mask = ((1 << deflate0_d_instantMaxBit) - 1);
1985
                                deflate0_leaf <= deflate0_d_leaves[(cto & mask)];
1986
                                deflate0_state <= 5'b10000;
1987
                            end
1988
                        end
1989
                        5'b10000: begin
1990
                            if ((MYHDL61_get_bits(deflate0_leaf) == 0)) begin
1991
                                $finish;
1992
                            end
1993
                            token = (deflate0_code - 257);
1994
                            case (token)
1995
                                0: tlength = 3;
1996
                                1: tlength = 4;
1997
                                2: tlength = 5;
1998
                                3: tlength = 6;
1999
                                4: tlength = 7;
2000
                                5: tlength = 8;
2001
                                6: tlength = 9;
2002
                                7: tlength = 10;
2003
                                8: tlength = 11;
2004
                                9: tlength = 13;
2005
                                10: tlength = 15;
2006
                                11: tlength = 17;
2007
                                12: tlength = 19;
2008
                                13: tlength = 23;
2009
                                14: tlength = 27;
2010
                                15: tlength = 31;
2011
                                16: tlength = 35;
2012
                                17: tlength = 43;
2013
                                18: tlength = 51;
2014
                                19: tlength = 59;
2015
                                20: tlength = 67;
2016
                                21: tlength = 83;
2017
                                22: tlength = 99;
2018
                                23: tlength = 115;
2019
                                24: tlength = 131;
2020
                                25: tlength = 163;
2021
                                26: tlength = 195;
2022
                                27: tlength = 227;
2023
                                default: tlength = 258;
2024
                            endcase
2025
                            case (token)
2026
                                0: extraLength = 0;
2027
                                1: extraLength = 0;
2028
                                2: extraLength = 0;
2029
                                3: extraLength = 0;
2030
                                4: extraLength = 0;
2031
                                5: extraLength = 0;
2032
                                6: extraLength = 0;
2033
                                7: extraLength = 0;
2034
                                8: extraLength = 1;
2035
                                9: extraLength = 1;
2036
                                10: extraLength = 1;
2037
                                11: extraLength = 1;
2038
                                12: extraLength = 2;
2039
                                13: extraLength = 2;
2040
                                14: extraLength = 2;
2041
                                15: extraLength = 2;
2042
                                16: extraLength = 3;
2043
                                17: extraLength = 3;
2044
                                18: extraLength = 3;
2045
                                19: extraLength = 3;
2046
                                20: extraLength = 4;
2047
                                21: extraLength = 4;
2048
                                22: extraLength = 4;
2049
                                23: extraLength = 4;
2050
                                24: extraLength = 5;
2051
                                25: extraLength = 5;
2052
                                26: extraLength = 5;
2053
                                27: extraLength = 5;
2054
                                default: extraLength = 0;
2055
                            endcase
2056
                            tlength = tlength + MYHDL62_get4(0, extraLength);
2057
                            distanceCode = MYHDL63_get_code(deflate0_leaf);
2058
                            case (distanceCode)
2059
                                0: distance = 1;
2060
                                1: distance = 2;
2061
                                2: distance = 3;
2062
                                3: distance = 4;
2063
                                4: distance = 5;
2064
                                5: distance = 7;
2065
                                6: distance = 9;
2066
                                7: distance = 13;
2067
                                8: distance = 17;
2068
                                9: distance = 25;
2069
                                10: distance = 33;
2070
                                11: distance = 49;
2071
                                12: distance = 65;
2072
                                13: distance = 97;
2073
                                14: distance = 129;
2074
                                15: distance = 193;
2075
                                16: distance = 257;
2076
                                17: distance = 385;
2077
                                18: distance = 513;
2078
                                19: distance = 769;
2079
                                20: distance = 1025;
2080
                                21: distance = 1537;
2081
                                22: distance = 2049;
2082
                                23: distance = 3073;
2083
                                24: distance = 4097;
2084
                                25: distance = 6145;
2085
                                26: distance = 8193;
2086
                                27: distance = 12289;
2087
                                28: distance = 16385;
2088
                                default: distance = 24577;
2089
                            endcase
2090
                            case ($signed(distanceCode >>> 1))
2091
                                0: moreBits = 0;
2092
                                1: moreBits = 0;
2093
                                2: moreBits = 1;
2094
                                3: moreBits = 2;
2095
                                4: moreBits = 3;
2096
                                5: moreBits = 4;
2097
                                6: moreBits = 5;
2098
                                7: moreBits = 6;
2099
                                8: moreBits = 7;
2100
                                9: moreBits = 8;
2101
                                10: moreBits = 9;
2102
                                11: moreBits = 10;
2103
                                12: moreBits = 11;
2104
                                13: moreBits = 12;
2105
                                default: moreBits = 13;
2106
                            endcase
2107
                            mored = MYHDL65_get4((extraLength + MYHDL64_get_bits(deflate0_leaf)), moreBits);
2108
                            distance = distance + mored;
2109
                            MYHDL67_adv(((moreBits + extraLength) + MYHDL66_get_bits(deflate0_leaf)));
2110
                            deflate0_offset <= ($signed({1'b0, deflate0_do}) - distance);
2111
                            deflate0_length <= tlength;
2112
                            deflate0_cur_i <= 0;
2113
                            deflate0_oraddr <= deflate0_offset;
2114
                            deflate0_state <= 5'b10101;
2115
                        end
2116
                        default: begin
2117
                            if ((deflate0_state == 5'b10100)) begin
2118
                                if ((!deflate0_filled)) begin
2119
                                    deflate0_filled <= 1'b1;
2120
                                end
2121
                                else if ((deflate0_nb < 4)) begin
2122
                                    // pass
2123
                                end
2124
                                else if (($signed({1'b0, deflate0_di}) > ($signed({1'b0, deflate0_isize}) - 3))) begin
2125
                                    deflate0_state <= 5'b00000;
2126
                                    o_done <= 1'b1;
2127
                                    $write("NO EOF ");
2128
                                    $write(" ");
2129
                                    $write("%h", deflate0_di);
2130
                                    $write("\n");
2131
                                    $finish;
2132
                                end
2133
                                else if ((deflate0_code == 256)) begin
2134
                                    $write("EOF:");
2135
                                    $write(" ");
2136
                                    $write("%h", deflate0_di);
2137
                                    $write(" ");
2138
                                    $write("%h", deflate0_do);
2139
                                    $write("\n");
2140
                                    if ((!deflate0_final)) begin
2141
                                        deflate0_state <= 5'b00001;
2142
                                    end
2143
                                    else begin
2144
                                        o_done <= 1'b1;
2145
                                        o_oprogress <= deflate0_do;
2146
                                        deflate0_state <= 5'b00000;
2147
                                    end
2148
                                end
2149
                                else begin
2150
                                    if ((deflate0_code < 256)) begin
2151
                                        deflate0_oaddr <= deflate0_do;
2152
                                        deflate0_obyte <= deflate0_code;
2153
                                        o_oprogress <= (deflate0_do + 1);
2154
                                        deflate0_do <= (deflate0_do + 1);
2155
                                        deflate0_cur_next <= 0;
2156
                                        deflate0_state <= 5'b10011;
2157
                                    end
2158
                                    else if ((deflate0_code == 300)) begin
2159
                                        $finish;
2160
                                    end
2161
                                    else begin
2162
                                        if (deflate0_static) begin
2163
                                            token = (deflate0_code - 257);
2164
                                            case (token)
2165
                                                0: tlength = 3;
2166
                                                1: tlength = 4;
2167
                                                2: tlength = 5;
2168
                                                3: tlength = 6;
2169
                                                4: tlength = 7;
2170
                                                5: tlength = 8;
2171
                                                6: tlength = 9;
2172
                                                7: tlength = 10;
2173
                                                8: tlength = 11;
2174
                                                9: tlength = 13;
2175
                                                10: tlength = 15;
2176
                                                11: tlength = 17;
2177
                                                12: tlength = 19;
2178
                                                13: tlength = 23;
2179
                                                14: tlength = 27;
2180
                                                15: tlength = 31;
2181
                                                16: tlength = 35;
2182
                                                17: tlength = 43;
2183
                                                18: tlength = 51;
2184
                                                19: tlength = 59;
2185
                                                20: tlength = 67;
2186
                                                21: tlength = 83;
2187
                                                22: tlength = 99;
2188
                                                23: tlength = 115;
2189
                                                24: tlength = 131;
2190
                                                25: tlength = 163;
2191
                                                26: tlength = 195;
2192
                                                27: tlength = 227;
2193
                                                default: tlength = 258;
2194
                                            endcase
2195
                                            case (token)
2196
                                                0: extraLength = 0;
2197
                                                1: extraLength = 0;
2198
                                                2: extraLength = 0;
2199
                                                3: extraLength = 0;
2200
                                                4: extraLength = 0;
2201
                                                5: extraLength = 0;
2202
                                                6: extraLength = 0;
2203
                                                7: extraLength = 0;
2204
                                                8: extraLength = 1;
2205
                                                9: extraLength = 1;
2206
                                                10: extraLength = 1;
2207
                                                11: extraLength = 1;
2208
                                                12: extraLength = 2;
2209
                                                13: extraLength = 2;
2210
                                                14: extraLength = 2;
2211
                                                15: extraLength = 2;
2212
                                                16: extraLength = 3;
2213
                                                17: extraLength = 3;
2214
                                                18: extraLength = 3;
2215
                                                19: extraLength = 3;
2216
                                                20: extraLength = 4;
2217
                                                21: extraLength = 4;
2218
                                                22: extraLength = 4;
2219
                                                23: extraLength = 4;
2220
                                                24: extraLength = 5;
2221
                                                25: extraLength = 5;
2222
                                                26: extraLength = 5;
2223
                                                27: extraLength = 5;
2224
                                                default: extraLength = 0;
2225
                                            endcase
2226
                                            tlength = tlength + MYHDL68_get4(0, extraLength);
2227
                                            t = MYHDL69_get4(extraLength, 5);
2228
                                            distanceCode = MYHDL70_rev_bits(t, 5);
2229
                                            case (distanceCode)
2230
                                                0: distance = 1;
2231
                                                1: distance = 2;
2232
                                                2: distance = 3;
2233
                                                3: distance = 4;
2234
                                                4: distance = 5;
2235
                                                5: distance = 7;
2236
                                                6: distance = 9;
2237
                                                7: distance = 13;
2238
                                                8: distance = 17;
2239
                                                9: distance = 25;
2240
                                                10: distance = 33;
2241
                                                11: distance = 49;
2242
                                                12: distance = 65;
2243
                                                13: distance = 97;
2244
                                                14: distance = 129;
2245
                                                15: distance = 193;
2246
                                                16: distance = 257;
2247
                                                17: distance = 385;
2248
                                                18: distance = 513;
2249
                                                19: distance = 769;
2250
                                                20: distance = 1025;
2251
                                                21: distance = 1537;
2252
                                                22: distance = 2049;
2253
                                                23: distance = 3073;
2254
                                                24: distance = 4097;
2255
                                                25: distance = 6145;
2256
                                                26: distance = 8193;
2257
                                                27: distance = 12289;
2258
                                                28: distance = 16385;
2259
                                                default: distance = 24577;
2260
                                            endcase
2261
                                            case ($signed(distanceCode >>> 1))
2262
                                                0: moreBits = 0;
2263
                                                1: moreBits = 0;
2264
                                                2: moreBits = 1;
2265
                                                3: moreBits = 2;
2266
                                                4: moreBits = 3;
2267
                                                5: moreBits = 4;
2268
                                                6: moreBits = 5;
2269
                                                7: moreBits = 6;
2270
                                                8: moreBits = 7;
2271
                                                9: moreBits = 8;
2272
                                                10: moreBits = 9;
2273
                                                11: moreBits = 10;
2274
                                                12: moreBits = 11;
2275
                                                13: moreBits = 12;
2276
                                                default: moreBits = 13;
2277
                                            endcase
2278
                                            distance = distance + MYHDL71_get4((extraLength + 5), moreBits);
2279
                                            MYHDL72_adv(((extraLength + 5) + moreBits));
2280
                                            deflate0_offset <= ($signed({1'b0, deflate0_do}) - distance);
2281
                                            deflate0_length <= tlength;
2282
                                            deflate0_cur_i <= 0;
2283
                                            deflate0_oraddr <= deflate0_offset;
2284
                                            deflate0_state <= 5'b10101;
2285
                                        end
2286
                                        else begin
2287
                                            deflate0_state <= 5'b01111;
2288
                                        end
2289
                                    end
2290
                                    deflate0_cur_next <= 0;
2291
                                end
2292
                            end
2293
                            else begin
2294
                                if ((deflate0_state == 5'b10101)) begin
2295
                                    if ((!deflate0_filled)) begin
2296
                                        deflate0_filled <= 1'b1;
2297
                                    end
2298
                                    else if ((deflate0_nb < 4)) begin
2299
                                        // pass
2300
                                    end
2301
                                    else if ((deflate0_method == 0)) begin
2302
                                        if ((deflate0_cur_i < deflate0_length)) begin
2303
                                            deflate0_oaddr <= deflate0_do;
2304
                                            deflate0_obyte <= deflate0_b3;
2305
                                            MYHDL73_adv(8);
2306
                                            deflate0_cur_i <= (deflate0_cur_i + 1);
2307
                                            deflate0_do <= (deflate0_do + 1);
2308
                                            o_oprogress <= (deflate0_do + 1);
2309
                                        end
2310
                                        else if ((!deflate0_final)) begin
2311
                                            deflate0_state <= 5'b00001;
2312
                                        end
2313
                                        else begin
2314
                                            o_oprogress <= deflate0_do;
2315
                                            o_done <= 1'b1;
2316
                                            deflate0_state <= 5'b00000;
2317
                                        end
2318
                                    end
2319
                                    else if ((deflate0_cur_i < (deflate0_length + 1))) begin
2320
                                        deflate0_oraddr <= (deflate0_offset + deflate0_cur_i);
2321
                                        if ((deflate0_cur_i == 1)) begin
2322
                                            deflate0_copy1 <= deflate0_orbyte;
2323
                                        end
2324
                                        if ((deflate0_cur_i > 1)) begin
2325
                                            if (((deflate0_offset + deflate0_cur_i) == (deflate0_do + 1))) begin
2326
                                                deflate0_obyte <= deflate0_copy1;
2327
                                            end
2328
                                            else begin
2329
                                                deflate0_obyte <= deflate0_orbyte;
2330
                                            end
2331
                                            deflate0_oaddr <= deflate0_do;
2332
                                            o_oprogress <= (deflate0_do + 1);
2333
                                            deflate0_do <= (deflate0_do + 1);
2334
                                        end
2335
                                        deflate0_cur_i <= (deflate0_cur_i + 1);
2336
                                    end
2337
                                    else begin
2338
                                        deflate0_oaddr <= deflate0_do;
2339
                                        if (((deflate0_offset + deflate0_cur_i) == (deflate0_do + 1))) begin
2340
                                            deflate0_obyte <= deflate0_copy1;
2341
                                        end
2342
                                        else begin
2343
                                            deflate0_obyte <= deflate0_orbyte;
2344
                                        end
2345
                                        deflate0_do <= (deflate0_do + 1);
2346
                                        o_oprogress <= (deflate0_do + 1);
2347
                                        deflate0_cur_next <= 0;
2348
                                        deflate0_state <= 5'b10011;
2349
                                    end
2350
                                end
2351
                                else begin
2352
                                    $write("unknown state?!");
2353
                                    $write("\n");
2354
                                    deflate0_state <= 5'b00000;
2355
                                end
2356
                            end
2357
                        end
2358
                    endcase
2359
                end
2360
            end
2361
        endcase
2362
    end
2363
end
2364
 
2365
 
2366
always @(posedge i_clk) begin: TEST_DEFLATE_BENCH_DEFLATE0_FILL_BUF
2367
    if ((!reset)) begin
2368
        $write("FILL RESET");
2369
        $write("\n");
2370
        deflate0_nb <= 0;
2371
        deflate0_b1 <= 0;
2372
        deflate0_b2 <= 0;
2373
        deflate0_b3 <= 0;
2374
        deflate0_b4 <= 0;
2375
    end
2376
    else begin
2377
        if ((deflate0_isize < 4)) begin
2378
            // pass
2379
        end
2380
        else if (((i_mode == 4) || (i_mode == 5))) begin
2381
            deflate0_nb <= 0;
2382
        end
2383
        else begin
2384
            deflate0_nb <= 4;
2385
            deflate0_b1 <= deflate0_iram[(deflate0_di & 127)];
2386
            deflate0_b2 <= deflate0_iram[((deflate0_di + 1) & 127)];
2387
            deflate0_b3 <= deflate0_iram[((deflate0_di + 2) & 127)];
2388
            deflate0_b4 <= deflate0_iram[((deflate0_di + 3) & 127)];
2389
        end
2390
    end
2391
end
2392
 
2393
 
2394
always @(posedge i_clk) begin: TEST_DEFLATE_BENCH_DEFLATE0_ORAMWRITE
2395
    deflate0_oram[deflate0_oaddr] <= deflate0_obyte;
2396
    deflate0_leaves[deflate0_lwaddr] <= deflate0_wleaf;
2397
end
2398
 
2399
 
2400
always @(posedge i_clk) begin: TEST_DEFLATE_BENCH_DEFLATE0_ORAMREAD
2401
    deflate0_orbyte <= deflate0_oram[deflate0_oraddr];
2402
end
2403
 
2404
 
2405
always @(posedge i_clk) begin: TEST_DEFLATE_BENCH_COUNT
2406
    if ((scounter == 0)) begin
2407
        counter <= (counter + 1);
2408
    end
2409
    scounter <= (scounter + 1);
2410
end
2411
 
2412
 
2413
always @(posedge i_clk) begin: TEST_DEFLATE_BENCH_LOGIC
2414
    integer ud1;
2415
    integer ud2;
2416
    if ((tstate == 5'b00000)) begin
2417
        $write("RESET");
2418
        $write(" ");
2419
        $write("%h", counter);
2420
        $write("\n");
2421
        reset <= 0;
2422
        led0_g <= 0;
2423
        led1_b <= 0;
2424
        led2_r <= 0;
2425
        tbi <= 0;
2426
        tstate <= 5'b00001;
2427
    end
2428
    else if (((22 > 2) && (scounter != 0))) begin
2429
        // pass
2430
    end
2431
    else if ((tstate == 5'b00001)) begin
2432
        if ((tbi < 1)) begin
2433
            tbi <= (tbi + 1);
2434
        end
2435
        else begin
2436
            reset <= 1;
2437
            tstate <= 5'b00010;
2438
            tbi <= 0;
2439
        end
2440
    end
2441
    else if ((tstate == 5'b10001)) begin
2442
        led0_g <= 1;
2443
        led2_r <= 0;
2444
        led1_b <= 0;
2445
    end
2446
    else if ((tstate == 5'b10000)) begin
2447
        led0_g <= (!led0_g);
2448
        led2_r <= (!led2_r);
2449
        led1_b <= o_done;
2450
    end
2451
    else if ((tstate == 5'b00010)) begin
2452
        if ((tbi < 41)) begin
2453
            o_led <= tbi;
2454
            led1_b <= o_done;
2455
            led2_r <= (!led2_r);
2456
            i_mode <= 2;
2457
            case (tbi)
2458
                0: i_data <= 120;
2459
                1: i_data <= 156;
2460
                2: i_data <= 83;
2461
                3: i_data <= 80;
2462
                4: i_data <= 80;
2463
                5: i_data <= 240;
2464
                6: i_data <= 72;
2465
                7: i_data <= 205;
2466
                8: i_data <= 201;
2467
                9: i_data <= 201;
2468
                10: i_data <= 87;
2469
                11: i_data <= 8;
2470
                12: i_data <= 207;
2471
                13: i_data <= 47;
2472
                14: i_data <= 202;
2473
                15: i_data <= 73;
2474
                16: i_data <= 81;
2475
                17: i_data <= 84;
2476
                18: i_data <= 48;
2477
                19: i_data <= 80;
2478
                20: i_data <= 128;
2479
                21: i_data <= 1;
2480
                22: i_data <= 20;
2481
                23: i_data <= 97;
2482
                24: i_data <= 67;
2483
                25: i_data <= 236;
2484
                26: i_data <= 194;
2485
                27: i_data <= 70;
2486
                28: i_data <= 216;
2487
                29: i_data <= 133;
2488
                30: i_data <= 141;
2489
                31: i_data <= 177;
2490
                32: i_data <= 11;
2491
                33: i_data <= 155;
2492
                34: i_data <= 128;
2493
                35: i_data <= 133;
2494
                36: i_data <= 0;
2495
                37: i_data <= 119;
2496
                38: i_data <= 164;
2497
                39: i_data <= 28;
2498
                default: i_data <= 76;
2499
            endcase
2500
            i_addr <= tbi;
2501
            tbi <= (tbi + 1);
2502
        end
2503
        else begin
2504
            i_mode <= 0;
2505
            led2_r <= 0;
2506
            tstate <= 5'b00011;
2507
        end
2508
    end
2509
    else if ((tstate == 5'b00011)) begin
2510
        i_mode <= 5;
2511
        tstate <= 5'b00100;
2512
    end
2513
    else if ((tstate == 5'b00100)) begin
2514
        led1_b <= (!led1_b);
2515
        i_mode <= 0;
2516
        if (((i_mode == 0) && o_done)) begin
2517
            $write("result len");
2518
            $write(" ");
2519
            $write("%h", o_oprogress);
2520
            $write("\n");
2521
            if ((o_oprogress == 79)) begin
2522
                tstate <= 5'b10001;
2523
            end
2524
            resultlen <= o_oprogress;
2525
            tbi <= 0;
2526
            i_addr <= 0;
2527
            i_mode <= 3;
2528
            wtick <= 1'b1;
2529
            tstate <= 5'b00101;
2530
            // if o_oprogress == 0x4F:
2531
            //     tstate.next = tb_state.HALT
2532
            // else:
2533
            //     tstate.next = tb_state.FAIL
2534
        end
2535
    end
2536
    else if ((tstate == 5'b00101)) begin
2537
        led1_b <= 0;
2538
        o_led <= tbi;
2539
        // Note that the read can also be pipelined in a tight loop
2540
        // without the WTICK delay, but this will not work with
2541
        // SLOWDOWN > 1
2542
        if (wtick) begin
2543
            wtick <= 1'b0;
2544
        end
2545
        else if ((tbi < 114)) begin
2546
            led2_r <= (!led2_r);
2547
            case (tbi)
2548
                0: ud1 = 32;
2549
                1: ud1 = 32;
2550
                2: ud1 = 32;
2551
                3: ud1 = 72;
2552
                4: ud1 = 101;
2553
                5: ud1 = 108;
2554
                6: ud1 = 108;
2555
                7: ud1 = 111;
2556
                8: ud1 = 32;
2557
                9: ud1 = 87;
2558
                10: ud1 = 111;
2559
                11: ud1 = 114;
2560
                12: ud1 = 108;
2561
                13: ud1 = 100;
2562
                14: ud1 = 33;
2563
                15: ud1 = 32;
2564
                16: ud1 = 48;
2565
                17: ud1 = 32;
2566
                18: ud1 = 32;
2567
                19: ud1 = 32;
2568
                20: ud1 = 32;
2569
                21: ud1 = 32;
2570
                22: ud1 = 32;
2571
                23: ud1 = 32;
2572
                24: ud1 = 32;
2573
                25: ud1 = 32;
2574
                26: ud1 = 72;
2575
                27: ud1 = 101;
2576
                28: ud1 = 108;
2577
                29: ud1 = 108;
2578
                30: ud1 = 111;
2579
                31: ud1 = 32;
2580
                32: ud1 = 87;
2581
                33: ud1 = 111;
2582
                34: ud1 = 114;
2583
                35: ud1 = 108;
2584
                36: ud1 = 100;
2585
                37: ud1 = 33;
2586
                38: ud1 = 32;
2587
                39: ud1 = 49;
2588
                40: ud1 = 32;
2589
                41: ud1 = 32;
2590
                42: ud1 = 32;
2591
                43: ud1 = 32;
2592
                44: ud1 = 32;
2593
                45: ud1 = 32;
2594
                46: ud1 = 32;
2595
                47: ud1 = 32;
2596
                48: ud1 = 32;
2597
                49: ud1 = 72;
2598
                50: ud1 = 101;
2599
                51: ud1 = 108;
2600
                52: ud1 = 108;
2601
                53: ud1 = 111;
2602
                54: ud1 = 32;
2603
                55: ud1 = 87;
2604
                56: ud1 = 111;
2605
                57: ud1 = 114;
2606
                58: ud1 = 108;
2607
                59: ud1 = 100;
2608
                60: ud1 = 33;
2609
                61: ud1 = 32;
2610
                62: ud1 = 50;
2611
                63: ud1 = 32;
2612
                64: ud1 = 32;
2613
                65: ud1 = 32;
2614
                66: ud1 = 32;
2615
                67: ud1 = 32;
2616
                68: ud1 = 32;
2617
                69: ud1 = 32;
2618
                70: ud1 = 32;
2619
                71: ud1 = 32;
2620
                72: ud1 = 72;
2621
                73: ud1 = 101;
2622
                74: ud1 = 108;
2623
                75: ud1 = 108;
2624
                76: ud1 = 111;
2625
                77: ud1 = 32;
2626
                78: ud1 = 87;
2627
                79: ud1 = 111;
2628
                80: ud1 = 114;
2629
                81: ud1 = 108;
2630
                82: ud1 = 100;
2631
                83: ud1 = 33;
2632
                84: ud1 = 32;
2633
                85: ud1 = 51;
2634
                86: ud1 = 32;
2635
                87: ud1 = 32;
2636
                88: ud1 = 32;
2637
                89: ud1 = 32;
2638
                90: ud1 = 32;
2639
                91: ud1 = 32;
2640
                92: ud1 = 32;
2641
                93: ud1 = 32;
2642
                94: ud1 = 32;
2643
                95: ud1 = 72;
2644
                96: ud1 = 101;
2645
                97: ud1 = 108;
2646
                98: ud1 = 108;
2647
                99: ud1 = 111;
2648
                100: ud1 = 32;
2649
                101: ud1 = 87;
2650
                102: ud1 = 111;
2651
                103: ud1 = 114;
2652
                104: ud1 = 108;
2653
                105: ud1 = 100;
2654
                106: ud1 = 33;
2655
                107: ud1 = 32;
2656
                108: ud1 = 52;
2657
                109: ud1 = 32;
2658
                110: ud1 = 32;
2659
                111: ud1 = 32;
2660
                112: ud1 = 32;
2661
                default: ud1 = 32;
2662
            endcase
2663
            if (($signed({1'b0, o_byte}) != ud1)) begin
2664
                i_mode <= 0;
2665
                $write("FAIL");
2666
                $write(" ");
2667
                $write("%0d", 114);
2668
                $write(" ");
2669
                $write("%h", tbi);
2670
                $write(" ");
2671
                $write("%h", o_byte);
2672
                $write(" ");
2673
                $write("%0d", ud1);
2674
                $write("\n");
2675
                tstate <= 5'b10000;
2676
                $finish;
2677
            end
2678
            else begin
2679
                // pass
2680
            end
2681
            i_addr <= (tbi + 1);
2682
            tbi <= (tbi + 1);
2683
            wtick <= 1'b1;
2684
        end
2685
        else begin
2686
            $write("%0d", 114);
2687
            $write("\n");
2688
            $write("DECOMPRESS test OK!, pausing");
2689
            $write(" ");
2690
            $write("%h", tbi);
2691
            $write("\n");
2692
            i_mode <= 0;
2693
            tbi <= 0;
2694
            tstate <= 5'b00110;
2695
            resume <= 1;
2696
        end
2697
    end
2698
    else if ((tstate == 5'b00110)) begin
2699
        led2_r <= 0;
2700
        if ((resume == 0)) begin
2701
            $write("--------------COMPRESS-------------");
2702
            $write("\n");
2703
            tbi <= 0;
2704
            led0_g <= 0;
2705
            tstate <= 5'b00111;
2706
        end
2707
        else begin
2708
            led2_r <= (!led2_r);
2709
            resume <= (resume + 1);
2710
        end
2711
    end
2712
    else if ((tstate == 5'b00111)) begin
2713
        o_led <= tbi;
2714
        if ((tbi < 114)) begin
2715
            led2_r <= 0;
2716
            led1_b <= (!led1_b);
2717
            i_mode <= 2;
2718
            case (tbi)
2719
                0: i_data <= 32;
2720
                1: i_data <= 32;
2721
                2: i_data <= 32;
2722
                3: i_data <= 72;
2723
                4: i_data <= 101;
2724
                5: i_data <= 108;
2725
                6: i_data <= 108;
2726
                7: i_data <= 111;
2727
                8: i_data <= 32;
2728
                9: i_data <= 87;
2729
                10: i_data <= 111;
2730
                11: i_data <= 114;
2731
                12: i_data <= 108;
2732
                13: i_data <= 100;
2733
                14: i_data <= 33;
2734
                15: i_data <= 32;
2735
                16: i_data <= 48;
2736
                17: i_data <= 32;
2737
                18: i_data <= 32;
2738
                19: i_data <= 32;
2739
                20: i_data <= 32;
2740
                21: i_data <= 32;
2741
                22: i_data <= 32;
2742
                23: i_data <= 32;
2743
                24: i_data <= 32;
2744
                25: i_data <= 32;
2745
                26: i_data <= 72;
2746
                27: i_data <= 101;
2747
                28: i_data <= 108;
2748
                29: i_data <= 108;
2749
                30: i_data <= 111;
2750
                31: i_data <= 32;
2751
                32: i_data <= 87;
2752
                33: i_data <= 111;
2753
                34: i_data <= 114;
2754
                35: i_data <= 108;
2755
                36: i_data <= 100;
2756
                37: i_data <= 33;
2757
                38: i_data <= 32;
2758
                39: i_data <= 49;
2759
                40: i_data <= 32;
2760
                41: i_data <= 32;
2761
                42: i_data <= 32;
2762
                43: i_data <= 32;
2763
                44: i_data <= 32;
2764
                45: i_data <= 32;
2765
                46: i_data <= 32;
2766
                47: i_data <= 32;
2767
                48: i_data <= 32;
2768
                49: i_data <= 72;
2769
                50: i_data <= 101;
2770
                51: i_data <= 108;
2771
                52: i_data <= 108;
2772
                53: i_data <= 111;
2773
                54: i_data <= 32;
2774
                55: i_data <= 87;
2775
                56: i_data <= 111;
2776
                57: i_data <= 114;
2777
                58: i_data <= 108;
2778
                59: i_data <= 100;
2779
                60: i_data <= 33;
2780
                61: i_data <= 32;
2781
                62: i_data <= 50;
2782
                63: i_data <= 32;
2783
                64: i_data <= 32;
2784
                65: i_data <= 32;
2785
                66: i_data <= 32;
2786
                67: i_data <= 32;
2787
                68: i_data <= 32;
2788
                69: i_data <= 32;
2789
                70: i_data <= 32;
2790
                71: i_data <= 32;
2791
                72: i_data <= 72;
2792
                73: i_data <= 101;
2793
                74: i_data <= 108;
2794
                75: i_data <= 108;
2795
                76: i_data <= 111;
2796
                77: i_data <= 32;
2797
                78: i_data <= 87;
2798
                79: i_data <= 111;
2799
                80: i_data <= 114;
2800
                81: i_data <= 108;
2801
                82: i_data <= 100;
2802
                83: i_data <= 33;
2803
                84: i_data <= 32;
2804
                85: i_data <= 51;
2805
                86: i_data <= 32;
2806
                87: i_data <= 32;
2807
                88: i_data <= 32;
2808
                89: i_data <= 32;
2809
                90: i_data <= 32;
2810
                91: i_data <= 32;
2811
                92: i_data <= 32;
2812
                93: i_data <= 32;
2813
                94: i_data <= 32;
2814
                95: i_data <= 72;
2815
                96: i_data <= 101;
2816
                97: i_data <= 108;
2817
                98: i_data <= 108;
2818
                99: i_data <= 111;
2819
                100: i_data <= 32;
2820
                101: i_data <= 87;
2821
                102: i_data <= 111;
2822
                103: i_data <= 114;
2823
                104: i_data <= 108;
2824
                105: i_data <= 100;
2825
                106: i_data <= 33;
2826
                107: i_data <= 32;
2827
                108: i_data <= 52;
2828
                109: i_data <= 32;
2829
                110: i_data <= 32;
2830
                111: i_data <= 32;
2831
                112: i_data <= 32;
2832
                default: i_data <= 32;
2833
            endcase
2834
            i_addr <= tbi;
2835
            tbi <= (tbi + 1);
2836
        end
2837
        else begin
2838
            $write("wrote bytes to compress");
2839
            $write(" ");
2840
            $write("%h", tbi);
2841
            $write("\n");
2842
            i_mode <= 0;
2843
            tstate <= 5'b01000;
2844
        end
2845
    end
2846
    else if ((tstate == 5'b01000)) begin
2847
        i_mode <= 4;
2848
        tstate <= 5'b01001;
2849
    end
2850
    else if ((tstate == 5'b01001)) begin
2851
        led2_r <= (!led2_r);
2852
        if ((i_mode == 4)) begin
2853
            $write("WAIT COMPRESS");
2854
            $write("\n");
2855
            i_mode <= 0;
2856
            led1_b <= 0;
2857
        end
2858
        else if (o_done) begin
2859
            $write("result len");
2860
            $write(" ");
2861
            $write("%h", o_oprogress);
2862
            $write("\n");
2863
            resultlen <= o_oprogress;
2864
            tbi <= 0;
2865
            i_addr <= 0;
2866
            i_mode <= 3;
2867
            tstate <= 5'b01010;
2868
            wtick <= 1'b1;
2869
        end
2870
    end
2871
    else if ((tstate == 5'b01010)) begin
2872
        led2_r <= 0;
2873
        o_led <= tbi;
2874
        if (wtick) begin
2875
            if ((tbi > 0)) begin
2876
                i_mode <= 2;
2877
                i_data <= copy;
2878
                i_addr <= (tbi - 1);
2879
            end
2880
            wtick <= 1'b0;
2881
            tbi <= (tbi + 1);
2882
        end
2883
        else if ((tbi < resultlen)) begin
2884
            i_mode <= 3;
2885
            led1_b <= (!led1_b);
2886
            i_addr <= tbi;
2887
            copy <= o_byte;
2888
            wtick <= 1'b1;
2889
        end
2890
        else begin
2891
            $write("Compress output bytes copied to input");
2892
            $write(" ");
2893
            $write("%h", resultlen);
2894
            $write(" ");
2895
            $write("%0d", ($signed({1'b0, tbi}) - 1));
2896
            $write("\n");
2897
            i_mode <= 0;
2898
            tbi <= 0;
2899
            tstate <= 5'b01100;
2900
        end
2901
    end
2902
    else if ((tstate == 5'b01100)) begin
2903
        $write("start decompress of test compression");
2904
        $write("\n");
2905
        i_mode <= 5;
2906
        tstate <= 5'b01101;
2907
    end
2908
    else if ((tstate == 5'b01101)) begin
2909
        led2_r <= 0;
2910
        led1_b <= (!led1_b);
2911
        i_mode <= 0;
2912
        if (((i_mode == 0) && o_done)) begin
2913
            $write("DONE DECOMPRESS VERIFY");
2914
            $write(" ");
2915
            $write("%h", o_oprogress);
2916
            $write("\n");
2917
            tbi <= 0;
2918
            i_addr <= 0;
2919
            i_mode <= 3;
2920
            wtick <= 1'b1;
2921
            tstate <= 5'b01110;
2922
        end
2923
    end
2924
    else if ((tstate == 5'b01110)) begin
2925
        led1_b <= 0;
2926
        led2_r <= (!led2_r);
2927
        o_led <= tbi;
2928
        if (wtick) begin
2929
            wtick <= 1'b0;
2930
        end
2931
        else if ((tbi < 114)) begin
2932
            case (tbi)
2933
                0: ud2 = 32;
2934
                1: ud2 = 32;
2935
                2: ud2 = 32;
2936
                3: ud2 = 72;
2937
                4: ud2 = 101;
2938
                5: ud2 = 108;
2939
                6: ud2 = 108;
2940
                7: ud2 = 111;
2941
                8: ud2 = 32;
2942
                9: ud2 = 87;
2943
                10: ud2 = 111;
2944
                11: ud2 = 114;
2945
                12: ud2 = 108;
2946
                13: ud2 = 100;
2947
                14: ud2 = 33;
2948
                15: ud2 = 32;
2949
                16: ud2 = 48;
2950
                17: ud2 = 32;
2951
                18: ud2 = 32;
2952
                19: ud2 = 32;
2953
                20: ud2 = 32;
2954
                21: ud2 = 32;
2955
                22: ud2 = 32;
2956
                23: ud2 = 32;
2957
                24: ud2 = 32;
2958
                25: ud2 = 32;
2959
                26: ud2 = 72;
2960
                27: ud2 = 101;
2961
                28: ud2 = 108;
2962
                29: ud2 = 108;
2963
                30: ud2 = 111;
2964
                31: ud2 = 32;
2965
                32: ud2 = 87;
2966
                33: ud2 = 111;
2967
                34: ud2 = 114;
2968
                35: ud2 = 108;
2969
                36: ud2 = 100;
2970
                37: ud2 = 33;
2971
                38: ud2 = 32;
2972
                39: ud2 = 49;
2973
                40: ud2 = 32;
2974
                41: ud2 = 32;
2975
                42: ud2 = 32;
2976
                43: ud2 = 32;
2977
                44: ud2 = 32;
2978
                45: ud2 = 32;
2979
                46: ud2 = 32;
2980
                47: ud2 = 32;
2981
                48: ud2 = 32;
2982
                49: ud2 = 72;
2983
                50: ud2 = 101;
2984
                51: ud2 = 108;
2985
                52: ud2 = 108;
2986
                53: ud2 = 111;
2987
                54: ud2 = 32;
2988
                55: ud2 = 87;
2989
                56: ud2 = 111;
2990
                57: ud2 = 114;
2991
                58: ud2 = 108;
2992
                59: ud2 = 100;
2993
                60: ud2 = 33;
2994
                61: ud2 = 32;
2995
                62: ud2 = 50;
2996
                63: ud2 = 32;
2997
                64: ud2 = 32;
2998
                65: ud2 = 32;
2999
                66: ud2 = 32;
3000
                67: ud2 = 32;
3001
                68: ud2 = 32;
3002
                69: ud2 = 32;
3003
                70: ud2 = 32;
3004
                71: ud2 = 32;
3005
                72: ud2 = 72;
3006
                73: ud2 = 101;
3007
                74: ud2 = 108;
3008
                75: ud2 = 108;
3009
                76: ud2 = 111;
3010
                77: ud2 = 32;
3011
                78: ud2 = 87;
3012
                79: ud2 = 111;
3013
                80: ud2 = 114;
3014
                81: ud2 = 108;
3015
                82: ud2 = 100;
3016
                83: ud2 = 33;
3017
                84: ud2 = 32;
3018
                85: ud2 = 51;
3019
                86: ud2 = 32;
3020
                87: ud2 = 32;
3021
                88: ud2 = 32;
3022
                89: ud2 = 32;
3023
                90: ud2 = 32;
3024
                91: ud2 = 32;
3025
                92: ud2 = 32;
3026
                93: ud2 = 32;
3027
                94: ud2 = 32;
3028
                95: ud2 = 72;
3029
                96: ud2 = 101;
3030
                97: ud2 = 108;
3031
                98: ud2 = 108;
3032
                99: ud2 = 111;
3033
                100: ud2 = 32;
3034
                101: ud2 = 87;
3035
                102: ud2 = 111;
3036
                103: ud2 = 114;
3037
                104: ud2 = 108;
3038
                105: ud2 = 100;
3039
                106: ud2 = 33;
3040
                107: ud2 = 32;
3041
                108: ud2 = 52;
3042
                109: ud2 = 32;
3043
                110: ud2 = 32;
3044
                111: ud2 = 32;
3045
                112: ud2 = 32;
3046
                default: ud2 = 32;
3047
            endcase
3048
            if (($signed({1'b0, o_byte}) != ud2)) begin
3049
                tstate <= 5'b00000;
3050
                i_mode <= 0;
3051
                $write("FAIL");
3052
                $write(" ");
3053
                $write("%0d", 114);
3054
                $write(" ");
3055
                $write("%h", tbi);
3056
                $write(" ");
3057
                $write("%0d", ud2);
3058
                $write(" ");
3059
                $write("%h", o_byte);
3060
                $write("\n");
3061
                $finish;
3062
                tstate <= 5'b10000;
3063
            end
3064
            tbi <= (tbi + 1);
3065
            i_addr <= (tbi + 1);
3066
            wtick <= 1'b1;
3067
        end
3068
        else begin
3069
            $write("%0d", 114);
3070
            $write("\n");
3071
            $write("ALL OK!");
3072
            $write(" ");
3073
            $write("%h", tbi);
3074
            $write("\n");
3075
            led2_r <= 0;
3076
            i_mode <= 0;
3077
            resume <= 1;
3078
            if ((22 <= 4)) begin
3079
                $finish;
3080
            end
3081
            //                 
3082
            tstate <= 5'b01111;
3083
        end
3084
    end
3085
    else if ((tstate == 5'b01111)) begin
3086
        if ((resume == 0)) begin
3087
            $write("--------------RESET-------------");
3088
            $write("\n");
3089
            o_led <= (o_led + 1);
3090
            tstate <= 5'b00000;
3091
        end
3092
        else begin
3093
            led0_g <= (!led0_g);
3094
            resume <= (resume + 1);
3095
        end
3096
    end
3097
    // if now() > 50000:
3098
    //     raise StopSimulation()
3099
end
3100
 
3101
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.