Renode Versions Save

Renode - Antmicro's open source simulation and virtual development framework for complex embedded systems

v1.15.0

1 month ago

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

v1.14.0

9 months ago

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 and vector_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

v1.13.3

1 year ago

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 and TrackVectorConfiguration 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

v1.13.2

1 year ago

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:

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

v1.13.1

1 year ago

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

v1.13.0

2 years ago

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 and peripheral_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 and renode-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

v1.12.0

3 years ago

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 and window-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

v1.11.0

3 years ago

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 for renode-test allowing interactive debugging of failed Robot tests
  • lastLog Monitor command displaying n last log messages
  • currentTime monitor command with information about elapsed host and virtual time
  • WriteLine 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

v1.10.1

3 years ago

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

v1.10.0

3 years ago

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 command
  • console_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 of DEBUG
  • 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 port
  • State 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