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

Subversion Repositories raptor64

[/] [raptor64/] [trunk/] [rtl/] [verilog/] [Raptor64mc.v] - Diff between revs 16 and 21

Show entire file | Details | Blame | View Log

Rev 16 Rev 21
Line 313... Line 313...
`define         BRA             5'd10
`define         BRA             5'd10
`define         BRN             5'd11
`define         BRN             5'd11
`define         BAND    5'd12
`define         BAND    5'd12
`define         BOR             5'd13
`define         BOR             5'd13
`define         BNR             5'd14
`define         BNR             5'd14
 
`define         LOOP    5'd15
`define         BLTR    5'd16
`define         BLTR    5'd16
`define         BGER    5'd17
`define         BGER    5'd17
`define         BLER    5'd18
`define         BLER    5'd18
`define         BGTR    5'd19
`define         BGTR    5'd19
`define         BLTUR   5'd20
`define         BLTUR   5'd20
Line 1258... Line 1259...
        `BFSET:         begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? 1'b1 : b[n]; xData[64] = 1'b0; end
        `BFSET:         begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? 1'b1 : b[n]; xData[64] = 1'b0; end
        `BFCLR:         begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? 1'b0 : b[n]; xData[64] = 1'b0; end
        `BFCLR:         begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? 1'b0 : b[n]; xData[64] = 1'b0; end
        `BFCHG:         begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? ~b[n] : b[n]; xData[64] = 1'b0; end
        `BFCHG:         begin for (n = 0; n < 64; n = n + 1) xData[n] = masko[n] ? ~b[n] : b[n]; xData[64] = 1'b0; end
        default:        xData = 65'd0;
        default:        xData = 65'd0;
        endcase
        endcase
 
`BTRR:
 
        case(xIR[4:0])
 
        `LOOP:          xData = b - 64'd1;
 
        default:        xData = 65'd0;
 
        endcase
`SETLO: xData = imm;
`SETLO: xData = imm;
`SETHI: xData = {imm[63:32],a[31:0]};
`SETHI: xData = {imm[63:32],a[31:0]};
`ADDI:  xData = a + imm;
`ADDI:  xData = a + imm;
`ADDUI: xData = a + imm;
`ADDUI: xData = a + imm;
`SUBI:  xData = a - imm;
`SUBI:  xData = a - imm;
Line 2691... Line 2697...
        casex(dOpcode)
        casex(dOpcode)
        `SETLO:         xRt <= {dAXC,dRa};
        `SETLO:         xRt <= {dAXC,dRa};
        `SETHI:         xRt <= {dAXC,dRa};
        `SETHI:         xRt <= {dAXC,dRa};
        `RR:            xRt <= {dAXC,dIR[24:20]};
        `RR:            xRt <= {dAXC,dIR[24:20]};
        `BTRI:          xRt <= 9'd0;
        `BTRI:          xRt <= 9'd0;
        `BTRR:          xRt <= 9'd0;
        `BTRR:
 
                case(dIR[4:0])
 
                `LOOP:  xRt <= {dAXC,dRb};
 
                default: xRt <= 9'd0;
 
                endcase
        `TRAPcc:        xRt <= 9'd0;
        `TRAPcc:        xRt <= 9'd0;
        `TRAPcci:       xRt <= 9'd0;
        `TRAPcci:       xRt <= 9'd0;
        `JMP:           xRt <= 9'd00;
        `JMP:           xRt <= 9'd00;
        `CALL:          xRt <= {dAXC,5'd31};
        `CALL:          xRt <= {dAXC,5'd31};
        `RET:           xRt <= {dAXC,dIR[24:20]};
        `RET:           xRt <= {dAXC,dIR[24:20]};
Line 2847... Line 2857...
                                dbranch_taken <= 1'b1;
                                dbranch_taken <= 1'b1;
                                pc[AXC] <= jmp_tgt;
                                pc[AXC] <= jmp_tgt;
                        end
                        end
                `BTRR:
                `BTRR:
                        case(insn[4:0])
                        case(insn[4:0])
                        `BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR:
                        `BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR,`LOOP,`BRA:
                                if (predict_taken) begin
                                if (predict_taken) begin
                                        $display("Taking predicted branch: %h",{pc_axc[63:4] + {{42{insn[24]}},insn[24:7]},insn[6:5],2'b00});
                                        $display("Taking predicted branch: %h",{pc_axc[63:4] + {{42{insn[24]}},insn[24:7]},insn[6:5],2'b00});
                                        dbranch_taken <= 1'b1;
                                        dbranch_taken <= 1'b1;
                                        pc[AXC] <= {pc_axc[63:4] + {{42{insn[24]}},insn[24:7]},insn[6:5],2'b00};
                                        pc[AXC] <= {pc_axc[63:4] + {{42{insn[24]}},insn[24:7]},insn[6:5],2'b00};
                                end
                                end
Line 2915... Line 2925...
                default:        ;
                default:        ;
                endcase
                endcase
        `BTRR:
        `BTRR:
                case(xIR[4:0])
                case(xIR[4:0])
        // BEQ r1,r2,label
        // BEQ r1,r2,label
                `BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR:
                `BEQ,`BNE,`BLT,`BLE,`BGT,`BGE,`BLTU,`BLEU,`BGTU,`BGEU,`BAND,`BOR,`BNR,`BRA,`BRN,`LOOP:
                        if (takb & !xbranch_taken) begin
                        if (takb & !xbranch_taken) begin
                                $display("Taking branch %h",xpc[63:4] + {{42{xIR[24]}},xIR[24:7]});
                                $display("Taking branch %h",xpc[63:4] + {{42{xIR[24]}},xIR[24:7]});
                                pc[xAXC][63:4] <= xpc[63:4] + {{42{xIR[24]}},xIR[24:7]};
                                pc[xAXC][63:4] <= xpc[63:4] + {{42{xIR[24]}},xIR[24:7]};
                                pc[xAXC][3:2] <= xIR[6:5];
                                pc[xAXC][3:2] <= xIR[6:5];
                                if (xAXC==AXC) begin
                                if (xAXC==AXC) begin

powered by: WebSVN 2.1.0

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