53 lines
1.7 KiB
Systemverilog
53 lines
1.7 KiB
Systemverilog
// Generated by CIRCT firtool-1.139.0
|
|
module MMU(
|
|
input clock,
|
|
reset,
|
|
input [63:0] io_satp,
|
|
input io_req_valid,
|
|
input [63:0] io_req_vaddr,
|
|
input io_req_isStore,
|
|
io_req_isFetch,
|
|
input [1:0] io_req_priv,
|
|
input io_req_sum,
|
|
io_req_mxr,
|
|
output io_resp_pageFault,
|
|
io_ptwMemReq_valid,
|
|
output [63:0] io_ptwMemReq_addr,
|
|
input io_ptwMemResp_valid,
|
|
input [63:0] io_ptwMemResp_data,
|
|
output io_refill_valid,
|
|
output [26:0] io_refill_vpn,
|
|
output [43:0] io_refill_ppn,
|
|
output [1:0] io_refill_level,
|
|
output [7:0] io_refill_flags
|
|
);
|
|
|
|
wire _walker_io_respValid;
|
|
wire _walker_io_pageFault;
|
|
PageTableWalker walker (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_reqValid (io_req_valid & (|(io_satp[63:60]))),
|
|
.io_reqVpn (io_req_vaddr[38:12]),
|
|
.io_isStore (io_req_isStore),
|
|
.io_isFetch (io_req_isFetch),
|
|
.io_priv (io_req_priv),
|
|
.io_sum (io_req_sum),
|
|
.io_mxr (io_req_mxr),
|
|
.io_satp (io_satp),
|
|
.io_memReq_valid (io_ptwMemReq_valid),
|
|
.io_memReq_addr (io_ptwMemReq_addr),
|
|
.io_memResp_valid (io_ptwMemResp_valid),
|
|
.io_memResp_data (io_ptwMemResp_data),
|
|
.io_respValid (_walker_io_respValid),
|
|
.io_refill_valid (io_refill_valid),
|
|
.io_refill_vpn (io_refill_vpn),
|
|
.io_refill_ppn (io_refill_ppn),
|
|
.io_refill_level (io_refill_level),
|
|
.io_refill_flags (io_refill_flags),
|
|
.io_pageFault (_walker_io_pageFault)
|
|
);
|
|
assign io_resp_pageFault = _walker_io_respValid & _walker_io_pageFault;
|
|
endmodule
|
|
|