:name: HPS
:description: This script runs the HPS Demo

$name?="matcha"

using sysbus
mach create $name
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.RiscV32"
include @sim/config/shodan_infrastructure/SpringbokRiscV32.cs
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.SpringbokRiscV32"
EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.SpringbokRiscV32_ControlBlock"
include @sim/config/shodan_infrastructure/SmcRiscV32.cs
include @sim/config/shodan_infrastructure/OpenTitan2_UART.cs
include @sim/config/shodan_infrastructure/Mailbox.cs
include @sim/config/shodan_infrastructure/AddressRangeStub.cs
include @sim/config/shodan_infrastructure/CamCtrl.cs
include @sim/config/shodan_infrastructure/DoubleBufferDMA.cs
include @sim/config/shodan_infrastructure/NetUart.cs

machine LoadPlatformDescription @sim/config/platforms/hps.repl

cam_i2c.camera AddFrame @out/springbok_iree/quant_models/hps_0_quant_input
cam_i2c.camera AddFrame @out/springbok_iree/quant_models/hps_1_quant_input
cam_i2c.camera AddFrame @out/springbok_iree/quant_models/hps_2_quant_input
cam_i2c.camera AddFrame @out/springbok_iree/quant_models/hps_3_quant_input
cam_i2c.camera AddFrame @out/springbok_iree/quant_models/hps_4_quant_input
cam_i2c.camera AddFrame @out/springbok_iree/quant_models/hps_5_quant_input

$term_port?=3456
emulation CreateServerSocketTerminal $term_port "term" false
connector Connect uart5 term
# for a client, bash users may consider this inline script:
#
# stty sane -echo -icanon; socat TCP:localhost:$term_port -; stty sane
#
# tmux users may consider adding a binding to ~/.tmux.conf
#
# bind-key k split-window "stty -echo -icanon; socat TCP:localhost:$term_port -"

# Hook up the analyzers to the uarts so we can see their output in the main
# Renode log
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 bootrom into the 32k rom at 0x8000 (useVirtualAddress = false, allowLoadsOnlyToMemory = true)
sysbus LoadELF @out/shodan_boot_rom/multihart_boot_rom/multihart_boot_rom.elf false true cpu0

# Load the tarball of Tock on SEC, Tock on SMC, and HPS model.
$tar ?= @out/hps_ext_flash_release.tar
sysbus LoadBinary $tar 0x44000000

# Start cpu0 at the bootrom entry point.
sysbus.cpu0 PC 0x8090

# Start the vector core at address 0 of its instruction TCM.
sysbus.cpu2 PC 0x34000000
# 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.
$gdb_port?=3333
machine StartGdbServer $gdb_port false cpu0
machine StartGdbServer $gdb_port false cpu1
machine StartGdbServer $gdb_port false cpu2

cpu0 IsHalted true
cpu1 IsHalted true
cpu2 IsHalted true
