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

Subversion Repositories or1k

[/] [or1k/] [branches/] [mp3_stable/] [or1200/] [rtl/] [verilog/] [ifetch.v] - Diff between revs 203 and 205

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 203 Rev 205
Line 60... Line 60...
 
 
        // External i/f to IC
        // External i/f to IC
        ic_insn, ic_addr, ic_stall, ic_fetchop, tp_insn, tp_wr_insn,
        ic_insn, ic_addr, ic_stall, ic_fetchop, tp_insn, tp_wr_insn,
 
 
        // Internal i/f
        // Internal i/f
        pipeline_freeze, if_insn, if_pc, branch_op, except_type,
        if_freeze, if_insn, if_pc, branch_op, except_type,
        branch_addrofs, lr_restor, flag, taken, binsn_addr, except_start,
        branch_addrofs, lr_restor, flag, taken, binsn_addr, except_start,
        epcr, force_dslot_fetch, if_stall, branch_stall
        epcr, force_dslot_fetch, if_stall, branch_stall
);
);
 
 
//
//
Line 88... Line 88...
input                           tp_wr_insn;
input                           tp_wr_insn;
 
 
//
//
// Internal i/f
// Internal i/f
//
//
input                           pipeline_freeze;
input                           if_freeze;
output  [31:0]                   if_insn;
output  [31:0]                   if_insn;
output  [31:0]                   if_pc;
output  [31:0]                   if_pc;
input   [`BRANCHOP_WIDTH-1:0]    branch_op;
input   [`BRANCHOP_WIDTH-1:0]    branch_op;
input   [`EXCEPT_WIDTH-1:0]      except_type;
input   [`EXCEPT_WIDTH-1:0]      except_type;
input   [31:2]                  branch_addrofs;
input   [31:2]                  branch_addrofs;
Line 250... Line 250...
// PC register
// PC register
//
//
always @(posedge clk or posedge rst) begin
always @(posedge clk or posedge rst) begin
        if (rst)
        if (rst)
                pcreg <= #1 30'd64;
                pcreg <= #1 30'd64;
        else if (!pipeline_freeze && !ic_stall) begin
        else if (!if_freeze && !ic_stall) begin
                pcreg <= #1 ic_addr[31:2];
                pcreg <= #1 ic_addr[31:2];
`ifdef OR1200_VERBOSE
`ifdef OR1200_VERBOSE
// synopsys translate_off
// synopsys translate_off
                $display("%t: pcreg incremented to %h", $time, {ic_addr[31:2], 2'b0});
                $display("%t: pcreg incremented to %h", $time, {ic_addr[31:2], 2'b0});
// synopsys translate_on
// synopsys translate_on
Line 267... Line 267...
//
//
always @(posedge clk or posedge rst)
always @(posedge clk or posedge rst)
        if (rst) begin
        if (rst) begin
                if_saved <= #1 33'b0;
                if_saved <= #1 33'b0;
        end
        end
        else if (pipeline_freeze && !if_saved[32] && !ic_stall) begin  // && !taken
        else if (if_freeze && !if_saved[32] && !ic_stall) begin  // && !taken
                if_saved <= #1 {1'b1, ic_tp_insn};
                if_saved <= #1 {1'b1, ic_tp_insn};
`ifdef OR1200_VERBOSE
`ifdef OR1200_VERBOSE
// synopsys translate_off
// synopsys translate_off
                $display("%t: if_saved <= %h", $time, {1'b1, ic_tp_insn});
                $display("%t: if_saved <= %h", $time, {1'b1, ic_tp_insn});
// synopsys translate_on
// synopsys translate_on
`endif
`endif
        end
        end
        else if (!pipeline_freeze) begin
        else if (!if_freeze) begin
                if_saved[32] <= #1 1'b0;
                if_saved[32] <= #1 1'b0;
                if_saved[31:0] <= #1 32'h1500eeee;
                if_saved[31:0] <= #1 32'h1500eeee;
`ifdef OR1200_VERBOSE
`ifdef OR1200_VERBOSE
// synopsys translate_off
// synopsys translate_off
                $display("%t: if_saved[32] <= 0", $time);
                $display("%t: if_saved[32] <= 0", $time);
Line 292... Line 292...
//
//
always @(posedge clk or posedge rst)
always @(posedge clk or posedge rst)
        if (rst) begin
        if (rst) begin
                pc_saved <= #1 32'b0;
                pc_saved <= #1 32'b0;
        end
        end
        else if (pipeline_freeze && !if_saved[32] && !ic_stall) begin  // && !taken
        else if (if_freeze && !if_saved[32] && !ic_stall) begin  // && !taken
                pc_saved <= #1 ic_addr;
                pc_saved <= #1 ic_addr;
        end
        end
        else if (!pipeline_freeze) begin
        else if (!if_freeze) begin
                pc_saved <= #1 32'h00000000;
                pc_saved <= #1 32'h00000000;
        end
        end
 
 
endmodule
endmodule
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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