blob: a9ced9dad648306caff6ae3659397d40a141f2b4 [file] [log] [blame]
# 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 3-core version of the Sancha platform
$name?="sencha"
using sysbus
mach create $name
include @sim/config/shodan_infrastructure/MpactCheriotCPU.cs
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.MpactCPU.MpactCheriotCPU"
include @sim/config/shodan_infrastructure/MpactCheriotPeripheral.cs
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.MpactPeripheral.MpactCheriotPeripheral"
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/sencha.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
# Load the boot rom into the 32k rom at 0x8000 (useVirtualAddress = false, allowLoadsOnlyToMemory = true)
sysbus LoadELF @out/matcha/hw/boot_rom.elf false true cpu0
# Start cpu0 at the bootrom reset vector, which is stored immediately after the
# bootrom interrupt vector table at 0x8080.
# (see https://ibex-core.readthedocs.io/en/latest/03_reference/exception_interrupts.html for details)
sysbus.cpu0 PC 0x8080
cpu1 IsHalted true
$cheriotLibrary ?= @out/cheriot/sim/librenode_mpact_cheriot.so
sysbus.cpu1 CpuLibraryPath $cheriotLibrary
# Setup ram_smc to coordinate with cpu1
sysbus.ram_smc CpuLibraryPath $cheriotLibrary
sysbus.ram_smc Start
$tar ?= @out/cantrip/shodan/release/ext_flash.tar
$spi_flash_load_address ?= 0x44000000
$sc_bin ?= @out/cantrip/shodan/release/tmp/matcha-tock-bundle.bin
$eflash_address ?= 0x20000000
sysbus LoadBinary $tar $spi_flash_load_address
sysbus LoadBinary $sc_bin $eflash_address
#sysbus LoadSymbolsFrom $kernel
# 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
# 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
machine StartGdbServer $gdb_port false cpu1
cpu0 IsHalted true
cpu1 IsHalted true
cpu2 IsHalted true