1package top 2 3import chisel3._ 4import chisel3.util._ 5 6import bus.simplebus.SimpleBus 7 8class DeviceHelper extends BlackBox { 9 val io = IO(new Bundle { 10 val clk = Input(Clock()) 11 val reqValid = Input(Bool()) 12 val reqWen = Input(Bool()) 13 val reqAddr = Input(UInt(32.W)) 14 val reqWdata = Input(UInt(32.W)) 15 val reqWmask = Input(UInt(4.W)) 16 val respRdata = Output(UInt(32.W)) 17 }) 18} 19 20class SimMMIO extends Module { 21 val io = IO(new Bundle { 22 val rw = Flipped(new SimpleBus) 23 }) 24 25 val helper = Module(new DeviceHelper) 26 helper.io.clk := clock 27 helper.io.reqValid := io.rw.req.valid 28 helper.io.reqWen := io.rw.isWrite() 29 helper.io.reqAddr := io.rw.req.bits.addr 30 helper.io.reqWdata := io.rw.req.bits.wdata 31 helper.io.reqWmask := io.rw.req.bits.wmask 32 io.rw.resp.bits.rdata := helper.io.respRdata 33 34 io.rw.req.ready := true.B 35 io.rw.resp.valid := RegNext(io.rw.req.valid) 36} 37