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

Subversion Repositories s1_core

[/] [s1_core/] [trunk/] [hdl/] [rtl/] [sparc_core/] [bw_r_irf.v] - Blame information for rev 95

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_irf.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_irf
24
//      Description: Register file with 3 read ports and 2 write ports.  Has
25
//                              32 registers per thread with 4 threads.  Reading and writing
26
//                              the same register concurrently produces x.
27
*/
28
 
29
//FPGA_SYN enables all FPGA related modifications
30
 
31
 
32
 
33
 
34
 
35
 
36
 
37
 
38
 
39
 
40
 
41
 
42
 
43
 
44
 
45
 
46
 
47
 
48
 
49
 
50
 
51
 
52
 
53
 
54
 
55
 
56
 
57
 
58
 
59
 
60
 
61
 
62
 
63
 
64
 
65
 
66
 
67
 
68
 
69
 
70
 
71
 
72
 
73
 
74
 
75
 
76
 
77
 
78
 
79
 
80
 
81
 
82
 
83
 
84
 
85
 
86
 
87
 
88
 
89
 
90
 
91
 
92
 
93
 
94
 
95
 
96
 
97
 
98
 
99
 
100
 
101
 
102
 
103
 
104
 
105
 
106
 
107
 
108
 
109
 
110
 
111
 
112
 
113
 
114
 
115
 
116
 
117
 
118
 
119
 
120
 
121
 
122
 
123
 
124
 
125
 
126
 
127
 
128
 
129
 
130
 
131
 
132
 
133
 
134
 
135
 
136
 
137
 
138
 
139
 
140
 
141
 
142
 
143
 
144
 
145
 
146
 
147
 
148
 
149
 
150
 
151
 
152
 
153
 
154
 
155
 
156
 
157
 
158
 
159
 
160
 
161
 
162
 
163
 
164
 
165
 
166
 
167
 
168
 
169
 
170
 
171
 
172
 
173
 
174
 
175
 
176
 
177
 
178
 
179
 
180
 
181
 
182
 
183
 
184
 
185
 
186
 
187
 
188
 
189
 
190
 
191
 
192
 
193
 
194
 
195
 
196
 
197
 
198
 
199
 
200
 
201
 
202
 
203
 
204
 
205
 
206
 
207
 
208
 
209
 
210
 
211
 
212
 
213
 
214
 
215
 
216
 
217
 
218
 
219
 
220
 
221
 
222
 
223
 
224
 
225
 
226
 
227
 
228
 
229
 
230
 
231
 
232
 
233
 
234
 
235
 
236
 
237
 
238
 
239
 
240
 
241
 
242
 
243
 
244
 
245
 
246
 
247
 
248
 
249
 
250
 
251
 
252
 
253
 
254
 
255
 
256
 
257
 
258
 
259
 
260
 
261
 
262
 
263
 
264
 
265
 
266
 
267
 
268
 
269
 
270
 
271
 
272
 
273
 
274
 
275
 
276
 
277
 
278
 
279
 
280
 
281
 
282
 
283
 
284
 
285
 
286
 
287
 
288
 
289
 
290
 
291
 
292
 
293
 
294
 
295
 
296
 
297
 
298
 
299
 
300
 
301
 
302
 
303
 
304
 
305
 
306
 
307
 
308
 
309
 
310
 
311
 
312
 
313
 
314
 
315
 
316
 
317
 
318
 
319
 
320
 
321
 
322
 
323
 
324
 
325
 
326
 
327
 
328
 
329
 
330
 
331
 
332
 
333
 
334
 
335
 
336
 
337
 
338
 
339
 
340
 
341
 
342
 
343
 
344
 
345
 
346
 
347
 
348
 
349
 
350
 
351
 
352
 
353
 
354
 
355
 
356
 
357
 
358
 
359
 
360
 
361
 
362
 
363
 
364
 
365
 
366
 
367
 
368
 
369
 
370
 
371
 
372
 
373
 
374
 
375
 
376
 
377
 
378
 
379
 
380
 
381
 
382
 
383
 
384
 
385
 
386
 
387
 
388
 
389
 
390
 
391
 
392
 
393
 
394
 
395
 
396
 
397
 
398
 
399
 
400
 
401
 
402
 
403
 
404
 
405
 
406
 
407
 
408
 
409
 
410
 
411
 
412
 
413
 
414
 
415
 
416
 
417
 
418
 
419
 
420
 
421
 
422
 
423
 
424
 
425
 
426
 
427
 
428
 
429
 
430
 
431
 
432
 
433
 
434
 
435
 
436
 
437
 
438
 
439
 
440
 
441
 
442
 
443
 
444
 
445
 
446
 
447
 
448
 
449
 
450
 
451
 
452
 
453
 
454
 
455
 
456
 
457
 
458
 
459
 
460
 
461
 
462
 
463
 
464
 
465
 
466
 
467
 
468
 
469
 
470
 
471
 
472
 
473
 
474
 
475
 
476
 
477
 
478
 
479
 
480
 
481
 
482
 
483
 
484
 
485
 
486
 
487
 
488
 
489
 
490
 
491
 
492
 
493
 
494
 
495
 
496
 
497
 
498
 
499
 
500
 
501
 
502
 
503
 
504
 
505
 
506
 
507
 
508
 
509
 
510
 
511
 
512
 
513
 
514
 
515
 
516
 
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
module bw_r_irf(so, irf_byp_rs1_data_d_l, irf_byp_rs2_data_d_l,
1022
        irf_byp_rs3_data_d_l, irf_byp_rs3h_data_d_l, rclk, reset_l, si, se,
1023
        sehold, rst_tri_en, ifu_exu_tid_s2, ifu_exu_rs1_s, ifu_exu_rs2_s,
1024
        ifu_exu_rs3_s, ifu_exu_ren1_s, ifu_exu_ren2_s, ifu_exu_ren3_s,
1025
        ecl_irf_wen_w, ecl_irf_wen_w2, ecl_irf_rd_m, ecl_irf_rd_g,
1026
        byp_irf_rd_data_w, byp_irf_rd_data_w2, ecl_irf_tid_m, ecl_irf_tid_g,
1027
        rml_irf_old_lo_cwp_e, rml_irf_new_lo_cwp_e, rml_irf_old_e_cwp_e,
1028
        rml_irf_new_e_cwp_e, rml_irf_swap_even_e, rml_irf_swap_odd_e,
1029
        rml_irf_swap_local_e, rml_irf_kill_restore_w, rml_irf_cwpswap_tid_e,
1030
        rml_irf_old_agp, rml_irf_new_agp, rml_irf_swap_global,
1031
        rml_irf_global_tid);
1032
 
1033
        input                   rclk;
1034
        input                   reset_l;
1035
        input                   si;
1036
        input                   se;
1037
        input                   sehold;
1038
        input                   rst_tri_en;
1039
        input   [1:0]            ifu_exu_tid_s2;
1040
        input   [4:0]            ifu_exu_rs1_s;
1041
        input   [4:0]            ifu_exu_rs2_s;
1042
        input   [4:0]            ifu_exu_rs3_s;
1043
        input                   ifu_exu_ren1_s;
1044
        input                   ifu_exu_ren2_s;
1045
        input                   ifu_exu_ren3_s;
1046
        input                   ecl_irf_wen_w;
1047
        input                   ecl_irf_wen_w2;
1048
        input   [4:0]            ecl_irf_rd_m;
1049
        input   [4:0]            ecl_irf_rd_g;
1050
        input   [71:0]           byp_irf_rd_data_w;
1051
        input   [71:0]           byp_irf_rd_data_w2;
1052
        input   [1:0]            ecl_irf_tid_m;
1053
        input   [1:0]            ecl_irf_tid_g;
1054
        input   [2:0]            rml_irf_old_lo_cwp_e;
1055
        input   [2:0]            rml_irf_new_lo_cwp_e;
1056
        input   [2:1]           rml_irf_old_e_cwp_e;
1057
        input   [2:1]           rml_irf_new_e_cwp_e;
1058
        input                   rml_irf_swap_even_e;
1059
        input                   rml_irf_swap_odd_e;
1060
        input                   rml_irf_swap_local_e;
1061
        input                   rml_irf_kill_restore_w;
1062
        input   [1:0]            rml_irf_cwpswap_tid_e;
1063
        input   [1:0]            rml_irf_old_agp;
1064
        input   [1:0]            rml_irf_new_agp;
1065
        input                   rml_irf_swap_global;
1066
        input   [1:0]            rml_irf_global_tid;
1067
        output                  so;
1068
        output  [71:0]           irf_byp_rs1_data_d_l;
1069
        output  [71:0]           irf_byp_rs2_data_d_l;
1070
        output  [71:0]           irf_byp_rs3_data_d_l;
1071
        output  [31:0]           irf_byp_rs3h_data_d_l;
1072
 
1073
        wire    [71:0]           irf_byp_rs1_data_d;
1074
        wire    [71:0]           irf_byp_rs2_data_d;
1075
        wire    [71:0]           irf_byp_rs3_data_d;
1076
        wire    [71:0]           irf_byp_rs3h_data_d;
1077
        wire    [1:0]            ecl_irf_tid_w;
1078
        wire    [1:0]            ecl_irf_tid_w2;
1079
        wire    [4:0]            ecl_irf_rd_w;
1080
        wire    [4:0]            ecl_irf_rd_w2;
1081
        wire    [1:0]            ifu_exu_thr_d;
1082
        wire                    ifu_exu_ren1_d;
1083
        wire                    ifu_exu_ren2_d;
1084
        wire                    ifu_exu_ren3_d;
1085
        wire    [4:0]            ifu_exu_rs1_d;
1086
        wire    [4:0]            ifu_exu_rs2_d;
1087
        wire    [4:0]            ifu_exu_rs3_d;
1088
        wire    [6:0]            thr_rs1;
1089
        wire    [6:0]            thr_rs2;
1090
        wire    [6:0]            thr_rs3;
1091
        wire    [6:0]            thr_rs3h;
1092
        wire    [6:0]            thr_rd_w;
1093
        wire    [6:0]            thr_rd_w2;
1094
        reg     [1:0]            cwpswap_tid_m;
1095
        reg     [1:0]            cwpswap_tid_w;
1096
        reg     [2:0]            old_lo_cwp_m;
1097
        reg     [2:0]            new_lo_cwp_m;
1098
        reg     [2:0]            new_lo_cwp_w;
1099
        reg     [1:0]            old_e_cwp_m;
1100
        reg     [1:0]            new_e_cwp_m;
1101
        reg     [1:0]            new_e_cwp_w;
1102
        reg                     swap_local_m;
1103
        reg                     swap_local_w;
1104
        reg                     swap_even_m;
1105
        reg                     swap_even_w;
1106
        reg                     swap_odd_m;
1107
        reg                     swap_odd_w;
1108
        reg                     kill_restore_d1;
1109
        reg                     swap_global_d1;
1110
        reg                     swap_global_d2;
1111
        reg     [1:0]            global_tid_d1;
1112
        reg     [1:0]            global_tid_d2;
1113
        reg     [1:0]            old_agp_d1;
1114
        reg     [1:0]            new_agp_d1;
1115
        reg     [1:0]            new_agp_d2;
1116
        reg     [71:0]           active_win_thr_rd_w_neg;
1117
        reg     [71:0]           active_win_thr_rd_w2_neg;
1118
        reg     [6:0]            thr_rd_w_neg;
1119
        reg     [6:0]            thr_rd_w2_neg;
1120
        reg                     active_win_thr_rd_w_neg_wr_en;
1121
        reg                     active_win_thr_rd_w2_neg_wr_en;
1122
        reg                     rst_tri_en_neg;
1123
        wire                    clk;
1124
        wire                    ren1_s;
1125
        wire                    ren2_s;
1126
        wire                    ren3_s;
1127
        wire    [4:0]            rs1_s;
1128
        wire    [4:0]            rs2_s;
1129
        wire    [4:0]            rs3_s;
1130
        wire    [1:0]            tid_s;
1131
        wire    [1:0]            tid_g;
1132
        wire    [1:0]            tid_m;
1133
        wire    [4:0]            rd_m;
1134
        wire    [4:0]            rd_g;
1135
        wire                    kill_restore_w;
1136
        wire                    swap_global_d1_vld;
1137
        wire                    swap_local_m_vld;
1138
        wire                    swap_even_m_vld;
1139
        wire                    swap_odd_m_vld;
1140
        wire                    wr_en;
1141
        wire                    wr_en2;
1142
 
1143
        assign clk = rclk;
1144
        assign {ren1_s, ren2_s, ren3_s, rs1_s[4:0], rs2_s[4:0], rs3_s[4:0],
1145
                tid_s[1:0], tid_g[1:0], tid_m[1:0], rd_m[4:0], rd_g[4:0]} = (
1146
                sehold ? {ifu_exu_ren1_d, ifu_exu_ren2_d, ifu_exu_ren3_d,
1147
                ifu_exu_rs1_d[4:0], ifu_exu_rs2_d[4:0], ifu_exu_rs3_d[4:0],
1148
                ifu_exu_thr_d[1:0], ecl_irf_tid_w2[1:0], ecl_irf_tid_w[1:0],
1149
                ecl_irf_rd_w[4:0], ecl_irf_rd_w2[4:0]} : {ifu_exu_ren1_s,
1150
                ifu_exu_ren2_s, ifu_exu_ren3_s, ifu_exu_rs1_s[4:0],
1151
                ifu_exu_rs2_s[4:0], ifu_exu_rs3_s[4:0], ifu_exu_tid_s2[1:0],
1152
                ecl_irf_tid_g[1:0], ecl_irf_tid_m[1:0], ecl_irf_rd_m[4:0],
1153
                ecl_irf_rd_g[4:0]});
1154
        assign thr_rs1[6:0] = {ifu_exu_thr_d, ifu_exu_rs1_d};
1155
        assign thr_rs2[6:0] = {ifu_exu_thr_d, ifu_exu_rs2_d};
1156
        assign thr_rs3[6:0] = {ifu_exu_thr_d, ifu_exu_rs3_d[4:0]};
1157
        assign thr_rs3h[6:0] = {ifu_exu_thr_d[1:0], ifu_exu_rs3_d[4:1], 1'b1};
1158
        assign thr_rd_w[6:0] = {ecl_irf_tid_w, ecl_irf_rd_w};
1159
        assign thr_rd_w2[6:0] = {ecl_irf_tid_w2, ecl_irf_rd_w2};
1160
        assign irf_byp_rs1_data_d_l[71:0] = (~irf_byp_rs1_data_d[71:0]);
1161
        assign irf_byp_rs2_data_d_l[71:0] = (~irf_byp_rs2_data_d[71:0]);
1162
        assign irf_byp_rs3_data_d_l[71:0] = (~irf_byp_rs3_data_d[71:0]);
1163
        assign irf_byp_rs3h_data_d_l[31:0] = (~irf_byp_rs3h_data_d[31:0]);
1164
        assign kill_restore_w = (sehold ? kill_restore_d1 :
1165
                rml_irf_kill_restore_w);
1166
        assign swap_local_m_vld = (swap_local_m & (~rst_tri_en));
1167
        assign swap_odd_m_vld = (swap_odd_m & (~rst_tri_en));
1168
        assign swap_even_m_vld = (swap_even_m & (~rst_tri_en));
1169
        assign swap_global_d1_vld = (swap_global_d1 & (~rst_tri_en));
1170
        assign wr_en = (active_win_thr_rd_w_neg_wr_en & ((~rst_tri_en) | (~
1171
                rst_tri_en_neg)));
1172
        assign wr_en2 = (active_win_thr_rd_w2_neg_wr_en & ((~rst_tri_en) | (~
1173
                rst_tri_en_neg)));
1174
 
1175
        dff dff_ren1_s2d(
1176
                .din                            (ren1_s),
1177
                .clk                            (clk),
1178
                .q                              (ifu_exu_ren1_d),
1179
                .se                             (se));
1180
        dff dff_ren2_s2d(
1181
                .din                            (ren2_s),
1182
                .clk                            (clk),
1183
                .q                              (ifu_exu_ren2_d),
1184
                .se                             (se));
1185
        dff dff_ren3_s2d(
1186
                .din                            (ren3_s),
1187
                .clk                            (clk),
1188
                .q                              (ifu_exu_ren3_d),
1189
                .se                             (se));
1190
        dff #(5) dff_rs1_s2d(
1191
                .din                            (rs1_s[4:0]),
1192
                .clk                            (clk),
1193
                .q                              (ifu_exu_rs1_d[4:0]),
1194
                .se                             (se));
1195
        dff #(5) dff_rs2_s2d(
1196
                .din                            (rs2_s[4:0]),
1197
                .clk                            (clk),
1198
                .q                              (ifu_exu_rs2_d[4:0]),
1199
                .se                             (se));
1200
        dff #(5) dff_rs3_s2d(
1201
                .din                            (rs3_s[4:0]),
1202
                .clk                            (clk),
1203
                .q                              (ifu_exu_rs3_d[4:0]),
1204
                .se                             (se));
1205
        dff #(2) dff_thr_s2d(
1206
                .din                            (tid_s[1:0]),
1207
                .clk                            (clk),
1208
                .q                              (ifu_exu_thr_d[1:0]),
1209
                .se                             (se));
1210
        dff #(2) dff_thr_g2w2(
1211
                .din                            (tid_g[1:0]),
1212
                .clk                            (clk),
1213
                .q                              (ecl_irf_tid_w2[1:0]),
1214
                .se                             (se));
1215
        dff #(2) dff_thr_m2w(
1216
                .din                            (tid_m[1:0]),
1217
                .clk                            (clk),
1218
                .q                              (ecl_irf_tid_w[1:0]),
1219
                .se                             (se));
1220
        dff #(5) dff_rd_m2w(
1221
                .din                            (rd_m[4:0]),
1222
                .clk                            (clk),
1223
                .q                              (ecl_irf_rd_w[4:0]),
1224
                .se                             (se));
1225
        dff #(5) dff_rd_g2w2(
1226
                .din                            (rd_g[4:0]),
1227
                .clk                            (clk),
1228
                .q                              (ecl_irf_rd_w2[4:0]),
1229
                .se                             (se));
1230
        bw_r_irf_core bw_r_irf_core(
1231
                .clk                            (clk),
1232
                .ifu_exu_ren1_d                 (ifu_exu_ren1_d),
1233
                .ifu_exu_ren2_d                 (ifu_exu_ren2_d),
1234
                .ifu_exu_ren3_d                 (ifu_exu_ren3_d),
1235
                .thr_rs1                        (thr_rs1),
1236
                .thr_rs2                        (thr_rs2),
1237
                .thr_rs3                        (thr_rs3),
1238
                .thr_rs3h                       (thr_rs3h),
1239
                .irf_byp_rs1_data_d             (irf_byp_rs1_data_d),
1240
                .irf_byp_rs2_data_d             (irf_byp_rs2_data_d),
1241
                .irf_byp_rs3_data_d             (irf_byp_rs3_data_d),
1242
                .irf_byp_rs3h_data_d            (irf_byp_rs3h_data_d),
1243
                .wr_en                          (wr_en),
1244
                .wr_en2                         (wr_en2),
1245
                .active_win_thr_rd_w_neg        (active_win_thr_rd_w_neg),
1246
                .active_win_thr_rd_w2_neg       (active_win_thr_rd_w2_neg),
1247
                .thr_rd_w_neg                   (thr_rd_w_neg),
1248
                .thr_rd_w2_neg                  (thr_rd_w2_neg),
1249
                .swap_global_d1_vld             (swap_global_d1_vld),
1250
                .swap_global_d2                 (swap_global_d2),
1251
                .global_tid_d1                  (global_tid_d1),
1252
                .global_tid_d2                  (global_tid_d2),
1253
                .old_agp_d1                     (old_agp_d1),
1254
                .new_agp_d2                     (new_agp_d2),
1255
                .swap_local_m_vld               (swap_local_m_vld),
1256
                .swap_local_w                   (swap_local_w),
1257
                .old_lo_cwp_m                   (old_lo_cwp_m),
1258
                .new_lo_cwp_w                   (new_lo_cwp_w),
1259
                .swap_even_m_vld                (swap_even_m_vld),
1260
                .swap_even_w                    (swap_even_w),
1261
                .old_e_cwp_m                    (old_e_cwp_m),
1262
                .new_e_cwp_w                    (new_e_cwp_w),
1263
                .swap_odd_m_vld                 (swap_odd_m_vld),
1264
                .swap_odd_w                     (swap_odd_w),
1265
                .cwpswap_tid_m                  (cwpswap_tid_m),
1266
                .cwpswap_tid_w                  (cwpswap_tid_w),
1267
                .kill_restore_w                 (kill_restore_w));
1268
 
1269
        always @(negedge clk) begin
1270
          rst_tri_en_neg <= rst_tri_en;
1271
          if ((ecl_irf_wen_w & ecl_irf_wen_w2) & (thr_rd_w[6:0] ==
1272
                  thr_rd_w2[6:0])) begin
1273
            active_win_thr_rd_w_neg <= {72 {1'bx}};
1274
            thr_rd_w_neg <= thr_rd_w;
1275
            active_win_thr_rd_w_neg_wr_en <= 1'b1;
1276
            active_win_thr_rd_w2_neg_wr_en <= 1'b0;
1277
          end
1278
          else
1279
            begin
1280
              if (ecl_irf_wen_w & (thr_rd_w[4:0] != 5'b0)) begin
1281
                active_win_thr_rd_w_neg <= byp_irf_rd_data_w;
1282
                thr_rd_w_neg <= thr_rd_w;
1283
                active_win_thr_rd_w_neg_wr_en <= 1'b1;
1284
              end
1285
              else begin
1286
                active_win_thr_rd_w_neg_wr_en <= 1'b0;
1287
              end
1288
              if (ecl_irf_wen_w2 & (thr_rd_w2[4:0] != 5'b0)) begin
1289
                active_win_thr_rd_w2_neg <= byp_irf_rd_data_w2;
1290
                thr_rd_w2_neg <= thr_rd_w2;
1291
                active_win_thr_rd_w2_neg_wr_en <= 1'b1;
1292
              end
1293
              else begin
1294
                active_win_thr_rd_w2_neg_wr_en <= 1'b0;
1295
              end
1296
            end
1297
        end
1298
        always @(posedge clk) begin
1299
          cwpswap_tid_m[1:0] <= (sehold ? cwpswap_tid_m[1:0] :
1300
                  rml_irf_cwpswap_tid_e[1:0]);
1301
          cwpswap_tid_w[1:0] <= cwpswap_tid_m[1:0];
1302
          old_lo_cwp_m[2:0] <= (sehold ? old_lo_cwp_m[2:0] :
1303
                  rml_irf_old_lo_cwp_e[2:0]);
1304
          new_lo_cwp_m[2:0] <= (sehold ? new_lo_cwp_m[2:0] :
1305
                  rml_irf_new_lo_cwp_e[2:0]);
1306
          new_lo_cwp_w[2:0] <= new_lo_cwp_m[2:0];
1307
          old_e_cwp_m[1:0] <= (sehold ? old_e_cwp_m[1:0] :
1308
                  rml_irf_old_e_cwp_e[2:1]);
1309
          new_e_cwp_m[1:0] <= (sehold ? new_e_cwp_m[1:0] :
1310
                  rml_irf_new_e_cwp_e[2:1]);
1311
          new_e_cwp_w[1:0] <= new_e_cwp_m[1:0];
1312
          swap_local_m <= (sehold ? (swap_local_m & rst_tri_en) :
1313
                  rml_irf_swap_local_e);
1314
          swap_local_w <= swap_local_m_vld;
1315
          swap_odd_m <= (sehold ? (swap_odd_m & rst_tri_en) : rml_irf_swap_odd_e
1316
                  );
1317
          swap_odd_w <= swap_odd_m_vld;
1318
          swap_even_m <= (sehold ? (swap_even_m & rst_tri_en) :
1319
                  rml_irf_swap_even_e);
1320
          swap_even_w <= swap_even_m_vld;
1321
          kill_restore_d1 <= kill_restore_w;
1322
        end
1323
        always @(posedge clk) begin
1324
          swap_global_d1 <= (sehold ? (swap_global_d1 & rst_tri_en) :
1325
                  rml_irf_swap_global);
1326
          swap_global_d2 <= swap_global_d1_vld;
1327
          global_tid_d1[1:0] <= (sehold ? global_tid_d1[1:0] :
1328
                  rml_irf_global_tid[1:0]);
1329
          global_tid_d2[1:0] <= global_tid_d1[1:0];
1330
          old_agp_d1[1:0] <= (sehold ? old_agp_d1[1:0] : rml_irf_old_agp[1:0]);
1331
          new_agp_d1[1:0] <= (sehold ? new_agp_d1[1:0] : rml_irf_new_agp[1:0]);
1332
          new_agp_d2[1:0] <= new_agp_d1[1:0];
1333
        end
1334
/*
1335
        always @(posedge clk) begin
1336
          if (wr_en) begin
1337
            $display("Write Port 1: %h %h", active_win_thr_rd_w_neg,
1338
                    thr_rd_w_neg);
1339
          end
1340
          if (wr_en2) begin
1341
            $display("Write Port 2: %h %h", active_win_thr_rd_w2_neg,
1342
                    thr_rd_w2_neg);
1343
          end
1344
          if (ifu_exu_ren1_d) begin
1345
            @(posedge clk) ;
1346
            $display("Read Port 1: %h %h", irf_byp_rs1_data_d, thr_rs1);
1347
          end
1348
          if (ifu_exu_ren2_d) begin
1349
            @(posedge clk) ;
1350
            $display("Read Port 2: %h %h", irf_byp_rs2_data_d, thr_rs2);
1351
          end
1352
          if (ifu_exu_ren3_d) begin
1353
            @(posedge clk) ;
1354
            $display("Read Port 3: %h %h", irf_byp_rs3_data_d, thr_rs3);
1355
          end
1356
        end
1357
*/
1358
endmodule
1359
 
1360
module bw_r_irf_core(clk, ifu_exu_ren1_d, ifu_exu_ren2_d, ifu_exu_ren3_d,
1361
        thr_rs1, thr_rs2, thr_rs3, thr_rs3h, irf_byp_rs1_data_d,
1362
        irf_byp_rs2_data_d, irf_byp_rs3_data_d, irf_byp_rs3h_data_d, wr_en,
1363
        wr_en2, active_win_thr_rd_w_neg, active_win_thr_rd_w2_neg, thr_rd_w_neg,
1364
        thr_rd_w2_neg, swap_global_d1_vld, swap_global_d2, global_tid_d1,
1365
        global_tid_d2, old_agp_d1, new_agp_d2, swap_local_m_vld, swap_local_w,
1366
        old_lo_cwp_m, new_lo_cwp_w, swap_even_m_vld, swap_even_w, old_e_cwp_m,
1367
        new_e_cwp_w, swap_odd_m_vld, swap_odd_w, cwpswap_tid_m, cwpswap_tid_w,
1368
        kill_restore_w);
1369
 
1370
        input                   clk;
1371
        input                   ifu_exu_ren1_d;
1372
        input                   ifu_exu_ren2_d;
1373
        input                   ifu_exu_ren3_d;
1374
        input   [6:0]            thr_rs1;
1375
        input   [6:0]            thr_rs2;
1376
        input   [6:0]            thr_rs3;
1377
        input   [6:0]            thr_rs3h;
1378
        output  [71:0]           irf_byp_rs1_data_d;
1379
        output  [71:0]           irf_byp_rs2_data_d;
1380
        output  [71:0]           irf_byp_rs3_data_d;
1381
        output  [71:0]           irf_byp_rs3h_data_d;
1382
        input                   wr_en;
1383
        input                   wr_en2;
1384
        input   [71:0]           active_win_thr_rd_w_neg;
1385
        input   [71:0]           active_win_thr_rd_w2_neg;
1386
        input   [6:0]            thr_rd_w_neg;
1387
        input   [6:0]            thr_rd_w2_neg;
1388
        input                   swap_global_d1_vld;
1389
        input                   swap_global_d2;
1390
        input   [1:0]            global_tid_d1;
1391
        input   [1:0]            global_tid_d2;
1392
        input   [1:0]            old_agp_d1;
1393
        input   [1:0]            new_agp_d2;
1394
        input                   swap_local_m_vld;
1395
        input                   swap_local_w;
1396
        input   [2:0]            old_lo_cwp_m;
1397
        input   [2:0]            new_lo_cwp_w;
1398
        input                   swap_even_m_vld;
1399
        input                   swap_even_w;
1400
        input   [1:0]            old_e_cwp_m;
1401
        input   [1:0]            new_e_cwp_w;
1402
        input                   swap_odd_m_vld;
1403
        input                   swap_odd_w;
1404
        input   [1:0]            cwpswap_tid_m;
1405
        input   [1:0]            cwpswap_tid_w;
1406
        input                   kill_restore_w;
1407
 
1408
        reg     [71:0]           irf_byp_rs1_data_d;
1409
        reg     [71:0]           irf_byp_rs2_data_d;
1410
        reg     [71:0]           irf_byp_rs3_data_d;
1411
        reg     [71:0]           irf_byp_rs3h_data_d;
1412
        wire    [71:0]           rd_data00;
1413
        wire    [71:0]           rd_data01;
1414
        wire    [71:0]           rd_data02;
1415
        wire    [71:0]           rd_data03;
1416
        wire    [71:0]           rd_data04;
1417
        wire    [71:0]           rd_data05;
1418
        wire    [71:0]           rd_data06;
1419
        wire    [71:0]           rd_data07;
1420
        wire    [71:0]           rd_data08;
1421
        wire    [71:0]           rd_data09;
1422
        wire    [71:0]           rd_data10;
1423
        wire    [71:0]           rd_data11;
1424
        wire    [71:0]           rd_data12;
1425
        wire    [71:0]           rd_data13;
1426
        wire    [71:0]           rd_data14;
1427
        wire    [71:0]           rd_data15;
1428
        wire    [71:0]           rd_data16;
1429
        wire    [71:0]           rd_data17;
1430
        wire    [71:0]           rd_data18;
1431
        wire    [71:0]           rd_data19;
1432
        wire    [71:0]           rd_data20;
1433
        wire    [71:0]           rd_data21;
1434
        wire    [71:0]           rd_data22;
1435
        wire    [71:0]           rd_data23;
1436
        wire    [71:0]           rd_data24;
1437
        wire    [71:0]           rd_data25;
1438
        wire    [71:0]           rd_data26;
1439
        wire    [71:0]           rd_data27;
1440
        wire    [71:0]           rd_data28;
1441
        wire    [71:0]           rd_data29;
1442
        wire    [71:0]           rd_data30;
1443
        wire    [71:0]           rd_data31;
1444
        wire                    wren;
1445
        wire    [4:0]            wr_addr;
1446
        wire    [71:0]           wr_data;
1447
 
1448
 
1449
        wire    [127:0]  wr_en1s = (wr_en << {thr_rd_w_neg[4:0],thr_rd_w_neg[6:5]});
1450
        wire    [127:0] wr_en2s = (wr_en2 << {thr_rd_w2_neg[4:0],thr_rd_w2_neg[6:5]});
1451
        wire    [127:0]  wrens = wr_en1s | wr_en2s;
1452
 
1453
        wire    [3:0]    wr_th1 = wr_en << thr_rd_w_neg[6:5];
1454
 
1455
        wire    [71:0]   wr_data0 = wr_th1[0] ? active_win_thr_rd_w_neg : active_win_thr_rd_w2_neg;
1456
        wire    [71:0]   wr_data1 = wr_th1[1] ? active_win_thr_rd_w_neg : active_win_thr_rd_w2_neg;
1457
        wire    [71:0]   wr_data2 = wr_th1[2] ? active_win_thr_rd_w_neg : active_win_thr_rd_w2_neg;
1458
        wire    [71:0]   wr_data3 = wr_th1[3] ? active_win_thr_rd_w_neg : active_win_thr_rd_w2_neg;
1459
 
1460
 
1461
        bw_r_irf_register register00(
1462
                .clk                            (clk),
1463
                .wrens                          (wrens[3:0]),
1464
                .save                           (swap_global_d1_vld),
1465
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1466
                .restore                        (swap_global_d2),
1467
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1468
                .wr_data0                       (72'b0),
1469
                .wr_data1                       (72'b0),
1470
                .wr_data2                       (72'b0),
1471
                .wr_data3                       (72'b0),
1472
                .rd_thread                      (thr_rs1[6:5]),
1473
                .rd_data                        (rd_data00));
1474
        bw_r_irf_register register01(
1475
                .clk                            (clk),
1476
                .wrens                          (wrens[7:4]),
1477
                .save                           (swap_global_d1_vld),
1478
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1479
                .restore                        (swap_global_d2),
1480
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1481
                .wr_data0                       (wr_data0),
1482
                .wr_data1                       (wr_data1),
1483
                .wr_data2                       (wr_data2),
1484
                .wr_data3                       (wr_data3),
1485
                .rd_thread                      (thr_rs1[6:5]),
1486
                .rd_data                        (rd_data01));
1487
        bw_r_irf_register register02(
1488
                .clk                            (clk),
1489
                .wrens                          (wrens[11:8]),
1490
                .save                           (swap_global_d1_vld),
1491
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1492
                .restore                        (swap_global_d2),
1493
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1494
                .wr_data0                       (wr_data0),
1495
                .wr_data1                       (wr_data1),
1496
                .wr_data2                       (wr_data2),
1497
                .wr_data3                       (wr_data3),
1498
                .rd_thread                      (thr_rs1[6:5]),
1499
                .rd_data                        (rd_data02));
1500
        bw_r_irf_register register03(
1501
                .clk                            (clk),
1502
                .wrens                          (wrens[15:12]),
1503
                .save                           (swap_global_d1_vld),
1504
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1505
                .restore                        (swap_global_d2),
1506
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1507
                .wr_data0                       (wr_data0),
1508
                .wr_data1                       (wr_data1),
1509
                .wr_data2                       (wr_data2),
1510
                .wr_data3                       (wr_data3),
1511
                .rd_thread                      (thr_rs1[6:5]),
1512
                .rd_data                        (rd_data03));
1513
        bw_r_irf_register register04(
1514
                .clk                            (clk),
1515
                .wrens                          (wrens[19:16]),
1516
                .save                           (swap_global_d1_vld),
1517
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1518
                .restore                        (swap_global_d2),
1519
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1520
                .wr_data0                       (wr_data0),
1521
                .wr_data1                       (wr_data1),
1522
                .wr_data2                       (wr_data2),
1523
                .wr_data3                       (wr_data3),
1524
                .rd_thread                      (thr_rs1[6:5]),
1525
                .rd_data                        (rd_data04));
1526
        bw_r_irf_register register05(
1527
                .clk                            (clk),
1528
                .wrens                          (wrens[23:20]),
1529
                .save                           (swap_global_d1_vld),
1530
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1531
                .restore                        (swap_global_d2),
1532
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1533
                .wr_data0                       (wr_data0),
1534
                .wr_data1                       (wr_data1),
1535
                .wr_data2                       (wr_data2),
1536
                .wr_data3                       (wr_data3),
1537
                .rd_thread                      (thr_rs1[6:5]),
1538
                .rd_data                        (rd_data05));
1539
        bw_r_irf_register register06(
1540
                .clk                            (clk),
1541
                .wrens                          (wrens[27:24]),
1542
                .save                           (swap_global_d1_vld),
1543
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1544
                .restore                        (swap_global_d2),
1545
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1546
                .wr_data0                       (wr_data0),
1547
                .wr_data1                       (wr_data1),
1548
                .wr_data2                       (wr_data2),
1549
                .wr_data3                       (wr_data3),
1550
                .rd_thread                      (thr_rs1[6:5]),
1551
                .rd_data                        (rd_data06));
1552
        bw_r_irf_register register07(
1553
                .clk                            (clk),
1554
                .wrens                          (wrens[31:28]),
1555
                .save                           (swap_global_d1_vld),
1556
                .save_addr                      ({global_tid_d1, 1'b0, old_agp_d1[1:0]}),
1557
                .restore                        (swap_global_d2),
1558
                .restore_addr                   ({global_tid_d2, 1'b0, new_agp_d2[1:0]}),
1559
                .wr_data0                       (wr_data0),
1560
                .wr_data1                       (wr_data1),
1561
                .wr_data2                       (wr_data2),
1562
                .wr_data3                       (wr_data3),
1563
                .rd_thread                      (thr_rs1[6:5]),
1564
                .rd_data                        (rd_data07));
1565
 
1566
        bw_r_irf_register register08(
1567
                .clk                            (clk),
1568
                .wrens                          (wrens[35:32]),
1569
                .save                           (swap_odd_m_vld),
1570
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1571
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1572
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1573
                .wr_data0                       (wr_data0),
1574
                .wr_data1                       (wr_data1),
1575
                .wr_data2                       (wr_data2),
1576
                .wr_data3                       (wr_data3),
1577
                .rd_thread                      (thr_rs1[6:5]),
1578
                .rd_data                        (rd_data08));
1579
        bw_r_irf_register register09(
1580
                .clk                            (clk),
1581
                .wrens                          (wrens[39:36]),
1582
                .save                           (swap_odd_m_vld),
1583
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1584
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1585
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1586
                .wr_data0                       (wr_data0),
1587
                .wr_data1                       (wr_data1),
1588
                .wr_data2                       (wr_data2),
1589
                .wr_data3                       (wr_data3),
1590
                .rd_thread                      (thr_rs1[6:5]),
1591
                .rd_data                        (rd_data09));
1592
        bw_r_irf_register register10(
1593
                .clk                            (clk),
1594
                .wrens                          (wrens[43:40]),
1595
                .save                           (swap_odd_m_vld),
1596
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1597
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1598
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1599
                .wr_data0                       (wr_data0),
1600
                .wr_data1                       (wr_data1),
1601
                .wr_data2                       (wr_data2),
1602
                .wr_data3                       (wr_data3),
1603
                .rd_thread                      (thr_rs1[6:5]),
1604
                .rd_data                        (rd_data10));
1605
        bw_r_irf_register register11(
1606
                .clk                            (clk),
1607
                .wrens                          (wrens[47:44]),
1608
                .save                           (swap_odd_m_vld),
1609
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1610
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1611
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1612
                .wr_data0                       (wr_data0),
1613
                .wr_data1                       (wr_data1),
1614
                .wr_data2                       (wr_data2),
1615
                .wr_data3                       (wr_data3),
1616
                .rd_thread                      (thr_rs1[6:5]),
1617
                .rd_data                        (rd_data11));
1618
        bw_r_irf_register register12(
1619
                .clk                            (clk),
1620
                .wrens                          (wrens[51:48]),
1621
                .save                           (swap_odd_m_vld),
1622
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1623
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1624
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1625
                .wr_data0                       (wr_data0),
1626
                .wr_data1                       (wr_data1),
1627
                .wr_data2                       (wr_data2),
1628
                .wr_data3                       (wr_data3),
1629
                .rd_thread                      (thr_rs1[6:5]),
1630
                .rd_data                        (rd_data12));
1631
        bw_r_irf_register register13(
1632
                .clk                            (clk),
1633
                .wrens                          (wrens[55:52]),
1634
                .save                           (swap_odd_m_vld),
1635
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1636
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1637
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1638
                .wr_data0                       (wr_data0),
1639
                .wr_data1                       (wr_data1),
1640
                .wr_data2                       (wr_data2),
1641
                .wr_data3                       (wr_data3),
1642
                .rd_thread                      (thr_rs1[6:5]),
1643
                .rd_data                        (rd_data13));
1644
        bw_r_irf_register register14(
1645
                .clk                            (clk),
1646
                .wrens                          (wrens[59:56]),
1647
                .save                           (swap_odd_m_vld),
1648
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1649
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1650
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1651
                .wr_data0                       (wr_data0),
1652
                .wr_data1                       (wr_data1),
1653
                .wr_data2                       (wr_data2),
1654
                .wr_data3                       (wr_data3),
1655
                .rd_thread                      (thr_rs1[6:5]),
1656
                .rd_data                        (rd_data14));
1657
        bw_r_irf_register register15(
1658
                .clk                            (clk),
1659
                .wrens                          (wrens[63:60]),
1660
                .save                           (swap_odd_m_vld),
1661
                .save_addr                      ({cwpswap_tid_m, 1'b0, old_lo_cwp_m[2:1]}),
1662
                .restore                        ((swap_odd_w & (~kill_restore_w))),
1663
                .restore_addr                   ({cwpswap_tid_w,1'b0, new_lo_cwp_w[2:1]}),
1664
                .wr_data0                       (wr_data0),
1665
                .wr_data1                       (wr_data1),
1666
                .wr_data2                       (wr_data2),
1667
                .wr_data3                       (wr_data3),
1668
                .rd_thread                      (thr_rs1[6:5]),
1669
                .rd_data                        (rd_data15));
1670
 
1671
        bw_r_irf_register register16(
1672
                .clk                            (clk),
1673
                .wrens                          (wrens[67:64]),
1674
                .save                           (swap_local_m_vld),
1675
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1676
                .restore                        ((swap_local_w & (~kill_restore_w))),
1677
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1678
                .wr_data0                       (wr_data0),
1679
                .wr_data1                       (wr_data1),
1680
                .wr_data2                       (wr_data2),
1681
                .wr_data3                       (wr_data3),
1682
                .rd_thread                      (thr_rs1[6:5]),
1683
                .rd_data                        (rd_data16));
1684
        bw_r_irf_register register17(
1685
                .clk                            (clk),
1686
                .wrens                          (wrens[71:68]),
1687
                .save                           (swap_local_m_vld),
1688
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1689
                .restore                        ((swap_local_w & (~kill_restore_w))),
1690
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1691
                .wr_data0                       (wr_data0),
1692
                .wr_data1                       (wr_data1),
1693
                .wr_data2                       (wr_data2),
1694
                .wr_data3                       (wr_data3),
1695
                .rd_thread                      (thr_rs1[6:5]),
1696
                .rd_data                        (rd_data17));
1697
        bw_r_irf_register register18(
1698
                .clk                            (clk),
1699
                .wrens                          (wrens[75:72]),
1700
                .save                           (swap_local_m_vld),
1701
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1702
                .restore                        ((swap_local_w & (~kill_restore_w))),
1703
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1704
                .wr_data0                       (wr_data0),
1705
                .wr_data1                       (wr_data1),
1706
                .wr_data2                       (wr_data2),
1707
                .wr_data3                       (wr_data3),
1708
                .rd_thread                      (thr_rs1[6:5]),
1709
                .rd_data                        (rd_data18));
1710
        bw_r_irf_register register19(
1711
                .clk                            (clk),
1712
                .wrens                          (wrens[79:76]),
1713
                .save                           (swap_local_m_vld),
1714
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1715
                .restore                        ((swap_local_w & (~kill_restore_w))),
1716
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1717
                .wr_data0                       (wr_data0),
1718
                .wr_data1                       (wr_data1),
1719
                .wr_data2                       (wr_data2),
1720
                .wr_data3                       (wr_data3),
1721
                .rd_thread                      (thr_rs1[6:5]),
1722
                .rd_data                        (rd_data19));
1723
        bw_r_irf_register register20(
1724
                .clk                            (clk),
1725
                .wrens                          (wrens[83:80]),
1726
                .save                           (swap_local_m_vld),
1727
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1728
                .restore                        ((swap_local_w & (~kill_restore_w))),
1729
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1730
                .wr_data0                       (wr_data0),
1731
                .wr_data1                       (wr_data1),
1732
                .wr_data2                       (wr_data2),
1733
                .wr_data3                       (wr_data3),
1734
                .rd_thread                      (thr_rs1[6:5]),
1735
                .rd_data                        (rd_data20));
1736
        bw_r_irf_register register21(
1737
                .clk                            (clk),
1738
                .wrens                          (wrens[87:84]),
1739
                .save                           (swap_local_m_vld),
1740
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1741
                .restore                        ((swap_local_w & (~kill_restore_w))),
1742
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1743
                .wr_data0                       (wr_data0),
1744
                .wr_data1                       (wr_data1),
1745
                .wr_data2                       (wr_data2),
1746
                .wr_data3                       (wr_data3),
1747
                .rd_thread                      (thr_rs1[6:5]),
1748
                .rd_data                        (rd_data21));
1749
        bw_r_irf_register register22(
1750
                .clk                            (clk),
1751
                .wrens                          (wrens[91:88]),
1752
                .save                           (swap_local_m_vld),
1753
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1754
                .restore                        ((swap_local_w & (~kill_restore_w))),
1755
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1756
                .wr_data0                       (wr_data0),
1757
                .wr_data1                       (wr_data1),
1758
                .wr_data2                       (wr_data2),
1759
                .wr_data3                       (wr_data3),
1760
                .rd_thread                      (thr_rs1[6:5]),
1761
                .rd_data                        (rd_data22));
1762
        bw_r_irf_register register23(
1763
                .clk                            (clk),
1764
                .wrens                          (wrens[95:92]),
1765
                .save                           (swap_local_m_vld),
1766
                .save_addr                      ({cwpswap_tid_m, old_lo_cwp_m[2:0]}),
1767
                .restore                        ((swap_local_w & (~kill_restore_w))),
1768
                .restore_addr                   ({cwpswap_tid_w, new_lo_cwp_w[2:0]}),
1769
                .wr_data0                       (wr_data0),
1770
                .wr_data1                       (wr_data1),
1771
                .wr_data2                       (wr_data2),
1772
                .wr_data3                       (wr_data3),
1773
                .rd_thread                      (thr_rs1[6:5]),
1774
                .rd_data                        (rd_data23));
1775
 
1776
        bw_r_irf_register register24(
1777
                .clk                            (clk),
1778
                .wrens                          (wrens[99:96]),
1779
                .save                           (swap_even_m_vld),
1780
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1781
                .restore                        ((swap_even_w & (~kill_restore_w))),
1782
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1783
                .wr_data0                       (wr_data0),
1784
                .wr_data1                       (wr_data1),
1785
                .wr_data2                       (wr_data2),
1786
                .wr_data3                       (wr_data3),
1787
                .rd_thread                      (thr_rs1[6:5]),
1788
                .rd_data                        (rd_data24));
1789
        bw_r_irf_register register25(
1790
                .clk                            (clk),
1791
                .wrens                          (wrens[103:100]),
1792
                .save                           (swap_even_m_vld),
1793
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1794
                .restore                        ((swap_even_w & (~kill_restore_w))),
1795
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1796
                .wr_data0                       (wr_data0),
1797
                .wr_data1                       (wr_data1),
1798
                .wr_data2                       (wr_data2),
1799
                .wr_data3                       (wr_data3),
1800
                .rd_thread                      (thr_rs1[6:5]),
1801
                .rd_data                        (rd_data25));
1802
        bw_r_irf_register register26(
1803
                .clk                            (clk),
1804
                .wrens                          (wrens[107:104]),
1805
                .save                           (swap_even_m_vld),
1806
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1807
                .restore                        ((swap_even_w & (~kill_restore_w))),
1808
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1809
                .wr_data0                       (wr_data0),
1810
                .wr_data1                       (wr_data1),
1811
                .wr_data2                       (wr_data2),
1812
                .wr_data3                       (wr_data3),
1813
                .rd_thread                      (thr_rs1[6:5]),
1814
                .rd_data                        (rd_data26));
1815
        bw_r_irf_register register27(
1816
                .clk                            (clk),
1817
                .wrens                          (wrens[111:108]),
1818
                .save                           (swap_even_m_vld),
1819
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1820
                .restore                        ((swap_even_w & (~kill_restore_w))),
1821
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1822
                .wr_data0                       (wr_data0),
1823
                .wr_data1                       (wr_data1),
1824
                .wr_data2                       (wr_data2),
1825
                .wr_data3                       (wr_data3),
1826
                .rd_thread                      (thr_rs1[6:5]),
1827
                .rd_data                        (rd_data27));
1828
        bw_r_irf_register register28(
1829
                .clk                            (clk),
1830
                .wrens                          (wrens[115:112]),
1831
                .save                           (swap_even_m_vld),
1832
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1833
                .restore                        ((swap_even_w & (~kill_restore_w))),
1834
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1835
                .wr_data0                       (wr_data0),
1836
                .wr_data1                       (wr_data1),
1837
                .wr_data2                       (wr_data2),
1838
                .wr_data3                       (wr_data3),
1839
                .rd_thread                      (thr_rs1[6:5]),
1840
                .rd_data                        (rd_data28));
1841
        bw_r_irf_register register29(
1842
                .clk                            (clk),
1843
                .wrens                          (wrens[119:116]),
1844
                .save                           (swap_even_m_vld),
1845
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1846
                .restore                        ((swap_even_w & (~kill_restore_w))),
1847
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1848
                .wr_data0                       (wr_data0),
1849
                .wr_data1                       (wr_data1),
1850
                .wr_data2                       (wr_data2),
1851
                .wr_data3                       (wr_data3),
1852
                .rd_thread                      (thr_rs1[6:5]),
1853
                .rd_data                        (rd_data29));
1854
        bw_r_irf_register register30(
1855
                .clk                            (clk),
1856
                .wrens                          (wrens[123:120]),
1857
                .save                           (swap_even_m_vld),
1858
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1859
                .restore                        ((swap_even_w & (~kill_restore_w))),
1860
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1861
                .wr_data0                       (wr_data0),
1862
                .wr_data1                       (wr_data1),
1863
                .wr_data2                       (wr_data2),
1864
                .wr_data3                       (wr_data3),
1865
                .rd_thread                      (thr_rs1[6:5]),
1866
                .rd_data                        (rd_data30));
1867
        bw_r_irf_register register31(
1868
                .clk                            (clk),
1869
                .wrens                          (wrens[127:124]),
1870
                .save                           (swap_even_m_vld),
1871
                .save_addr                      ({cwpswap_tid_m[1:0], 1'b0, old_e_cwp_m[1:0]}),
1872
                .restore                        ((swap_even_w & (~kill_restore_w))),
1873
                .restore_addr                   ({cwpswap_tid_w[1:0], 1'b0, new_e_cwp_w[1:0]}),
1874
                .wr_data0                       (wr_data0),
1875
                .wr_data1                       (wr_data1),
1876
                .wr_data2                       (wr_data2),
1877
                .wr_data3                       (wr_data3),
1878
                .rd_thread                      (thr_rs1[6:5]),
1879
                .rd_data                        (rd_data31));
1880
 
1881
 
1882
        always @(negedge clk) if (ifu_exu_ren1_d) begin
1883
          case (thr_rs1[4:0])
1884
            5'b0:
1885
              irf_byp_rs1_data_d <= rd_data00;
1886
            5'b1:
1887
              irf_byp_rs1_data_d <= rd_data01;
1888
            5'b00010:
1889
              irf_byp_rs1_data_d <= rd_data02;
1890
            5'b00011:
1891
              irf_byp_rs1_data_d <= rd_data03;
1892
            5'b00100:
1893
              irf_byp_rs1_data_d <= rd_data04;
1894
            5'b00101:
1895
              irf_byp_rs1_data_d <= rd_data05;
1896
            5'b00110:
1897
              irf_byp_rs1_data_d <= rd_data06;
1898
            5'b00111:
1899
              irf_byp_rs1_data_d <= rd_data07;
1900
            5'b01000:
1901
              irf_byp_rs1_data_d <= rd_data08;
1902
            5'b01001:
1903
              irf_byp_rs1_data_d <= rd_data09;
1904
            5'b01010:
1905
              irf_byp_rs1_data_d <= rd_data10;
1906
            5'b01011:
1907
              irf_byp_rs1_data_d <= rd_data11;
1908
            5'b01100:
1909
              irf_byp_rs1_data_d <= rd_data12;
1910
            5'b01101:
1911
              irf_byp_rs1_data_d <= rd_data13;
1912
            5'b01110:
1913
              irf_byp_rs1_data_d <= rd_data14;
1914
            5'b01111:
1915
              irf_byp_rs1_data_d <= rd_data15;
1916
            5'b10000:
1917
              irf_byp_rs1_data_d <= rd_data16;
1918
            5'b10001:
1919
              irf_byp_rs1_data_d <= rd_data17;
1920
            5'b10010:
1921
              irf_byp_rs1_data_d <= rd_data18;
1922
            5'b10011:
1923
              irf_byp_rs1_data_d <= rd_data19;
1924
            5'b10100:
1925
              irf_byp_rs1_data_d <= rd_data20;
1926
            5'b10101:
1927
              irf_byp_rs1_data_d <= rd_data21;
1928
            5'b10110:
1929
              irf_byp_rs1_data_d <= rd_data22;
1930
            5'b10111:
1931
              irf_byp_rs1_data_d <= rd_data23;
1932
            5'b11000:
1933
              irf_byp_rs1_data_d <= rd_data24;
1934
            5'b11001:
1935
              irf_byp_rs1_data_d <= rd_data25;
1936
            5'b11010:
1937
              irf_byp_rs1_data_d <= rd_data26;
1938
            5'b11011:
1939
              irf_byp_rs1_data_d <= rd_data27;
1940
            5'b11100:
1941
              irf_byp_rs1_data_d <= rd_data28;
1942
            5'b11101:
1943
              irf_byp_rs1_data_d <= rd_data29;
1944
            5'b11110:
1945
              irf_byp_rs1_data_d <= rd_data30;
1946
            5'b11111:
1947
              irf_byp_rs1_data_d <= rd_data31;
1948
          endcase
1949
        end
1950
        always @(negedge clk) if (ifu_exu_ren2_d) begin
1951
          case (thr_rs2[4:0])
1952
            5'b0:
1953
              irf_byp_rs2_data_d <= rd_data00;
1954
            5'b1:
1955
              irf_byp_rs2_data_d <= rd_data01;
1956
            5'b00010:
1957
              irf_byp_rs2_data_d <= rd_data02;
1958
            5'b00011:
1959
              irf_byp_rs2_data_d <= rd_data03;
1960
            5'b00100:
1961
              irf_byp_rs2_data_d <= rd_data04;
1962
            5'b00101:
1963
              irf_byp_rs2_data_d <= rd_data05;
1964
            5'b00110:
1965
              irf_byp_rs2_data_d <= rd_data06;
1966
            5'b00111:
1967
              irf_byp_rs2_data_d <= rd_data07;
1968
            5'b01000:
1969
              irf_byp_rs2_data_d <= rd_data08;
1970
            5'b01001:
1971
              irf_byp_rs2_data_d <= rd_data09;
1972
            5'b01010:
1973
              irf_byp_rs2_data_d <= rd_data10;
1974
            5'b01011:
1975
              irf_byp_rs2_data_d <= rd_data11;
1976
            5'b01100:
1977
              irf_byp_rs2_data_d <= rd_data12;
1978
            5'b01101:
1979
              irf_byp_rs2_data_d <= rd_data13;
1980
            5'b01110:
1981
              irf_byp_rs2_data_d <= rd_data14;
1982
            5'b01111:
1983
              irf_byp_rs2_data_d <= rd_data15;
1984
            5'b10000:
1985
              irf_byp_rs2_data_d <= rd_data16;
1986
            5'b10001:
1987
              irf_byp_rs2_data_d <= rd_data17;
1988
            5'b10010:
1989
              irf_byp_rs2_data_d <= rd_data18;
1990
            5'b10011:
1991
              irf_byp_rs2_data_d <= rd_data19;
1992
            5'b10100:
1993
              irf_byp_rs2_data_d <= rd_data20;
1994
            5'b10101:
1995
              irf_byp_rs2_data_d <= rd_data21;
1996
            5'b10110:
1997
              irf_byp_rs2_data_d <= rd_data22;
1998
            5'b10111:
1999
              irf_byp_rs2_data_d <= rd_data23;
2000
            5'b11000:
2001
              irf_byp_rs2_data_d <= rd_data24;
2002
            5'b11001:
2003
              irf_byp_rs2_data_d <= rd_data25;
2004
            5'b11010:
2005
              irf_byp_rs2_data_d <= rd_data26;
2006
            5'b11011:
2007
              irf_byp_rs2_data_d <= rd_data27;
2008
            5'b11100:
2009
              irf_byp_rs2_data_d <= rd_data28;
2010
            5'b11101:
2011
              irf_byp_rs2_data_d <= rd_data29;
2012
            5'b11110:
2013
              irf_byp_rs2_data_d <= rd_data30;
2014
            5'b11111:
2015
              irf_byp_rs2_data_d <= rd_data31;
2016
          endcase
2017
        end
2018
        always @(negedge clk) if (ifu_exu_ren3_d) begin
2019
          case (thr_rs3[4:0])
2020
            5'b0:
2021
              irf_byp_rs3_data_d <= rd_data00;
2022
            5'b1:
2023
              irf_byp_rs3_data_d <= rd_data01;
2024
            5'b00010:
2025
              irf_byp_rs3_data_d <= rd_data02;
2026
            5'b00011:
2027
              irf_byp_rs3_data_d <= rd_data03;
2028
            5'b00100:
2029
              irf_byp_rs3_data_d <= rd_data04;
2030
            5'b00101:
2031
              irf_byp_rs3_data_d <= rd_data05;
2032
            5'b00110:
2033
              irf_byp_rs3_data_d <= rd_data06;
2034
            5'b00111:
2035
              irf_byp_rs3_data_d <= rd_data07;
2036
            5'b01000:
2037
              irf_byp_rs3_data_d <= rd_data08;
2038
            5'b01001:
2039
              irf_byp_rs3_data_d <= rd_data09;
2040
            5'b01010:
2041
              irf_byp_rs3_data_d <= rd_data10;
2042
            5'b01011:
2043
              irf_byp_rs3_data_d <= rd_data11;
2044
            5'b01100:
2045
              irf_byp_rs3_data_d <= rd_data12;
2046
            5'b01101:
2047
              irf_byp_rs3_data_d <= rd_data13;
2048
            5'b01110:
2049
              irf_byp_rs3_data_d <= rd_data14;
2050
            5'b01111:
2051
              irf_byp_rs3_data_d <= rd_data15;
2052
            5'b10000:
2053
              irf_byp_rs3_data_d <= rd_data16;
2054
            5'b10001:
2055
              irf_byp_rs3_data_d <= rd_data17;
2056
            5'b10010:
2057
              irf_byp_rs3_data_d <= rd_data18;
2058
            5'b10011:
2059
              irf_byp_rs3_data_d <= rd_data19;
2060
            5'b10100:
2061
              irf_byp_rs3_data_d <= rd_data20;
2062
            5'b10101:
2063
              irf_byp_rs3_data_d <= rd_data21;
2064
            5'b10110:
2065
              irf_byp_rs3_data_d <= rd_data22;
2066
            5'b10111:
2067
              irf_byp_rs3_data_d <= rd_data23;
2068
            5'b11000:
2069
              irf_byp_rs3_data_d <= rd_data24;
2070
            5'b11001:
2071
              irf_byp_rs3_data_d <= rd_data25;
2072
            5'b11010:
2073
              irf_byp_rs3_data_d <= rd_data26;
2074
            5'b11011:
2075
              irf_byp_rs3_data_d <= rd_data27;
2076
            5'b11100:
2077
              irf_byp_rs3_data_d <= rd_data28;
2078
            5'b11101:
2079
              irf_byp_rs3_data_d <= rd_data29;
2080
            5'b11110:
2081
              irf_byp_rs3_data_d <= rd_data30;
2082
            5'b11111:
2083
              irf_byp_rs3_data_d <= rd_data31;
2084
          endcase
2085
        end
2086
        always @(negedge clk) if (ifu_exu_ren3_d) begin
2087
          case (thr_rs3h[4:1])
2088
            4'b0:
2089
              irf_byp_rs3h_data_d <= rd_data01;
2090
            4'b1:
2091
              irf_byp_rs3h_data_d <= rd_data03;
2092
            4'b0010:
2093
              irf_byp_rs3h_data_d <= rd_data05;
2094
            4'b0011:
2095
              irf_byp_rs3h_data_d <= rd_data07;
2096
            4'b0100:
2097
              irf_byp_rs3h_data_d <= rd_data09;
2098
            4'b0101:
2099
              irf_byp_rs3h_data_d <= rd_data11;
2100
            4'b0110:
2101
              irf_byp_rs3h_data_d <= rd_data13;
2102
            4'b0111:
2103
              irf_byp_rs3h_data_d <= rd_data15;
2104
            4'b1000:
2105
              irf_byp_rs3h_data_d <= rd_data17;
2106
            4'b1001:
2107
              irf_byp_rs3h_data_d <= rd_data19;
2108
            4'b1010:
2109
              irf_byp_rs3h_data_d <= rd_data21;
2110
            4'b1011:
2111
              irf_byp_rs3h_data_d <= rd_data23;
2112
            4'b1100:
2113
              irf_byp_rs3h_data_d <= rd_data25;
2114
            4'b1101:
2115
              irf_byp_rs3h_data_d <= rd_data27;
2116
            4'b1110:
2117
              irf_byp_rs3h_data_d <= rd_data29;
2118
            4'b1111:
2119
              irf_byp_rs3h_data_d <= rd_data31;
2120
          endcase
2121
        end
2122
endmodule
2123
 
2124
 
2125
 
2126
 
2127
 
2128
 
2129
 
2130
 
2131
 
2132
 
2133
 
2134
 
2135
 
2136
 
2137
 
2138
 
2139
 
2140
 
2141
 
2142
 
2143
 
2144
 
2145
 
2146
 
2147
 
2148
 
2149
 
2150
 
2151
 
2152
 
2153
 
2154
 
2155
 
2156
 
2157
 
2158
 
2159
 
2160
 
2161
 
2162
 
2163
 
2164
 
2165
 
2166
 
2167
 
2168
 
2169
 
2170
 
2171
 
2172
 
2173
 
2174
 
2175
 
2176
 
2177
 
2178
 
2179
 
2180
 
2181
 
2182
 
2183
 
2184
 
2185
 
2186
 
2187
 
2188
 
2189
 
2190
 
2191
 
2192
 
2193
 
2194
 
2195
 
2196
 
2197
 
2198
 
2199
 
2200
 
2201
 
2202
 
2203
 
2204
 
2205
 
2206
 
2207
 
2208
 
2209
 
2210
 
2211
 
2212
 
2213
 
2214
 
2215
 
2216
 
2217
 
2218
 
2219
 
2220
 
2221
 
2222
 
2223
 
2224
 
2225
 
2226
 
2227
 
2228
 
2229
 
2230
 
2231
 
2232
 
2233
 
2234
 
2235
 
2236
 
2237
 
2238
 
2239
 
2240
 
2241
 
2242
 
2243
 
2244
 
2245
 
2246
 
2247
 
2248
 
2249
 
2250
 
2251
 
2252
 
2253
 
2254
 
2255
 
2256
 
2257
 
2258
 
2259
 
2260
 
2261
 
2262
 
2263
 
2264
 
2265
 
2266
 
2267
 
2268
 
2269
 
2270
 
2271
 
2272
 
2273
 
2274
 
2275
 
2276
 
2277
 
2278
 
2279
 
2280
 
2281
 
2282
 
2283
 
2284
 
2285
 
2286
 
2287
 
2288
 
2289
 
2290
 
2291
 
2292
 
2293
 
2294
 
2295
 
2296
 
2297
 
2298
 
2299
 
2300
 
2301
 
2302
 
2303
 
2304
 
2305
 
2306
 
2307
 
2308
 
2309
 
2310
 
2311
 
2312
 
2313
 
2314
 
2315
 
2316
 
2317
 
2318
 
2319
 
2320
 
2321
 
2322
 
2323
 
2324
 
2325
 
2326
 
2327
 
2328
 
2329
 
2330
 
2331
 
2332
 
2333
 
2334
 
2335
 
2336
 
2337
 
2338
 
2339
 
2340
 
2341
 
2342
 
2343
 
2344
 
2345
 
2346
 
2347
 
2348
 
2349
 
2350
 
2351
 
2352
 
2353
 
2354
 
2355
 
2356
 
2357
 
2358
 
2359
 
2360
 
2361
 
2362
 
2363
 
2364
 
2365
 
2366
 
2367
 
2368
 
2369
 
2370
 
2371
 
2372
 
2373
 
2374
 
2375
 
2376
 
2377
 
2378
 
2379
 
2380
 
2381
 
2382
 
2383
 
2384
 
2385
 
2386
 
2387
 
2388
 
2389
 
2390
 
2391
 
2392
 
2393
 
2394
 
2395
 
2396
 
2397
 
2398
 
2399
 
2400
 
2401
 
2402
 
2403
 
2404
 
2405
 
2406
 
2407
 
2408
 
2409
 
2410
 
2411
 
2412
 
2413
 
2414
 
2415
 
2416
 
2417
 
2418
 
2419
 
2420
 
2421
 
2422
 
2423
 
2424
 
2425
 
2426
 
2427
 
2428
 
2429
 
2430
 
2431
 
2432
 
2433
 
2434
 
2435
 
2436
 
2437
 
2438
 
2439
 
2440
 
2441
 
2442
 
2443
 
2444
 
2445
 
2446
 
2447
 
2448
 
2449
 
2450
 
2451
 
2452
 
2453
 
2454
 
2455
 
2456
 
2457
 
2458
 
2459
 
2460
 
2461
 
2462
 
2463
 
2464
 
2465
 
2466
 
2467
 
2468
 
2469
 
2470
 
2471
 
2472
 
2473
 
2474
 
2475
 
2476
 
2477
 
2478
 
2479
 
2480
 
2481
 
2482
 
2483
 
2484
 
2485
 
2486
 
2487
 
2488
 
2489
 
2490
 
2491
 
2492
 
2493
 
2494
 
2495
 
2496
 
2497
 
2498
 
2499
 
2500
 
2501
 
2502
 
2503
 
2504
 
2505
 
2506
 
2507
 
2508
 
2509
 
2510
 
2511
 
2512
 
2513
 
2514
 
2515
 
2516
 
2517
 
2518
 
2519
 
2520
 
2521
 
2522
 
2523
 
2524
 
2525
 
2526
 
2527
 
2528
 
2529
 
2530
 
2531
 
2532
 
2533
 
2534
 
2535
 
2536
 
2537
 
2538
 
2539
 
2540
 
2541
 
2542
 
2543
 
2544
 
2545
 
2546
 
2547
 
2548
 
2549
 
2550
 
2551
 
2552
 
2553
 
2554
 
2555
 
2556
 
2557
 
2558
 
2559
 
2560
 
2561
 
2562
 
2563
 
2564
 
2565
 
2566
 
2567
 
2568
 
2569
 
2570
 
2571
 
2572
 
2573
 
2574
 
2575
 
2576
 
2577
 
2578
 
2579
 
2580
 
2581
 
2582
 
2583
 
2584
 
2585
 
2586
 
2587
 
2588
 
2589
 
2590
 
2591
 
2592
 
2593
 
2594
 
2595
 
2596
 
2597
 
2598
 
2599
 
2600
 
2601
 
2602
 
2603
 
2604
 
2605
 
2606
 
2607
 
2608
 
2609
 
2610
 
2611
 
2612
 
2613
 
2614
 

powered by: WebSVN 2.1.0

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