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.19 2001/11/30 18:59:47 simons
|
// Revision 1.19 2001/11/30 18:59:47 simons
|
// *** empty log message ***
|
// *** empty log message ***
|
Line 121... |
Line 124... |
dc_en,
|
dc_en,
|
dcpu_adr_o, dcpu_cyc_o, dcpu_stb_o, dcpu_we_o, dcpu_sel_o, dcpu_tag_o, dcpu_dat_o,
|
dcpu_adr_o, dcpu_cyc_o, dcpu_stb_o, dcpu_we_o, dcpu_sel_o, dcpu_tag_o, dcpu_dat_o,
|
dcpu_dat_i, dcpu_ack_i, dcpu_rty_i, dcpu_err_i, dcpu_tag_i,
|
dcpu_dat_i, dcpu_ack_i, dcpu_rty_i, dcpu_err_i, dcpu_tag_i,
|
dmmu_en,
|
dmmu_en,
|
|
|
// Interrupt exceptions
|
// Interrupt & tick exceptions
|
int_high, int_low,
|
sig_int, sig_tick,
|
|
|
// SPR interface
|
// SPR interface
|
supv, spr_addr, spr_dataout, spr_dat_pic, spr_dat_tt, spr_dat_pm,
|
supv, spr_addr, spr_dataout, spr_dat_pic, spr_dat_tt, spr_dat_pm,
|
spr_dat_dmmu, spr_dat_immu, spr_dat_du, spr_cs, spr_we
|
spr_dat_dmmu, spr_dat_immu, spr_dat_du, spr_cs, spr_we
|
);
|
);
|
Line 218... |
Line 221... |
output spr_we;
|
output spr_we;
|
|
|
//
|
//
|
// Interrupt exceptions
|
// Interrupt exceptions
|
//
|
//
|
input int_high;
|
input sig_int;
|
input int_low;
|
input sig_tick;
|
|
|
//
|
//
|
// Internal wires
|
// Internal wires
|
//
|
//
|
wire [31:0] if_insn;
|
wire [31:0] if_insn;
|
Line 341... |
Line 344... |
assign immu_en = sr[`OR1200_SR_IME];
|
assign immu_en = sr[`OR1200_SR_IME];
|
|
|
//
|
//
|
// SUPV bit
|
// SUPV bit
|
//
|
//
|
assign supv = sr[`OR1200_SR_SUPV];
|
assign supv = sr[`OR1200_SR_SM];
|
|
|
//
|
//
|
// Instantiation of instruction fetch block
|
// Instantiation of instruction fetch block
|
//
|
//
|
or1200_genpc or1200_genpc(
|
or1200_genpc or1200_genpc(
|
Line 362... |
Line 365... |
.icpu_adr_i(icpu_adr_i),
|
.icpu_adr_i(icpu_adr_i),
|
|
|
.branch_op(branch_op),
|
.branch_op(branch_op),
|
.except_type(except_type),
|
.except_type(except_type),
|
.except_start(except_start),
|
.except_start(except_start),
|
|
.except_prefix(sr[`OR1200_SR_EPH]),
|
.branch_addrofs(branch_addrofs),
|
.branch_addrofs(branch_addrofs),
|
.lr_restor(operand_b),
|
.lr_restor(operand_b),
|
.flag(flag),
|
.flag(flag),
|
.taken(branch_taken),
|
.taken(branch_taken),
|
.binsn_addr(lr_sav),
|
.binsn_addr(lr_sav),
|
Line 451... |
Line 455... |
// Instantiation of register file
|
// Instantiation of register file
|
//
|
//
|
or1200_rf or1200_rf(
|
or1200_rf or1200_rf(
|
.clk(clk),
|
.clk(clk),
|
.rst(rst),
|
.rst(rst),
|
.supv(sr[`OR1200_SR_SUPV]),
|
.supv(sr[`OR1200_SR_SM]),
|
.wb_freeze(wb_freeze),
|
.wb_freeze(wb_freeze),
|
.addrw(rf_addrw),
|
.addrw(rf_addrw),
|
.dataw(rf_dataw),
|
.dataw(rf_dataw),
|
.id_freeze(id_freeze),
|
.id_freeze(id_freeze),
|
.we(rfwb_op[0]),
|
.we(rfwb_op[0]),
|
Line 593... |
Line 597... |
.lsu_datain(operand_b),
|
.lsu_datain(operand_b),
|
.lsu_dataout(lsu_dataout),
|
.lsu_dataout(lsu_dataout),
|
.lsu_stall(lsu_stall),
|
.lsu_stall(lsu_stall),
|
.lsu_unstall(lsu_unstall),
|
.lsu_unstall(lsu_unstall),
|
.du_stall(du_stall),
|
.du_stall(du_stall),
|
|
.flushpipe(flushpipe),
|
.except_align(except_align),
|
.except_align(except_align),
|
.except_dtlbmiss(except_dtlbmiss),
|
.except_dtlbmiss(except_dtlbmiss),
|
.except_dmmufault(except_dmmufault),
|
.except_dmmufault(except_dmmufault),
|
.except_dbuserr(except_dbuserr),
|
.except_dbuserr(except_dbuserr),
|
|
|
Line 664... |
Line 669... |
.sig_illegal(except_illegal),
|
.sig_illegal(except_illegal),
|
.sig_align(except_align),
|
.sig_align(except_align),
|
.sig_range(1'b0),
|
.sig_range(1'b0),
|
.sig_dtlbmiss(except_dtlbmiss),
|
.sig_dtlbmiss(except_dtlbmiss),
|
.sig_dmmufault(except_dmmufault),
|
.sig_dmmufault(except_dmmufault),
|
.sig_inthigh(int_high),
|
.sig_int(sig_int),
|
.sig_syscall(sig_syscall),
|
.sig_syscall(sig_syscall),
|
.sig_trap(sig_trap),
|
.sig_trap(sig_trap),
|
.sig_itlbmiss(except_itlbmiss),
|
.sig_itlbmiss(except_itlbmiss),
|
.sig_immufault(except_immufault),
|
.sig_immufault(except_immufault),
|
.sig_intlow(int_low),
|
.sig_tick(sig_tick),
|
.branch_taken(branch_taken),
|
.branch_taken(branch_taken),
|
.id_freeze(id_freeze),
|
.id_freeze(id_freeze),
|
.ex_freeze(ex_freeze),
|
.ex_freeze(ex_freeze),
|
.wb_freeze(wb_freeze),
|
.wb_freeze(wb_freeze),
|
.if_stall(if_stall),
|
.if_stall(if_stall),
|
Line 683... |
Line 688... |
.extend_flush(extend_flush),
|
.extend_flush(extend_flush),
|
.except_type(except_type),
|
.except_type(except_type),
|
.except_start(except_start),
|
.except_start(except_start),
|
.except_started(except_started),
|
.except_started(except_started),
|
.except_stop(except_stop),
|
.except_stop(except_stop),
|
.wb_pc(spr_dat_ppc),
|
.has_dslot(has_dslot),
|
.ex_pc(spr_dat_npc),
|
.spr_dat_ppc(spr_dat_ppc),
|
.id_pc(),
|
.spr_dat_npc(spr_dat_npc),
|
// .wb_pc(),
|
|
// .ex_pc(spr_dat_ppc),
|
|
// .id_pc(spr_dat_npc),
|
|
|
|
.datain(operand_b),
|
.datain(operand_b),
|
.du_dsr(du_dsr),
|
.du_dsr(du_dsr),
|
.epcr_we(epcr_we),
|
.epcr_we(epcr_we),
|
.eear_we(eear_we),
|
.eear_we(eear_we),
|