OpenCores
URL https://opencores.org/ocsvn/s1_core/s1_core/trunk

Subversion Repositories s1_core

[/] [s1_core/] [trunk/] [hdl/] [rtl/] [sparc_core/] [bw_r_icd.v] - Blame information for rev 105

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 95 fafa1971
// ========== Copyright Header Begin ==========================================
2
// 
3
// OpenSPARC T1 Processor File: bw_r_icd.v
4
// Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
5
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
6
// 
7
// The above named program is free software; you can redistribute it and/or
8
// modify it under the terms of the GNU General Public
9
// License version 2 as published by the Free Software Foundation.
10
// 
11
// The above named program is distributed in the hope that it will be 
12
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
// General Public License for more details.
15
// 
16
// You should have received a copy of the GNU General Public
17
// License along with this work; if not, write to the Free Software
18
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19
// 
20
// ========== Copyright Header End ============================================
21
////////////////////////////////////////////////////////////////////////
22
/*
23
 //  Module Name:  bw_r_icd
24
 //  Description:
25
 //    The ICD contains the icache data.
26
 //    32B line size.
27
 //    Write BW: 16B
28
 //    Read BW: 16Bx2 (fetdata and topdata), collapsed to 4Bx2
29
 //    Associativity: 4
30
 //    Write boundary: 34b (32b inst + parity + predec bit)
31
 //    NOTES:
32
 //    1. No clock enable.  Rd/Wr enable is used to trigger the
33
 //    operation.
34
 //    2. 2:1 mux on address input.  Selects provided externally.
35
 //    3. 3:1 mux on data input.   Selects provided and guaranteed
36
 //    exclusive, externally.
37
 //
38
 */
39
 
40
 
41
////////////////////////////////////////////////////////////////////////
42
// Global header file includes
43
////////////////////////////////////////////////////////////////////////
44
//`include "sys.h" // system level definition file which contains the 
45
// time scale definition
46
 
47
 
48
////////////////////////////////////////////////////////////////////////
49
// Local header file includes / local defines
50
////////////////////////////////////////////////////////////////////////
51
 
52
/*
53
/* ========== Copyright Header Begin ==========================================
54
*
55
* OpenSPARC T1 Processor File: ifu.h
56
* Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
57
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
58
*
59
* The above named program is free software; you can redistribute it and/or
60
* modify it under the terms of the GNU General Public
61
* License version 2 as published by the Free Software Foundation.
62
*
63
* The above named program is distributed in the hope that it will be
64
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
65
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
66
* General Public License for more details.
67
*
68
* You should have received a copy of the GNU General Public
69
* License along with this work; if not, write to the Free Software
70
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
71
*
72
* ========== Copyright Header End ============================================
73
*/
74
////////////////////////////////////////////////////////////////////////
75
/*
76
//
77
//  Module Name: ifu.h
78
//  Description:
79
//  All ifu defines
80
*/
81
 
82
//--------------------------------------------
83
// Icache Values in IFU::ICD/ICV/ICT/FDP/IFQDP
84
//--------------------------------------------
85
// Set Values
86
 
87
// IC_IDX_HI = log(icache_size/4ways) - 1
88
 
89
 
90
// !!IMPORTANT!! a change to IC_LINE_SZ will mean a change to the code as
91
//   well.  Unfortunately this has not been properly parametrized.
92
//   Changing the IC_LINE_SZ param alone is *not* enough.
93
 
94
 
95
// !!IMPORTANT!! a change to IC_TAG_HI will mean a change to the code as
96
//   well.  Changing the IC_TAG_HI param alone is *not* enough to
97
//   change the PA range. 
98
// highest bit of PA
99
 
100
 
101
 
102
// Derived Values
103
// 4095
104
 
105
 
106
// number of entries - 1 = 511
107
 
108
 
109
// 12
110
 
111
 
112
// 28
113
 
114
 
115
// 7
116
 
117
 
118
// tags for all 4 ways + parity
119
// 116
120
 
121
 
122
// 115
123
 
124
 
125
 
126
//----------------------------------------------------------------------
127
// For thread scheduler in IFU::DTU::SWL
128
//----------------------------------------------------------------------
129
// thread states:  (thr_state[4:0])
130
 
131
 
132
 
133
 
134
 
135
 
136
 
137
 
138
 
139
// thread configuration register bit fields
140
 
141
 
142
 
143
 
144
 
145
 
146
 
147
//----------------------------------------------------------------------
148
// For MIL fsm in IFU::IFQ
149
//----------------------------------------------------------------------
150
 
151
 
152
 
153
 
154
 
155
 
156
 
157
 
158
 
159
 
160
 
161
//---------------------------------------------------
162
// Interrupt Block
163
//---------------------------------------------------
164
 
165
 
166
 
167
 
168
 
169
 
170
 
171
//-------------------------------------
172
// IFQ
173
//-------------------------------------
174
// valid bit plus ifill
175
 
176
 
177
 
178
 
179
 
180
 
181
 
182
 
183
 
184
 
185
 
186
 
187
 
188
//`ifdef SPARC_L2_64B
189
 
190
 
191
//`else
192
//`define BANK_ID_HI 8
193
//`define BANK_ID_LO 7
194
//`endif
195
 
196
//`define CPX_INV_PA_HI  116
197
//`define CPX_INV_PA_LO  112
198
 
199
 
200
 
201
 
202
 
203
 
204
 
205
//----------------------------------------
206
// IFU Traps
207
//----------------------------------------
208
// precise
209
 
210
 
211
 
212
 
213
 
214
 
215
 
216
 
217
 
218
 
219
 
220
 
221
 
222
 
223
 
224
// disrupting
225
 
226
 
227
 
228
 
229
 
230
 
231
 
232
 
233
//FPGA_SYN enables all FPGA related modifications
234
 
235
 
236
 
237
 
238
 
239
 
240
module bw_r_icd(icd_wsel_fetdata_s1, icd_wsel_topdata_s1, icd_fuse_repair_value,
241
        icd_fuse_repair_en, so, rclk, se, si, reset_l, sehold, fdp_icd_index_bf,
242
        ifq_icd_index_bf, fcl_icd_index_sel_ifq_bf, ifq_icd_wrway_bf,
243
        ifq_icd_worden_bf, ifq_icd_wrdata_i2, fcl_icd_rdreq_bf,
244
        fcl_icd_wrreq_bf, bist_ic_data, rst_tri_en, ifq_icd_data_sel_old_i2,
245
        ifq_icd_data_sel_fill_i2, ifq_icd_data_sel_bist_i2, fuse_icd_wren,
246
        fuse_icd_rid, fuse_icd_repair_value, fuse_icd_repair_en,
247
        efc_spc_fuse_clk1);
248
 
249
        input                   rclk;
250
        input                   se;
251
        input                   si;
252
        input                   reset_l;
253
        input                   sehold;
254
        input   [11:2]          fdp_icd_index_bf;
255
        input   [11:2]          ifq_icd_index_bf;
256
        input                   fcl_icd_index_sel_ifq_bf;
257
        input   [1:0]            ifq_icd_wrway_bf;
258
        input   [3:0]            ifq_icd_worden_bf;
259
        input   [135:0]          ifq_icd_wrdata_i2;
260
        input                   fcl_icd_rdreq_bf;
261
        input                   fcl_icd_wrreq_bf;
262
        input   [7:0]            bist_ic_data;
263
        input                   rst_tri_en;
264
        input                   ifq_icd_data_sel_old_i2;
265
        input                   ifq_icd_data_sel_fill_i2;
266
        input                   ifq_icd_data_sel_bist_i2;
267
        input                   fuse_icd_wren;
268
        input   [3:0]            fuse_icd_rid;
269
        input   [7:0]            fuse_icd_repair_value;
270
        input   [1:0]            fuse_icd_repair_en;
271
        input                   efc_spc_fuse_clk1;
272
        output  [135:0]          icd_wsel_fetdata_s1;
273
        output  [135:0]          icd_wsel_topdata_s1;
274
        output  [7:0]            icd_fuse_repair_value;
275
        output  [1:0]            icd_fuse_repair_en;
276
        output                  so;
277
 
278
        reg     [7:0]            icd_fuse_repair_value;
279
        reg     [1:0]            icd_fuse_repair_en;
280
        reg     [135:0]          fetdata_f;
281
        reg     [135:0]          topdata_f;
282
        reg     [135:0]          fetdata_sa;
283
        reg     [135:0]          topdata_sa;
284
        reg     [135:0]          fetdata_s1;
285
        reg     [135:0]          topdata_s1;
286
        wire                    clk;
287
        wire    [135:0]          next_wrdata_bf;
288
        wire    [135:0]          wrdata_f;
289
        wire    [135:0]          bist_data_expand;
290
        wire    [11:2]          index_bf;
291
        reg     [11:2]          index_f;
292
        reg     [11:0]           wr_index0;
293
        reg     [11:0]           wr_index1;
294
        reg     [11:0]           wr_index2;
295
        reg     [11:0]           wr_index3;
296
        reg                     rdreq_f;
297
        reg                     wrreq_f;
298
        reg     [3:0]            worden_f;
299
        reg     [1:0]            wrway_f;
300
 
301
   reg [33:0]     icdata_ary_00_00  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
302
   reg [33:0]     icdata_ary_00_01  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
303
   reg [33:0]     icdata_ary_00_10  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
304
   reg [33:0]     icdata_ary_00_11  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
305
   reg [33:0]     icdata_ary_01_00  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
306
   reg [33:0]     icdata_ary_01_01  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
307
   reg [33:0]     icdata_ary_01_10  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
308
   reg [33:0]     icdata_ary_01_11  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
309
   reg [33:0]     icdata_ary_10_00  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
310
   reg [33:0]     icdata_ary_10_01  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
311
   reg [33:0]     icdata_ary_10_10  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
312
   reg [33:0]     icdata_ary_10_11  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
313
   reg [33:0]     icdata_ary_11_00  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
314
   reg [33:0]     icdata_ary_11_01  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
315
   reg [33:0]     icdata_ary_11_10  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
316
   reg [33:0]     icdata_ary_11_11  [255:0] /* synthesis syn_ramstyle = block_ram  syn_ramstyle = no_rw_check */ ;
317
 
318
 
319
 
320
        assign clk = rclk;
321
        assign index_bf = (fcl_icd_index_sel_ifq_bf ? ifq_icd_index_bf :
322
                fdp_icd_index_bf);
323
        wire [11:2] top_index = {index_f[11:3] , 1'b1};
324
 
325
        assign bist_data_expand = 136'b0;
326
        assign icd_wsel_fetdata_s1 = fetdata_s1;
327
        assign icd_wsel_topdata_s1 = topdata_s1;
328
 
329
        mux3ds #(136) icden_mux(
330
                .dout                           (next_wrdata_bf),
331
                .in0                            (wrdata_f),
332
                .in1                            (ifq_icd_wrdata_i2),
333
                .in2                            (bist_data_expand),
334
                .sel0                           (ifq_icd_data_sel_old_i2),
335
                .sel1                           (ifq_icd_data_sel_fill_i2),
336
                .sel2                           (ifq_icd_data_sel_bist_i2));
337
        dffe #(136) wrdata_reg(
338
                .din                            (next_wrdata_bf),
339
                .clk                            (clk),
340
                .q                              (wrdata_f),
341
                .en                             ((~sehold)),
342
                .se                             (se));
343
 
344
        always @(posedge clk) begin
345
          if (~sehold) begin
346
            rdreq_f <= fcl_icd_rdreq_bf;
347
            wrreq_f <= fcl_icd_wrreq_bf;
348
            index_f <= index_bf;
349
            wrway_f <= ifq_icd_wrway_bf;
350
            worden_f <= ifq_icd_worden_bf;
351
            wr_index0 <= {index_bf[11:4], 2'b0, ifq_icd_wrway_bf};
352
            wr_index1 <= {index_bf[11:4], 2'b1, ifq_icd_wrway_bf};
353
            wr_index2 <= {index_bf[11:4], 2'b10, ifq_icd_wrway_bf};
354
            wr_index3 <= {index_bf[11:4], 2'b11, ifq_icd_wrway_bf};
355
          end
356
          fetdata_s1 <= fetdata_f;
357
          topdata_s1 <= topdata_f;
358
        end
359
 
360
        reg [33:0] fetch_00_00;
361
        reg [33:0] fetch_00_01;
362
        reg [33:0] fetch_00_10;
363
        reg [33:0] fetch_00_11;
364
 
365
        reg [33:0] fetch_01_00;
366
        reg [33:0] fetch_01_01;
367
        reg [33:0] fetch_01_10;
368
        reg [33:0] fetch_01_11;
369
 
370
        reg [33:0] fetch_10_00;
371
        reg [33:0] fetch_10_01;
372
        reg [33:0] fetch_10_10;
373
        reg [33:0] fetch_10_11;
374
 
375
        reg [33:0] fetch_11_00;
376
        reg [33:0] fetch_11_01;
377
        reg [33:0] fetch_11_10;
378
        reg [33:0] fetch_11_11;
379
 
380
        always @(posedge clk) begin
381
          fetch_00_00 <= icdata_ary_00_00[index_bf[11:4]];
382
          fetch_00_01 <= icdata_ary_00_01[index_bf[11:4]];
383
          fetch_00_10 <= icdata_ary_00_10[index_bf[11:4]];
384
          fetch_00_11 <= icdata_ary_00_11[index_bf[11:4]];
385
 
386
          fetch_01_00 <= icdata_ary_01_00[index_bf[11:4]];
387
          fetch_01_01 <= icdata_ary_01_01[index_bf[11:4]];
388
          fetch_01_10 <= icdata_ary_01_10[index_bf[11:4]];
389
          fetch_01_11 <= icdata_ary_01_11[index_bf[11:4]];
390
 
391
          fetch_10_00 <= icdata_ary_10_00[index_bf[11:4]];
392
          fetch_10_01 <= icdata_ary_10_01[index_bf[11:4]];
393
          fetch_10_10 <= icdata_ary_10_10[index_bf[11:4]];
394
          fetch_10_11 <= icdata_ary_10_11[index_bf[11:4]];
395
 
396
          fetch_11_00 <= icdata_ary_11_00[index_bf[11:4]];
397
          fetch_11_01 <= icdata_ary_11_01[index_bf[11:4]];
398
          fetch_11_10 <= icdata_ary_11_10[index_bf[11:4]];
399
          fetch_11_11 <= icdata_ary_11_11[index_bf[11:4]];
400
        end
401
 
402
 
403
        always @(index_f or rdreq_f or fetch_00_00 or fetch_01_00 or fetch_10_00 or fetch_11_00
404
                                    or fetch_00_01 or fetch_01_01 or fetch_10_01 or fetch_11_01
405
                                    or fetch_00_10 or fetch_01_10 or fetch_10_10 or fetch_11_10
406
                                    or fetch_00_11 or fetch_01_11 or fetch_10_11 or fetch_11_11) begin
407
//        if (rdreq_f) begin
408
            case(index_f[3:2])
409
              2'b00: fetdata_f[33:0] = fetch_00_00;
410
              2'b01: fetdata_f[33:0] = fetch_01_00;
411
              2'b10: fetdata_f[33:0] = fetch_10_00;
412
              2'b11: fetdata_f[33:0] = fetch_11_00;
413
            endcase
414
            case(index_f[3:2])
415
              2'b00: fetdata_f[67:34] = fetch_00_01;
416
              2'b01: fetdata_f[67:34] = fetch_01_01;
417
              2'b10: fetdata_f[67:34] = fetch_10_01;
418
              2'b11: fetdata_f[67:34] = fetch_11_01;
419
            endcase
420
            case(index_f[3:2])
421
              2'b00: fetdata_f[101:68] = fetch_00_10;
422
              2'b01: fetdata_f[101:68] = fetch_01_10;
423
              2'b10: fetdata_f[101:68] = fetch_10_10;
424
              2'b11: fetdata_f[101:68] = fetch_11_10;
425
            endcase
426
            case(index_f[3:2])
427
              2'b00: fetdata_f[135:102] = fetch_00_11;
428
              2'b01: fetdata_f[135:102] = fetch_01_11;
429
              2'b10: fetdata_f[135:102] = fetch_10_11;
430
              2'b11: fetdata_f[135:102] = fetch_11_11;
431
            endcase
432
            case(index_f[3])
433
              1'b0: topdata_f[33:0] = fetch_01_00;
434
              1'b1: topdata_f[33:0] = fetch_11_00;
435
            endcase
436
            case(index_f[3])
437
              1'b0: topdata_f[67:34] = fetch_01_01;
438
              1'b1: topdata_f[67:34] = fetch_11_01;
439
            endcase
440
            case(index_f[3])
441
              1'b0: topdata_f[101:68] = fetch_01_10;
442
              1'b1: topdata_f[101:68] = fetch_11_10;
443
            endcase
444
            case(index_f[3])
445
              1'b0: topdata_f[135:102] = fetch_01_11;
446
              1'b1: topdata_f[135:102] = fetch_11_11;
447
            endcase
448
          end
449
//        else
450
//          begin
451
//            fetdata_f = 136'b0;
452
//            topdata_f = 136'b0;
453
//          end
454
//      end
455
 
456
        always @(negedge clk) begin
457
          if (wrreq_f & (~rst_tri_en)) begin
458
            if (worden_f[0]) begin
459
              if (wr_index0[1:0] == 2'b0) begin
460
                icdata_ary_00_00[wr_index0[11:4]] <= wrdata_f[135:102];
461
              end
462
              if (wr_index0[1:0] == 2'b1) begin
463
                icdata_ary_00_01[wr_index0[11:4]] <= wrdata_f[135:102];
464
              end
465
              if (wr_index0[1:0] == 2'b10) begin
466
                icdata_ary_00_10[wr_index0[11:4]] <= wrdata_f[135:102];
467
              end
468
              if (wr_index0[1:0] == 2'b11) begin
469
                icdata_ary_00_11[wr_index0[11:4]] <= wrdata_f[135:102];
470
              end
471
            end
472
            if (worden_f[1]) begin
473
              if (wr_index1[1:0] == 2'b0) begin
474
                icdata_ary_01_00[wr_index1[11:4]] <= wrdata_f[101:68];
475
              end
476
              if (wr_index1[1:0] == 2'b1) begin
477
                icdata_ary_01_01[wr_index1[11:4]] <= wrdata_f[101:68];
478
              end
479
              if (wr_index1[1:0] == 2'b10) begin
480
                icdata_ary_01_10[wr_index1[11:4]] <= wrdata_f[101:68];
481
              end
482
              if (wr_index1[1:0] == 2'b11) begin
483
                icdata_ary_01_11[wr_index1[11:4]] <= wrdata_f[101:68];
484
              end
485
            end
486
            if (worden_f[2]) begin
487
              if (wr_index2[1:0] == 2'b0) begin
488
                icdata_ary_10_00[wr_index2[11:4]] <= wrdata_f[67:34];
489
              end
490
              if (wr_index2[1:0] == 2'b1) begin
491
                icdata_ary_10_01[wr_index2[11:4]] <= wrdata_f[67:34];
492
              end
493
              if (wr_index2[1:0] == 2'b10) begin
494
                icdata_ary_10_10[wr_index2[11:4]] <= wrdata_f[67:34];
495
              end
496
              if (wr_index2[1:0] == 2'b11) begin
497
                icdata_ary_10_11[wr_index2[11:4]] <= wrdata_f[67:34];
498
              end
499
            end
500
            if (worden_f[3]) begin
501
              if (wr_index3[1:0] == 2'b0) begin
502
                icdata_ary_11_00[wr_index3[11:4]] <= wrdata_f[33:0];
503
              end
504
              if (wr_index3[1:0] == 2'b1) begin
505
                icdata_ary_11_01[wr_index3[11:4]] <= wrdata_f[33:0];
506
              end
507
              if (wr_index3[1:0] == 2'b10) begin
508
                icdata_ary_11_10[wr_index3[11:4]] <= wrdata_f[33:0];
509
              end
510
              if (wr_index3[1:0] == 2'b11) begin
511
                icdata_ary_11_11[wr_index3[11:4]] <= wrdata_f[33:0];
512
              end
513
            end
514
          end
515
        end
516
endmodule
517
 
518
 
519
 
520
 
521
 
522
 
523
 
524
 
525
 
526
 
527
 
528
 
529
 
530
 
531
 
532
 
533
 
534
 
535
 
536
 
537
 
538
 
539
 
540
 
541
 
542
 
543
 
544
 
545
 
546
 
547
 
548
 
549
 
550
 
551
 
552
 
553
 
554
 
555
 
556
 
557
 
558
 
559
 
560
 
561
 
562
 
563
 
564
 
565
 
566
 
567
 
568
 
569
 
570
 
571
 
572
 
573
 
574
 
575
 
576
 
577
 
578
 
579
 
580
 
581
 
582
 
583
 
584
 
585
 
586
 
587
 
588
 
589
 
590
 
591
 
592
 
593
 
594
 
595
 
596
 
597
 
598
 
599
 
600
 
601
 
602
 
603
 
604
 
605
 
606
 
607
 
608
 
609
 
610
 
611
 
612
 
613
 
614
 
615
 
616
 
617
 
618
 
619
 
620
 
621
 
622
 
623
 
624
 
625
 
626
 
627
 
628
 
629
 
630
 
631
 
632
 
633
 
634
 
635
 
636
 
637
 
638
 
639
 
640
 
641
 
642
 
643
 
644
 
645
 
646
 
647
 
648
 
649
 
650
 
651
 
652
 
653
 
654
 
655
 
656
 
657
 
658
 
659
 
660
 
661
 
662
 
663
 
664
 
665
 
666
 
667
 
668
 
669
 
670
 
671
 
672
 
673
 
674
 
675
 
676
 
677
 
678
 
679
 
680
 
681
 
682
 
683
 
684
 
685
 
686
 
687
 
688
 
689
 
690
 
691
 
692
 
693
 
694
 
695
 
696
 
697
 
698
 
699
 
700
 
701
 
702
 
703
 
704
 
705
 
706
 
707
 
708
 
709
 
710
 
711
 
712
 
713
 
714
 
715
 
716
 
717
 
718
 
719
 
720
 
721
 
722
 
723
 
724
 
725
 
726
 
727
 
728
 
729
 
730
 
731
 
732
 
733
 
734
 
735
 
736
 
737
 
738
 
739
 
740
 
741
 
742
 
743
 
744
 
745
 
746
 
747
 
748
 
749
 
750
 
751
 
752
 
753
 
754
 
755
 
756
 
757
 
758
 
759
 
760
 
761
 
762
 
763
 
764
 
765
 
766
 
767
 
768
 
769
 
770
 
771
 
772
 
773
 
774
 
775
 
776
 
777
 
778
 
779
 
780
 
781
 
782
 
783
 
784
 
785
 
786
 
787
 
788
 
789
 
790
 
791
 
792
 
793
 
794
 
795
 
796
 
797
 
798
 
799
 
800
 
801
 
802
 
803
 
804
 
805
 
806
 
807
 
808
 
809
 
810
 
811
 
812
 
813
 
814
 
815
 
816
 
817
 
818
 
819
 
820
 
821
 
822
 
823
 
824
 
825
 
826
 
827
 
828
 
829
 
830
 
831
 
832
 
833
 
834
 
835
 
836
 
837
 
838
 
839
 
840
 
841
 
842
 
843
 
844
 
845
 
846
 
847
 
848
 
849
 
850
 
851
 
852
 
853
 
854
 
855
 
856
 
857
 
858
 
859
 
860
 
861
 
862
 
863
 
864
 
865
 
866
 
867
 
868
 
869
 
870
 
871
 
872
 
873
 
874
 
875
 
876
 
877
 
878
 
879
 
880
 
881
 
882
 
883
 
884
 
885
 
886
 
887
 
888
 
889
 
890
 
891
 
892
 
893
 
894
 
895
 
896
 
897
 
898
 
899
 
900
 
901
 
902
 
903
 
904
 
905
 
906
 
907
 
908
 
909
 
910
 
911
 
912
 
913
 
914
 
915
 
916
 
917
 
918
 
919
 
920
 
921
 
922
 
923
 
924
 
925
 
926
 
927
 
928
 
929
 
930
 
931
 
932
 
933
 
934
 
935
 
936
 
937
 
938
 
939
 
940
 
941
 
942
 
943
 
944
 
945
 
946
 
947
 
948
 
949
 
950
 
951
 
952
 
953
 
954
 
955
 
956
 
957
 
958
 
959
 
960
 
961
 
962
 
963
 
964
 
965
 
966
 
967
 
968
 
969
 
970
 
971
 
972
 
973
 
974
 
975
 
976
 
977
 
978
 
979
 
980
 
981
 
982
 
983
 
984
 
985
 
986
 
987
 
988
 
989
 
990
 
991
 
992
 
993
 
994
 
995
 
996
 
997
 
998
 
999
 
1000
 
1001
 
1002
 
1003
 
1004
 
1005
 
1006
 
1007
 
1008
 
1009
 
1010
 
1011
 
1012
 
1013
 
1014
 
1015
 
1016
 
1017
 
1018
 
1019
 
1020
 
1021
 
1022
 
1023
 
1024
 
1025
 
1026
 
1027
 
1028
 
1029
 
1030
 
1031
 
1032
 
1033
 
1034
 
1035
 
1036
 
1037
 
1038
 
1039
 
1040
 
1041
 
1042
 
1043
 
1044
 
1045
 
1046
 
1047
 
1048
 
1049
 
1050
 
1051
 
1052
 
1053
 
1054
 
1055
 
1056
 

powered by: WebSVN 2.1.0

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