Line 42... |
Line 42... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.3 2002/01/28 01:16:00 lampret
|
|
// Changed 'void' nop-ops instead of insn[0] to use insn[16]. Debug unit stalls the tick timer. Prepared new flag generation for add and and insns. Blocked DC/IC while they are turned off. Fixed I/D MMU SPRs layout except WAYs. TODO: smart IC invalidate, l.j 2 and TLB ways.
|
|
//
|
// Revision 1.2 2002/01/14 06:18:22 lampret
|
// 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.
|
// 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.
|
Line 154... |
Line 157... |
wire itlb_ci;
|
wire itlb_ci;
|
wire itlb_done;
|
wire itlb_done;
|
wire fault;
|
wire fault;
|
wire miss;
|
wire miss;
|
reg [31:0] icpu_adr_o;
|
reg [31:0] icpu_adr_o;
|
|
reg itlb_en_r;
|
|
|
//
|
//
|
// Implemented bits inside match and translate registers
|
// Implemented bits inside match and translate registers
|
//
|
//
|
// itlbwYmrX: vpn 31-10 v 0
|
// itlbwYmrX: vpn 31-10 v 0
|
Line 228... |
Line 232... |
// icpu_err_o
|
// icpu_err_o
|
//
|
//
|
assign icpu_err_o = miss | fault | icimmu_err_i;
|
assign icpu_err_o = miss | fault | icimmu_err_i;
|
|
|
//
|
//
|
|
// Assert itlb_en_r after one clock cycle
|
|
//
|
|
always @(posedge clk or posedge rst)
|
|
if (rst)
|
|
itlb_en_r <= #1 1'b0;
|
|
else
|
|
itlb_en_r <= #1 itlb_en;
|
|
|
|
//
|
// Assert itlb_done one clock cycle after new address is first presented and tlb is enabled.
|
// Assert itlb_done one clock cycle after new address is first presented and tlb is enabled.
|
//
|
//
|
assign itlb_done = (icpu_adr_i == icpu_adr_o) & itlb_en;
|
assign itlb_done = (icpu_adr_i == icpu_adr_o) & itlb_en_r;
|
|
|
//
|
//
|
// Cut transfer if something goes wrong with translation. If IC is disabled,
|
// Cut transfer if something goes wrong with translation. If IC is disabled,
|
// use delayed signals.
|
// use delayed signals.
|
//
|
//
|