blob: fee2342f317d859ee81f13390680033e43fbe399 [file] [log] [blame]
e51: CPU.RiscV64 @ sysbus
cpuType: "rv64imac_zicsr_zifencei"
hartId: 0
privilegeArchitecture: PrivilegeArchitecture.Priv1_10
timeProvider: clint
CyclesPerInstruction: 8
init:
RegisterCustomCSR "BPM" 0x7C0 Machine
u54_1: CPU.RiscV64 @ sysbus
cpuType: "rv64gc_zicsr_zifencei"
hartId: 1
privilegeArchitecture: PrivilegeArchitecture.Priv1_10
timeProvider: clint
CyclesPerInstruction: 8
init:
RegisterCustomCSR "BPM" 0x7C0 Machine
u54_2: CPU.RiscV64 @ sysbus
cpuType: "rv64gc_zicsr_zifencei"
hartId: 2
privilegeArchitecture: PrivilegeArchitecture.Priv1_10
timeProvider: clint
CyclesPerInstruction: 8
init:
RegisterCustomCSR "BPM" 0x7C0 Machine
u54_3: CPU.RiscV64 @ sysbus
cpuType: "rv64gc_zicsr_zifencei"
hartId: 3
privilegeArchitecture: PrivilegeArchitecture.Priv1_10
timeProvider: clint
CyclesPerInstruction: 8
init:
RegisterCustomCSR "BPM" 0x7C0 Machine
u54_4: CPU.RiscV64 @ sysbus
cpuType: "rv64gc_zicsr_zifencei"
hartId: 4
privilegeArchitecture: PrivilegeArchitecture.Priv1_10
timeProvider: clint
CyclesPerInstruction: 8
init:
RegisterCustomCSR "BPM" 0x7C0 Machine
clint: IRQControllers.CoreLevelInterruptor @ sysbus 0x2000000
frequency: 1000000
numberOfTargets: 5
[0, 1] -> e51@[3, 7]
[2, 3] -> u54_1@[3, 7]
[4, 5] -> u54_2@[3, 7]
[6, 7] -> u54_3@[3, 7]
[8, 9] -> u54_4@[3, 7]
pdma: DMA.MPFS_PDMA @ sysbus 0x3000000
[0-7] -> plic@[5-12]
plic: IRQControllers.PlatformLevelInterruptController @ sysbus 0xc000000
// E51: only machine mode interrupt
0 -> e51@11
// No user mode or hypervisor mode interrupts
[1,2] -> u54_1@[11,9]
[3,4] -> u54_2@[11,9]
[5,6] -> u54_3@[11,9]
[7,8] -> u54_4@[11,9]
numberOfSources: 186
numberOfContexts: 9
prioritiesEnabled : false
mmuart0: UART.NS16550 @ sysbus 0x20000000
wideRegisters: true
IRQ -> plic@90 | e51@27
mmuart1: UART.NS16550 @ sysbus 0x20100000
wideRegisters: true
IRQ -> plic@91 | u54_1@27
mmuart2: UART.NS16550 @ sysbus 0x20102000
wideRegisters: true
IRQ -> plic@92 | u54_2@27
mmuart3: UART.NS16550 @ sysbus 0x20104000
wideRegisters: true
IRQ -> plic@93 | u54_3@27
mmuart4: UART.NS16550 @ sysbus 0x20106000
wideRegisters: true
IRQ -> plic@94 | u54_4@27
mmc: SD.MPFS_SDController @ sysbus 0x20008000
IRQ -> plic@88
WakeupIRQ -> plic@89
spi0: SPI.MPFS_SPI @ sysbus 0x20108000
IRQ -> plic@54
spi1: SPI.MPFS_SPI @ sysbus 0x20109000
IRQ -> plic@55
i2c0: I2C.MPFS_I2C @ sysbus 0x2010A000
IRQ -> plic@58
i2c1: I2C.MPFS_I2C @ sysbus 0x2010B000
IRQ -> plic@61
can0: CAN.MPFS_CAN @ sysbus 0x2010C000
IRQ -> plic@56
can1: CAN.MPFS_CAN @ sysbus 0x2010D000
IRQ -> plic@57
mac0: Network.CadenceGEM @ { sysbus 0x20110000; sysbus 0x28110000 }
IRQ -> plic@64 | u54_1@24 | u54_2@24
mac1: Network.CadenceGEM @ { sysbus 0x20112000; sysbus 0x28112000 }
IRQ -> plic@70 | u54_3@24 | u54_4@24
phy: Network.EthernetPhysicalLayer @ {
// this is a slight hack to enable testing on multiple physical configurations with a single repl
mac0 3;
mac0 4;
mac0 16;
mac1 3;
mac1 4;
mac1 9;
mac1 16
}
BasicStatus: 0x62A4
Id1: 0x0007
Id2: 0x0660
AutoNegotiationAdvertisement: 0x1e1
AutoNegotiationLinkPartnerBasePageAbility: 0x1e1
MasterSlaveControl: 0x300
MasterSlaveStatus: 0x3000
gpio0: GPIOPort.MPFS_GPIO @ sysbus 0x20120000
[0-13] -> plic@[13-26]
IRQ -> plic@51
gpio1: GPIOPort.MPFS_GPIO @ sysbus 0x20121000
[0-23] -> plic@[27-50]
IRQ -> plic@52
gpio2: GPIOPort.MPFS_GPIO @ sysbus 0x20122000
[0-31] -> plic@[13-44]
IRQ -> plic@53
wdog0: Timers.MPFS_Watchdog @ sysbus 0x20001000
frequency: 156250 //this value is estimated from the comments in the code
RefreshEnable -> plic@100 | e51@26
Trigger -> plic@105 | e51@25
wdog1: Timers.MPFS_Watchdog @ sysbus 0x20101000
frequency: 156250 //this value is estimated from the comments in the code
RefreshEnable -> plic@101 | u54_1@26
Trigger -> plic@106 | u54_1@25 | e51@24
wdog2: Timers.MPFS_Watchdog @ sysbus 0x20103000
frequency: 156250 //this value is estimated from the comments in the code
RefreshEnable -> plic@102 | u54_2@26
Trigger -> plic@107 | u54_2@25 | e51@23
wdog3: Timers.MPFS_Watchdog @ sysbus 0x20105000
frequency: 156250 //this value is estimated from the comments in the code
RefreshEnable -> plic@103 | u54_3@26
Trigger -> plic@108 | u54_3@25 | e51@22
wdog4: Timers.MPFS_Watchdog @ sysbus 0x20107000
frequency: 156250 //this value is estimated from the comments in the code
RefreshEnable -> plic@104 | u54_4@26
Trigger -> plic@109 | u54_4@25 | e51@21
rtc: Timers.MPFS_RTC @ sysbus 0x20124000
WakeupIRQ -> plic@80
MatchIRQ -> plic@81
mstimer: Timers.MPFS_Timer @ sysbus 0x20125000
Timer1IRQ -> plic@82
Timer2IRQ -> plic@83
envmCfg: MTD.MPFS_eNVM @ sysbus 0x20200000
memory: envmData
IRQ -> plic@84
envmData: Memory.MappedMemory @ sysbus 0x20220000
size: 0x20000
usb: USB.MPFS_USB @ sysbus 0x20201000
DmaIRQ -> plic@86
MainIRQ -> plic@87
l2Lim: Memory.MappedMemory @ sysbus 0x08000000
size: 0x02000000
l2ZeroDevice: Memory.MappedMemory @ sysbus 0x0A000000
size: 0x02000000
e51DTim: Memory.MappedMemory @ sysbus 0x01000000
size: 0x2000
e51Hart0ITim: Memory.MappedMemory @ sysbus 0x01800000
size: 0x2000
u54Hart1ITim: Memory.MappedMemory @ sysbus 0x01808000
size: 0x7000
u54Hart2ITim: Memory.MappedMemory @ sysbus 0x01810000
size: 0x7000
u54Hart3ITim: Memory.MappedMemory @ sysbus 0x01818000
size: 0x7000
u54Hart4ITim: Memory.MappedMemory @ sysbus 0x01820000
size: 0x7000
ddr: Memory.MappedMemory @ {
sysbus 0x80000000;
sysbus <0xC0000000, +0x10000000>;
sysbus <0xD0000000, +0x10000000>;
sysbus 0x1000000000;
sysbus 0x1400000000;
sysbus 0x1800000000
}
size: 0x40000000
pcie0: PCI.MPFS_PCIe @ sysbus 0x53004000
pcie1: PCI.MPFS_PCIe @ {
sysbus 0x53008000;
sysbus new Bus.BusMultiRegistration { address: 0x60000000; size: 0x20000000; region: "ecam" }
}
pcieRC0: PCI.PCIeRootComplex @ pcie0 0
parent: pcie1
pcieRC1: PCI.PCIeRootComplex @ pcie1 0
parent: pcie1
pcieMem: PCI.PCIeMemory @ pcie1 1
size: 0x20000
parent: pcie1
qspi: SPI.MPFS_QSPI @ sysbus 0x21000000
IRQ -> plic@85
pseFlash: SPI.Micron_MT25Q @ qspi
underlyingMemory: flash_mem
flash_mem: Memory.MappedMemory
size: 0x00800000
sysServices: Miscellaneous.MPFS_SystemServices @ sysbus 0x37020000
flashMemory: flash_mem
SerialNumberLower: 0x0123456789ABCDEF
SerialNumberUpper: 0x0123456789ABCDEF
IRQ -> plic@96
athena: Miscellaneous.Crypto.AthenaX5200 @ sysbus 0x22000000
// There are 8 BootRom registers covering range from 0x20003120 to 0x2000313F,
// but because of Renode's memory alignment limitations they are mapped as a single memory
sysregScbBootRom: Memory.MappedMemory @ sysbus 0x20003000
size: 0x1000
DDR_CTRLR: Miscellaneous.MPFS_DDRMock @ sysbus 0x3e001000
DDR_PHY: Miscellaneous.MPFS_DDRMock @ sysbus 0x20007000
SCB_DDR_PLL: Miscellaneous.MPFS_DDRMock @ sysbus 0x3e010000
DDRCFG: Miscellaneous.MPFS_DDRMock @ sysbus 0x20080000
sysbus:
init:
Tag <0x200020B8, 0x200020BB> "SYSREG:MESH_SEED_CR" 0xFF
Tag <0x20007000, 0x20007FFF> "CFG_DDR_SGMII_PHY"
Tag <0x20007208, 0x2000720B> "IOC_REG1" 0xFF
Tag <0x20007814, 0x20007817> "TRAINING_STATUS" 0xFF
Tag <0x20007808, 0x2000780B> "LANE_SELECT" 0
Tag <0x2000781C, 0x2000781F> "GT_ERR_COMB" 0
Tag <0x20007834, 0x20007837> "DQ_DQS_ERR_DONE" 0x8
Tag <0x2000784C, 0x2000784F> "DQDQS_WINDOW" 0x8
Tag <0x20007C20, 0x20007C23> "PVT_STAT" 0x4040
Tag <0x20080000, 0x2009FFFF> "DDRCFG"
Tag <0x20084428, 0x2008442B> "CSR_APB_MT_DONE_ACK" 0x1
Tag <0x20090034, 0x20090037> "CSR_APB_STAT_DFI_INIT_COMPLETE" 0x1
Tag <0x20090038, 0x2009003B> "CSR_APB_STAT_DFI_TRAINING_COMPLETE" 0x1
Tag <0x3E001004, 0x3E001007> "PLL:PLL_CTRL" 0x2000000
Tag <0x3E040008, 0x3E04000B> "IOSCB_IO_CALIB_DDR:IOC_REG1" 0xFF