ddr: Memory.MappedMemory @ sysbus 0x40000000
    size: 0x10000000

uart: UART.LiteX_UART @ sysbus 0xf0001000

eth: Network.LiteX_Ethernet @ {
        sysbus 0xF0004000;

        sysbus new Bus.BusMultiRegistration { address: 0xF0003800; size: 0x000a; region: "phy" };
        sysbus new Bus.BusMultiRegistration { address: 0xB0000000; size: 0x2000; region: "buffer" }
    }

spi: SPI.LiteX_SPI @ sysbus 0xF0007800

spi_loopback: SPI.SPILoopback @ spi

i2c: I2C.LiteX_I2C @ sysbus 0xF0008000

si7021: Sensors.SI70xx @ i2c 5
    model: Model.SI7021

gpio_out: GPIOPort.LiteX_GPIO @ sysbus 0xF0004800
    type: Type.Out
    0 -> led@0

gpio_in: GPIOPort.LiteX_GPIO @ sysbus 0xF0007000
    type: Type.In

cpu: CPU.VexRiscv @ sysbus
    cpuType: "rv32ima_zicsr_zifencei"
    timeProvider: clint
    privilegedArchitecture: PrivilegedArchitecture.Priv1_10 
    builtInIrqController: false

clint: IRQControllers.CoreLevelInterruptor @ sysbus 0xF0010000
    frequency: 100000000
    numberOfTargets: 1
    [0, 1] -> cpu@[3, 7]

plic: IRQControllers.PlatformLevelInterruptController @ sysbus 0xf0C00000
    [0,1] -> cpu@[11, 9]
    numberOfSources: 31
    numberOfContexts: 2

led : Miscellaneous.LED @ gpio_out 0

button: Miscellaneous.Button @ gpio_in 0
    -> gpio_in@0

soc_controller: Miscellaneous.LiteX_SoC_Controller @ sysbus 0xf0000000

mmcm: Miscellaneous.LiteX_MMCM @ sysbus 0xf0009800

mmc_controller: SD.LiteSDCard @ {
        sysbus 0xf000a000; // phy

        sysbus new Bus.BusMultiRegistration { address: 0xf000a800; size: 0x100; region: "core" };
        sysbus new Bus.BusMultiRegistration { address: 0xf000b800; size: 0x100; region: "reader" };
        sysbus new Bus.BusMultiRegistration { address: 0xf000c000; size: 0x100; region: "writer" }
}

