xref: /XiangShan/src/test/scala/top/SimMMIO.scala (revision 7d5ddbe61d015ab62723cce831ca35d0562d7ee9)
1package top
2
3import bus.axi4.AXI4ToAXI4Lite
4import chisel3._
5import chisel3.util._
6import bus.simplebus._
7import bus.tilelink.{NaiveTL1toN, NaiveTLToAXI4, TLCached, TLParameters}
8import device._
9
10class SimMMIO(para: TLParameters) extends Module {
11  val io = IO(new Bundle {
12    val rw = Flipped(TLCached(para))
13    val uart = new UARTIO
14  })
15
16  val devAddrSpace = List(
17    (0x40600000L, 0x10L), // uart
18    (0x50000000L, 0x400000L), // vmem
19    (0x40001000L, 0x8L),  // vga ctrl
20    (0x40000000L, 0x1000L),  // flash
21    (0x40002000L, 0x1000L)  // dummy sdcard
22  )
23
24  val xbar = Module(new NaiveTL1toN(devAddrSpace, io.rw.params))
25  xbar.io.in <> io.rw
26
27  val axiOut = xbar.io.out.map(tl => AXI4ToAXI4Lite(NaiveTLToAXI4(tl)))
28
29  val uart = Module(new AXI4UART)
30  val vga = Module(new AXI4VGA(sim = true))
31  val flash = Module(new AXI4Flash)
32  val sd = Module(new AXI4DummySD)
33
34  uart.io.in <> axiOut(0)
35  vga.io.in.fb <> axiOut(1)
36  vga.io.in.ctrl <> axiOut(2)
37  flash.io.in <> axiOut(3)
38  sd.io.in <> axiOut(4)
39  vga.io.vga := DontCare
40  io.uart <> uart.io.extra.get
41}
42