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

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [gaisler/] [vlog/] [decode_pipe1.v.bak] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
/******************************************************************
2
 *                                                                *
3
 *    Author: Liwei                                               *
4
 *                                                                *
5
 *    This file is part of the "mips789" project.                 *
6
 *    Downloaded from:                                            *
7
 *    http://www.opencores.org/pdownloads.cgi/list/mips789        *
8
 *                                                                *
9
 *    If you encountered any problem, please contact me via       *
10
 *    Email:mcupro@opencores.org  or mcupro@163.com               *
11
 *                                                                *
12
 ******************************************************************/
13
 
14
`include "mips789_defs.v"module decoder(
15
        input [31:0]ins_i,
16
                  input load,
17
                  input [4:0] rt1,
18
                  output reg load_o,
19
                  output reg read_rs,
20
                  output reg read_rt,
21
                  output reg [1:0] size,
22
        output reg [`EXT_CTL_LEN-1:0] ext_ctl,
23
        output reg [`RD_SEL_LEN-1:0] rd_sel,
24
        output reg [`CMP_CTL_LEN-1:0]cmp_ctl,
25
        output reg [`PC_GEN_CTL_LEN-1:0]pc_gen_ctl,
26
        output reg [`FSM_CTL_LEN-1:0]fsm_dly,
27
        output reg [`MUXA_CTL_LEN-1:0]muxa_ctl,
28
        output reg [`MUXB_CTL_LEN-1:0]muxb_ctl,
29
        output reg [`ALU_FUNC_LEN-1:0]alu_func,
30
        output reg [`DMEM_CTL_LEN-1:0]dmem_ctl,
31
        output reg [`ALU_WE_LEN-1:0] alu_we,
32
        output reg [`WB_MUX_CTL_LEN-1:0]wb_mux,
33
        output reg [`WB_WE_LEN-1:0]wb_we,
34
                  output reg [4:0] asi
35
    );
36
 
37
    wire [5:0]  inst_op,inst_func;
38
    wire [4:0]  inst_regimm;//,inst_rs,inst_rt,inst_rd,inst_sa;
39
    wire [4:0]  inst_cop0_func;//cop0's function code filed
40
    wire [25:0] inst_cop0_code;//cop0's code field
41
         wire [4:0]     rs;
42
         wire [4:0] rt;
43
 
44
 
45
    assign inst_op        = ins_i[31:26];
46
    assign inst_func      = ins_i[5:0];
47
    assign inst_regimm    = ins_i[20:16];
48
    assign inst_cop0_func = ins_i[31:26];
49
    assign inst_cop0_code = ins_i[25:0];
50
         assign rs                                = ins_i[25:21];
51
         assign rt                                = ins_i[20:16];
52
 
53
        initial dmem_ctl = 5'b0;
54
        initial size=`SZWORD;
55
 
56
    always @(*)
57
    begin
58
          /*if (load==1'b1 &&((rt1==rs && read_rs==1'b1) || (rt1==rt && read_rs==1'b1) )
59
                        begin
60
                                                                load_o=0;
61
                                                                size=`SZWORD;
62
                        ext_ctl = `EXT_SA;
63
                        rd_sel = `RD_RD;
64
                        cmp_ctl = `CMP_NOP;
65
                        pc_gen_ctl = `PC_KEP;
66
                        fsm_dly = `FSM_NOP;
67
                        muxa_ctl = `MUXA_EXT;
68
                        muxb_ctl = `MUXB_RT;
69
                        alu_func = `ALU_SLL;
70
                        alu_we = `DIS;
71
                        dmem_ctl = 5'b0;
72
                        wb_we =  `DIS;
73
                        wb_mux = `WB_ALU;
74
                                                                asi = 5'b01010;
75
                        end
76
          else if (     load==1'b1 & rt1==rs & (inst_op=='d33 | inst_op=='d34 | inst_op=='d35 | inst_op=='d36 | inst_op=='d37 | inst_op=='d38))
77
              begin
78
                                                                load_o=1;
79
                                                                size=`SZWORD;
80
                        ext_ctl = `EXT_SA;
81
                        rd_sel = `RD_RD;
82
                        cmp_ctl = `CMP_NOP;
83
                        pc_gen_ctl = `PC_KEP;
84
                        fsm_dly = `FSM_NOP;
85
                        muxa_ctl = `MUXA_EXT;
86
                        muxb_ctl = `MUXB_RT;
87
                        alu_func = `ALU_SLL;
88
                        alu_we = `DIS;
89
                        dmem_ctl = 5'b0;
90
                        wb_we =  `DIS;
91
                        wb_mux = `WB_ALU;
92
                        end
93
           */
94
        case (inst_op)//synthesis parallel_case
95
            'd0://special operation
96
            begin
97
                case (inst_func) //synthesis parallel_case
98
                    'd0://SLL rd,rt,sa
99
                    begin
100
                        //replaceID  = `SLL ;
101
                                                                load_o=0;
102
                                                                read_rt=1'b1;
103
                                                                read_rs=1'b0;
104
                                                                size=`SZWORD;
105
                        ext_ctl = `EXT_SA;
106
                        rd_sel = `RD_RD;
107
                        cmp_ctl = `CMP_NOP;
108
                        pc_gen_ctl = `PC_NEXT;
109
                        fsm_dly = `FSM_NOP;
110
                        muxa_ctl = `MUXA_EXT;
111
                        muxb_ctl = `MUXB_RT;
112
                        alu_func = `ALU_SLL;
113
                        alu_we = `EN;
114
                        dmem_ctl = 5'b0;
115
                        wb_we =  `DIS;
116
                        wb_mux = `WB_ALU;
117
                                                                asi = 5'b01010;
118
                        //end of `SLL ;
119
                    end
120
                    'd2://SRL rd,rt,sa
121
                    begin
122
                        //replaceID  = `SRL ;
123
                                                                load_o=0;
124
                                                                read_rt=1'b1;
125
                                                                read_rs=1'b0;
126
                                                                size=`SZWORD;
127
                        ext_ctl = `EXT_SA;
128
                        rd_sel = `RD_RD;
129
                        cmp_ctl = `CMP_NOP;
130
                        pc_gen_ctl = `PC_NEXT;
131
                        fsm_dly = `FSM_NOP;
132
                        muxa_ctl = `MUXA_EXT;
133
                        muxb_ctl = `MUXB_RT;
134
                        alu_func = `ALU_SRL;
135
                        alu_we = `EN;
136
                        dmem_ctl = 5'b0;
137
                        wb_we =  `DIS;
138
                        wb_mux = `WB_ALU;
139
                                                                asi = 5'b01010;
140
                        //end of `SRL ;
141
                    end
142
                    'd3://SRA rd,rt,sa
143
                    begin
144
                        //replaceID  = `SRA ;
145
                                                                load_o=0;
146
                                                                read_rt=1'b1;
147
                                                                read_rs=1'b0;
148
                                                                size=`SZWORD;
149
                        ext_ctl = `EXT_SA;
150
                        rd_sel = `RD_RD;
151
                        cmp_ctl = `CMP_NOP;
152
                        pc_gen_ctl = `PC_NEXT;
153
                        fsm_dly = `FSM_NOP;
154
                        muxa_ctl = `MUXA_EXT;
155
                        muxb_ctl = `MUXB_RT;
156
                        alu_func = `ALU_SRA;
157
                        alu_we = `EN;
158
                        dmem_ctl = 5'b0;
159
                        wb_we =  `DIS;
160
                        wb_mux = `WB_ALU;
161
                        asi = 5'b01010;
162
                                                                //end of `SRA ;
163
                    end
164
                    'd4://SLLV rd,rt,rs
165
                    begin
166
                        //replaceID  = `SLLV ;
167
                                                                load_o=0;
168
                                                                read_rt=1'b1;
169
                                                                read_rs=1'b1;
170
                                                                size=`SZWORD;
171
                        ext_ctl = `IGN;
172
                        rd_sel = `IGN;
173
                        cmp_ctl = `IGN;
174
                        pc_gen_ctl = `IGN;
175
                        fsm_dly = `IGN;
176
                        muxa_ctl = `IGN;
177
                        muxb_ctl = `IGN;
178
                        alu_func = `IGN;
179
                        alu_we = `IGN;
180
                        dmem_ctl = 5'b0;
181
                        wb_we =  `IGN;
182
                        wb_mux = 1'bx;//`IGN;
183
                                                                asi = 5'b01010;
184
                        //end of `SLLV ;
185
                    end
186
                    'd6://SRLV rd,rt,rs
187
                    begin
188
                        //replaceID  = `SRLV ;
189
                                                                load_o=0;
190
                                                                read_rt=1'b1;
191
                                                                read_rs=1'b1;
192
                                                                size=`SZWORD;
193
                        ext_ctl = `IGN;
194
                        rd_sel = `IGN;
195
                        cmp_ctl = `IGN;
196
                        pc_gen_ctl = `IGN;
197
                        fsm_dly = `IGN;
198
                        muxa_ctl = `IGN;
199
                        muxb_ctl = `IGN;
200
                        alu_func = `IGN;
201
                        alu_we = `IGN;
202
                        dmem_ctl = 5'b0;
203
                        wb_we =  `IGN;
204
                        wb_mux = `IGN;
205
                                                                asi = 5'b01010;
206
                        //end of `SRLV ;
207
                    end
208
                    'd7://SRAV rd,rt,rs
209
                    begin
210
                        //replaceID  = `SRAV ;
211
                                                                load_o=0;
212
                                                                read_rt=1'b1;
213
                                                                read_rs=1'b1;
214
                                                                size=`SZWORD;
215
                        ext_ctl = `IGN;
216
                        rd_sel = `IGN;
217
                        cmp_ctl = `IGN;
218
                        pc_gen_ctl = `IGN;
219
                        fsm_dly = `IGN;
220
                        muxa_ctl = `IGN;
221
                        muxb_ctl = `IGN;
222
                        alu_func = `IGN;
223
                        alu_we = `IGN;
224
                        dmem_ctl = 5'b0;
225
                        wb_we =  `IGN;
226
                        wb_mux = `IGN;
227
                                                                asi = 5'b01010;
228
                        //end of `SRAV ;
229
                    end
230
                    'd8://JR rs
231
                    begin
232
                        //replaceID  = `JR ;
233
                                                                load_o=0;
234
                                                                read_rt=1'b0;
235
                                                                read_rs=1'b1;
236
                                                                size=`SZWORD;
237
                        ext_ctl = `EXT_NOP;
238
                        rd_sel = `RD_NOP;
239
                        cmp_ctl = `CMP_NOP;
240
                        pc_gen_ctl = `PC_JR;
241
                        fsm_dly = `FSM_CUR;
242
                        muxa_ctl = `MUXA_NOP;
243
                        muxb_ctl = `MUXB_NOP;
244
                        alu_func = `ALU_NOP;
245
                        alu_we = `DIS;
246
                        dmem_ctl = 5'b0;
247
                        wb_we =  `DIS;
248
                        wb_mux = `WB_NOP;
249
                                                                asi = 5'b01010;
250
                        //end of `JR ;
251
                    end
252
                    'd9://JALR jalr rs(rd=31) or jalr rd,rs
253
                    begin
254
                        //replaceID  = `JALR ;
255
                                                                load_o=0;
256
                                                                read_rt=1'b0;
257
                                                                read_rs=1'b1;
258
                                                                size=`SZWORD;
259
                        ext_ctl = `IGN;
260
                        rd_sel = `IGN;
261
                        cmp_ctl = `IGN;
262
                        pc_gen_ctl = `IGN;
263
                        fsm_dly = `IGN;
264
                        muxa_ctl = `IGN;
265
                        muxb_ctl = `IGN;
266
                        alu_func = `IGN;
267
                        alu_we = `IGN;
268
                        dmem_ctl = 5'b0;
269
                        wb_we =  `IGN;
270
                        wb_mux = `IGN;
271
                                                                asi = 5'b01010;
272
                        //end of `JALR ;
273
                    end
274
                    'd12://SYSCALL
275
                    begin
276
                        //replaceID  = `SYSCALL ;
277
                                                                load_o=0;
278
                                                                read_rt=1'b0;
279
                                                                read_rs=1'b0;
280
                                                                size=`SZWORD;
281
                        ext_ctl = `IGN;
282
                        rd_sel = `IGN;
283
                        cmp_ctl = `IGN;
284
                        pc_gen_ctl = `IGN;
285
                        fsm_dly = `IGN;
286
                        muxa_ctl = `IGN;
287
                        muxb_ctl = `IGN;
288
                        alu_func = `IGN;
289
                        alu_we = `IGN;
290
                        dmem_ctl = 5'b0;
291
                        wb_we =  `IGN;
292
                        wb_mux = `IGN;
293
                                                                asi = 5'b01010;
294
                        //end of `SYSCALL ;
295
                    end
296
                    'd13://BREAK
297
                    begin
298
                        //replaceID  = `BREAK ;
299
                                                                load_o=0;
300
                                                                read_rt=1'b0;
301
                                                                read_rs=1'b0;
302
                                                                size=`SZWORD;
303
                        ext_ctl = `IGN;
304
                        rd_sel = `IGN;
305
                        cmp_ctl = `IGN;
306
                        pc_gen_ctl = `IGN;
307
                        fsm_dly = `IGN;
308
                        muxa_ctl = `IGN;
309
                        muxb_ctl = `IGN;
310
                        alu_func = `IGN;
311
                        alu_we = `IGN;
312
                        dmem_ctl = 5'b0;
313
                        wb_we =  `IGN;
314
                        wb_mux = `IGN;
315
                                                                asi = 5'b01010;
316
                        //end of `BREAK ;
317
                    end
318
                    'd16://MFHI rd
319
                    begin
320
                        //replaceID  = `MFHI ;
321
                                                                load_o=0;
322
                                                                read_rt=1'b0;
323
                                                                read_rs=1'b0;
324
                                                                size=`SZWORD;
325
                        ext_ctl = `EXT_NOP;
326
                        rd_sel = `RD_RD;
327
                        cmp_ctl = `CMP_NOP;
328
                        pc_gen_ctl = `PC_NEXT;
329
                        fsm_dly = `FSM_NOP;
330
                        muxa_ctl = `MUXA_NOP;
331
                        muxb_ctl = `MUXB_NOP;
332
                        alu_func = `ALU_MFHI;
333
                        alu_we = `EN;
334
                        dmem_ctl = 5'b0;
335
                        wb_we =  `DIS;
336
                        wb_mux = `WB_ALU;
337
                                                                asi = 5'b01010;
338
                        //end of `MFHI ;
339
                    end
340
                    'd17://MTHI rs
341
                    begin
342
                        //replaceID  = `MTHI ;
343
                        load_o=0;
344
                        read_rt=1'b0;
345
                                                                read_rs=1'b0;
346
                                                                size=`SZWORD;
347
                        ext_ctl = `EXT_NOP      ;
348
                        rd_sel = `RD_NOP;
349
                        cmp_ctl = `CMP_NOP;
350
                        pc_gen_ctl = `PC_NEXT;
351
                        fsm_dly = `FSM_NOP;
352
                        muxa_ctl = `MUXA_RS;
353
                        muxb_ctl = `MUXB_NOP;
354
                        alu_func = `ALU_MTHI;
355
                        alu_we = `DIS;
356
                        dmem_ctl = 5'b0;
357
                        wb_we =  `DIS;
358
                        wb_mux = `WB_NOP;
359
                                                                asi = 5'b01010;
360
                        //end of `MTHI ;
361
                    end
362
                    'd18://MFLO rd
363
                    begin
364
                        //replaceID  = `MFLO ;
365
                                                                load_o=0;
366
                                                                read_rt=1'b0;
367
                                                                read_rs=1'b0;
368
                                                                size=`SZWORD;
369
                        ext_ctl = `EXT_NOP      ;
370
                        rd_sel = `RD_RD;
371
                        cmp_ctl = `CMP_NOP;
372
                        pc_gen_ctl = `PC_NEXT;
373
                        fsm_dly = `FSM_NOP;
374
                        muxa_ctl = `MUXA_NOP;
375
                        muxb_ctl = `MUXB_NOP;
376
                        alu_func = `ALU_MFLO;
377
                        alu_we = `EN;
378
                        dmem_ctl = 5'b0;
379
                        wb_we =  `DIS;
380
                        wb_mux = `WB_ALU;
381
                                                                asi = 5'b01010;
382
                        //end of `MFLO ;
383
                    end
384
                    'd19://MTLO rs
385
                    begin
386
                        //replaceID  = `MTLO ;
387
                                                                load_o=0;
388
                                                                read_rt=1'b0;
389
                                                                read_rs=1'b0;
390
                                                                size=`SZWORD;
391
                        ext_ctl = `EXT_NOP      ;
392
                        rd_sel = `RD_NOP;
393
                        cmp_ctl = `CMP_NOP;
394
                        pc_gen_ctl = `PC_NEXT;
395
                        fsm_dly = `FSM_NOP;
396
                        muxa_ctl = `MUXA_NOP;
397
                        muxb_ctl = `MUXB_NOP;
398
                        alu_func = `ALU_MFLO;
399
                        alu_we = `DIS;
400
                        dmem_ctl = 5'b0;
401
                        wb_we =  `DIS;
402
                        wb_mux = `WB_NOP;
403
                                                                asi = 5'b01010;
404
                        //end of `MTLO ;
405
                    end
406
                    'd24://MULT rs,rt
407
                    begin
408
                        //replaceID  = `MULT ;
409
                                                                load_o=0;
410
                                                                read_rt=1'b1;
411
                                                                read_rs=1'b0;
412
                                                                size=`SZWORD;
413
                        ext_ctl = `EXT_NOP;
414
                        rd_sel = `RD_NOP;
415
                        cmp_ctl = `CMP_NOP;
416
                        pc_gen_ctl = `PC_NEXT;
417
                        fsm_dly = `FSM_MUL;
418
                        muxa_ctl = `MUXA_RS;
419
                        muxb_ctl = `MUXB_RT;
420
                        alu_func = `ALU_MULT;
421
                        alu_we = `DIS;
422
                        dmem_ctl = 5'b0;
423
                        wb_we =  `DIS;
424
                        wb_mux = `WB_NOP;
425
                                                                asi = 5'b01010;
426
                        //end of `MULT ;
427
                    end
428
                    'd25://MULTU rs,rt
429
                    begin
430
                        //replaceID  = `MULTU ;
431
                                                                load_o=0;
432
                                                                read_rt=1'b1;
433
                                                                read_rs=1'b0;
434
                                                                size=`SZWORD;
435
                        ext_ctl = `EXT_NOP;
436
                        rd_sel = `RD_NOP;
437
                        cmp_ctl = `CMP_NOP;
438
                        pc_gen_ctl = `PC_NEXT;
439
                        fsm_dly = `FSM_MUL;
440
                        muxa_ctl = `MUXA_RS;
441
                        muxb_ctl = `MUXB_RT;
442
                        alu_func = `ALU_MULTU;
443
                        alu_we = `DIS;
444
                        dmem_ctl = 5'b0;
445
                        wb_we =  `DIS;
446
                        wb_mux = `WB_NOP;
447
                                                                asi = 5'b01010;
448
                        //end of `MULTU ;
449
                    end
450
                    'd26://DIV rs,rt
451
                    begin
452
                        //replaceID  = `DIV ;
453
                                                                load_o=0;
454
                                                                read_rt=1'b1;
455
                                                                read_rs=1'b0;
456
                                                                size=`SZWORD;
457
                        ext_ctl = `EXT_NOP;
458
                        rd_sel = `RD_NOP;
459
                        cmp_ctl = `CMP_NOP;
460
                        pc_gen_ctl = `PC_NEXT;
461
                        fsm_dly = `FSM_MUL;
462
                        muxa_ctl = `MUXA_RS;
463
                        muxb_ctl = `MUXB_RT;
464
                        alu_func = `ALU_DIV;
465
                        alu_we = `DIS;
466
                        dmem_ctl = 5'b0;
467
                        wb_we =  `DIS;
468
                        wb_mux = `WB_NOP;
469
                                                                asi = 5'b01010;
470
                        //end of `DIV ;
471
                    end
472
                    'd27://DIVU rs,rt
473
                    begin
474
                        //replaceID  = `DIVU ;
475
                                                                load_o=0;
476
                                                                read_rt=1'b1;
477
                                                                read_rs=1'b0;
478
                                                                size=`SZWORD;
479
                        ext_ctl = `EXT_NOP;
480
                        rd_sel = `RD_NOP;
481
                        cmp_ctl = `CMP_NOP;
482
                        pc_gen_ctl = `PC_NEXT;
483
                        fsm_dly = `FSM_MUL;
484
                        muxa_ctl = `MUXA_RS;
485
                        muxb_ctl = `MUXB_RT;
486
                        alu_func = `ALU_DIVU;
487
                        alu_we = `DIS;
488
                        dmem_ctl = 5'b0;
489
                        wb_we =  `DIS;
490
                        wb_mux = `WB_NOP;
491
                                                                asi = 5'b01010;
492
                        //end of `DIVU ;
493
                    end
494
                    'd32://ADD rd,rs,rt
495
                    begin
496
                        //replaceID  = `ADD ;
497
                                                                load_o=0;
498
                                                                read_rt=1'b1;
499
                                                                read_rs=1'b1;
500
                                                                size=`SZWORD;
501
                        ext_ctl = `EXT_NOP;
502
                        rd_sel = `RD_RD;
503
                        cmp_ctl = `CMP_NOP;
504
                        pc_gen_ctl = `PC_NEXT;
505
                        fsm_dly = `FSM_NOP;
506
                        muxa_ctl = `MUXA_RS;
507
                        muxb_ctl = `MUXB_RT;
508
                        alu_func = `ALU_ADD;
509
                        alu_we = `EN;
510
                        dmem_ctl = 5'b0;
511
                        wb_we =  `DIS;
512
                        wb_mux = `WB_ALU;
513
                                                                asi = 5'b01010;
514
                        //end of `ADD ;
515
                    end
516
                    'd33://ADDU rd,rs,rt
517
                    begin
518
                        //replaceID  = `ADDU ;
519
                                                                load_o=0;
520
                                                                read_rt=1'b1;
521
                                                                read_rs=1'b1;
522
                                                                size=`SZWORD;
523
                        ext_ctl = `EXT_NOP;
524
                        rd_sel = `RD_RD;
525
                        cmp_ctl = `CMP_NOP;
526
                        pc_gen_ctl = `PC_NEXT;
527
                        fsm_dly = `FSM_NOP;
528
                        muxa_ctl = `MUXA_RS;
529
                        muxb_ctl = `MUXB_RT;
530
                        alu_func = `ALU_ADD;
531
                        alu_we = `EN;
532
                        dmem_ctl = 5'b0;
533
                        wb_we =  `DIS;
534
                        wb_mux = `WB_ALU;
535
                                                                asi = 5'b01010;
536
                        //end of `ADDU ;
537
                    end
538
                    'd34://SUB rd,rs,rt
539
                    begin
540
                        //replaceID  = `SUB ;
541
                                                                load_o=0;
542
                                                                read_rt=1'b1;
543
                                                                read_rs=1'b1;
544
                                                                size=`SZWORD;
545
                        ext_ctl = `EXT_NOP;
546
                        rd_sel = `RD_RD;
547
                        cmp_ctl = `CMP_NOP;
548
                        pc_gen_ctl = `PC_NEXT;
549
                        fsm_dly = `FSM_NOP;
550
                        muxa_ctl = `MUXA_RS;
551
                        muxb_ctl = `MUXB_RT;
552
                        alu_func = `ALU_SUB;
553
                        alu_we = `EN;
554
                        dmem_ctl = 5'b0;
555
                        wb_we =  `DIS;
556
                        wb_mux = `WB_ALU;
557
                                                                asi = 5'b01010;
558
                        //end of `SUB ;
559
                    end
560
                    'd35://SUBU rd,rs,rt
561
                    begin
562
                        //replaceID  = `SUBU ;
563
                                                                load_o=0;
564
                                                                read_rt=1'b1;
565
                                                                read_rs=1'b1;
566
                                                                size=`SZWORD;
567
                        ext_ctl = `EXT_NOP;
568
                        rd_sel = `RD_RD;
569
                        cmp_ctl = `CMP_NOP;
570
                        pc_gen_ctl = `PC_NEXT;
571
                        fsm_dly = `FSM_NOP;
572
                        muxa_ctl = `MUXA_RS;
573
                        muxb_ctl = `MUXB_RT;
574
                        alu_func = `ALU_SUBU;
575
                        alu_we = `EN;
576
                        dmem_ctl = 5'b0;
577
                        wb_we =  `DIS;
578
                        wb_mux = `WB_ALU;
579
                                                                asi = 5'b01010;
580
                        //end of `SUBU ;
581
                    end
582
                    'd36://AND rd,rs,rt
583
                    begin
584
                        //replaceID  = `AND ;
585
                                                                load_o=0;
586
                                                                read_rt=1'b1;
587
                                                                read_rs=1'b1;
588
                                                                size=`SZWORD;
589
                        ext_ctl = `EXT_NOP;
590
                        rd_sel = `RD_RD;
591
                        cmp_ctl = `CMP_NOP;
592
                        pc_gen_ctl = `PC_NEXT;
593
                        fsm_dly = `FSM_NOP;
594
                        muxa_ctl = `MUXA_RS;
595
                        muxb_ctl = `MUXB_RT;
596
                        alu_func = `ALU_AND;
597
                        alu_we = `EN;
598
                        dmem_ctl = 5'b0;
599
                        wb_we =  `DIS;
600
                        wb_mux = `WB_ALU;
601
                                                                asi = 5'b01010;
602
                        //end of `AND ;
603
                    end
604
                    'd37://OR rd,rs,rt
605
                    begin
606
                        //replaceID  = `OR ;
607
                                                                load_o=0;
608
                                                                read_rt=1'b1;
609
                                                                read_rs=1'b1;
610
                                                                size=`SZWORD;
611
                        ext_ctl = `EXT_NOP;
612
                        rd_sel = `RD_RD;
613
                        cmp_ctl = `CMP_NOP;
614
                        pc_gen_ctl = `PC_NEXT;
615
                        fsm_dly = `FSM_NOP;
616
                        muxa_ctl = `MUXA_RS;
617
                        muxb_ctl = `MUXB_RT;
618
                        alu_func = `ALU_OR;
619
                        alu_we = `EN;
620
                        dmem_ctl = 5'b0;
621
                        wb_we =  `DIS;
622
                        wb_mux = `WB_ALU;
623
                                                                asi = 5'b01010;
624
                        //end of `OR ;
625
                    end
626
                    'd38://XOR rd,rs,rt
627
                    begin
628
                        //replaceID  = `XOR ;
629
                                                                load_o=0;
630
                                                                read_rt=1'b1;
631
                                                                read_rs=1'b1;
632
                                                                size=`SZWORD;
633
                        ext_ctl = `EXT_NOP;
634
                        rd_sel = `RD_RD;
635
                        cmp_ctl = `CMP_NOP;
636
                        pc_gen_ctl = `PC_NEXT;
637
                        fsm_dly = `FSM_NOP;
638
                        muxa_ctl = `MUXA_RS;
639
                        muxb_ctl = `MUXB_RT;
640
                        alu_func = `ALU_XOR;
641
                        alu_we = `EN;
642
                        dmem_ctl = 5'b0;
643
                        wb_we =  `DIS;
644
                        wb_mux = `WB_ALU;
645
                                                                asi = 5'b01010;
646
                        //end of `XOR ;
647
                    end
648
                    'd39://NOR rd,rs,rt
649
                    begin
650
                        //replaceID  = `NOR ;
651
                                                                load_o=0;
652
                                                                read_rt=1'b1;
653
                                                                read_rs=1'b1;
654
                                                                size=`SZWORD;
655
                        ext_ctl = `EXT_NOP;
656
                        rd_sel = `RD_RD;
657
                        cmp_ctl = `CMP_NOP;
658
                        pc_gen_ctl = `PC_NEXT;
659
                        fsm_dly = `FSM_NOP;
660
                        muxa_ctl = `MUXA_RS;
661
                        muxb_ctl = `MUXB_RT;
662
                        alu_func = `ALU_NOR;
663
                        alu_we = `EN;
664
                        dmem_ctl = 5'b0;
665
                        wb_we =  `DIS;
666
                        wb_mux = `WB_ALU;
667
                                                                asi = 5'b01010;
668
                        //end of `NOR ;
669
                    end
670
                    'd42://SLT rd,rs,rt
671
                    begin
672
                        //replaceID  = `SLT ;
673
                                                                load_o=0;
674
                                                                read_rt=1'b1;
675
                                                                read_rs=1'b1;
676
                                                                size=`SZWORD;
677
                        ext_ctl = `EXT_SIGN;
678
                        rd_sel = `RD_RD;
679
                        cmp_ctl = `CMP_NOP;
680
                        pc_gen_ctl = `PC_NEXT;
681
                        fsm_dly = `FSM_NOP;
682
                        muxa_ctl = `MUXA_RS;
683
                        muxb_ctl = `MUXB_RT;
684
                        alu_func = `ALU_SLT;
685
                        alu_we = `EN;
686
                        dmem_ctl = 5'b0;
687
                        wb_we =  `DIS;
688
                        wb_mux = `WB_ALU;
689
                                                                asi = 5'b01010;
690
                        //end of `SLT ;
691
                    end
692
                    'd43://SLTU rd,rs,rt
693
                    begin
694
                        //replaceID  = `SLTU ;
695
                                                                load_o=0;
696
                                                                read_rt=1'b1;
697
                                                                read_rs=1'b1;
698
                                                                size=`SZWORD;
699
                        ext_ctl = `EXT_NOP;
700
                        rd_sel = `RD_RD;
701
                        cmp_ctl = `CMP_NOP;
702
                        pc_gen_ctl = `PC_NEXT;
703
                        fsm_dly = `FSM_NOP;
704
                        muxa_ctl = `MUXA_RS;
705
                        muxb_ctl = `MUXB_RT;
706
                        alu_func = `ALU_SLTU;
707
                        alu_we = `EN;
708
                        dmem_ctl = 5'b0;
709
                        wb_we =  `DIS;
710
                        wb_mux = `WB_ALU;
711
                                                                asi = 5'b01010;
712
                        //end of `SLTU ;
713
                    end
714
                    default:
715
                    begin
716
                        //replaceID  = `INVALID ;
717
                                                                load_o=0;
718
                                                                read_rt=1'b0;
719
                                                                read_rs=1'b0;
720
                                                                size=`SZWORD;
721
                        ext_ctl = `IGN;
722
                        rd_sel = `IGN;
723
                        cmp_ctl = `IGN;
724
                        pc_gen_ctl = `IGN;
725
                        fsm_dly = `IGN;
726
                        muxa_ctl = `IGN;
727
                        muxb_ctl = `IGN;
728
                        alu_func = `IGN;
729
                        alu_we = `IGN;
730
                        dmem_ctl = 5'b0;
731
                        wb_we =  `IGN;
732
                        wb_mux = `IGN;
733
                                                                asi = 5'b01010;
734
                        //end of `INVALID ;
735
                    end
736
                endcase
737
            end
738
            'd1://regimm opreation
739
            begin
740
                case (inst_regimm) //synthesis parallel_case
741
                    'd0://BLTZ rs,offset(signed)
742
                    begin
743
                        //replaceID  = `BLTZ ;
744
                                                                load_o=0;
745
                                                                read_rt=1'b0;
746
                                                                read_rs=1'b1;
747
                                                                size=`SZWORD;
748
                        ext_ctl = `EXT_B;
749
                        rd_sel = `RD_NOP;
750
                        cmp_ctl = `CMP_BLTZ;
751
                        pc_gen_ctl = `PC_BC;
752
                        fsm_dly = `FSM_CUR;
753
                        muxa_ctl = `MUXA_NOP;
754
                        muxb_ctl = `MUXB_NOP;
755
                        alu_func = `ALU_NOP;
756
                        alu_we = `DIS;
757
                        dmem_ctl = 5'b0;
758
                        wb_we =  `DIS;
759
                        wb_mux = `WB_NOP;
760
                                                                asi = 5'b01010;
761
                        //end of `BLTZ ;
762
                    end
763
                    'd1://BGEZ rs,offset(signed)
764
                    begin
765
                        //replaceID  = `BGEZ ;
766
                                                                load_o=0;
767
                                                                read_rt=1'b0;
768
                                                                read_rs=1'b1;
769
                                                                size=`SZWORD;
770
                        ext_ctl = `EXT_B;
771
                        rd_sel = `RD_NOP;
772
                        cmp_ctl = `CMP_BGEZ;
773
                        pc_gen_ctl = `PC_BC;
774
                        fsm_dly = `FSM_CUR;
775
                        muxa_ctl = `MUXA_NOP;
776
                        muxb_ctl = `MUXB_NOP;
777
                        alu_func = `ALU_NOP;
778
                        alu_we = `DIS;
779
                        dmem_ctl = 5'b0;
780
                        wb_we =  `DIS;
781
                        wb_mux = `WB_NOP;
782
                                                                asi = 5'b01010;
783
                        //end of `BGEZ ;
784
                    end
785
                    'd16://BLTZAL rs,offset(signed)
786
                    begin
787
                        //replaceID  = `BLTZAL ;
788
                                                                load_o=0;
789
                                                                read_rt=1'b0;
790
                                                                read_rs=1'b1;
791
                                                                size=`SZWORD;
792
                        ext_ctl = `IGN;
793
                        rd_sel = `IGN;
794
                        cmp_ctl = `IGN;
795
                        pc_gen_ctl = `IGN;
796
                        fsm_dly = `IGN;
797
                        muxa_ctl = `IGN;
798
                        muxb_ctl = `IGN;
799
                        alu_func = `IGN;
800
                        alu_we = `IGN;
801
                        dmem_ctl = 5'b0;
802
                        wb_we =  `IGN;
803
                        wb_mux = `IGN;
804
                                                                asi = 5'b01010;
805
                        //end of `BLTZAL ;
806
                    end
807
                    'd17://BGEZAL rs,offset(signed)
808
                    begin
809
                        //replaceID  = `BGEZAL ;
810
                        //replaceID  = `INVALID ;
811
                                                                load_o=0;
812
                                                                read_rt=1'b0;
813
                                                                read_rs=1'b1;
814
                                                                size=`SZWORD;
815
                        ext_ctl = `IGN;
816
                        rd_sel = `IGN;
817
                        cmp_ctl = `IGN;
818
                        pc_gen_ctl = `IGN;
819
                        fsm_dly = `IGN;
820
                        muxa_ctl = `IGN;
821
                        muxb_ctl = `IGN;
822
                        alu_func = `IGN;
823
                        alu_we = `IGN;
824
                        dmem_ctl = 5'b0;
825
                        wb_we =  `IGN;
826
                        wb_mux = `IGN;
827
                                                                asi = 5'b01010;
828
                        //end of `INVALID ;
829
                    end
830
                    default:
831
                    begin
832
                        //replaceID   = `INVALID ;
833
                        //replaceID  = `INVALID ;
834
                                                                load_o=0;
835
                                                                read_rt=1'b0;
836
                                                                read_rs=1'b0;
837
                                                                size=`SZWORD;
838
                        ext_ctl = `IGN;
839
                        rd_sel = `IGN;
840
                        cmp_ctl = `IGN;
841
                        pc_gen_ctl = `IGN;
842
                        fsm_dly = `IGN;
843
                        muxa_ctl = `IGN;
844
                        muxb_ctl = `IGN;
845
                        alu_func = `IGN;
846
                        alu_we = `IGN;
847
                        dmem_ctl = 5'b0;
848
                        wb_we =  `IGN;
849
                        wb_mux = `IGN;
850
                                                                asi = 5'b01010;
851
                        //end of `INVALID ;
852
                    end
853
                endcase
854
            end
855
            'd2://J imm26({pc[31:28],imm26,00})
856
            begin
857
                //replaceID  = `J ;
858
                                        load_o=0;
859
                                        read_rt=1'b0;
860
                                        read_rs=1'b0;
861
                                        size=`SZWORD;
862
                ext_ctl = `EXT_J;
863
                rd_sel = `RD_NOP;
864
                cmp_ctl = `CMP_NOP;
865
                pc_gen_ctl = `PC_J;
866
                fsm_dly = `FSM_NOI;
867
                muxa_ctl = `MUXA_NOP;
868
                muxb_ctl = `MUXB_NOP;
869
                alu_func = `ALU_NOP;
870
                alu_we = `DIS;
871
                dmem_ctl = 5'b0;
872
                wb_we =  `DIS;
873
                wb_mux = `WB_NOP;
874
                                         asi = 5'b01010;
875
                //end of `J ;
876
            end
877
            'd3://JAL imm26({pc[31:28],imm26,00})
878
            begin
879
                //replaceID  = `JAL ;
880
                                         load_o=0;
881
                                         read_rt=1'b0;
882
                                         read_rs=1'b0;
883
                                         size=`SZWORD;
884
                ext_ctl = `EXT_J;
885
                rd_sel = `RD_R31;
886
                cmp_ctl = `CMP_NOP;
887
                pc_gen_ctl = `PC_J;
888
                fsm_dly = `FSM_NOI;
889
                muxa_ctl = `MUXA_PC;
890
                muxb_ctl = `MUXB_RT;
891
                alu_func = `ALU_PA;
892
                alu_we = `EN;
893
                dmem_ctl = 5'b0;
894
                wb_we =  `DIS;
895
                wb_mux = `WB_ALU;
896
                                         asi = 5'b01010;
897
                //end of `JAL ;
898
            end
899
            'd4://BEQ rs,rt,offset(signed)
900
            begin
901
                //replaceID  = `BEQ ;
902
                                         load_o=0;
903
                                         read_rt=1'b1;
904
                                         read_rs=1'b1;
905
                                         size=`SZWORD;
906
                ext_ctl = `EXT_B;
907
                rd_sel = `RD_NOP;
908
                cmp_ctl = `CMP_BEQ;
909
                pc_gen_ctl = `PC_BC;
910
                fsm_dly = `FSM_CUR;
911
                muxa_ctl = `MUXA_NOP;
912
                muxb_ctl = `MUXB_NOP;
913
                alu_func = `ALU_NOP;
914
                alu_we = `DIS;
915
                dmem_ctl = 5'b0;
916
                wb_we =  `DIS;
917
                wb_mux = `WB_NOP;
918
                                         asi = 5'b01010;
919
                //end of `BEQ ;
920
            end
921
            'd5://BNE rs,rt,offset(signed)
922
            begin
923
                //replaceID  = `BNE ;
924
                                         load_o=0;
925
                                         read_rt=1'b1;
926
                                         read_rs=1'b0;
927
                                         size=`SZWORD;
928
                ext_ctl = `EXT_B;
929
                rd_sel = `RD_NOP;
930
                cmp_ctl = `CMP_BNE;
931
                pc_gen_ctl = `PC_BC;
932
                fsm_dly = `FSM_CUR;
933
                muxa_ctl = `MUXA_NOP;
934
                muxb_ctl = `MUXB_NOP;
935
                alu_func = `ALU_NOP;
936
                alu_we = `DIS;
937
                dmem_ctl = 5'b0;
938
                wb_we =  `DIS;
939
                wb_mux = `WB_NOP;
940
                                         asi = 5'b01010;
941
                //end of `BNE ;
942
            end
943
            'd6://BLEZ rs,offset(signed)
944
            begin
945
                //replaceID  = `BLEZ ;
946
                                         load_o=0;
947
                                         read_rt=1'b0;
948
                                         read_rs=1'b1;
949
                                         size=`SZWORD;
950
                ext_ctl = `EXT_B;
951
                rd_sel = `RD_NOP;
952
                cmp_ctl = `CMP_BLEZ;
953
                pc_gen_ctl = `PC_BC;
954
                fsm_dly = `FSM_CUR;
955
                muxa_ctl = `MUXA_NOP;
956
                muxb_ctl = `MUXB_NOP;
957
                alu_func = `ALU_NOP;
958
                alu_we = `DIS;
959
                dmem_ctl = 5'b0;
960
                wb_we =  `DIS;
961
                wb_mux = `WB_NOP;
962
                                         asi = 5'b01010;
963
                //end of `BLEZ ;
964
            end
965
            'd7://BGTZ rs,offset(signed)
966
            begin
967
                //replaceID  = `BGTZ ;
968
                                         load_o=0;
969
                                         read_rt=1'b0;
970
                                         read_rs=1'b1;
971
                                         size=`SZWORD;
972
                ext_ctl = `EXT_B;
973
                rd_sel = `RD_NOP;
974
                cmp_ctl = `CMP_BGTZ;
975
                pc_gen_ctl = `PC_BC;
976
                fsm_dly = `FSM_CUR;
977
                muxa_ctl = `MUXA_NOP;
978
                muxb_ctl = `MUXB_NOP;
979
                alu_func = `ALU_NOP;
980
                alu_we = `DIS;
981
                dmem_ctl = 5'b0;
982
                wb_we =  `DIS;
983
                wb_mux = `WB_NOP;
984
                                         asi = 5'b01010;
985
                //end of `BGTZ ;
986
            end
987
            'd8://ADDI rt,rs,imm16(singed)
988
            begin
989
                //replaceID  = `ADDI ;
990
                                         load_o=0;
991
                                         read_rt=1'b0;
992
                                         read_rs=1'b1;
993
                                         size=`SZWORD;
994
                ext_ctl = `EXT_SIGN;
995
                rd_sel = `RD_RT;
996
                cmp_ctl = `CMP_NOP;
997
                pc_gen_ctl = `PC_NEXT;
998
                fsm_dly = `FSM_NOP;
999
                muxa_ctl = `MUXA_RS;
1000
                muxb_ctl = `MUXB_EXT;
1001
                alu_func = `ALU_ADD;
1002
                alu_we = `EN;
1003
                dmem_ctl = 5'b0;
1004
                wb_we =  `DIS;
1005
                wb_mux = `WB_ALU;
1006
                                         asi = 5'b01010;
1007
                //end of `ADDI ;
1008
            end
1009
            'd9://ADDIU rt,rs,imm16(singed)
1010
            begin
1011
                //replaceID  = `ADDIU ;
1012
                                        load_o=0;
1013
                                        read_rt=1'b0;
1014
                                         read_rs=1'b1;
1015
                                        size=`SZWORD;
1016
                ext_ctl = `EXT_SIGN;
1017
                rd_sel = `RD_RT;
1018
                cmp_ctl = `CMP_NOP;
1019
                pc_gen_ctl = `PC_NEXT;
1020
                fsm_dly = `FSM_NOP;
1021
                muxa_ctl = `MUXA_RS;
1022
                muxb_ctl = `MUXB_EXT;
1023
                alu_func = `ALU_ADD;
1024
                alu_we = `EN;
1025
                dmem_ctl = 5'b0;
1026
                wb_we =  `DIS;
1027
                wb_mux = `WB_ALU;
1028
                                         asi = 5'b01010;
1029
                //end of `ADDIU ;
1030
            end
1031
            'd10://SLTI rt,rs,imm16(singed)
1032
            begin
1033
                //replaceID  = `SLTI ;
1034
                                         load_o=0;
1035
                                         read_rt=1'b0;
1036
                                         read_rs=1'b1;
1037
                                         size=`SZWORD;
1038
                ext_ctl = `EXT_SIGN;
1039
                rd_sel = `RD_RT;
1040
                cmp_ctl = `CMP_NOP;
1041
                pc_gen_ctl = `PC_NEXT;
1042
                fsm_dly = `FSM_NOP;
1043
                muxa_ctl = `MUXA_RS;
1044
                muxb_ctl = `MUXB_EXT;
1045
                alu_func = `ALU_SLT;
1046
                alu_we = `EN;
1047
                dmem_ctl = 5'b0;
1048
                wb_we =  `DIS;
1049
                wb_mux = `WB_ALU;
1050
                                         asi = 5'b01010;
1051
                //end of `SLTI ;
1052
            end
1053
            'd11://SLTIU rt,rs,imm16(singed)
1054
            begin
1055
                //replaceID  = `SLTIU ;
1056
                                         load_o=0;
1057
                                         read_rt=1'b0;
1058
                                         read_rs=1'b1;
1059
                                         size=`SZWORD;
1060
                ext_ctl = `EXT_UNSIGN;
1061
                rd_sel = `RD_RT;
1062
                cmp_ctl = `CMP_NOP;
1063
                pc_gen_ctl = `PC_NEXT;
1064
                fsm_dly = `FSM_NOP;
1065
                muxa_ctl = `MUXA_RS;
1066
                muxb_ctl = `MUXB_EXT;
1067
                alu_func = `ALU_SLTU;
1068
                alu_we = `EN;
1069
                dmem_ctl = 5'b0;
1070
                wb_we =  `DIS;
1071
                wb_mux = `WB_ALU;
1072
                                         asi = 5'b01010;
1073
                //end of `SLTIU ;
1074
            end
1075
            'd12://ANDI rt,rs,imm16(singed)
1076
            begin
1077
                //replaceID  = `ANDI ;
1078
                                         load_o=0;
1079
                                         read_rt=1'b0;
1080
                                         read_rs=1'b1;
1081
                                         size=`SZWORD;
1082
                ext_ctl = `EXT_UNSIGN;
1083
                rd_sel = `RD_RT;
1084
                cmp_ctl = `CMP_NOP;
1085
                pc_gen_ctl = `PC_NEXT;
1086
                fsm_dly = `FSM_NOP;
1087
                muxa_ctl = `MUXA_RS;
1088
                muxb_ctl = `MUXB_EXT;
1089
                alu_func = `ALU_AND;
1090
                alu_we = `EN;
1091
                dmem_ctl = 5'b0;
1092
                wb_we =  `DIS;
1093
                wb_mux = `WB_ALU;
1094
                                         asi = 5'b01010;
1095
                //end of `ANDI ;
1096
            end
1097
            'd13://ORI rt,rs,imm16(singed)
1098
            begin
1099
                //replaceID  = `ORI ;
1100
                                         load_o=0;
1101
                                         read_rt=1'b0;
1102
                                         read_rs=1'b1;
1103
                                         size=`SZWORD;
1104
                ext_ctl = `EXT_UNSIGN;
1105
                rd_sel = `RD_RT;
1106
                cmp_ctl = `CMP_NOP;
1107
                pc_gen_ctl = `PC_NEXT;
1108
                fsm_dly = `FSM_NOP;
1109
                muxa_ctl = `MUXA_RS;
1110
                muxb_ctl = `MUXB_EXT;
1111
                alu_func = `ALU_OR;
1112
                alu_we = `EN;
1113
                dmem_ctl = 5'b0;
1114
                wb_we =  `DIS;
1115
                wb_mux = `WB_NOP;
1116
                                         asi = 5'b01010;
1117
                //end of `ORI ;
1118
            end
1119
            'd14://XORI rt,rs,imm16(singed)
1120
            begin
1121
                //replaceID  = `XORI ;
1122
                                         load_o=0;
1123
                                         read_rt=1'b0;
1124
                                         read_rs=1'b1;
1125
                                         size=`SZWORD;
1126
                ext_ctl = `EXT_UNSIGN;
1127
                rd_sel = `RD_RT;
1128
                cmp_ctl = `CMP_NOP;
1129
                pc_gen_ctl = `PC_NEXT;
1130
                fsm_dly = `FSM_NOP;
1131
                muxa_ctl = `MUXA_RS;
1132
                muxb_ctl = `MUXB_EXT;
1133
                alu_func = `ALU_XOR;
1134
                alu_we = `EN;
1135
                dmem_ctl = 5'b0;
1136
                wb_we =  `EN;
1137
                wb_mux = `WB_ALU;
1138
                                         asi = 5'b01010;
1139
                //end of `XORI ;
1140
            end
1141
            'd15://LUI rt,imm16
1142
            begin
1143
                //replaceID  = `LUI ;
1144
                                         load_o=0;
1145
                                         read_rt=1'b0;
1146
                                         read_rs=1'b0;
1147
                                         size=`SZWORD;
1148
                ext_ctl = `EXT_S2H;
1149
                rd_sel = `RD_RT;
1150
                cmp_ctl = `CMP_NOP;
1151
                pc_gen_ctl = `PC_NEXT;
1152
                fsm_dly = `FSM_NOP;
1153
                muxa_ctl = `MUXA_RS;
1154
                muxb_ctl = `MUXB_EXT;
1155
                alu_func = `ALU_PB;
1156
                alu_we = `EN;
1157
                dmem_ctl = 5'b0;
1158
                wb_we =  `DIS;
1159
                wb_mux = `WB_ALU;
1160
                                         asi = 5'b01010;
1161
                //end of `LUI ;
1162
            end
1163
            'd56://COP0 func
1164
            begin
1165
                //replaceID  = `SW ;
1166
                                         load_o=0;
1167
                                         read_rt=1'b0;
1168
                                         read_rs=1'b1;
1169
                                         size=`SZWORD;
1170
                ext_ctl = `EXT_SIGN;
1171
                rd_sel = `RD_NOP;
1172
                cmp_ctl = `CMP_NOP;
1173
                pc_gen_ctl = `PC_NEXT;
1174
                fsm_dly = `FSM_NOP;
1175
                muxa_ctl = `MUXA_RS;
1176
                muxb_ctl = `MUXB_EXT;
1177
                alu_func = `ALU_ADD;
1178
                alu_we = `DIS;
1179
                dmem_ctl = 5'b00110;
1180
                wb_we =  `DIS;
1181
                wb_mux = `WB_NOP;
1182
                                         asi=5'b00010;
1183
                //end of `SW ;
1184
 
1185
/*                case(inst_cop0_func) //synthesis parallel_case
1186
                    'd0://mfc0 rt,rd // GPR[rd] = CPR[rt] //differ to mips32 definition
1187
                        //read saved PC
1188
                    begin
1189
                        //replaceID  = `MFC0;
1190
                                        load_o=0;
1191
                                        size=`SZWORD;
1192
                        ext_ctl = `EXT_NOP;
1193
                        rd_sel = `RD_RD;
1194
                        cmp_ctl = `CMP_NOP;
1195
                        pc_gen_ctl = `PC_NEXT;
1196
                        fsm_dly = `FSM_NOP;
1197
                        muxa_ctl = `MUXA_SPC;
1198
                        muxb_ctl = `MUXB_EXT;
1199
                        alu_func = `ALU_PA;
1200
                        alu_we = `EN;
1201
                        dmem_ctl = 5'b01100;
1202
                        wb_we =  `DIS;
1203
                        wb_mux = `WB_ALU;
1204
                    end
1205
 
1206
                    'd4://mtc0 rt,rd // CPR[rd] = GPR[rt] //follow the mips32 definition
1207
                    begin        //return from interrupt
1208
                        $display("mtco");
1209
                        //replaceID  = `MTC0;
1210
                                                                load_o=0;
1211
                                                                size=`SZWORD;
1212
                        ext_ctl = `EXT_NOP;
1213
                        rd_sel = `RD_NOP;
1214
                        cmp_ctl = `CMP_NOP;
1215
                        pc_gen_ctl = `PC_SPC;
1216
                        fsm_dly = `FSM_RET;
1217
                        muxa_ctl = `MUXA_NOP;
1218
                        muxb_ctl = `MUXB_NOP;
1219
                        alu_func = `ALU_NOP;
1220
                        alu_we = `DIS;
1221
                        dmem_ctl = 5'b0;
1222
                        wb_we =  `DIS;
1223
                        wb_mux = `WB_NOP;
1224
                    end
1225
                    default:
1226
                    begin
1227
                        //replaceID  = `INVALID ;
1228
                                                                load_o=0;
1229
                                                                size=`SZWORD;
1230
                        ext_ctl = `IGN;
1231
                        rd_sel = `IGN;
1232
                        cmp_ctl = `IGN;
1233
                        pc_gen_ctl = `IGN;
1234
                        fsm_dly = `IGN;
1235
                        muxa_ctl = `IGN;
1236
                        muxb_ctl = `IGN;
1237
                        alu_func = `IGN;
1238
                        alu_we = `IGN;
1239
                        dmem_ctl = 5'b0;
1240
                        wb_we =  `IGN;
1241
                        wb_mux = `IGN;
1242
                        //end of `INVALID ;
1243
                    end
1244
                endcase
1245
 */           end
1246
            'd32://LB rt,offset(base) (offset:signed;base:rs)
1247
            begin
1248
                //replaceID  = `LB ;
1249
                                         load_o=1;
1250
                                         read_rt=1'b0;
1251
                                         read_rs=1'b1;
1252
                                         size=`SZBYTE;
1253
                ext_ctl = `EXT_SIGN;
1254
                rd_sel = `RD_RT;
1255
                cmp_ctl = `CMP_NOP;
1256
                pc_gen_ctl = `PC_NEXT;
1257
                fsm_dly = `FSM_NOP;
1258
                muxa_ctl = `MUXA_RS;
1259
                muxb_ctl = `MUXB_EXT;
1260
                alu_func = `ALU_ADD;
1261
                alu_we = `DIS;
1262
                dmem_ctl = 5'b01100;
1263
                wb_we =  `EN;
1264
                wb_mux = `WB_MEM;
1265
                                         asi = 5'b01010;
1266
                //end of `LB ;
1267
            end
1268
            'd33://LH rt,offset(base) (offset:signed;base:rs)
1269
            begin
1270
                //replaceID  = `LH ;
1271
                                         load_o=1;
1272
                                         read_rt=1'b0;
1273
                                         read_rs=1'b1;
1274
                                         size=`SZHALF;
1275
                ext_ctl = `EXT_SIGN;
1276
                rd_sel = `RD_RT;
1277
                cmp_ctl = `CMP_NOP;
1278
                pc_gen_ctl = `PC_NEXT;
1279
                fsm_dly = `FSM_NOP;
1280
                muxa_ctl = `MUXA_RS;
1281
                muxb_ctl = `MUXB_EXT;
1282
                alu_func = `ALU_ADD;
1283
                alu_we = `DIS;
1284
                dmem_ctl = 5'b01100;
1285
                wb_we =  `EN;
1286
                wb_mux = `WB_MEM;
1287
                                         asi = 5'b01010;
1288
                //end of `LH ;
1289
            end
1290
            'd34://LWL rt,offset(base) (offset:signed;base:rs)
1291
            begin
1292
                //replaceID  = `LWL ;
1293
                                         load_o=1;
1294
                                         read_rt=1'b0;
1295
                                         read_rs=1'b1;
1296
                                         size=`SZWORD;
1297
                ext_ctl = `IGN;
1298
                rd_sel = `IGN;
1299
                cmp_ctl = `IGN;
1300
                pc_gen_ctl = `IGN;
1301
                fsm_dly = `IGN;
1302
                muxa_ctl = `IGN;
1303
                muxb_ctl = `IGN;
1304
                alu_func = `IGN;
1305
                alu_we = `IGN;
1306
                dmem_ctl = 5'b01100;
1307
                wb_we =  `IGN;
1308
                wb_mux = `IGN;
1309
                                         asi = 5'b01010;
1310
                //end of `LWL ;
1311
            end
1312
            'd35://LW rt,offset(base) (offset:signed;base:rs)
1313
            begin
1314
                //replaceID  = `LW ;
1315
                                         load_o=1;
1316
                                         read_rt=1'b0;
1317
                                         read_rs=1'b1;
1318
                                         size=`SZWORD;
1319
                ext_ctl = `EXT_SIGN;
1320
                rd_sel = `RD_RT;
1321
                cmp_ctl = `CMP_NOP;
1322
                pc_gen_ctl = `PC_NEXT;
1323
                fsm_dly = `FSM_NOP;
1324
                muxa_ctl = `MUXA_RS;
1325
                muxb_ctl = `MUXB_EXT;
1326
                alu_func = `ALU_ADD;
1327
                alu_we = `DIS;
1328
                dmem_ctl = 5'b01100;
1329
                wb_we =  `EN;
1330
                wb_mux = `WB_MEM;
1331
                                         asi = 5'b01010;
1332
                //end of `LW ;
1333
            end
1334
            'd36://LBU rt,offset(base) (offset:signed;base:rs)
1335
            begin
1336
                //replaceID  = `LBU ;
1337
                                         load_o=1;
1338
                                         read_rt=1'b0;
1339
                                         read_rs=1'b1;
1340
                                         size=`SZBYTE;
1341
                ext_ctl = `EXT_SIGN;
1342
                rd_sel = `RD_RT;
1343
                cmp_ctl = `CMP_NOP;
1344
                pc_gen_ctl = `PC_NEXT;
1345
                fsm_dly = `FSM_NOP;
1346
                muxa_ctl = `MUXA_RS;
1347
                muxb_ctl = `MUXB_EXT;
1348
                alu_func = `ALU_ADD;
1349
                alu_we = `DIS;
1350
                dmem_ctl = 5'b01100;
1351
                wb_we =  `EN;
1352
                wb_mux = `WB_MEM;
1353
                                         asi = 5'b01010;
1354
                //end of `LBU ;
1355
            end
1356
            'd37://LHU rt,offset(base) (offset:signed;base:rs)
1357
            begin
1358
                //replaceID  = `LHU ;
1359
                                         load_o=1;
1360
                                         read_rt=1'b0;
1361
                                         read_rs=1'b1;
1362
                                         size=`SZHALF;
1363
                ext_ctl = `EXT_SIGN;
1364
                rd_sel = `RD_RT;
1365
                cmp_ctl = `CMP_NOP;
1366
                pc_gen_ctl = `PC_NEXT;
1367
                fsm_dly = `FSM_NOP;
1368
                muxa_ctl = `MUXA_RS;
1369
                muxb_ctl = `MUXB_EXT;
1370
                alu_func = `ALU_ADD;
1371
                alu_we = `DIS;
1372
                dmem_ctl = 5'b01100;
1373
                wb_we =  `EN;
1374
                wb_mux = `WB_MEM;
1375
                                         asi = 5'b01010;
1376
                //end of `LHU ;
1377
            end
1378
            'd38://LWR rt,offset(base) (offset:signed;base:rs)
1379
            begin
1380
                //replaceID  = `LWR ;
1381
                                         load_o=1;
1382
                                         read_rt=1'b0;
1383
                                         read_rs=1'b1;
1384
                                         size=`SZWORD;
1385
                ext_ctl = `IGN;
1386
                rd_sel = `IGN;
1387
                cmp_ctl = `IGN;
1388
                pc_gen_ctl = `IGN;
1389
                fsm_dly = `IGN;
1390
                muxa_ctl = `IGN;
1391
                muxb_ctl = `IGN;
1392
                alu_func = `IGN;
1393
                alu_we = `IGN;
1394
                dmem_ctl = 5'b01100;
1395
                wb_we =  `IGN;
1396
                wb_mux = `IGN;
1397
                                         asi = 5'b01010;
1398
                //end of `LWR ;
1399
            end
1400
            'd40://SB rt,offset(base) (offset:signed;base:rs)
1401
            begin
1402
                //replaceID  = `SB ;
1403
                                         load_o=0;
1404
                                         read_rt=1'b1;
1405
                                         read_rs=1'b1;
1406
                                         size=`SZBYTE;
1407
                ext_ctl = `EXT_SIGN;
1408
                rd_sel = `RD_NOP;
1409
                cmp_ctl = `CMP_NOP;
1410
                pc_gen_ctl = `PC_NEXT;
1411
                fsm_dly = `FSM_NOP;
1412
                muxa_ctl = `MUXA_RS;
1413
                muxb_ctl = `MUXB_EXT;
1414
                alu_func = `ALU_ADD;
1415
                alu_we = `DIS;
1416
                dmem_ctl = 5'b00110;
1417
                wb_we =  `DIS;
1418
                wb_mux = `WB_NOP;
1419
                                         asi = 5'b01010;
1420
                //end of `SB ;
1421
            end
1422
            'd41://SH rt,offset(base) (offset:signed;base:rs)
1423
            begin
1424
                //replaceID  = `SH ;
1425
                                         load_o=0;
1426
                                         read_rt=1'b1;
1427
                                         read_rs=1'b1;
1428
                                         size=`SZHALF;
1429
                ext_ctl = `EXT_SIGN;
1430
                rd_sel = `RD_RT;
1431
                cmp_ctl = `CMP_NOP;
1432
                pc_gen_ctl = `PC_NEXT;
1433
                fsm_dly = `FSM_NOP;
1434
                muxa_ctl = `MUXA_RS;
1435
                muxb_ctl = `MUXB_EXT;
1436
                alu_func = `ALU_ADD;
1437
                alu_we = `DIS;
1438
                dmem_ctl = 5'b00110;
1439
                wb_we =  `DIS;
1440
                wb_mux = `WB_NOP;
1441
                                         asi = 5'b01010;
1442
                //end of `SH ;
1443
            end
1444
            'd42://SWL rt,offset(base) (offset:signed;base:rs)
1445
            begin
1446
                //replaceID  = `SWL ;
1447
                                         load_o=0;
1448
                                         read_rt=1'b1;
1449
                                         read_rs=1'b1;
1450
                                         size=`SZWORD;
1451
                ext_ctl = `IGN;
1452
                rd_sel = `IGN;
1453
                cmp_ctl = `IGN;
1454
                pc_gen_ctl = `IGN;
1455
                fsm_dly = `IGN;
1456
                muxa_ctl = `IGN;
1457
                muxb_ctl = `IGN;
1458
                alu_func = `IGN;
1459
                alu_we = `IGN;
1460
                dmem_ctl = 5'b00110;
1461
                wb_we =  `IGN;
1462
                wb_mux = `IGN;
1463
                                         asi = 5'b01010;
1464
                //end of `SWL ;
1465
            end
1466
            'd43://SW rt,offset(base) (offset:signed;base:rs)
1467
            begin
1468
                //replaceID  = `SW ;
1469
                                         load_o=0;
1470
                                         read_rt=1'b1;
1471
                                         read_rs=1'b1;
1472
                                         size=`SZWORD;
1473
                ext_ctl = `EXT_SIGN;
1474
                rd_sel = `RD_NOP;
1475
                cmp_ctl = `CMP_NOP;
1476
                pc_gen_ctl = `PC_NEXT;
1477
                fsm_dly = `FSM_NOP;
1478
                muxa_ctl = `MUXA_RS;
1479
                muxb_ctl = `MUXB_EXT;
1480
                alu_func = `ALU_ADD;
1481
                alu_we = `DIS;
1482
                dmem_ctl = 5'b00110;
1483
                wb_we =  `DIS;
1484
                wb_mux = `WB_NOP;
1485
                                         asi = 5'b01010;
1486
                //end of `SW ;
1487
            end
1488
            'd46://SWR rt,offset(base) (offset:signed;base:rs)
1489
            begin
1490
                //replaceID  = `SWR ;
1491
                                         load_o=0;
1492
                                         read_rt=1'b1;
1493
                                         read_rs=1'b1;
1494
                                         size=`SZWORD;
1495
                ext_ctl = `IGN;
1496
                rd_sel = `IGN;
1497
                cmp_ctl = `IGN;
1498
                pc_gen_ctl = `IGN;
1499
                fsm_dly = `IGN;
1500
                muxa_ctl = `IGN;
1501
                muxb_ctl = `IGN;
1502
                alu_func = `IGN;
1503
                alu_we = `IGN;
1504
                dmem_ctl = 5'b00110;
1505
                wb_we =  `IGN;
1506
                wb_mux = `IGN;
1507
                                         asi = 5'b01010;
1508
                //end of `SWR ;
1509
            end
1510
            default:
1511
            begin
1512
                //replaceID  = `INVALID ;
1513
                                         load_o=0;
1514
                                         read_rt=1'b0;
1515
                                         read_rs=1'b0;
1516
                                         size=`SZWORD;
1517
                ext_ctl = `IGN;
1518
                rd_sel = `IGN;
1519
                cmp_ctl = `IGN;
1520
                pc_gen_ctl = `IGN;
1521
                fsm_dly = `IGN;
1522
                muxa_ctl = `IGN;
1523
                muxb_ctl = `IGN;
1524
                alu_func = `IGN;
1525
                alu_we = `IGN;
1526
                dmem_ctl = 5'b00000;
1527
                wb_we =  `IGN;
1528
                wb_mux = `IGN;
1529
                                         asi = 5'b01010;
1530
                //end of `INVALID ;  //replaceID   = `INVALID ;
1531
            end
1532
        endcase
1533
 
1534
          if (load==1'b1 &&((rt1==rs && read_rs==1'b1) || (rt1==rt && read_rs==1'b1) ))
1535
                        begin
1536
                                                                load_o=0;
1537
                                                                read_rt=1'b0;
1538
                                                 read_rs=1'b0;
1539
                                                                size=`SZWORD;
1540
                        ext_ctl = `EXT_SA;
1541
                        rd_sel = /*`RD_RD*/`RD_NOP;
1542
                        cmp_ctl = `CMP_NOP;
1543
                        pc_gen_ctl = `PC_KEP/*`PC_NEXT*/;
1544
                        fsm_dly = /*`FSM_NOP*/`FSM_CUR;
1545
                        muxa_ctl = `MUXA_EXT;
1546
                        muxb_ctl = `MUXB_RT;
1547
                        alu_func = `ALU_SLL;
1548
                        alu_we = `DIS;
1549
                        dmem_ctl = 5'b0;
1550
                        wb_we =  `DIS;
1551
                        wb_mux = `WB_ALU;
1552
                                                                asi = 5'b01010;
1553
                        end
1554
    end
1555
endmodule
1556
 
1557
 
1558
 
1559
module pipelinedregs (
1560
        clk,id2ra_ctl_clr,id2ra_ctl_cls,ra2ex_ctl_clr,
1561
        alu_func_i,alu_we_i,cmp_ctl_i,dmem_ctl_i,ext_ctl_i,
1562
        muxa_ctl_i,muxb_ctl_i,pc_gen_ctl_i,rd_sel_i,wb_mux_ctl_i,
1563
        wb_we_i,alu_func_o,alu_we_o,cmp_ctl_o,dmem_ctl_ur_o,
1564
        ext_ctl,muxa_ctl_o,muxb_ctl_o,pc_gen_ctl_o,rd_sel_o,wb_mux_ctl_o,wb_we_o,hold
1565
    ) ;
1566
 
1567
    input clk;
1568
    wire clk;
1569
    input id2ra_ctl_clr;
1570
    wire id2ra_ctl_clr;
1571
    input id2ra_ctl_cls;
1572
    wire id2ra_ctl_cls;
1573
    input ra2ex_ctl_clr;
1574
    wire ra2ex_ctl_clr;
1575
    input [4:0] alu_func_i;
1576
    wire [4:0] alu_func_i;
1577
    input [0:0] alu_we_i;
1578
    wire [0:0] alu_we_i;
1579
    input [2:0] cmp_ctl_i;
1580
    wire [2:0] cmp_ctl_i;
1581
    input [4:0] dmem_ctl_i;
1582
    wire [4:0] dmem_ctl_i;
1583
    input [2:0] ext_ctl_i;
1584
    wire [2:0] ext_ctl_i;
1585
    input [1:0] muxa_ctl_i;
1586
    wire [1:0] muxa_ctl_i;
1587
    input [1:0] muxb_ctl_i;
1588
    wire [1:0] muxb_ctl_i;
1589
    input [2:0] pc_gen_ctl_i;
1590
    wire [2:0] pc_gen_ctl_i;
1591
    input [1:0] rd_sel_i;
1592
    wire [1:0] rd_sel_i;
1593
    input [0:0] wb_mux_ctl_i;
1594
    wire [0:0] wb_mux_ctl_i;
1595
    input [0:0] wb_we_i;
1596
    wire [0:0] wb_we_i;
1597
    output [4:0] alu_func_o;
1598
    wire [4:0] alu_func_o;
1599
    output [0:0] alu_we_o;
1600
    wire [0:0] alu_we_o;
1601
    output [2:0] cmp_ctl_o;
1602
    wire [2:0] cmp_ctl_o;
1603
//    output [3:0] dmem_ctl_o;
1604
    wire [4:0] dmem_ctl_o;
1605
    output [4:0] dmem_ctl_ur_o;
1606
    wire [4:0] dmem_ctl_ur_o;
1607
    output [2:0] ext_ctl;
1608
    wire [2:0] ext_ctl;
1609
    output [1:0] muxa_ctl_o;
1610
    wire [1:0] muxa_ctl_o;
1611
    output [1:0] muxb_ctl_o;
1612
    wire [1:0] muxb_ctl_o;
1613
    output [2:0] pc_gen_ctl_o;
1614
    wire [2:0] pc_gen_ctl_o;
1615
    output [1:0] rd_sel_o;
1616
    wire [1:0] rd_sel_o;
1617
    output [0:0] wb_mux_ctl_o;
1618
    wire [0:0] wb_mux_ctl_o;
1619
    output [0:0] wb_we_o;
1620
    wire [0:0] wb_we_o;
1621
         input hold;
1622
         wire hold;
1623
 
1624
 
1625
    wire NET7643;
1626
    wire [0:0] BUS4987;
1627
    wire [1:0] BUS5008;
1628
    wire [1:0] BUS5483;
1629
    wire [0:0] BUS5639;
1630
    wire [0:0] BUS5651;
1631
    wire [4:0] BUS5666;
1632
    wire [4:0] BUS5674;
1633
    wire [0:0] BUS5682;
1634
    wire [0:0] BUS5690;
1635
    wire [0:0] BUS5790;
1636
    wire [0:0] BUS7299;
1637
    wire [0:0] BUS7822;
1638
 
1639
 
1640
    muxb_ctl_reg_clr_cls U1
1641
                         (
1642
                                                                          .hold(hold),
1643
                             .clk(clk),
1644
                             .clr(id2ra_ctl_clr),
1645
                             .cls(id2ra_ctl_cls),
1646
                             .muxb_ctl_i(muxb_ctl_i),
1647
                             .muxb_ctl_o(BUS5483)
1648
                         );
1649
 
1650
 
1651
 
1652
    wb_mux_ctl_reg_clr_cls U10
1653
                           (     .hold(hold),
1654
                               .clk(clk),
1655
                               .clr(id2ra_ctl_clr),
1656
                               .cls(id2ra_ctl_cls),
1657
                               .wb_mux_ctl_i(wb_mux_ctl_i),
1658
                               .wb_mux_ctl_o(BUS5651)
1659
                           );
1660
 
1661
 
1662
 
1663
    wb_we_reg_clr_cls U11
1664
                      (   .hold(hold),
1665
                          .clk(clk),
1666
                          .clr(id2ra_ctl_clr),
1667
                          .cls(id2ra_ctl_cls),
1668
                          .wb_we_i(wb_we_i),
1669
                          .wb_we_o(BUS5639)
1670
                      );
1671
 
1672
 
1673
 
1674
    wb_we_reg U12
1675
              ( .hold(hold),
1676
                  .clk(clk),
1677
                  .wb_we_i(NET7643),
1678
                  .wb_we_o(wb_we_o)
1679
              );
1680
 
1681
 
1682
 
1683
    wb_mux_ctl_reg_clr U13
1684
                       (        .hold(hold),
1685
                           .clk(clk),
1686
                           .clr(ra2ex_ctl_clr),
1687
                           .wb_mux_ctl_i(BUS5651),
1688
                           .wb_mux_ctl_o(BUS5690)
1689
                       );
1690
 
1691
 
1692
 
1693
    muxb_ctl_reg_clr U14
1694
                     (   .hold(hold),
1695
                         .clk(clk),
1696
                         .clr(ra2ex_ctl_clr),
1697
                         .muxb_ctl_i(BUS5483),
1698
                         .muxb_ctl_o(muxb_ctl_o)
1699
                     );
1700
 
1701
 
1702
 
1703
    dmem_ctl_reg_clr U15
1704
                     (   .hold(hold),
1705
                         .clk(clk),
1706
                         .clr(ra2ex_ctl_clr),
1707
                         .dmem_ctl_i(BUS5666),
1708
                         .dmem_ctl_o(dmem_ctl_ur_o)
1709
                     );
1710
 
1711
 
1712
 
1713
    alu_func_reg_clr U16
1714
                     (   .hold(hold),
1715
                         .alu_func_i(BUS5674),
1716
                         .alu_func_o(alu_func_o),
1717
                         .clk(clk),
1718
                         .clr(ra2ex_ctl_clr)
1719
                     );
1720
 
1721
 
1722
 
1723
    muxa_ctl_reg_clr U17
1724
                     (   .hold(hold),
1725
                         .clk(clk),
1726
                         .clr(ra2ex_ctl_clr),
1727
                         .muxa_ctl_i(BUS5008),
1728
                         .muxa_ctl_o(muxa_ctl_o)
1729
                     );
1730
 
1731
 
1732
 
1733
    wb_mux_ctl_reg U18
1734
                   (      .hold(hold),
1735
                       .clk(clk),
1736
                       .wb_mux_ctl_i(BUS5790),
1737
                       .wb_mux_ctl_o(wb_mux_ctl_o)
1738
                   );
1739
 
1740
 
1741
 
1742
    wb_we_reg_clr U19
1743
                  (     .hold(hold),
1744
                      .clk(clk),
1745
                      .clr(ra2ex_ctl_clr),
1746
                      .wb_we_i(BUS5639),
1747
                      .wb_we_o(BUS5682)
1748
                  );
1749
 
1750
 
1751
 
1752
    cmp_ctl_reg_clr_cls U2
1753
                        (       .hold(hold),
1754
                            .clk(clk),
1755
                            .clr(id2ra_ctl_clr),
1756
                            .cls(id2ra_ctl_cls),
1757
                            .cmp_ctl_i(cmp_ctl_i),
1758
                            .cmp_ctl_o(cmp_ctl_o)
1759
                        );
1760
 
1761
 
1762
 
1763
    wb_we_reg U20
1764
              (.hold(hold),
1765
                  .clk(clk),
1766
                  .wb_we_i(BUS5682),
1767
                  .wb_we_o(BUS7822)
1768
              );
1769
 
1770
 
1771
 
1772
    wb_mux_ctl_reg U21
1773
                   (.hold(hold),
1774
                       .clk(clk),
1775
                       .wb_mux_ctl_i(BUS5690),
1776
                       .wb_mux_ctl_o(BUS5790)
1777
                   );
1778
 
1779
 
1780
 
1781
    wb_we_reg U22
1782
              (.hold(hold),
1783
                  .clk(clk),
1784
                  .wb_we_i(BUS7299),
1785
                  .wb_we_o(alu_we_o)
1786
              );
1787
 
1788
 
1789
 
1790
    assign NET7643 = alu_we_o[0] | BUS7822[0];
1791
 
1792
 
1793
    alu_we_reg_clr U24
1794
                   (.hold(hold),
1795
                       .alu_we_i(BUS4987),
1796
                       .alu_we_o(BUS7299),
1797
                       .clk(clk),
1798
                       .clr(ra2ex_ctl_clr)
1799
                   );
1800
 
1801
 
1802
 
1803
    alu_func_reg_clr_cls U26
1804
                         (.hold(hold),
1805
                             .alu_func_i(alu_func_i),
1806
                             .alu_func_o(BUS5674),
1807
                             .clk(clk),
1808
                             .clr(id2ra_ctl_clr),
1809
                             .cls(id2ra_ctl_cls)
1810
                         );
1811
 
1812
 
1813
 
1814
    dmem_ctl_reg_clr_cls U3
1815
                         (.hold(hold),
1816
                             .clk(clk),
1817
                             .clr(id2ra_ctl_clr),
1818
                             .cls(id2ra_ctl_cls),
1819
                             .dmem_ctl_i(dmem_ctl_i),
1820
                             .dmem_ctl_o(BUS5666)
1821
                         );
1822
 
1823
 
1824
 
1825
    ext_ctl_reg_clr_cls U4
1826
                        (.hold(hold),
1827
                            .clk(clk),
1828
                            .clr(id2ra_ctl_clr),
1829
                            .cls(id2ra_ctl_cls),
1830
                            .ext_ctl_i(ext_ctl_i),
1831
                            .ext_ctl_o(ext_ctl)
1832
                        );
1833
 
1834
 
1835
 
1836
    rd_sel_reg_clr_cls U5
1837
                       (.hold(hold),
1838
                           .clk(clk),
1839
                           .clr(id2ra_ctl_clr),
1840
                           .cls(id2ra_ctl_cls),
1841
                           .rd_sel_i(rd_sel_i),
1842
                           .rd_sel_o(rd_sel_o)
1843
                       );
1844
 
1845
 
1846
 
1847
    alu_we_reg_clr_cls U6
1848
                       (.hold(hold),
1849
                           .alu_we_i(alu_we_i),
1850
                           .alu_we_o(BUS4987),
1851
                           .clk(clk),
1852
                           .clr(id2ra_ctl_clr),
1853
                           .cls(id2ra_ctl_cls)
1854
                       );
1855
 
1856
 
1857
 
1858
    muxa_ctl_reg_clr_cls U7
1859
                         (.hold(hold),
1860
                             .clk(clk),
1861
                             .clr(id2ra_ctl_clr),
1862
                             .cls(id2ra_ctl_cls),
1863
                             .muxa_ctl_i(muxa_ctl_i),
1864
                             .muxa_ctl_o(BUS5008)
1865
                         );
1866
 
1867
 
1868
 
1869
    pc_gen_ctl_reg_clr_cls U8
1870
                           (.hold(hold),
1871
                               .clk(clk),
1872
                               .clr(id2ra_ctl_clr),
1873
                               .cls(id2ra_ctl_cls),
1874
                               .pc_gen_ctl_i(pc_gen_ctl_i),
1875
                               .pc_gen_ctl_o(pc_gen_ctl_o)
1876
                           );
1877
 
1878
 
1879
 
1880
    dmem_ctl_reg U9
1881
                 (.hold(hold),
1882
                     .clk(clk),
1883
                     .dmem_ctl_i(dmem_ctl_ur_o),
1884
                     .dmem_ctl_o(dmem_ctl_o)
1885
                 );
1886
 
1887
 
1888
 
1889
endmodule
1890
 
1891
module decode_pipe
1892
    (
1893
        clk,id2ra_ctl_clr,id2ra_ctl_cls,size,
1894
        ra2ex_ctl_clr,ins_i,alu_func_o,alu_we_o,
1895
        cmp_ctl_o,dmem_ctl_ur_o,ext_ctl_o,
1896
        fsm_dly,muxa_ctl_o,muxb_ctl_o,pc_gen_ctl_o,rd_sel_o,
1897
        wb_mux_ctl_o,wb_we_o,load,rt1,load_o,hold,asi
1898
    ) ;
1899
 
1900
         input load;
1901
    input [4:0] rt1;
1902
         output load_o;
1903
    input clk;
1904
    wire clk;
1905
    input id2ra_ctl_clr;
1906
    wire id2ra_ctl_clr;
1907
    input id2ra_ctl_cls;
1908
    wire id2ra_ctl_cls;
1909
    input ra2ex_ctl_clr;
1910
    wire ra2ex_ctl_clr;
1911
    input [31:0] ins_i;
1912
    wire [31:0] ins_i;
1913
    output [4:0] alu_func_o;
1914
    wire [4:0] alu_func_o;
1915
    output [0:0] alu_we_o;
1916
    wire [0:0] alu_we_o;
1917
    output [2:0] cmp_ctl_o;
1918
    wire [2:0] cmp_ctl_o;
1919
//    output [3:0] dmem_ctl_o;
1920
    wire [4:0] dmem_ctl_o;
1921
    output [4:0] dmem_ctl_ur_o;
1922
    wire [4:0] dmem_ctl_ur_o;
1923
    output [2:0] ext_ctl_o;
1924
    wire [2:0] ext_ctl_o;
1925
    output [2:0] fsm_dly;
1926
    wire [2:0] fsm_dly;
1927
    output [1:0] muxa_ctl_o;
1928
    wire [1:0] muxa_ctl_o;
1929
    output [1:0] muxb_ctl_o;
1930
    wire [1:0] muxb_ctl_o;
1931
    output [2:0] pc_gen_ctl_o;
1932
    wire [2:0] pc_gen_ctl_o;
1933
    output [1:0] rd_sel_o;
1934
    wire [1:0] rd_sel_o;
1935
    output [0:0] wb_mux_ctl_o;
1936
    wire [0:0] wb_mux_ctl_o;
1937
    output [0:0] wb_we_o;
1938
    wire [0:0] wb_we_o;
1939
         output [1:0] size;
1940
         wire [1:0] size;
1941
    wire load;
1942
         wire [4:0] rt1;
1943
         wire load_o;
1944
         input hold;
1945
         wire hold;
1946
         output [4:0] asi;
1947
         wire [4:0] asi;
1948
 
1949
    wire [4:0] BUS2040;
1950
    wire [0:0] BUS2048;
1951
    wire [2:0] BUS2056;
1952
    wire [4:0] BUS2064;
1953
    wire [2:0] BUS2072;
1954
    wire [1:0] BUS2086;
1955
    wire [1:0] BUS2094;
1956
    wire [2:0] BUS2102;
1957
    wire [1:0] BUS2110;
1958
    wire [0:0] BUS2118;
1959
    wire [0:0] BUS2126;
1960
 
1961
 
1962
    decoder idecoder
1963
            (
1964
                                         .load(load),
1965
                                         .load_o(load_o),
1966
                                         .rt1(rt1),
1967
                .alu_func(BUS2040),
1968
                                         .size(size),
1969
                .alu_we(BUS2048),
1970
                .cmp_ctl(BUS2056),
1971
                .dmem_ctl(BUS2064),
1972
                .ext_ctl(BUS2072),
1973
                .fsm_dly(fsm_dly),
1974
                .ins_i(ins_i),
1975
                .muxa_ctl(BUS2086),
1976
                .muxb_ctl(BUS2094),
1977
                .pc_gen_ctl(BUS2102),
1978
                .rd_sel(BUS2110),
1979
                .wb_mux(BUS2118),
1980
                .wb_we(BUS2126),
1981
                                         .asi(asi)
1982
            );
1983
 
1984
 
1985
 
1986
    pipelinedregs pipereg
1987
                  (
1988
                      .alu_func_i(BUS2040),
1989
                                                         .hold(hold),
1990
                      .alu_func_o(alu_func_o),
1991
                      .alu_we_i(BUS2048),
1992
                      .alu_we_o(alu_we_o),
1993
                      .clk(clk),
1994
                      .cmp_ctl_i(BUS2056),
1995
                      .cmp_ctl_o(cmp_ctl_o),
1996
                      .dmem_ctl_i(BUS2064),
1997
//                      .dmem_ctl_o(dmem_ctl_o),
1998
                      .dmem_ctl_ur_o(dmem_ctl_ur_o),
1999
                      .ext_ctl(ext_ctl_o),
2000
                      .ext_ctl_i(BUS2072),
2001
                      .id2ra_ctl_clr(id2ra_ctl_clr),
2002
                      .id2ra_ctl_cls(id2ra_ctl_cls),
2003
                      .muxa_ctl_i(BUS2086),
2004
                      .muxa_ctl_o(muxa_ctl_o),
2005
                      .muxb_ctl_i(BUS2094),
2006
                      .muxb_ctl_o(muxb_ctl_o),
2007
                      .pc_gen_ctl_i(BUS2102),
2008
                      .pc_gen_ctl_o(pc_gen_ctl_o),
2009
                      .ra2ex_ctl_clr(ra2ex_ctl_clr),
2010
                      .rd_sel_i(BUS2110),
2011
                      .rd_sel_o(rd_sel_o),
2012
                      .wb_mux_ctl_i(BUS2118),
2013
                      .wb_mux_ctl_o(wb_mux_ctl_o),
2014
                      .wb_we_i(BUS2126),
2015
                      .wb_we_o(wb_we_o)
2016
                  );
2017
 
2018
 
2019
 
2020
endmodule
2021
 
2022
 
2023
 
2024
 
2025
 

powered by: WebSVN 2.1.0

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