mtimer: Timers.RiscVMachineTimer @ sysbus 0xe6000000
    frequency: 32000000
    ->cpu0@7

plic: IRQControllers.AndesNCEPLIC100 @ sysbus <0xe4000000, +0x2000000>
    numberOfContexts: 16
    prioritiesEnabled: true
    numberOfSources: 1023
    0->cpu0@11

plic1: IRQControllers.AndesNCEPLIC100 @ sysbus <0xe6400000, +0x400000>
    numberOfContexts: 16
    prioritiesEnabled: true
    numberOfSources: 1023
    0->cpu0@3

sram: Memory.MappedMemory @ {
      sysbus 0x0;
      sysbus <0x90000000, +0x20000> // Should only alias part of the memory.
    }
    size: 0x60000

rom: Memory.MappedMemory @ sysbus 0x70000000
    size: 0x10000

flash0: Memory.MappedMemory @ sysbus 0x80000000
    size: 0x100000

cpu0: CPU.RiscV32 @ sysbus
    cpuType: "rv32gc_xandes"
    timeProvider: empty
    hartId: 0
    privilegedArchitecture: PrivilegedArchitecture.Priv1_10
    reset:
        PC `syscon ResetVector`

uart0: UART.NS16550 @ sysbus 0xf0200020
    wideRegisters: true
    ->plic@20

pit0: Timers.AndesATCPIT100 @ sysbus 0xf0400000
    clockFrequency: 60000000
    ->plic@22

gpio0: GPIOPort.AndesATCGPIO100 @ sysbus 0xf0700000
    IRQ -> plic@21

watchdog: Timers.AndesATCWDT200_Watchdog @ sysbus 0xf0500000
    clockFrequency: 32768

spi0: SPI.AndesATCSPI200 @ sysbus 0xf0b00000
    ->plic@17

spi1: SPI.AndesATCSPI200 @ sysbus 0xf0f00000
    ->plic@18

p25q16: SPI.Puya_P25Q @ spi0
    underlyingMemory: p25q16_flash_mem

p25q16_flash_mem: Memory.MappedMemory
    size: 0x00800000

rtc0: Timers.AndesATCRTC100 @ sysbus 0xf0600000
    IRQ -> plic@31

syscon: Miscellaneous.EgisET171_AOSMU @ sysbus 0xf0100000
    mtimer: mtimer
    pit: pit0
    wdt: watchdog

smu2: Miscellaneous.EgisET171_SMU2 @ sysbus 0xf0e00000

crypto: Miscellaneous.EgisET171_Crypto @ sysbus 0xe8000000

sysbus:
    init:
        Tag <0xe8100000 0x10000> "USB2 CSR"
        Tag <0xf0a00000 0x1000> "i2c0"
        Tag <0xf0c00000 0x1000> "dma0"
        Tag <0xf0e00000 0x100000> "smu2"
        Tag <0xf1000000 0x1000000> "otpc"

