For installation instructions, see the README.
Added and improved architecture support:
-
ARM:
- added initial support for ARM Helium M-Profile Vector Extension (MVE) along with exposing the registers to GDB
- added support for FPv5 in ARMv8-M along with exposing registers to GDB
- added support for Cortex-M55
- added support for the RNDR system register, which can be enabled on cores that don't support it in hardware using
cpu EnableRNDR true- this may be helpful for Linux RNG initialization, for example
- added initial Cortex-R52 system register support for Trace32 and GDB
- extended Cortex-R52 system register support with 64-bit CP14/15 registers
- added basic support for
IMP_xTCMREGIONRregisters - added support for accessing GIC and Timer system registers from GDB
- added support for enabling and disabling TCM at given EL
- enabled use of secure memory access in PC and SP initialization for Cortex-M
- for ARMv8.2 platforms, GIC no longer ignores Aff0
- the full
cpuIdneeds to be specified as a local interrupt target (e.g.gic#1@26needs to be changed togic#0x100@26), for CPU withcpuId: 0x100.
- the full
- improved Cortex-R52 system register GDB tests
- fixed ARMv8-M Thumb2 data processing instructions
- fixed Cortex-M bus isolation tests
- fixed Stack Pointer bits [1-0] handling on Cortex-M
- fixed Cortex-R52 execution tracing disassembly
- fixed setting and getting the
FPSCRCortex-M register - fixed
SRSinstruction - fixed load/store exclusive correctness issues
- fixed ARM
vcvtpdecoding - fixed wrong exception being raised when FPU is disabled on Cortex-M
- fixed
VCVTB/VCVTTissues on 32-bit ARM
-
RISC-V:
- added a stub of
Sscofpmfextension - added tracing of
Zaamooperand contents - added
clmul,clmulhandclmulrRISC-V instructions - fixed the behavior of several instructions from the
ZbaandZbbRISC-V extensions - fixed half precision floating point instructions so that they respect rounding mode in
frmand reflect set exception flags infflags - fixed
lr/sccorrectness issues - added missing RISC-V
rv32bandrv64bextension opcodes toopcodesFilesMap - added support for external RISC-V PMP implementations
- added a mechanism for ensuring that memory access outside of the physical address space on RISC-V are handled
- added a stub of RV32-only
mstatushCSR - added a warning when software attempts to set unsupported data access endianess
- increased RISC-V physical address space size from 50 to 56 bits
- added the ability to inspect
fflags,frmandfcsrunprivileged floating point CSRs from GDB and the Monitor - added support for core internal interrupts
- added a
PreStackAccessHookfunctionality - fixed RISC-V
mtvec/stvecCSR values when accessing them through the Monitor - fixed various vector instructions
- fixed RISC-V PMP not being properly set after machine reset
- fixed overly aggressive cached translation block matching
- added a stub of
-
x86/x86-64:
- added initial x86-64 KVM-based CPU support with enabled GDB debugging
-
Xtensa:
- added experimental assembler and disassembler for Xtensa
Added and improved platform descriptions:
-
Egis ET171
-
FocalTech FT9001
-
ZynqMP
-
NXP S32K388
-
NXP MIMXRT700-EVK
-
X86_64KVM CPU
-
Tock VeeR EL2 Sim platform
-
Nuvoton NPCX9 OTPI ROM function mocks
-
Added alternative timer function handling in:
- STM32F0
- STM32F4
- STM32F103
- STM32F746
- STM32G0
- STM32H743
- STM32L151
- STM32L552
- STM32WBA52
-
Added individual interrupt signals in:
- STM32F0
- STM32F103
- STM32F4
- STM32F746
- STM32G0
- STM32L552
- STM32WBA52
Added demos and tests:
- EFR32xG24 running railtest
- Nucleo H753ZI running the Zephyr net/ptp sample
- i386_64-bios test and sample
- i386_64-linux test and sample
- Egis ET171 Zephyr tests and script
- RenesasRZ/G2L OpenAMP demo
- Nucleo H753ZI running the Hubris kernel
- X86_64 KVM Linux on VirtIO test and sample
- FocalTech FT9001 running Zephyr and ChromeOS EC Fingerprint software
- demo and tests for MIMXRT700-EVK running hello_world, shell_module, philosophers and I2S Zephyr samples
- reverse execution demo
- basic Cortex-R52 execution tracer disassembly test
- ARM FPv5 unit tests
sync_pctest for Cortex-A53- round-trip assembly/disassembly test for Cortex-R52
- test checking for
SRS/RFEARM guest Renode crashes - opcodes counting test for the RISC-V B extension
- Ethernet test on ZynqMP with SMMUv3
- STM32H7 Flash erase and program test
- VeeR EL2 PIC tests
- sysbus
overridePeripheralAccessestags tests - sysbus
silenttags tests - test suite for the auto-save functionality
GuestCacheAnalyzertestsuite- test infrastructure for
riscv-testsunit tests
Added features:
-
Renode server mode for WebSocket communication, along with a TypeScript API library
-
support for multiple *.cs files provided for ad-hoc compilation
-
support for unsafe code during ad-hoc compilation
-
optional TCG ops backtrace in debug mode on Linux
-
optional
overridePeripheralAccessesparameter for sysbus tags -
optional
silentparameter for sysbus tags -
peripheral access profiling in host time
-
readline-like key bindings
-
forward search in the terminal after pressing C-s
-
text selection in the terminal by word/line on double/triple click
-
system bus access via the External Control API
-
auto-save mechanism, used e.g. for backward debugging, along with an option to load the latest snapshot
-
support for the
reverse-continueGDB command -
support for the
reverse-stepiGDB command -
ability to preserve configuration across emulation reload
-
handling of Trace32's batched register requests
-
creating unlimited number of external MMU regions at runtime
-
ability to place the external MMU before or after the CPU's internal MMU
-
shadow reload and shadow registers API
-
mechanism for loading SFDP data for SPI flash
-
common mechanism of encoding and decoding SFDP via Packets
-
loading gzip-compressed files using
DataStorage(VirtIOBlockdevice,SDCard,USBPendrive,CDROM,SamsungK9NANDFlash) -
IADCextension for setting/getting channel values in volts -
support for NV12 pixel format in VideoAnalyzer
-
new data transmission and routing events for UART hub
-
support for custom underlying types in UART
-
support for delaying UART transmissions
-
API to disconnect co-simulated blocks
-
exitTimeoutoption for co-simulation connection termination -
support for passing arrays to property and field setters in the Monitor
-
support for providing peripheral references to field and property setters
-
exportsub-command to theperipheralscommand -
specifying enum values in repl using just
.Valuewithout the full namespace/type name -
support for
ForEachandSelecton enumerables in the Monitor- for example
cluster0 ForEach PC 0x8000orqspi.spiFlash SFDPSignature Select ToString "x4"
- for example
-
support for passing lists as property/argument values in platform descriptions
-
preinitattribute in repl, executed before any peripherals from the description being loaded are created- useful to load ad-hoc models from the platform description level
-
Execution Tracer can now accept arbitrary pc-to-line mappings in the absence of DWARF data
-
logging of peripheral register names in unhandled access warnings of
BasicDoubleWordPeripheral
Changed:
-
./renodenow defaults to dotnet -
formatted Renode code and added autoformat rules
-
dotnet is now a default runtime, use the --mono flag to target an old runtime
-
changed the Windows installer for the .NET version of Renode
-
allowed delaying invalidation of translation blocks on writes
-
optimized memory accesses
-
optimized HST based atomics for single core machines
-
renamed several x86 and x86-64 demos:
- acrn_x86_64_zephyr demo to acrn_x86_64-zephyr
- i386-kvm platform to x86-kvm
- i386-kvm-bios demo to x86-kvm-bios
- i386-kvm-linux demo to x86-kvm-linux - i386 platform and demo to x86
- i386_64-kvm platform to x86_64-kvm
- i386_64-kvm-bios demo to x86_64-kvm-bios
- i386_64-kvm-linux demo to x86_64-kvm-linux
- i386_zephyr demo to x86-zephyr
-
set dotnet as default target in VS Code tasks
-
renamed
EnableRiscvOpcodesCountingtoEnableRiscvOpcodesCountingByExtension -
local interrupt targets now accept hexadecimal values (syntax-
->peripheral@0x1@1) -
moved from Gtk2 to Gtk3 on Mono
-
removed support for Conda package
-
Align,Offet,PaddingBeforeandWidthpacket field attributes should now only be used with named arguments -
improved TCG backtrace debug printing
-
changed timeout measuring to only include the pause command in pause-without-sleep.robot
-
if GNU
parallelis installed, tlib will be built in parallel -
renamed
NEORV32_MachineSystemTimertoRiscVMachineTimer -
changed
ClockEntryfrequency type to ulong -
renamed
IMXRT700_eDMAtoNXP_eDMA -
improved and simplified
PixelManipuationToolsblending and conversion -
GPIO connectors now detach their connections on machine disposal
-
reverse search in terminal now ignores duplicate entries
Fixed:
- GIC crashing the simulation when parsing SGI
InterruptEnd - handling of large (>8 bytes) writes to the bus
- hook addresses in NPCX9 bootrom for Thumb mode
- Monitor crashing when setting a variable
- GDB integration on address translation failure
- infinitely growing dirty addresses list
- parsing of IPv6 frame headers
- serialization of RESD-enabled peripherals
- various freezes appearing when single stepping on multicore platforms
- CPU registration in clusters
- crash on older arm64 hosts (e.g. Raspberry Pi 4)
- PeakRDL-renode generating incorrect register reset values
- conversion related warnings generated by PeakRDL-renode
- initial state for APB3 Requester, now the state is initialized only in reset
- crash when loading `.gz` snapshots
- WebSocket exec-renode action
- deadlock when trying to register peripheral in an unregistered parent
- exception message for registration conflict
- renode-models-analyzer skipping peripherals on partial register/field overlap
- TCG buffer overflow
- CPU symbol hooks not querying per-CPU loaded symbols
- crash when
TranslationCPU.Disposeis called multiple times policykitdependency for Debian packages- ending/deactivating interrupts in GIC for non-SGI interrupts without provided
cpuId - GIC occasionally ignoring affinity bits above the first meaningful byte, when registering CPUs
- KVM CPU abort on
EINTRin initialization - occasional null reference exception in DPI integration library
- possible timer event loss between
kvm_runcalls - race condition when interrupting KVM core execution
- file descriptor leakage on KVM cores
- handling of abstract class construction in platform string
- handling of non-existent
DataStoreimage files - handling of unregistered domain thread for
RunForcommand - handling recursive substitution in
ExecutionTracer - printing sources with .NET ad-hoc compilation diagnostics
- single-step mode persisting on KVM cores
- sysbus not respecting registration offsets
- fixed race on access to
ContextKeyDictionaryinSystemBus - crash when loading empty string with
LoadPlatformDescriptionFromString - race condition when initialising LLVM disassemblers
CoSimulationConnectionstate afterDisconnectAll- SystemC Plugin compilation with MSVC
- compilation on .NET 10
Added peripheral models:
- Andes ATCGPIO100
- Andes ATCPIT100
- Andes ATCSPI200
- Andes ATCWDT200
- ARM SMMUv3 (System Memory Management Unit v3)
- Allegro E310 video encoder
- Cadence USB stub
- eDMA for i.MX RT700
- Egis ET171 AOSMU
- FocalTech FT9001 Clock & Power Manager (CPM)
- FocalTech FT9001 Reset
- FocalTech FT9001 True Random Number Generator (TRNG)
- FocalTech FT9001 USART
- i.MX RT700 SYSCON0 and SYSCON1
- ISSI IS25WP
- MICFIL for i.MX RT700
- Puya P25Q Flash
- S32K3XX DMA multiplexer
- SAI for i.MX RT700
- S32K3XX DMA multiplexer
- STM32 DMAMUX
- STM32F1 AFIO
- STM32H SDMMC
- STM32H7 System Window Watchdog
- TAS2572 mock
- VeeR EL2 PIC
- VeeR EL2 internal timers
- VirtIO MMIO Console Device
- VirtIO MMIO Entropy Device
Improvements in peripherals:
- ADXL345
- Arm GIC
- Cadence GEM
- Cadence UART
- Cadence xSPI
- Caliptra I3C
- FT5336
- Generic SPI Flash
- i.MX RT700 CLKCTL
- IOAPIC
- LAPIC
- LIS2DS12
- LiteX UART
- MAX32650 over I2C
- MCAN
- NRF54H20 GRTC
- NRF54L Clock
- NVIC
- NXP eDMA
- NXP LPUART
- OMAP GPTimer
- OpenTitan SPI Host
- PL330 DMA
- Renesas SCI
- Renesas RA* GPIO
- Renesas RZG SCIFA
- RenesasDA Watchdog
- S32K3XX FlexIO
- S32K3XX Mode Entry Module
- S32K3XX MSCM
- SAM PDC
- SAM TC
- SAM USART
- SAM4S ADC
- SAM4S PIO
- SAM4S TWI
- SAM4S USART
- SD Card
- Segger RTT
- STM32 ADC Common
- STM32 DMA
- STM32 DMA2D
- STM32 LTDC
- STM32 Timer
- STM32 UART
- STM32F SDMMC
- STM32F4 RCC
- STM32F7 I2C
- STM32H7 Crypto
- STM32H7 Flash
- Synopsys DWC Ethernet Quality Of Service
- Universal Flash Storage (JESD220F)
- VeeR EL2 RISC-V core
- ZynqMP GQSPI