Releases: renode/renode
Renode 1.15.0
For installation instructions, see the README.
Added architecture support:
- initial support for ARMv7-R and Cortex-R8, verified with ThreadX and Zephyr
- initial support for Cortex-A55
- initial support for Cortex-M23 and Cortex-M85
- support for RISC-V Bit Manipulation extensions - Zba, Zbb, Zbc and Zbs
- support for RISC-V Half-precision Floating Point (Zfh) extension, including vector operations
- support for RISC-V Andes AndeStar V5 ISA extension
Added and improved platform descriptions:
- generic Cortex-R8 platform
- Renesas EK-RA2E1 board with R7FA2E1A9 SoC
- Arduino Uno R4 Minima platform with Renesas F7FA4M1A SoC
- Renesas CK-RA6M5 board with R7FA6M5B SoC, with initial radio support
- Renesas EK-RA8M1 board with R7FA8M1A SoC
- Renesas R7FA2L1A SoC
- Renesas DA14592 SoC
- Renesas RZ/T2M-RSK board with RZ/T2M SoC
- Gaisler GR712RC SoC with UART, timer, GPIO, FTMC and Ethernet
- Gaisler GR716 SoC with UART, timer and GPIO
- Gaisler UT32M0R500 SoC with UART, timer and GPIO
- NXP S32K388 with UART, timers, watchdog, SIUL2, SPI, Mode entry module and others
- NXP LPC2294 SoC with UART, CAN, timer and interrupts support
- Xilinx Zynq UltraScale+ MPSoC platform support with single core Cortex-A53, UART, GPIO and I2C
- singlecore Cortex-R5 part of Zynq UltraScale+ MPSoC platform with UART, TTC, Ethernet and GPIO
- Nuvoton NPCX9 platform support with UART, various timers, SPI, flash and other peripherals
- ST Nucleo H753ZI with STM32H753 SoC with a range of ST peripherals
- updates to Armv8-A platforms
- updates to Ambiq Apollo4
- updates to Xilinx Zynq 7000
- various updates in STM32 platform files
Added peripheral models:
- ABRTCMC, I2C-based RTC
- Altera JTAG UART
- Ambiq Apollo4 Watchdog
- Arm Global Timer
- Arm Private Timer
- Arm SP804 Timer
- ArmSnoopControlUnit
- BCM2711 AUX UART
- BME280 sensor
- Betrusted EC I2C
- Betrusted SoC I2C
- Bosch M_CAN
- CAN to UART converter
- Cadence Watchdog Timer
- Gaisler APBUART
- Gaisler GPIO
- GigaDevice GD32 UART
- HS3001 sensor
- ICM20948 sensor
- ICP10101 sensor
- Infineon SCB UART
- LINFlexD UART
- MB85RC1MT Ferroelectric Random Access Memory
- MXIC MX66UM1G45G flash
- NPCX FIU
- NPCX Flash
- NPCX HFCG
- NPCX ITIM32
- NPCX LFCG
- NPCX MDMA
- NPCX Monotonic Counter
- NPCX SPIP
- NPCX Timer and Watchdog
- NPCX UART
- NXP LPC CAN
- NXP LPC CTimer
- NXP LPC USART
- OB1203A sensor
- PL190 vectored interrupt controller
- PL330_DMA (CoreLink DMA-330) Controller
- Renesas DA14 DMA peripheral
- Renesas DA14 GPIO
- Renesas DA14 General Purpose Timer
- Renesas DA14 UART
- Renesas DA14 I2C
- Renesas DA16200 Wi-Fi module
- Renesas RA series AGT
- Renesas RA series GPIO
- Renesas RA series GPT
- Renesas RA series ICU
- Renesas RA series SCI
- Renesas RZ/T2M GPIO
- Renesas RZ/T2M SCI
- S32K3XX Miscellaneous System Control Module
- S32K3XX Periodic Interrupt Timer
- S32K3XX Real Time Clock
- S32K3XX Software Watchdog Timer
- S32K3XX System Integration Unit Lite 2
- S32K3XX System Timer Module
- S32K3XX FlexIO stub
- S32K3XX Mode Entry Module
- SHT45 temperature/humidity sensor
- SPI NAND flash
- STM32WBA PWR
- Samsung K9 NAND Flash
- Smartbond UART
- Universal Flash Storage (JESD220F)
- Universal Flash Storage Host Controller (JESD223E)
- XMC4XXX UART
- ZMOD4xxx sensor
- Zynq 7000 System Level Control Registers
Renode 1.14.0
For installation instructions, see the README.
Added architecture support:
- initial support for ARMv8-A, verified with a range of software, from Coreboot and U-Boot to Linux
- initial support for ARMv8-R, verified with U-Boot and Zephyr
Added and improved platform descriptions:
- generic Cortex-A53 platform, in flavors with GICv3 and GICv2
- generic Cortex-A78 platform
- generic Cortex-R52 platform
- HiFive Unmatched platform support, with UART, PWM, I2C, GPIO, Ethernet, QSPI and other peripherals
- Nucleo WBA52CG with STM32WBA52
- updated OpenTitan and EarlGrey platform to a newer version
- various updates in STM32 platform files
- translation support for Espressif ESP32 chips
Added peripheral models:
- ARM GIC, compatible with various specification versions
- ARM generic timer
- CMSDK APB UART
- Cypress S25H Flash
- EFR32xG2 I2C
- EFR32xG2 RTCC
- EFR32xG2 UART
- Marvell Armada Timer
- MXC UART
- OMAP Timer
- OpenTitan Entropy Distribution Network
- Quectel BC66
- Quectel BG96
- SI7210 Temperature
- SPI multiplexer
- STM32F4 CRC
- STM32F4 Flash
- STM32H7 Flash
- STM32WBA Flash
- STM32H7 Hardware Semaphore
- STM32H7 SPI
- STM32WBA SPI
- STM32WBA ADC
- Synopsys DWC Ethernet QoS model, along with Linux-based tests
- TMP108 Temperature sensor
Added demos and tests:
- Cortex-A53 and Cortex-A78 running Coreboot, ATF and Linux
- Zephyr running echo_client demo on STM32F7-disco with Quectel BG96
- basic Cortex-A53 Zephyr
hello-world
test and sample - additional Zephyr tests for Cortex-A53:
synchronization
,philosophers
, kernel FPU sharing - seL4 Adder Sample test for Cortex-A53
- range of Zephyr tests for Cortex-R52, along with custom-made, synthetic tests
- precise pausing tests for LED and terminal tester
Added features:
- renode-test allows to run tests with a specified tag via the
--include
switch - DPI interface for external HDL simulators, supporting AXI4 interface
- portable package creation on dotnet
- option to have Robot test pause execution deterministically after a match in various testers: UART, LED, log
- duty cycle detection in LED tester
- option to load files (e.g. raw binaries, hex files) to different localizations, like memories
- support for relative paths in REPL file
using
directive - MPU support for Cortex-M
FAULTMASK
register in Cortex-M- support for Trace Based Model performance simulator by Google
- read and write hooks for peripherals
- DPI interface support for co-simulating with RTL, with initial support for AXI4 bus
- build.sh
--profile-build
switch to enable easier profiling of translation libraries - mechanism for progressing virtual time without executing instructions
- support for subregions in Cortex-M MPU
- support for FPU exceptions for Cortex-M
- quad word (64-bit) peripherals API
CSV2RESD
tool, for easy generation of RESD files- automatic selection of port used to communicate between Renode and Robot
- option to pause emulation of Robot keywords
- support for NMI interrupts in RISC-V
- option to save Renode logs for all tests
Execute Python
keyword in Robot tests
Changed:
- GDB interacts with Renode much faster
- Renode now uses Robot Framework 6.0.2 for testing (with an option to use other versions at your own risk)
- RESD format now accepts negative
sampleOffsetTime
- HEX files loader now supports extended segment address and start segment address sections
- GDB
autostart
parameter now starts the simulation as soon as the debugger is connected - VerilatorIntegrationLibrary is now part of Renode packages
- improved performance of the virtual time handling loop
- improved parsing of RESD files
- improved memory allocation mechanism to allocate memory regions larger than 2GiB
- support for mapping memories on very high offsets
- improved GDB connection robustness
- exposed Monitor as a variable in Python hooks
- improved the GDB compare helper script
- improved handling of input files in TFTP server module
Fixed:
- cursor blinking in terminal on Windows
- crash when NetworkServer tried to log an invalid packet
- race condition when trying to pause during the machine startup
- platform serialization when CPU profiler is enabled
- limit buffer behavior in verilated peripherals when they are reset
- registration is no longer taken into account when looking for dependency cycles in REPL files
- exception when issuing a DMA transaction during register access
- reported PC on exception when executing vector instructions in RISC-V
- several RISC-V vector instructions handling, e.g.
vfredosum
,vsetivli
andvector_fpu
- invalid instruction block exiting on RISC-V
- handling of
c.ebreak
instruction in RISC-V, allowing for software breakpoints - building fixes on dotnet
- removing of IO access flag from memory pages
- invalidation of dirty translation blocks
- handling of MMU faults on address translations
- serialization of RESD files
- automatic creation of TAP interface on Linux
- ARM LDA/STL instructions decoding
- handling of platforms containing both 32- and 64-bit CPUs
- file permissions in .NET portable packages
- handling of non-resettable register fields
- several RISC-V vector instructions
- handling of the context menu in the Monitor window
- support for Cortex-M4F in LLVMDisassembler
- packets matching method in NetworkInterfaceTester
- address calculations in DMA engine
- custom build properties handling in Renode build script
- handling of time reporting and empty test cases in renode-test
Improvements in peripherals:
- AmbiqApollo4 Timer
- ArrayMemory
- AS6221 Temperature sensor
- AT Command Modem
- AT91 Timer
- Cadence UART
- Cortex-M Systick
- EF32MG12 LDMA
- Ibex
- LIS2DW12 Accelerometer
- LiteX I2C
- LSM6DSO
- MAX30208 Temperature sensor
- MAX32650 GPIO
- MAX32650 I2C
- MAX32650 RTC
- MAX32650 SPI
- MAX32650 Timer
- MAX32650 TPU
- MAX32650 WDT
- MAX86171 AFE
- nRF52840 SPI
- nRF52840 I2C
- nRF52840 GPIO
- OpenTitan HMAC
- OpenTitan PLIC
- OpenTitan ROM
- OpenTitan OTP
- OpenTitan Key Manager
- OpenTitan Flash
- OpenTitan Reset Manager
- OpenTitan KMAC
- OpenTitan CSRNG
- OpenTitan Alert Handler
- OpenTitan Timer
- OpenTitan OTBN
- PL011 UART
- Quectel BC660K
- SAMD5 UART
- SiFive GPIO
- Silencer
- STM32 DMA
- STM32G0 DMA
- STM32 EXTI, with specific implementations for STM32F4, STM32H7 and STM32WBA
- STM32 GPIO
- STM32F7 I2C
- STM32L0 LPTimer
- STM32L0 RCC
- STM32H7 RCC
- STM32F4 RTC
- STM32 SPI
- STM32 Timer
- STM32F7 USART
Renode 1.13.3
For installation instructions, see the README.
Added and improved platform descriptions:
- basic Adafruit ItsyBitsy M4 Express platform with UART and memories
- various STM32 platforms with improved EXTI connections, IWDG configuration, and new CRC, Flash, PWR, RCC, and LPTimer models added to selected platforms
- MAX32650 with a new I2C model
- Zynq 7000 with new I2C, SPI, UART and TTC models
- Apollo 4 with a new Timer model and a
program_main2
bootrom function mock - OpenTitan Earlgrey with new OTBN accelerator, AON Timer, System Reset controller, Entropy source, and SRAM controller models
- nRF52840 with a new EGU model
- EFR32MG1x with a new LDMA model and improved USART interrupt connections
Added peripheral models:
- Apollo4 IOMaster I2C mode
- Apollo4 Timer
- AS6221 skin temperature sensor
- Cadence I2C controller
- Cadence SPI controller
- Cadence TTC
- Cadence UART
- Cadence xSPI controller
- EFR32MG12 LDMA controller
- LIS2DW12 accelerometer sensor
- LC709205F Fuel Gauge
- Macronix MX25R flash
- MAX30208 temperature sensor
- MAX32650 I2C controller
- MAX77818 Fuel Gauge
- MAX86171 Optical AFE
- NRF52840 EGU
- OpenTitan AON Timer
- OpenTitan Big Number Accelerator (OTBN) full model
- OpenTitan ClockManager stub
- OpenTitan Entropy Source controller
- OpenTitan SRAM controller
- OpenTitan SystemReset controller
- Quectel BC660K radio
- RV8803 RTC
- STM32F0 CRC
- STM32H7 RCC
- STM32L0 Flash controller
- STM32L0 Low Power Timer
- STM32L0 PWR
- TMP103 temperature sensor
Added demos and tests:
- RTC mode unit test
- Adafruit ItsyBitsy M4 Express Zephyr shell_module test
- STM32L072 tests for: DMA, PVD interrupt, SPI flash, IWDG, LPUART, EEPROM, and CRC
- STM32F4 tests for RTC and running an STM32CubeMX app
- Zynq tests for I2C, TTC, SPI flash, xSPI, and UART based on Linux
Added features:
- support for RESD - Renode Sensor Data format, allowing users to provide multiple sensors with time-coordinated data specific for a given sensor; currently supported in MAX86171, MAX30208, AS6221, and LSM6DSO
- reorganized CPU classes and interfaces, allowing for easier integration of external CPU simulators
- IOMMU, with example usage in WindowIOMMU, WindowMMUBusController, and SimpleDMA
- new key bindings in the Monitor: Ctrl+D for closing the window and Ctrl+U for clearing the current input
- new key bindings in all terminal windows: Shift+Up/Down arrow for line scrolling and Shift+Home/End for jumping to the beginning and the end of the buffer
- option to configure UART window location offsets via the config file
- support for 64-bit bus accesses and 64-bit peripherals
- support non-resettable peripheral registers and register fields
- option to register hooks to be called whenever a RISC-V register is accessed - this can be used to emulate non-standard implementation of these registers
- option to set CPU exceptions from the outside of the CPU
- Robot keyword to verify that GPIO has a specified state for a given period of time
- verbose mode in Robot tests
Changed:
- Robot tests do not need a header with settings and keywords anymore
- changed the conditional syntax in Robot tests to use IF/ELSE for compatibility with newer Robot Framework versions
- cleaned up tests-related file organization in the repository
- simplified flags for renode-test under dotnet
- added skip_mono and skip_dotnet tags to Robot tests
- removed internal signal mappings from STM32 EXTI, making the interrupt routing more explicit in REPL files
- console mode will be started instead of telnet when the UI fails to start
- reset can now be executed on a not started machine
- expanded the Execution Tracer with
TrackMemoryAccesses
andTrackVectorConfiguration
options, along with disassembler-generated info - OnMemoryAccess hooks now receive the current PC as a parameter
- changed the CRCEngine API and improved implementation
- ELF symbol lookup will now skip several types of unimportant symbols
- tags can now have zero width to ease the creation of variable width registers
- added option to invert reset logic in AXI4Lite
- added handling of the
WSTRB
signal in AXI4Lite - added support for various address lines connections in Wishbone
- added various access lengths support for verilated peripherals
- timeout value for Verilator connections can now be defined in compile time
- all architectures now sync their PC on memory accesses
- UARTBase is now a container for IUART devices
- added option to clear all event subscribers in LimitTimer
- added ITimer interface for handling basic timer properties
- extended the excluded assembly list in TypeManager to speed up startup on dotnet
Fixed:
- flushing of the log when using the
lastLog
command - deadlock when using the
--console
mode on dotnet with collapsed log entries enabled - Wireshark handling on macOS
- TAP support on macOS
- Asciinema usage in multi-machine setups
- closing of Renode in several problematic scenarios
- handling of end of file detection in HEX parsing
- robustness of BLESniffer
- timestamps discrepancies in file logs and console logs
- compilation under Visual Studio on Windows
- compilation on Windows when the PLATFORM environment variable is set
- graph titles for metrics visualizer
- handling of peripheral regions in Profiles
- file sharing and access type settings for open files
- floating point registers access on RV32
- several RISC-V Vector instructions
- crash when the CPU is created with an invalid type
- RISC-V PMP config reading and writing and NAPOT decoding
- translation cache invalidation in multicore RISC-V scenarios
- SEV generation on Cortex-M
- handling of multi-instructions blocks in Xtensa
- execution of too many instructions in a single block
- button sample tests for STM32F072q
- fastvdma co-simulation test
- qCRC packet handling in GDB
- decoding of GDB packets, selecting the command handler based on the longest match for a packet
- address translation in GDB
- UARTToSpiConverter logic and user experience
- handling of Step parameter in ClockEntry
- changing of frequency for divider calculation in ComparingTimer
- cleanup of old clock entries
Improvements in peripherals:
- AmbiqApollo4 IOMaster
- AmbiqApollo4 RTC
- AthenaX5200
- Cadence TTC
- Dummy I2C Slave
- EFR32 CMU
- EFR32 USART
- EFR32 RTCC
- Generic SPI Flash
- HiMax HM01B0
- I2C dummy device
- LSM6DSO IMU
- Mapped Memory
- Micron MT25Q
- MPFS PDMA
- NRF52840 SPI
- NRF52840 I2C
- NRF52840 RTC
- NVIC interrupt controller
- OpenCores I2C
- OpenTitan I2C
- OpenTitan Flash controller
- OpenTitan LifeCycle controller
- OpenTitan ROM controller
- SAMD5 UART
- SI70xx temperature sensor
- SiFive GPIO
- STM32 GPIO
- STM32 SPI
- STM32 Timer
- STM32F4 IndependentWatchdog
- STM32F4 RTC
- STM32F7 I2C
- STM32F7 USART
- STM32L0 RCC
- STM32G0 DMA
Renode 1.13.2
For installation instructions, see the README.
Added platforms:
- Ambiq Apollo4 with ADC, GPIO, IO Master, System Timer, RTC, UART and other peripherals
- STM32L07x with ADC, GPIO, I2C ,RTC, SPI, Timer, USART, IWDG, DMA and other peripherals (RCC)
- verilated Ibex core with the rest of the platform natively in Renode
Added models:
- MAX32650 TPU with CRC32 support
- basic support for MAX32650 ADC
- MAX32650 SPI
- MAX32650 Watchdog
- LSM6DSO IMU
- EFR32xG12DeviceInformation
- External CPU stub as a base for integration of other CPU simulators
- OpenTitan SPI host
- OpenTitan I2C host
- OpenTitan Alert Handler, along with updates to other OpenTitan peripherals with alert functionality
- new algorithms and cores in AthenaX5200
- EFR32MG1 BitAccess
- i.MX RT GPTimer
Added demos and tests:
- STM32L072 Zephyr shell_module demo and test
- Ambiq Apollo4 Hello World example from Ambiq Suite and various peripheral tests
- MAX32652 EVKIT Hello World example from MAX32652 SDK
- FPGA ISP co-simulation demo and test
Added features:
- experimental support for .NET 6 framework
- guest-application profiling for ARM
- Interrupt hooks for ARM
- BLE sniffer support for Wireshark
- Perfetto profiler format support in guest-application profiling, along with process detection on RISC-V
- binary output format of execution tracer, along with a Python helper script to decode data
- new Run Until Breakpoint keyword for Robot tests
- verbose mode in Robot tester
- region of interest support in FrameBufferTester
- framework for providing timestamped sensor data
- WishboneInitiator bus in Verilator support
- nightly “sources” package with the whole content required for building Renode offline
Organizational improvements:
- added GitHub issue and PR templates, along with an issue reproduction repository
updated contributing instructions
Changed:
- added mapping for l2ZeroDevice in PolarFire SoC
- added caching of canvas bounds in TermSharp for improved performance
- restructured height map storage in TermSharp
- updated descriptions of SLTB004A and EFR32MG12 targets
- restructured CPU-related class hierarchy
- disabled TCG optimizations and liveness analysis for improved performance
- updated OpenTitan supported version, changing a range of OpenTitan peripherals
- major refactor of VerilatorIntegrationLibrary, with new interfaces and code restructuration
- updated symbol exclusion rules not to include $x symbol names in SymbolLookup
- disabled TLB flushing in RISC-V on mode change for improved performance
- allowed more than one page permission at a time in RISC-V, reducing the number of address translations
- improved output of Robot tests with timestamps and explicit test results after each suite
- SD card controller now supports more card types
Fixed:
- PMP implementation for RISC-V
- several RISC-V vector instructions including floating-point vector instructions
- 'Take Screenshot' button in VideoAnalyzer
- non-blocking CPU stepping
- crash when loading file without sufficient permissions
- external MMU not respecting the
no_page_fault
flag - issues with concurrent creation of config file
- indeterminism of sel4_extensions test
- GDB Stub not issuing an error when trying to add zero-sized watchpoint
- handling of watchpoints on big-endian platforms
- portability of MSBuild calls across different host systems
- PolarFire SoC Watchdog test
- serialization of FrameBufferTester
- translation cache flushing after reset
Improvements in peripherals:
- Cortex-M NVIC
- HPSHostController
- NRF52840 Watchdog
- BMC050 accelerometer
- MAX32650 RTC
- MAX32650 GCR
- STM32F7 I2C
- STM32G0 DMA
- Micron MT25Q
- i.MX RT GPIO
Renode 1.13.1
For installation instructions, see the README.
Added platforms:
- MAX32652 with UART, GPIO, Timer, PWRSEQ, GCR and RTC
- Thunderboard Sense 2 (SLTB004A) based on EFR32MG12
Added models:
- STM32G0 DMA controller
- OpenTitan CSRNG
- OpenTitan OTP controller
- OpenTitan Life Cycle controller
- USBserialport_S3B model for Qomu
- SAMD5 UART
- SAMD20 UART
- AES and Message Authentication cores for AthenaX5200
- LiteX MMCM controller in the 32-bit CSR width configuration
- LiteX Framebuffer in the 32-bit CSR width configuration
Added demos:
- Qomu running Zephyr shell
- SLTB004A running Gecko SDK baremetal CLI sample
Added features:
- guest-application profiling support
- TAP integration on Windows
- interrupt end hooks for RV64
- option for gathering execution metrics when running tests
- tests for logging from a sub-object
- PolarFireSoC Watchdog tests
- the disassembly output format to the Execution Tracer module
- option for filtering messages by log level in the log tester
Changed:
- improved support for ARMv8-M registers
- added option to compare raw values of selected registers in the gdb_compare script
- implemented generation of guest-host PC mappings info on block translation
- added
Frequency
property to ComparingTimer - monitor-tests: Use virtual time in the pause test
- added static flushing to the logger
- included missing tools (like gdb_compare, sel4_extensions) in all packages
- added precompilation of Python scripts before running (to detect errors early)
- added user-specified file paths handling
- added filtering of ANSI escape codes from Robot tests keyword results
- added option to enable profiler globally in EmulationManager
- added command to disable automatic symbol switching in seL4 GDB extensions
- improved RISC-V kernel breakpoints support in seL4 GDB extensions
- code generator is now compiled with more aggressive optimizations
- changed the CPU class structure, allowing for core implementations not based on translation libraries
- updated the Nexys Video platform description and demo binaries
Fixed:
- 'Should Output Voice Data' test for QuickFeather
- various RISC-V vector instructions
- register values accessing in RISC-V
- help button behavior in AdvancedLoggerViewer
- concurrent access to Pixel Manipulation Tools
- clock residuum handling, e.g. improving the behavior of the BLE demo
- serialization of externals and GDB stub
- stacktrace reporting when exception is rethrown on the native-managed boundary
- packaging of license files from dependency projects
- exception handling on EnsureTypeIsLoaded
- various fixes in file handling layer
- improved handling of variables assigned to variables in the Monitor
- handling of multiple CPUs with different configurations in GDB
- STM32F413 RCC address
- DDR mapping in PolarFire SoC
- TCM memory size in miv_rv32
Improvements in peripherals:
- NVIC
- STM32F4_RCC
- STM32_ADC
- STM32_GPIOPort
- MiV_CoreGPIO
- GigaDevice_GD25LQ
- MC3635
- SynopsysEthernetMAC
- LiteSDCard_CSR32
- ResetPin
- HPSHostController
Renode 1.13
For installation instructions, see the README.
Added platforms:
- Xtensa sample controller stub
- MIMXRT1064-EVK
- STM32L552
- ARVSOM
- BeagleV StarLight
- Sparc GR716
- RISC-V virt
- S32K118 with LPIT, LPTMR, GPIO, Clock generator mock
- STM32G0
- STM32F412
- STM32H743
- MIV_RV32
Added models:
- new models for i.MX RT 1064: PWM, timer, ADC, LPSPI, Flex SPI, TRNG
- new models for nRF52840: RNG, Radio, Watchdog, ECB, PPI infrastructure
- new models for STM32: ADC, slave CAN, PWR, watchdog
- new models for OpenTitan: flash controller, timer, PLIC, HMAC, AES, KMAC, ROM controller, Key manager, Reset manager
- new models for Polarfire SoC: system services, user crypto features (RNG and RSA), Mustein GPU and various fixes to platform description
- new model for Zynq 7000: XADC
- new generic models:
- generic SPISensor
- HostCamera device
- TrivialUart
- HPSHostController - fake I2C host master device for communicating with simulated devices
- GigaDevice_GD25LQ - initial model
- VirtIO block device model
Added demos:
- Murax SoC with verilated UART with simple echo demo
- LiteX with verilated CFU running CFU Playground demo
- Zynq with verilated FastVDMA running Linux
- NRF52840 BLE demo running Zephyr
central_hr
andperipheral_hr
samples - Leon3 running Zephyr shell
- GR716 running Zephyr shell
- Xtensa sample controller running Zephyr “Hello World" sample
Added core features:
- RISC-V: vector extension 1.0 support
- Xtensa architecture support
- RISC-V: access to proper set of registers + custom registers from GDB
- RISC-V: support for Custom Function Unit extensions
- WFE support on ARM cores
- uninterruptible debugging option to all architectures
- floating point support to Cortex-M platforms
- basic support for ARM 64-bit registers
- Cortex-M33 stub
- Sparc: added CSR register and exposed FSR register
Added features:
- primary selection copy support in TermSharp
- support for asciinema UART dumps
- support for native library communication in verilated peripherals
- APB3 bus implementation for VerilatorIntegrationLibrary
- support for loading HEX files
- video capture mechanism with host camera integration
- startup parameter for specifying the config file
- register access keywords for Robot Framework integration
- support VideoAnalyzer on Windows
- option to stop on first error when running tests
- option to save failed test logs
- opcodes counting mechanism, along with RISC-V opcodes files parser
- execution tracing mechanism
- Wireshark support on Windows
- seL4-aware GDB debug support
- BLE wireless medium including Wireshark support
- gdb_compare script allowing to compare execution of two GDB instances, for example one connected to Renode and one to hardware
- support for vector registers in GDB
- CPU Id parameter in ARM cores
- option to control timestamp format and visibility in LoggingUartAnalyzer
- option to skip library fetch during build
- option to flush terminal history when connecting via socket
- support for external, bus-connected MMU
Changed:
- bumped Robot Framework version to
4.0.1
- RobotFramework: log entries keywords now accept regex patterns
- STM: renamed some UART ports to USART
- ZynqEthernet: removed and replaced with CadenceGEM
- Zedboard: updated demo to Linux 5.10
- reworked CPU halting
- added CRC to packets sent by NetworkServer
- RISC-V: added logs on unhandled CSR accesses
- improved build time by changes to TermSharp project organization
- various updates to STM32F746 CPU definition
- added limit to displayed command history in AntShell
- moved output of Robot tests to current directory when running on Windows
- XWT events are now queued in GTK engine
- added option to reconnect to SocketServerProvider
- explicitly used XZ compression with pacman
- added option to limit function names logging to unique entries, vastly improving performance
- removed dependency to realpath from build and run scripts
- removed dependency to ZeroMQ
- renamed EOSS3_SPIMaster to DesignWare_SPI
- dropped Fedora version indicator from packages
- optimized RISC-V PMP handling
- reworked PlatformLevelInterruptController to operate on contexts instead of targets
- added O/H/W write commands to ArduinoLoader
- enabled TLS 1.1 and TLS 1.2 in CachingFileFetcher
- improved multicore debugging support in GDB
- allowed to reuse testers in Robot tests
- added option to safely include the same C# file multiple times during one Renode run
- added
tests.yaml
, containing all Robot tests, to all packages - add debug mode for all architectures disabling interrupts when stepping over guest code
- simplified fixture selection when running tests
- allowed unaligned memory access by default in IbexRiscV32
- added GBD support for VS bits in MSTATUS register
- added interrupts support in verilated peripherals
- added support for CPU registers wider than 64-bits in Renode (C# part, not tlibs)
- improved and unified the --plain mode handling
- refactored the disassembly handling subsystem
- improved GDB packets handling performance
- added option to control serialization mode in the configuration file
- added optional compiled files cache
- improved handling of exceptions at the C/C# boundary
- flattened the TimeFramework structure to increase performance
- improved performance of handling of truncated translation blocks
- improved performance of TermSharp height map calculations and row handling
- added several tlib performance optimizations
- added the synchronized timers emulation mode
- added support for the flow control in UART
- added support for bright colors to TermSharp
- added basic VSCode launch configurations for Renode on Mono
- unified
renode
andrenode-test
scripts names across all packages - added support for per-core peripheral registration
- added option to the build script to export the build directory
- improved performance of ELF reloading
- updated Conda build scripts to better work with the latest Renode, improved Windows support
- added option to configure step for clock entries
- improved startup performance by skipping analysis of uninteresting assemblies in TypeManager
- tied the AutoRepaintingVideo refresh frequency to the virtual time flow
- enabled passing the -e parameter to Renode even when providing a script file parameter
- added option to preserve temporary files from Robot tests
- added a source of a log message to the log tester
- Provides and Requires keywords now use state snapshots
Fixed:
- CPU endianness handling in GDB register accesses
- SPARC WRASR and CASA instructions
- SPARC registers handling in GDB
- memory invalidation on writes in MappedMemory
- ARM instructions: ASX, SAX, SUB16 and UQSUB
- symbol name mangling on MacOS
- updating PC before raising MMU exception on RISC-V
- unaligned ld_phys handling, resolves problems of possible memory corruption
- possible race conditions in TerminalTester
- IO access path selection in tlib
- support for big-endian peripherals
- running tests in sequential mode
- HiFive Unleashed platform description including PHY advertisement and RAM size
- Ethernet PHY advertisement on the Zedboard platform
- cross-endian bus accesses
- endian conversion wrappers for untranslated accesses
- registers mapping of fflags/frm/fcsr, resolving GDB registers XML generation
- running tests when the build phase failed
- it-status unit test
- added LibLLVM to all packages
- whitespace handling in resc scripts on Windows
- occasional assertion fail when loading ELF files
- setting breakpoints on virtual addresses
- MicroPython tests
- installation on Linux with a separate /opt mount point
- demangling symbols from the anonymous namespace
- SoftFloat's type conversion functions
- illegal instruction exception on wrong CSR access on RISC-V
- support for quad words access on the system bus
- possible memory leak in tlib
- improved precision of calculations in BasicClockSource and ComparingTimer Fixed
- support for various versions of standard libraries on Linux hosts (libdl, libutil, etc)
- libc dependencies for the Renode portable package
- invalidation of translation blocks on writes
- handling big offsets in MappedMemory
- ARM-M PRIMASK and xPSR handling
- PowerPC registers listing in GDB
- improved tlib debugging by not omitting the frame pointer on debug build
- fixed sfence.vma instruction implementation for RISC-V
- potential math errors (underflows/overflows) when handling the virtual time
- handling input redirected from file in the console mode
- prevented GdbStub from sending telnet config bytes on new connections
- serialization of paused state
- ad-hoc compiler support in the portable package
- flushing of log tester
- UartPtyTerminal serialization
- reporting the exit code in renode-test
- RISC-V custom CSRs handling
- resetting of a machine from the context of another machine
- thread-safety of interrupt handling mechanism
- occasional dependency fail on static constructors
Improvements in peripherals:
- CoreLevelInterruptor
- PlatformLevelInterruptController
- NVIC
- CortexAPrivateTimer
- BMA180
- CC1200
- Micron_MT25Q
- SynopsysEthernetMAC
- K6xF_Ethernet
- CadenceGEM
- OV2640
- GaislerMIC
- PL011
- EFR32_USART
- LowPower_UART
- OpenTitan_UART
- OpenTitan_GPIO
- IMXRT_ADC
- IMXRT_LPSPI
- LPUART
- STM32F7_I2C
- STM32_UART
- STM32 RTC
- STM32_TIMER
- STM32DMA
- STMCAN
- EXTI
- NRF52840_CLOCK
- NRF52840_Timer
- NRF52840 GPIO
- LiteX_I2S
- Litex_GPIO
- MPFS_PDMA
- MPFS_DDRMock
- Gaisler_GPTimer
Renode 1.12
For installation instructions, see the README.
Added:
- STM32F072 platform, with the STM32F072b Discovery board
- i.MX RT1064 platform
- NRF52840 platform, with Arduino Nano 33 BLE Sense board
- OpenTitan EarlGrey RISC-V platform with a range of OpenTitan peripherals
- CV32E40P-based RISC-V platform with many PULP peripherals
- LiteX with RISC-V Ibex CPU platform support
- CrossLink-NX evaluation board
- ice40up5k-mdp-evn board
- Zephyr-based test suite for QuickLogic QuickFeather with EOS S3
- Tock demo on LiteX/VexRiscv and STM32F4
- Mbed demo on STM32F7
- integration with Arduino IDE and Arduino CLI
- Python Standard Library, to be used with Python hooks and scripts in Renode
- support for images in the Monitor, along with possibility to take framebuffer screenshots. This also works with certain terminal emulators, like iTerm2, when in headless mode
- option to connect UART to the running console, improving headless capabilities
- option to run Renode Monitor directly in console, overlapped with logs, using the
--console
command line switch - support for virtual addressing in GDB
- option to combine multiple interrupt or GPIO signals into one, using logical OR, directly in REPL files
- multi-bus support and AXI4 support (both as an initiator and a receiver) in co-simulation with Verilator
- ability to send synthetic network frames in Robot tests
- various sensor models: MC3635, LSM330, LSM303DLHC, LSM9DS1, LIS2DS12, BMP180
- seven-segment display model
- support for camera interfaces for nRF52840 and other platforms, along with a basic HM01B camera model
- support for sound data via PDM and I2S interfaces in nRF52840 and EOS S3
- 32-bit CSR versions of various LiteX peripherals
window-height
andwindow-width
Renode config file options
Changed:
- ad hoc C# compilation now uses the same, bundled compiler on all OSes, also allowing for compilation in the portable Linux package
- bumped the officially supported Ubuntu version to 20.04
- added execution metrics analyzer to all Renode packages
- verilated peripherals can now also be used on Windows and on macOS
- verilated UART peripherals have updated protocol message numbers, requiring them to be recompiled to work with the latest Renode version
- moved to use openlibm instead of libm on Linux, improving portability
- GDB can now access memory across pages in a single access
- switched the unit testing framework from NUnit2 to NUnit3
- reduced the number of transitions between the C and C# code, improving performance
- improved performance of peripheral writes
- tests print the run summary at the end of the output, making it easier to spot errors
- revamped handling of the vectored interrupt mode for RISC-V cores
- RISC-V CPUs can now optionally allow for unaligned memory accesses
- updated the default privileged architecture version for VexRiscv CPU
- VexRiscv can now use standard RISC-V interrupt model
- changed the flow of NVIC interrupt handling, significantly improving performance
- STM32F7 DMA2D and LTDC now support more pixel blending modes
- reimplemented and modernized several STM32 peripherals
- improved the model of K6xF Ethernet controller
- LiteSDCard model now supports DMA interface
- EXTI controller now has a configurable number of output lines
- improved handling of dummy bytes in MPFS QSPI
Fixed:
- tests running from installed Renode packages creating output files in forbidden locations
- serialization of NetworkInterfaceTester and UARTBackend
- possible non-deterministic behavior of UART backend in tests
- occasional file sharing violation in PosixFileLocker
- Renode printing out colors when in plain mode
- non-determinism in the button model
- time drift caused by unreported virtual ticks and improper instruction counting
- crash in TermsharpProvider when running on Windows
- invalid default frequency for STM32L1
Renode 1.11
For installation instructions, see the README.
Added:
- support for generating execution metrics, covering information like executed instructions count, memory and peripheral accesses, and interrupt handling
- infrastructure for reporting supported CPU features to GDB
- tests for Icicle Kit with PolarFire SoC
--debug-on-error
option forrenode-test
allowing interactive debugging of failed Robot testslastLog
Monitor command displayingn
last log messagescurrentTime
monitor command with information about elapsed host and virtual timeWriteLine
UART helper method to feed strings from the Monitor or scripts- support for non-base RISC-V instruction sets disassembly
- support for custom Robot test results listeners
- support for Python-based implementation of (stateful) custom CSRs and custom instructions in RISC-V
- option to control RISC-V CSR access validation level interactively
- dummy support for data cache flush instruction in VexRiscv
- 64-bit decrementer support in PowerPC
- nRF82540 RTC model
- STM32F4 RTC model
- STM32F4 RCC stub model
- unified timer model for STM32F4 and STM32L1 platforms
- support for ATAPI CD-ROM
- burst read support in OpenCores I2C
Changed:
- time flow settings in Icicle Kit script now ensure full determinism
- all testers (for UART, LED, network, sysbus accesses and log messages) now rely on virtual time instead of host time and accept floating point timeouts
- portable package now includes requirements.txt file
- skipped tests do not generate save files anymore
Clear
Monitor command does not remove current working directory from searched paths- WFI handling in RISC-V is simplified, improving performance on sleepy systems
- translation block fetch logger messages are now logged with Info instead of Debug level
- Cortex-M CPUs now reports their registers to GDB
- several infrastructural changes in the PCI subsystem
- STM32L1 oscillators are now all reported as ready
Fixed:
- Renode logo appearing in UART analyzer windows when running without Monitor
- logs not being fully written out when terminating Renode
- keyboard event detection in framebuffer window when no pointer device is attached
- crash when the logger console reports width equal to 0
- crash of ad-hoc compilation on Renode portable. Note that this still requires a C# compiler to be available on the host system
- crash when connecting GDB with the first core not being connected
- occasional crash when providing incorrect CLI arguments
- invalid disassembly of 64-bit RISC-V instructions
- crash on machine reset when using custom CSRs in RISC-V
- handling of multi-byte reads in LiteX I2C model
- handling of images with unaligned size in USB pen drive
- invalid LED connections in STM32F4
Renode 1.10.1
For installation instructions, see the README.
This is a hotfix release overriding 1.10.0.
Fixed:
- crash on Windows when accessing high memory addresses
- installation instructions in README
Renode 1.10
This release has a critical issue identified in #113 .
Please use Renode 1.10.1 instead of this release.
For installation instructions, see the README.
Added:
- support for the PolarFire SoC-based Icicle Kit platform, with a demo running Linux
- experimental support for OpenPOWER ISA
- support for NXP K64F with UART, Ethernet and RNG
- basic support for Nordic nRF52840
- Microwatt platform, with Potato UART, running MicroPython or Zephyr
- LiteX platform with a 4-core VexRiscv in SMP
- LiteX demo running Microwatt as a CPU
- LiteX demo with VexRiscv booting Linux from the SD card
- LiteX demo with VexRiscv showing how to handle input and output via I2S
- LiteX MMCM model, I2S model and SD card controller model
- several peripheral models for QuickLogic EOS S3: ADC, SPI DMA, Packet FIFO, FFE etc
- ADXL345 accelerometer model
- PAC1934 power monitor model
- PCM encoder/decoder infrastructure for providing audio data to I2S devices
- modular network server allowing to easily add server components to the emulation without a host-to-guest connection
- built-in TFTP server module
- file backend for UARTs, allowing to send output directly to a file (
uart CreateFileBackend
) alias
Monitor commandconsole_log
Monitor command to simply print to the log window without level filtering--no-gui
build option to build without graphical dependencies- option to define an average cycles count per instruction, to be used by CPU counters
- code formatting rules for translation libraries, to be used with Uncrustify
Changed:
- Renode is now able to be compiled with
mcs
. This means that you can use your distribution's Mono package instead of the one provided by mono-project.com, as long as it satisfies the minimum version requirement (currently Mono 5.2) - the default log level is now set to
INFO
instead ofDEBUG
- all PolarFire SoC peripherals are now renamed from PSE_* to MPFS_*, to follow Microchip's naming pattern
- major rework of the SD card model, along with the added SPI interface
- RI5CY core can now be created with or without FPU support
- STM32 and SAM E70 platforms now have verified
priorityMask
in NVIC - Cortex-M based platforms can now be reset by writing to NVIC
- easy way to update timer values between synchronization phases, significantly improving the performance of polling on timers
- tests are now able to run in parallel, using the
-j
switch in the testing script execution - the pattern for download links in scripts for binaries hosted by Antmicro has been changed
- portable package now includes testing infrastructure and sample tests
- the LLVM-based disassembly library is now rebuilt, using less space and being able to support more architectures on all host OSes
- the C++ symbol demangling now relies on a
CxxDemangler <https://github.com/southpolenator/CxxDemangler>_
library, instead of libstdc++ - failed Robot tests will now produce snapshots allowing users to debug more easily
- SVD-based log messages on reads and writes are now more verbose
- Terminal Tester API has changed slightly, allowing for easier prompt detection, timeout control etc.
Fixed:
- crash when running tests with empty
tests.yaml
file - crash when Renode is unable to find the root directory
- crash when loading broken or incompatible state snapshot with
Load
- several issues in the PPC architecture
mstatus
CSR behaviour when accessing FP registers in RISC-V- PMP napot decoding in RISC-V
- evaluation of the IT-state related status codes in ARM CPUs
- invalid setting of CPUID fields in x86 guests
- PolarFire SoC platform description and various models: CAN, SPI, SD controller, etc.
ODR
register behavior in STM32F1 GPIO portState changed
event handling in LED model- invalid disposal of the SD card model, possibly leading to filesystem sharing violations
- some cursor manipulation commands in TermSharp
- performance issues when hitting breakpoints with GDB
- on the fly compilation of “*.cs” files in the portable Renode package
- Mono Framework version detection
- upgrading Renode version on Windows when installed using the
msi
package - error message when quitting Renode on Windows
- running tests from binary packages
- support for testing in Conda Renode package
- other various fixes in Conda package building