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

Subversion Repositories or1k

[/] [or1k/] [tags/] [rel_26/] [or1200/] [rtl/] [verilog/] [or1200_genpc.v] - Diff between revs 562 and 589

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

Rev 562 Rev 589
Line 43... Line 43...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.2  2002/01/14 06:18:22  lampret
 
// Fixed mem2reg bug in FAST implementation. Updated debug unit to work with new genpc/if.
 
//
// Revision 1.1  2002/01/03 08:16:15  lampret
// Revision 1.1  2002/01/03 08:16:15  lampret
// New prefixes for RTL files, prefixed module names. Updated cache controllers and MMUs.
// New prefixes for RTL files, prefixed module names. Updated cache controllers and MMUs.
//
//
// Revision 1.10  2001/11/20 18:46:15  simons
// Revision 1.10  2001/11/20 18:46:15  simons
// Break point bug fixed
// Break point bug fixed
Line 83... Line 86...
        // External i/f to IC
        // External i/f to IC
        icpu_adr_o, icpu_cyc_o, icpu_stb_o, icpu_sel_o, icpu_tag_o,
        icpu_adr_o, icpu_cyc_o, icpu_stb_o, icpu_sel_o, icpu_tag_o,
        icpu_ack_i, icpu_rty_i, icpu_err_i, icpu_adr_i,
        icpu_ack_i, icpu_rty_i, icpu_err_i, icpu_adr_i,
 
 
        // Internal i/f
        // Internal i/f
        branch_op, except_type,
        branch_op, except_type, except_prefix,
        branch_addrofs, lr_restor, flag, taken, except_start,
        branch_addrofs, lr_restor, flag, taken, except_start,
        binsn_addr, epcr, spr_dat_i, spr_pc_we, genpc_refetch,
        binsn_addr, epcr, spr_dat_i, spr_pc_we, genpc_refetch,
        genpc_freeze, flushpipe
        genpc_freeze, flushpipe
);
);
 
 
Line 117... Line 120...
//
//
// Internal i/f
// Internal i/f
//
//
input   [`OR1200_BRANCHOP_WIDTH-1:0]     branch_op;
input   [`OR1200_BRANCHOP_WIDTH-1:0]     branch_op;
input   [`OR1200_EXCEPT_WIDTH-1:0]       except_type;
input   [`OR1200_EXCEPT_WIDTH-1:0]       except_type;
 
input                                   except_prefix;
input   [31:2]                  branch_addrofs;
input   [31:2]                  branch_addrofs;
input   [31:0]                   lr_restor;
input   [31:0]                   lr_restor;
input                           flag;
input                           flag;
output                          taken;
output                          taken;
input                           except_start;
input                           except_start;
Line 156... Line 160...
 
 
//
//
// Async calculation of new PC value. This value is used for addressing the IC.
// Async calculation of new PC value. This value is used for addressing the IC.
//
//
always @(pcreg or branch_addrofs or binsn_addr or flag or branch_op or except_type
always @(pcreg or branch_addrofs or binsn_addr or flag or branch_op or except_type
        or except_start or lr_restor or epcr or spr_pc_we or spr_dat_i) begin
        or except_start or lr_restor or epcr or spr_pc_we or spr_dat_i or except_prefix) begin
        casex ({spr_pc_we, except_start, branch_op})    // synopsys parallel_case
        casex ({spr_pc_we, except_start, branch_op})    // synopsys parallel_case
                {2'b00, `OR1200_BRANCHOP_NOP}: begin
                {2'b00, `OR1200_BRANCHOP_NOP}: begin
                        pc = {pcreg + 'd1, 2'b0};
                        pc = {pcreg + 'd1, 2'b0};
                        taken = 1'b0;
                        taken = 1'b0;
                end
                end
Line 242... Line 246...
`ifdef OR1200_VERBOSE
`ifdef OR1200_VERBOSE
// synopsys translate_off
// synopsys translate_off
                        $display("Starting exception: %h.", except_type);
                        $display("Starting exception: %h.", except_type);
// synopsys translate_on
// synopsys translate_on
`endif
`endif
                        pc = { 20'h0_0000, except_type, 8'h00};
                        pc = { {4{except_prefix}}, 16'h0000, except_type, 8'h00};
                        taken = 1'b1;
                        taken = 1'b1;
                end
                end
                default: begin
                default: begin
`ifdef OR1200_VERBOSE
`ifdef OR1200_VERBOSE
// synopsys translate_off
// synopsys translate_off

powered by: WebSVN 2.1.0

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