This blog originally ran on the Antmicro website. For more blogs and articles like this one, click here.
Originally created to meet Antmicro’s internal need for a flexible system design and testing tool, Renode has been in use by numerous projects and organizations including internet giants like Google, Microsoft and Amazon, semiconductors like Arm, Intel, Microchip or QuickLogic, as well as product developers like the Precursor team or Blixt.
We’ve been continuously expanding the functionalities of our open source simulation framework, turning it into a powerful tool enabling fast and reliable software/hardware development, testing, architectural exploration, research and education. The latest, massive 1.12 release introduces a range of improvements including support for more RISC-V and Arm platforms, peripherals and FPGA evaluation boards, as well as new tests, demos and other functionalities.
Some of the most interesting features that come with Renode’s 1.12 release have been developed through our collaboration with Google around their machine learning framework, TensorFlow Lite Micro. As part of this ongoing joint effort, Renode’s portfolio of supported boards has grown with the additions of:
- Arduino Nano 33 BLE Sense board with the Nordic NRF52840 microcontroller
- Lattice CrossLink-NX eval kit and
- Lattice ice40up5k-mdp-evn evaluation board, together with a range of sensors.
Other new board models related to many other customer projects include the Arm-based:
- STM32F072b Discovery,
- NXP i.MX RT1064,
and new RISC-V platforms:
- OpenTitan EarlGrey RISC-V platform with a range of OpenTitan peripherals,
- OpenHW Group’s CV32E40P-based RISC-V platform with many PULP peripherals,
- LiteX with RISC-V Ibex CPU platform support.
We’ve also prepared new tests and demos:
- Mbed demo for STM32F746
- Tock demos for STM32F4 and VexRiscv, as well as
- Zephyr-based tests targeting QuickLogic’s EOS S3-based QuickFeather.
Arduino IDE/CLI support and improved Python integration
The Arduino Nano 33 BLE Sense, which is one of the main platforms supported as a result of our work with the TF Lite Micro team, is an interesting, low-cost, power-efficient, TinyML-oriented platform with a plethora of sensors: barometer, humidity and temperature sensors, microphone, as well as gesture, proximity, light color and light intensity sensors. The Renode support for the platform was initially implemented for debugging and test purposes, but we quickly expanded it to cover the demonstration potential of Renode – starting with example repos and interactive demos with Google Colab:
Now we have also integrated our open source framework with Arduino IDE/CLI to enable easy upload and running of software for Arm-based Arduino boards directly from the IDE. Based on this work, Renode is gaining more and more traction in the education sector, and is slated to be included in Harvard and Google’s edX machine learning series, where it will provide students with a deterministic environment for machine learning experimentation and development, as well as Linux Foundation’s Zephyr RTOS introductory course.
Other additions to Renode developed as part of our wide-ranging collaboration with Google include the HM01B camera model as well as support for sound data via PDM and I2S interfaces in Nordic’s nRF52840 and QuickLogic’s EOS S3.
In Renode 1.12, we’ve also improved capabilities of Python integration, allowing the use of the whole Python standard library from event hooks and peripheral mocks. This can be used to write even more complex workflows, e.g. by integrating Renode’s Python layer with external tools.
Co-simulation, testing and debugging
The 1.12 release also brings new developments regarding co-simulation, such as multi-bus and AXI4 support (both as an initiator and a receiver) in co-simulation with Verilator, and the option to use verilated peripherals on Windows and macOS – improvements done in collaboration with with Microchip, while Renode’s robust testing and debugging capabilities have been extended with support for virtual addressing in GDB.
We have also introduced a bunch of performance-optimizing changes, e.g several STM peripherals have been reimplemented and modernized, performance of peripheral writes has been improved, with Renode’s overall performance getting a boost through the reduction of transitions between C and C# code. Also, thanks to the contributions from Microsoft, STM32F7 DMA2D and LTDC now support more pixel blending modes.
Better packaging and headless capabilities
As of version 1.12 ad hoc C# compilation uses the same, bundled compiler on all operating systems, which means the Linux portable release of Renode can compile C# on the fly, making it identical in terms of functionality to all other Linux packages. Additionally, the console command switch can now be used to run Renode Monitor directly in the console. We’ve also added support for images in the Monitor, along with the possibility to take framebuffer screenshots, which also works with certain terminal emulators, e.g. iTerm2, when in headless mode.
For the full list of additions, changes and fixes, see the 1.12 changelog.
Renode streamlines operations in various tech companies, while its rich portfolio of virtual hardware models widens the outreach of hardware from numerous vendors. Get Renode from GitHub or reach out to us at email@example.com if you would like your platform to be supported in Renode or to modernize your organization’s workflow with the powerful development and testing features that our open source simulator provides.