This blog originally ran on the Antmicro website. For more blogs and articles like this one, visit https://antmicro.com/blog/.
Version 1.11 of Antmicro’s open source Renode simulation framework is already available. As usual, the new release introduces a range of features, modifications and fixes, enabling developers to design complex embedded IoT systems more effectively than ever before.
Developed by Antmicro since 2010 and released as open source in 2015, Renode is in use by customers and partners including Arm, Google, QuickLogic, Microchip, in open source projects like Zephyr, TensorFlow Lite Micro, Precursor as well as in education, providing a seamless and deterministic virtual environment for test-driven hardware/software co-development.
Some of the most notable additions that Renode 1.11 comes with are support for generating execution metrics, improvements in Robot testing, as well as wider support for RISC-V and Arm platforms.
Testing and metrics
“If you can’t measure it, you can’t improve” goes one of the most important quotes in business, which is especially true for the development of software and computer systems. Renode’s functionalities perfectly resonate with this sentiment, providing Continuous Integration-driven testing and development workflow for IoT and embedded systems. The new support for generating execution metrics allows the user to collect data from the simulation, such as executed instructions count, memory and peripheral accesses, and interrupt handling, with the results capable of being analyzed with multiple backend tools (including in Jupyter Notebooks!).
This way you can measure CPU usage, memory and disk utilization as well as network traffic to constantly keep tabs on whether the developed software is improving or getting off track.
Performing metrics analysis in Renode requires a few simple steps described in the documentation, with the images below showing what the results look like on a computer screen.
While it can work with a number of test frameworks including e.g. pytest, Renode comes with a battery of Robot tests for various platforms to get you started. In version 1.11 we’ve improved interactive debugging of failed Robot tests and added support for custom Robot test results listeners. These new features will come in handy in the CI infrastructure that we are building out with Google for their popular ML framework, TensorFlow Lite Micro.
RISC-V support and platforms
Renode’s already extensive RISC-V support has been expanded with new features such as support for non-base RISC-V instruction sets disassembly, the option to control RISC-V CSR (Control and Status Register) access validation level interactively, as well as tests for the RISC-V based Linux-capable PolarFire Icicle kit, which can be simulated in Renode with an unmodified Yocto-based Linux BSP running on it.
What’s especially interesting is support for Python-based implementation of (stateful) custom CSRs and custom instructions in RISC-V. It allows the user to add custom instructions by means of one Python code line or a bit mask pattern that will adjust multiple values to the code arguments of your instruction.
Also, we’ve introduced improved support for multiple STM platforms as well as the nRF52840 from Nordic Semiconductor. This low-power platform is the most advanced member of the nRF52 SoC family. It features the 32-bit Arm Cortex-M4 CPU running at 64 MHz and numerous peripherals and interfaces such as high speed SPI, QSPI, PDM, I2S and USB. You can expect the support to expand further soon, as work on adding new models is well underway. The changes in ST and Nordic platforms were verified and confirmed with new automatic Zephyr-based test cases to further improve Zephyr users’ experience when running their software in Renode.
Other features introduced to Renode include a host of bug fixes and improvements in UI, better user experience and GDB integration. You can see the whole changelog on Renode’s GitHub.
Renode is helping various tech companies improve their workflows and widen the outreach of their products. Get Renode from GitHub or reach out to us at firstname.lastname@example.org if you would like to leverage the modern development and testing flow that it enables.