Initial bancha support.

Bancha is reduction of sencha by combining the SEC+SMC and pruning some
peripherals. Kelvin remains unchanged.

Bypass-Presubmit-Reason: verified as part of topic

Change-Id: I69cc78b502033eba3b02d69f19606b6533d4b7a6
diff --git a/bancha.resc b/bancha.resc
new file mode 100644
index 0000000..09e14ad
--- /dev/null
+++ b/bancha.resc
@@ -0,0 +1,112 @@
+# Copyright 2024 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Renode script for testing the 2-core version of the Sencha platform
+
+$name?="bancha"
+
+using sysbus
+mach create $name
+
+include @sim/config/shodan_infrastructure/MpactCPU.cs
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.MpactCPU.MpactBaseCPU"
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.MpactCPU.MpactPeripheral"
+include @sim/config/shodan_infrastructure/MpactCheriotCPU.cs
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.MpactCPU.MpactCheriotCPU"
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.RiscV32"
+include @sim/config/shodan_infrastructure/KelvinCPU.cs
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.KelvinCPU"
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.MlTopControlBlock"
+#include @sim/config/shodan_infrastructure/SmcCheriotCPU.cs
+#include @sim/config/shodan_infrastructure/Mailbox.cs
+include @sim/config/shodan_infrastructure/AddressRangeStub.cs
+include @sim/config/shodan_infrastructure/MatchaI2S.cs
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.Sound.MatchaI2S"
+
+$repl_file ?= @sim/config/platforms/bancha.repl
+
+machine LoadPlatformDescription $repl_file
+
+$term_port?=3456
+emulation CreateServerSocketTerminal $term_port "term" false
+connector Connect uart5 term
+
+showAnalyzer "uart0-analyzer" sysbus.uart0 Antmicro.Renode.Analyzers.LoggingUartAnalyzer
+showAnalyzer "uart5-analyzer" sysbus.uart5 Antmicro.Renode.Analyzers.LoggingUartAnalyzer
+
+# Set the uarts host/virt timestamp format. Options: None, Virtual, Host, Full.
+uart0-analyzer TimestampFormat None
+uart5-analyzer TimestampFormat None
+
+cpu0 IsHalted true
+$cheriotLibrary ?= @out/cheriot/sim/librenode_mpact_cheriot.so
+sysbus.cpu0 CpuLibraryPath $cheriotLibrary
+
+# Load the boot rom into the 32k rom at 0x8000 (useVirtualAddress = false, allowLoadsOnlyToMemory = false)
+# Unlike the OT boot rom where cpu0 starts at the reset vecitor (@0x8080)
+# the PC is initialized to the ELF entry point.
+sysbus LoadELF @out/cheriot/bancha/boot_rom.elf false false cpu0
+
+# Override cli_port to enable the command line interface on the specified port.
+$cli_port?= 0
+$wait_for_cli ?= false
+sysbus.cpu0 CLIPort $cli_port
+sysbus.cpu0 WaitForCLI $wait_for_cli
+
+$tar ?= @out/cheriot/bancha/release/ext_flash.tar
+$spi_flash_load_address ?= 0x44000000
+$sc_bin ?= @out/cheriot/bancha/release/tmp/cheriot-firmware.bin
+$eflash_address ?= 0x20000000
+sysbus LoadBinary $sc_bin $eflash_address
+sysbus LoadBinary $tar $spi_flash_load_address
+#sysbus LoadSymbolsFrom $cheriot_elf
+
+# If we have a I2S peripheral, setup an audio file that we can use
+# for sampling data. Note that the format for these files is raw
+# sample data, left channel followed by right.
+$i2s_mic_audio_file     ?= @sim/config/shodan_infrastructure/test.raw
+$i2s_speaker_audio_file ?= @/tmp/speaker.raw
+
+# Uncomment these lines to enable audio
+i2s0 InputFile $i2s_mic_audio_file
+#i2s0 OutputFile $i2s_speaker_audio_file
+
+$kelvinLibrary ?= @out/kelvin/sim/librenode_kelvin.so
+sysbus.cpu2 CpuLibraryPath $kelvinLibrary
+# Start the vector core at address 0 of its instruction TCM.
+sysbus.cpu2 PC 0x80000000
+# Set the vector core to be less interactive to IO for faster execution
+$vector_core_mips ?= 1000
+sysbus.cpu2 PerformanceInMips $vector_core_mips
+
+# TOOD: enable for soundstream until model is properly packaged
+#$kelvin_bin?=@out/cheriot/sim/kelvin.bin
+#sysbus LoadBinary $kelvin_bin 0x5A000000
+
+# Start GDB and halt both cores so we can connect GDB before the bootrom has
+# started.
+# cpu2 does not support GDB. Please follow docs/KelvinIssDebugging.md to debug
+# Kelvin programs.
+$gdb_port?=3333
+#machine StartGdbServer $gdb_port false cpu0
+
+cpu0 IsHalted true
+cpu2 IsHalted true
+
+# Enable for instruction & memory profiling. Data are written to
+# $ROOTDIR/cache/renode/mpact_cheriot_renode* (to be fixed).
+cpu0 SymbolFile @out/cheriot/bancha/boot_rom.elf
+#cpu0 SymbolFile $cheriot_elf
+#cpu0 InstProfile true
+#cpu0 MemProfile true
diff --git a/platforms/bancha.repl b/platforms/bancha.repl
new file mode 100644
index 0000000..bc5e5e3
--- /dev/null
+++ b/platforms/bancha.repl
@@ -0,0 +1,429 @@
+//
+// Copyright (c) 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Bancha is derived from Sencha by combining the SEC+SMC
+// and pruning some peripherals. Kelvin remains unchanged.
+
+// NB: beware the OpenTitan boot_rom has the memory configuration built-in
+// NB: uart5 is a temporary hack until we switch the cheriot-rtos firmware
+//     to support OpenTitanUart
+
+using "sim/config/platforms/kelvin.repl"
+
+cpu0: MpactCPU.MpactCheriotCPU @ sysbus
+    id: 1
+    cpuType: "Mpact.Cheriot"
+    endianness: Endianess.LittleEndian
+    memoryBase: 0x10000000
+    memorySize: 0x400000
+    revocationMemoryBase: 0x10370000
+
+// TODO(sleffler): trim memory config
+ram_smc : MpactCPU.MpactPeripheral @ sysbus 0x10000000
+    size: 0x400000
+    baseAddress: 0x10000000
+    mpactCpu: cpu0
+
+// XXX temp 'cuz default uart in cheriot-rtos is not OT
+uart5: Antmicro.Renode.Peripherals.UART.TrivialUart @ sysbus 0x54000000
+
+// RAM_RET           [‘h4060_0000 - ‘h4060_0FFF)   4KB RAM for debug/retention
+ram_ret_aon: Memory.MappedMemory @ sysbus 0x40600000
+    size: 0x1000
+
+// ROM               [‘h0000_8000 - ‘h0000_FFFF)  32KB ROM for Security core secure boot code storage
+// XXX temporarily bump to 48K for bloat/hacks
+rom: Memory.MappedMemory @ sysbus 0x00008000
+    size: 0x0000b000
+
+// eFLASH            [‘h2000_0000 - ‘h200F_FFFF)  1MB eFlash for Security Core
+eflash: Memory.MappedMemory @ sysbus 0x20000000
+    size: 0x100000
+
+// UART0             [‘h4000_0000 - ‘h4000_0FFF)   4KB UART0 for Security Core
+uart0: UART.OpenTitan_UART @ sysbus 0x40000000
+    TxWatermarkIRQ -> plic@1
+    RxWatermarkIRQ -> plic@2
+    TxEmptyIRQ -> plic@3
+    RxOverflowIRQ -> plic@4
+    RxFrameErrorIRQ -> plic@5
+    RxBreakErrorIRQ -> plic@6
+    RxTimeoutIRQ -> plic@7
+    RxParityErrorIRQ -> plic@8
+    FatalAlert -> alert_handler@0
+
+// UART1             [‘h4001_0000 - ‘h4001_0FFF)   4KB UART1 (Reserved)
+uart1: UART.OpenTitan_UART @ sysbus 0x40010000
+    TxWatermarkIRQ -> plic@9
+    RxWatermarkIRQ -> plic@10
+    TxEmptyIRQ -> plic@11
+    RxOverflowIRQ -> plic@12
+    RxFrameErrorIRQ -> plic@13
+    RxBreakErrorIRQ -> plic@14
+    RxTimeoutIRQ -> plic@15
+    RxParityErrorIRQ -> plic@16
+    FatalAlert -> alert_handler@1
+
+// UART2             [‘h4002_0000 - ‘h4002_0FFF)   4KB UART2 for Vector Core
+uart2: UART.OpenTitan_UART @ sysbus 0x40020000
+    TxWatermarkIRQ -> plic@17
+    RxWatermarkIRQ -> plic@18
+    TxEmptyIRQ -> plic@19
+    RxOverflowIRQ -> plic@20
+    RxFrameErrorIRQ -> plic@21
+    RxBreakErrorIRQ -> plic@22
+    RxTimeoutIRQ -> plic@23
+    RxParityErrorIRQ -> plic@24
+    FatalAlert -> alert_handler@2
+
+// UART3             [‘h4003_0000 - ‘h4003_0FFF)   4KB UART3 (Reserved)
+uart3: UART.OpenTitan_UART @ sysbus 0x40030000
+    TxWatermarkIRQ -> plic@25
+    RxWatermarkIRQ -> plic@26
+    TxEmptyIRQ -> plic@27
+    RxOverflowIRQ -> plic@28
+    RxFrameErrorIRQ -> plic@29
+    RxBreakErrorIRQ -> plic@30
+    RxTimeoutIRQ -> plic@31
+    RxParityErrorIRQ -> plic@32
+    FatalAlert -> alert_handler@3
+
+// GPIO              [‘h4004_0000 - ‘h4004_0FFF)   4KB GPIO
+gpio: GPIOPort.OpenTitan_GPIO @ sysbus 0x40040000
+    IRQ -> plic@33
+    FatalAlert -> alert_handler@4
+
+// SPI_DEVICE        [‘h4005_0000 - ‘h4005_1FFF)   8KB SPI Device
+spi_device: SPI.OpenTitan_SpiDevice @ sysbus 0x40050000
+    FatalAlert -> alert_handler@5
+
+// SPI_HOST0         [‘h4006_0000 - ‘h4006_0FFF)   4KB SPI HOST 0
+spi_host0: SPI.OpenTitan_SpiHost@ sysbus 0x40300000
+    FatalAlert -> alert_handler@19
+    Error -> plic@131
+    SpiEvent -> plic@132
+    numberOfCSLines: 32
+
+extflash: SPI.Micron_MT25Q @ spi_host0 0
+    underlyingMemory: extflash_mem
+
+// SPI_HOST1         [‘h4007_0000 - ‘h4007_0FFF)   4KB SPI HOST 1
+spi_host1: SPI.OpenTitan_SpiHost@ sysbus 0x40310000
+    FatalAlert -> alert_handler@20
+    Error -> plic@133
+    SpiEvent -> plic@134
+    numberOfCSLines: 32
+
+// I2C0              [‘h4008_0000 - ‘h4008_0FFF)   4KB I2C0
+i2c0: I2C.OpenTitan_I2C @ sysbus 0x40080000
+    FatalAlert -> alert_handler@6
+
+// I2C1              [‘h4009_0000 - ‘h4009_0FFF)   4KB I2C1
+i2c1: I2C.OpenTitan_I2C @ sysbus 0x40090000
+    FatalAlert -> alert_handler@7
+
+// I2C2              [‘h400A_0000 - ‘h400A_0FFF)   4KB I2C2
+i2c2: I2C.OpenTitan_I2C @ sysbus 0x400A0000
+    FatalAlert -> alert_handler@8
+
+// PATGEN            [‘h400E_0000 - ‘h400E_0FFF)   4KB PATGEN
+
+// RV_TIMER          [‘h4010_0000 - ‘h4010_0FFF)   4KB RV Timer for Security Core
+timer: Timers.OpenTitan_Timer@ sysbus 0x40100000
+    frequency: 24000000
+    IRQ -> cpu0@7
+    FatalAlert -> alert_handler@10
+
+// XXX combine w/ timer or re-think
+clint: IRQControllers.CoreLevelInterruptor @ sysbus 0x02000000
+    frequency: 2000
+    [0, 1] ->cpu0@[3, 7]
+
+// USBDEV            [‘h4011_0000 - ‘h4011_0FFF)   4KB USBDEV
+// OTP_CTRL          [‘h4013_0000 - ‘h4013_3FFF)  16KB OTP Ctrl
+otp_ctrl: Miscellaneous.OpenTitan_OneTimeProgrammableMemoryController @ sysbus 0x40130000
+    FatalMacroAlert -> alert_handler@11
+    FatalCheckErrorAlert -> alert_handler@12
+    FatalBusAlert -> alert_handler@13
+    FatalPrimitiveOtpAlert -> alert_handler@14
+    RecoverablePrimitiveOtpAlert -> alert_handler@15
+    AValuesChain: "8638C62621EC19E8966416165252225F03B9C97821B7B107381030AB3D20AB124694BF85E417495A"
+    BValuesChain: "E679DF6E77EDDBECDE74B677DFF23AFFC3BFFB79B5FFFD87F930B4FB3F6BFF9A5F97BFD7FCBFE9FF"
+    CValuesChain: "0C1B73141BA20D421FD124302E8F443DE02C272E2CEEC1138DAD07CBD24A18F583A34D51A42A1E702A7E90F05A81D12E"
+    DValuesChain: "3E1FFB763FE3CDD61FF97735BEBF5CFDE5BDB7AFAEFEE19B9FBD9FCFD2EF3CF7CFEFFD53A7EE7FF36BFE92FDFA95F9AE"
+
+// LC_CTRL           [‘h4014_0000 - ‘h4014_0FFF)   4KB Life Cycle Ctrl
+lc_ctrl: Miscellaneous.OpenTitan_LifeCycleController @ sysbus 0x40140000
+    resetManager: rstmgr_aon
+    otpController: otp_ctrl
+    FatalProgAlert -> alert_handler@16
+    FatalStateAlert -> alert_handler@17
+    FatalBusAlert -> alert_handler@18
+    DeviceId: "BF5EA92044DAC540CFD1A00105568DFA97D9C35EA0407D71320B5E0434DB637F"
+    TestExitToken: "000102030405060708090A0B0C0D0E0F"
+    TestUnlockToken: "79DEF38F41A9B895F6BDF341BEADA9B6"
+    RMAToken: "4D89B62D287CB957C2500042306DFD57"
+
+// ALERT_HANDLER     [‘h4015_0000 - ‘h4015_0FFF)   4KB Alert Handler Ctrl
+alert_handler: Miscellaneous.OpenTitan_AlertHandler @ sysbus 0x40150000
+    ClassAInterrupt -> plic@127
+    ClassBInterrupt -> plic@128
+    ClassCInterrupt -> plic@129
+    ClassDInterrupt -> plic@130
+
+// PWRMGR_AON        [‘h4040_0000 - ‘h4040_0FFF)   4KB Power Manger Control
+pwrmgr_aon: Miscellaneous.OpenTitan_PowerManager@ sysbus 0x40400000
+    resetManager: rstmgr_aon
+    FatalAlert -> alert_handler@22
+
+// RSTMGR_AON        [‘h4041_0000 - ‘h4041_0FFF)   4KB Reset Manger Control
+rstmgr_aon: Miscellaneous.OpenTitan_ResetManager @ sysbus 0x40410000
+    resetPC: 0x00008084
+    FatalAlert -> alert_handler@23
+    FatalConsistencyAlert -> alert_handler@24
+    init:
+        MarkAsSkippedOnLifeCycleReset sysbus.rstmgr_aon
+        MarkAsSkippedOnLifeCycleReset sysbus.pwrmgr_aon
+        MarkAsSkippedOnSystemReset sysbus.rstmgr_aon
+        MarkAsSkippedOnSystemReset sysbus.pwrmgr_aon
+        MarkAsSkippedOnSystemReset sysbus.flash_ctrl
+        MarkAsSkippedOnLowPowerExitReset sysbus.rstmgr_aon
+        MarkAsSkippedOnLowPowerExitReset sysbus.pwrmgr_aon
+        MarkAsSkippedOnLowPowerExitReset sysbus.timer_aon
+        MarkAsSkippedOnLowPowerExitReset sysbus.ram_ret_aon
+
+// CLKMGR_AON        [‘h4042_0000 - ‘h4042_0FFF)   4KB Clock Manger Control
+clock_manager: Miscellaneous.OpenTitan_ClockManager @ sysbus 0x40420000
+    otbn: otbn
+
+// SYSRST            ['h4043_0000 - 'h4043_0FFF]   4KB System Reset Control
+sysrst_ctrl: Miscellaneous.OpenTitan_SystemResetControl @ sysbus 0x40430000
+    resetManager: rstmgr_aon
+    FatalFault -> alert_handler@27
+
+// ADCMGR_AON        [‘h4044_0000 - ‘h4044_0FFF)   4KB ADC
+
+// The OpenTitan bootrom will error out if pinmux registers are locked,
+// so we work around that by stubbing out the pinmux range to return
+// 0xFFFFFFFF which means "unlocked"
+
+// PINMUX            [‘h4046_0000 - ‘h4046_0FFF)   4KB PINMUX
+pinmux_stub : AddressRangeStub @ sysbus 0x40460000
+    size: 0x1000
+    value: 0xFFFFFFFF
+
+// AON_TIMER         [‘h4047_0000 - ‘h4047_0FFF)   4KB AON_TIMER
+timer_aon: Timers.OpenTitan_AonTimer @ sysbus 0x40470000
+    powerManager: pwrmgr_aon
+    resetManager: rstmgr_aon
+    FatalAlert -> alert_handler@31
+    WakeupTimerExpired -> plic@155
+    WatchdogTimerBark -> plic@156
+
+// AST               [‘h4048_0000 - ‘h4048_0FFF)   4KB AST
+// SENSOR_CTRL       [‘h4049_0000 - ‘h4049_0FFF)   4KB Sensor Ctrl  (Details need to be added for mic/cam interface)
+// SRAM_CTRL_RET_AON [‘h4050_0000 - ‘h4050_0FFF)   4KB AON RET_SRAM Ctrl
+
+// Simulated SRAM used to indicate test status to simulator
+swteststatus: Miscellaneous.OpenTitan_VerilatorSwTestStatus @ sysbus 0x411f0080
+
+// FLASH_CTRL_CORE   [‘h4100_0000 - ‘h4100_0FFF)   4KB Flash Control
+flash_ctrl: MTD.OpenTitan_FlashController @ sysbus 0x41000000
+    flash: eflash
+    ProgramEmptyIRQ -> plic@159
+    ProgramLevelIRQ -> plic@160
+    ReadFullIRQ -> plic@161
+    ReadLevelIRQ -> plic@162
+    OperationDoneIRQ -> plic@163
+    CorrectableErrorIRQ -> plic@164
+    RecoverableAlert -> alert_handler@35
+    FatalStandardAlert -> alert_handler@36
+    FatalAlert -> alert_handler@37
+    FatalPrimitiveFlashAlert -> alert_handler@38
+    RecoverablePrimitiveFlashAlert -> alert_handler@39
+
+// RV_PLIC           [‘h4800_0000 - ‘h5000_0000) 128MB RV PLIC
+// XXX requires OT plic driver?
+plic: IRQControllers.OpenTitan_PlatformLevelInterruptController @ sysbus 0x48000000
+    // Numbers on the left (0 ->) index PLIC GetGPIOs.
+    //
+    // Numbers on the right reference bits in the target MIP.
+    // Bit 11 corresponds MEIP and bit 9 to SEIP.
+    0 -> cpu0@11
+    FatalAlert -> alert_handler@41
+    numberOfSources: 191
+    numberOfContexts: 1
+//    prioritiesEnabled: false // XXX
+
+// AES               [‘h4110_0000 - ‘h4110_0FFF)   4KB AES Control
+aes: Miscellaneous.OpenTitan_AES @ sysbus 0x41100000
+    UpdateErrorAlert -> alert_handler@42
+    FatalFaultAlert -> alert_handler@43
+
+// HMAC              [‘h4111_0000 - ‘h4111_0FFF)   4KB HMAC Control
+hmac: Miscellaneous.OpenTitan_HMAC @ sysbus 0x41110000
+    FatalAlert -> alert_handler@44
+
+// KMAC              [‘h4112_0000 - ‘h4112_0FFF)   4KB KMAC Control
+kmac: Miscellaneous.OpenTitan_KMAC @ sysbus 0x41120000
+    KmacDoneIRQ -> plic@168
+    FifoEmptyIRQ -> plic@169
+    KmacErrorIRQ -> plic@170
+    RecoverableAlert -> alert_handler@45
+    FatalAlert -> alert_handler@46
+
+// OTBN              ['h4113_0000 - 'h4113_FFFF)  64KB OTBN
+otbn: Miscellaneous.OpenTitan_BigNumberAccelerator @ sysbus 0x41130000
+    DoneIRQ -> plic@171
+    FatalAlert -> alert_handler@47
+    RecoverableAlert -> alert_handler@48
+
+// KEYMGR            [‘h4114_0000 - ‘h4114_0FFF)   4KB KEY Manager
+keymgr: Miscellaneous.OpenTitan_KeyManager @ sysbus 0x41140000
+    aes: aes
+    kmac: kmac
+    romController: rom_ctrl
+    deviceId: "BF5EA92044DAC540CFD1A00105568DFA97D9C35EA0407D71320B5E0434DB637F"
+    lifeCycleDiversificationConstant: "2F1A43C03DD4FF9B887AB7521CA6CBD8"
+    creatorKey: "9152E32C9380A4BCC3E0AB263581E6B0E8825186E1E445631646E8BEF8C45D47"
+    ownerKey: "FA365DF52DA48CD752FB3A026A8E608F0098CFE5FA9810494829D0CD9479EB78"
+    rootKey: "EFB7EA7EE90093CF4AFFD9AAA2D6C0EC446CFDF5F2D5A0BFD7E2D93EDC63A10256D24A00181DE99E0F690B447A8DDE2A1FFB8BC306707107AA6E2410F15CFC37"
+    softOutputSeed: "3DAAEF20E285FA658FDD1B426C037151B16C8D444C444F396F4479CB795CF94B"
+    hardOutputSeed: "9E409D18381BD5D56821E2985E47997105C4900F255574675985B210E1A968E4"
+    destinationAesSeed: "5E5B35E460FDAF1FF382AB0195E33689D99BCEBF2B79B6839264EDF4DE2B39F3"
+    destinationKmacSeed: "94059891A38BD1D16C763BBD90347E58152D7FCA9938036525AAA3F89E3DE8F1"
+    destinationOtbnSeed: "278645E11D7CAC76310205E19CD3F2ED294A279F3C6D0649A905CC9B10A67A16"
+    destinationNoneSeed: "7A9E0F6E3D591A7FD8C7BA264AF78F28AEE0D28E4D638D95D1806E870336CD96"
+    revisionSeed: "414C190AD0A09D144FFC0C0FEA081CEF945B641F096B9F3E9A494BA35FCFEF0D"
+    creatorIdentitySeed: "FB223E8AB704F249EE3FA822276C45E588ED40CF52C8FAE2D054A71149771822"
+    ownerIntermediateIdentitySeed: "2EC37360E23D4DDA559ADABCF099937FEBBF048FAC328BA1BDEE0CACA987BE4A"
+    ownerIdentitySeed: "4ABF486B16740B20BC32B13FF07A13FF21CE605E0AC019858F73D707CD0EC1D3"
+    OperationDoneIRQ -> plic@172
+    RecoverableAlert -> alert_handler@49
+    FatalAlert -> alert_handler@50
+
+// CSRNG             [‘h4115_0000 - ‘h4115_0FFF)   4KB CSRNG  (Cryptographically Secure Random Number Generator) Control
+csrng: Miscellaneous.OpenTitan_CSRNG @ sysbus 0x41150000
+    entropySource: entropy_src
+    RequestCompletedIRQ -> plic@173
+    EntropyeRequestedIRQ -> plic@174
+    HardwareInstanceIRQ -> plic@175
+    FatalErrorIRQ -> plic@176
+    RecoverableAlert -> alert_handler@51
+    FatalAlert -> alert_handler@52
+
+// ENTROPY_SRC       [‘h4116_0000 - ‘h4116_0FFF)   4KB ENTROPY SRC control
+entropy_src: Miscellaneous.OpenTitan_EntropySource @ sysbus 0x41160000
+    RecoverableAlert -> alert_handler@53
+    FatalAlert -> alert_handler@54
+    EsEntropyValidIRQ -> plic@177
+    EsHealthTestFailedIRQ -> plic@178
+    EsObserveFifoReadyIRQ -> plic@179
+    EsFatalErrIRQ -> plic@180
+
+// EDN0              [‘h4117_0000 - ‘h4117_0FFF)   4KB EDN0
+edn0: Miscellaneous.OpenTitan_EntropyDistributionNetwork @ sysbus 0x41170000
+    cryptoRandomGenerator: csrng
+    RecoverableAlert -> alert_handler@55
+    FatalAlert -> alert_handler@56
+    CommandRequestDone -> plic@181
+    FatalError -> plic@182
+
+// EDN1              [‘h4118_0000 - ‘h4118_0FFF)   4KB EDN1
+edn1: Miscellaneous.OpenTitan_EntropyDistributionNetwork @ sysbus 0x41180000
+    cryptoRandomGenerator: csrng
+    RecoverableAlert -> alert_handler@57
+    FatalAlert -> alert_handler@58
+    CommandRequestDone -> plic@183
+    FatalError -> plic@184
+
+// SRAM_CTRL_MAIN    [‘h411C_0000 - ‘h411C_0FFF)   4KB SRAM Control
+sram_ctrl: MemoryControllers.OpenTitan_SRAMController @ sysbus 0x411c0000
+    FatalError -> alert_handler@59
+
+// ROM_CTRL          [‘h411E_0000 - ‘h411E_0FFF)   4KB ROM Control
+rom_ctrl: MemoryControllers.OpenTitan_ROMController @ sysbus 0x411e0000
+    rom: rom
+    nonce: "D7C90B2B3C3EF8B3"
+    key: "80C4E835FB113AAD6D7DCA2F2C7D9BF2"
+    FatalAlert -> alert_handler@60
+
+// RV_CORE_IBEX      [‘h411F_0000 - ‘h411F_0FFF)   4KB RV Core Ibex
+
+// Flash/MRAM        [‘h4400_0000 - ‘h47FF_FFFF)  64MB External Non-Volatile Memory
+extflash_mem: Memory.MappedMemory @ sysbus 0x44000000
+    size: 0x04000000
+
+// TOP_MATCHA_I2S0_BASE_ADDR @ top_matcha.h
+// I2S0              ['h5410_0000 - 'h5410_0040)  64B registers
+i2s0 : Sound.MatchaI2S @ sysbus 0x54100000
+    TxWatermarkIRQ -> plic@39       // kTopMatchaPlicIrqIdI2s0TxWatermark @ top_matcha.h
+    RxWatermarkIRQ -> plic@40       // kTopMatchaPlicIrqIdI2s0RxWatermark @ top_matcha.h
+    TxEmptyIRQ -> plic@41           // kTopMatchaPlicIrqIdI2s0TxEmpty @ top_matcha.h
+    RxOverflowIRQ -> plic@42        // kTopMatchaPlicIrqIdI2s0RxOverflow @ top_matcha.h
+
+ml_top_controlblock :
+    HostReqIRQ -> plic@33
+    FinishIRQ -> plic@34
+    InstructionFaultIRQ -> plic@35
+
+// ISP               [‘h4200_0000 - ‘h4200_FFFF)  64KB ISP registers
+// DMA Ctrl          [‘h4201_0000 - ‘h4201_FFFF)  64KB DMA control interface
+// DSP Ctrl          [‘h4202_0000 - ‘h4202_FFFF)  64KB Audio DSP control interface
+
+// Tag memory for debugging
+sysbus:
+    init:
+        Tag <0x40000000 0x1000> "OPENTITAN_EARLGREY_DEV_UART0"
+        Tag <0x40010000 0x1000> "OPENTITAN_EARLGREY_DEV_UART1"
+        Tag <0x40020000 0x1000> "OPENTITAN_EARLGREY_DEV_UART2"
+        Tag <0x40030000 0x1000> "OPENTITAN_EARLGREY_DEV_UART3"
+        Tag <0x40040000 0x1000> "OPENTITAN_EARLGREY_DEV_GPIO"
+        Tag <0x40050000 0x2000> "OPENTITAN_EARLGREY_DEV_SPI_DEVICE"
+        Tag <0x40060000 0x1000> "OPENTITAN_EARLGREY_DEV_SPI_HOST0"
+        Tag <0x40070000 0x1000> "OPENTITAN_EARLGREY_DEV_SPI_HOST1"
+        Tag <0x40080000 0x1000> "OPENTITAN_EARLGREY_DEV_I2C0"
+        Tag <0x40090000 0x1000> "OPENTITAN_EARLGREY_DEV_I2C1"
+        Tag <0x400A0000 0x1000> "OPENTITAN_EARLGREY_DEV_I2C2"
+        Tag <0x400E0000 0x1000> "OPENTITAN_EARLGREY_DEV_PATTGEN"
+        Tag <0x40100000 0x1000> "OPENTITAN_EARLGREY_DEV_RV_TIMER"
+        Tag <0x40110000 0x1000> "OPENTITAN_EARLGREY_DEV_USBDEV"
+        Tag <0x40130000 0x4000> "OPENTITAN_EARLGREY_DEV_OTP_CTRL"
+        Tag <0x40140000 0x1000> "OPENTITAN_EARLGREY_DEV_LC_CTRL"
+        Tag <0x40150000 0x1000> "OPENTITAN_EARLGREY_DEV_ALERT_HANDLER"
+        Tag <0x40400000 0x1000> "OPENTITAN_EARLGREY_DEV_PWRMGR_AON"
+        Tag <0x40410000 0x1000> "OPENTITAN_EARLGREY_DEV_RSTMGR_AON"
+        Tag <0x40420000 0x1000> "OPENTITAN_EARLGREY_DEV_CLKMGR_AON"
+        Tag <0x40440000 0x1000> "OPENTITAN_EARLGREY_DEV_ADC_CTRL_AON"
+        Tag <0x40460000 0x1000> "OPENTITAN_EARLGREY_DEV_PINMUX_AON"
+        Tag <0x40470000 0x1000> "OPENTITAN_EARLGREY_DEV_AON_TIMER_AON"
+        Tag <0x40480000 0x1000> "OPENTITAN_EARLGREY_DEV_AST"
+        Tag <0x40490000 0x1000> "OPENTITAN_EARLGREY_DEV_SENSOR_CTRL_AON"
+        Tag <0x40500000 0x1000> "OPENTITAN_EARLGREY_DEV_SRAM_CTRL_RET_AON"
+        Tag <0x41000000 0x1000> "OPENTITAN_EARLGREY_DEV_FLASH_CTRL"
+        Tag <0x41200000 0x1000> "OPENTITAN_EARLGREY_DEV_RV_DM"
+        Tag <0x48000000 0x8000000> "OPENTITAN_EARLGREY_DEV_RV_PLIC"
+        Tag <0x41100000 0x1000> "OPENTITAN_EARLGREY_DEV_AES"
+        Tag <0x41110000 0x1000> "OPENTITAN_EARLGREY_DEV_HMAC"
+        Tag <0x41120000 0x1000> "OPENTITAN_EARLGREY_DEV_KMAC"
+        Tag <0x41130000 0x10000> "OPENTITAN_EARLGREY_DEV_OTBN"
+        Tag <0x41140000 0x1000> "OPENTITAN_EARLGREY_DEV_KEYMGR"
+        Tag <0x41150000 0x1000> "OPENTITAN_EARLGREY_DEV_CSRNG"
+        Tag <0x41160000 0x1000> "OPENTITAN_EARLGREY_DEV_ENTROPY"
+        Tag <0x41170000 0x1000> "OPENTITAN_EARLGREY_DEV_EDN0"
+        Tag <0x41180000 0x1000> "OPENTITAN_EARLGREY_DEV_EDN1"
+        Tag <0x411C0000 0x1000> "OPENTITAN_EARLGREY_DEV_SRAM_CTRL"
+        Tag <0x411E0000 0x1000> "OPENTITAN_EARLGREY_DEV_ROM_CTRL"
+        Tag <0x411F0000 0x1000> "OPENTITAN_EARLGREY_DEV_RV_CORE_IBEX"