Line 42... |
Line 42... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// 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.14 2001/11/30 18:59:17 simons
|
// Revision 1.14 2001/11/30 18:59:17 simons
|
// force_dslot_fetch does not work - allways zero.
|
// force_dslot_fetch does not work - allways zero.
|
Line 94... |
Line 97... |
// Internal i/f
|
// Internal i/f
|
id_freeze, ex_freeze, wb_freeze, flushpipe, if_insn, ex_insn, branch_op,
|
id_freeze, ex_freeze, wb_freeze, flushpipe, if_insn, ex_insn, branch_op,
|
rf_addra, rf_addrb, rf_rda, rf_rdb, alu_op, mac_op, shrot_op, comp_op, rf_addrw, rfwb_op,
|
rf_addra, rf_addrb, rf_rda, rf_rdb, alu_op, mac_op, shrot_op, comp_op, rf_addrw, rfwb_op,
|
wb_insn, simm, branch_addrofs, lsu_addrofs, sel_a, sel_b, lsu_op,
|
wb_insn, simm, branch_addrofs, lsu_addrofs, sel_a, sel_b, lsu_op,
|
multicycle, spr_addrimm, wbforw_valid, sig_syscall, sig_trap,
|
multicycle, spr_addrimm, wbforw_valid, sig_syscall, sig_trap,
|
force_dslot_fetch, has_dslot, id_macrc_op, ex_macrc_op, rfe, except_illegal
|
force_dslot_fetch, has_dslot, ex_void, id_macrc_op, ex_macrc_op, rfe, except_illegal
|
);
|
);
|
|
|
//
|
//
|
// I/O
|
// I/O
|
//
|
//
|
Line 133... |
Line 136... |
input wbforw_valid;
|
input wbforw_valid;
|
output sig_syscall;
|
output sig_syscall;
|
output sig_trap;
|
output sig_trap;
|
output force_dslot_fetch;
|
output force_dslot_fetch;
|
output has_dslot;
|
output has_dslot;
|
|
output ex_void;
|
output id_macrc_op;
|
output id_macrc_op;
|
output ex_macrc_op;
|
output ex_macrc_op;
|
output rfe;
|
output rfe;
|
output except_illegal;
|
output except_illegal;
|
|
|
Line 165... |
Line 169... |
reg [15:0] spr_addrimm;
|
reg [15:0] spr_addrimm;
|
reg sig_syscall;
|
reg sig_syscall;
|
reg sig_trap;
|
reg sig_trap;
|
reg except_illegal;
|
reg except_illegal;
|
reg ex_macrc_op;
|
reg ex_macrc_op;
|
|
wire id_void;
|
|
|
//
|
//
|
// Register file read addresses
|
// Register file read addresses
|
//
|
//
|
assign rf_addra = if_insn[20:16];
|
assign rf_addra = if_insn[20:16];
|
Line 181... |
Line 186... |
// instructions
|
// instructions
|
//
|
//
|
// SIMON
|
// SIMON
|
// assign force_dslot_fetch = ((|pre_branch_op) & (|lsu_op));
|
// assign force_dslot_fetch = ((|pre_branch_op) & (|lsu_op));
|
assign force_dslot_fetch = 1'b0;
|
assign force_dslot_fetch = 1'b0;
|
assign has_dslot = |branch_op & ((id_insn[31:26] != `OR1200_OR32_NOP) | !id_insn[0]);
|
assign has_dslot = |branch_op & !id_void;
|
|
assign id_void = (id_insn[31:26] == `OR1200_OR32_NOP) & id_insn[0];
|
|
assign ex_void = (ex_insn[31:26] == `OR1200_OR32_NOP) & ex_insn[0];
|
|
|
//
|
//
|
// Sign/Zero extension of immediates
|
// Sign/Zero extension of immediates
|
//
|
//
|
assign simm = (imm_signextend == 1'b1) ? {{16{id_insn[15]}}, id_insn[15:0]} : {{16'b0}, id_insn[15:0]};
|
assign simm = (imm_signextend == 1'b1) ? {{16{id_insn[15]}}, id_insn[15:0]} : {{16'b0}, id_insn[15:0]};
|