This blog originally ran on the Antmicro website. For more blogs and articles like this one, visit https://antmicro.com/blog/.
After a longer while, we are excited to announce that the next release of Renode is here. Since the previous release we’ve been busy working with many customers and partners, including Google, Microchip and Betrusted, on various use cases, all of which led to numerous improvements, as well as new features, that are now available in our simulation framework.
Fow a while now Renode has been seeing adoption not only in IoT and product development, but increasingly in new silicon development and architectural prototyping, especially with RISC-V. This is often related to emerging machine learning use cases, enabled by Renode’ excellent (and quickly improving) rapid prototyping and co-development capabilities, so important in the fast-changing world of ML.
On top of the usual host of new ARM platforms as well as a whole new Xtensa ISA, the 1.13 release includes massive improvements in RISC-V support, as well as enhanced performance and inspectability. We’ve been continuously expanding features offered by our simulation framework, enabling more unique use cases and even going one step further by creating the Zephyr Dashboard, exemplifying Renode capabilities for massive automated testing.
RISC-V support for Vector Extensions, new platforms and more
One of the most exciting advancements coming with Renode 1.13 is the overall progress with RISC-V support. As part of our long time collaboration with Google, we introduced features such as RISC-V Vector Extensions v1.0 and Custom Function Units support, opening up even more options in developing ML-enabled products with RISC-V. Other additions include platforms such as the JH7100 used in BeagleV and ARVSOM, as well as new peripherals and improvements for the OpenTitan platform. Thanks to our collaboration with Google and the Sound Open Firmware project we also added initial support for the Xtensa architecture, extending our simulation framework’s capabilities to even more use cases.
Other changes include improvement of ARM architecture support, namely:
- Floating Point Unit (FPU) support in Cortex-M
- Cortex-M33 stub support
- Basic support for 64-bit registers
As for new ARM platforms, the most notable additions include NXP’s S32K118 and a number of ST SoCs:
Although basic support for Nordic’s nRF52840 SoC has been available in Renode since version 1.10, the current 1.13 release brings significant developments in that area. Combining our engagement in the Zephyr Project with close cooperation with chip vendors such as Nordic allowed us to enable BLE support in our simulation framework – with the popular Nordic chip being the first platform with a BLE-capable Renode radio model, implemented with support from the Renode community.
The featured Zephyr-based demo serves as a good starting point for further development – see Renode’s documentation for details about running the setup with your own payload. All BLE traffic between your simulated machines can be easily inspected and analyzed using Wireshark, providing the user with details on the captured data.
Host file access with Virtio
There are several ways of sharing files between host and simulated platforms in Renode and the 1.13 release introduces further improvements to this area, namely by implementing the Virtio block device model. A widely used standard for virtualized devices, Virtio offers easy integration with different operating systems. This work is another step on the way to improved support for development of Linux userspace applications in Renode, enabling a significantly faster turnaround.
As part of our wide-ranging collaboration with Google, focusing, among others, on the Springbok platform, we’ve implemented numerous solutions boosting Renode’s performance, including reduced startup time and faster machine code translation and execution. Paired with a simplified time framework architecture, these and a host of other improvements contribute to the overall enhanced efficiency of Renode 1.13.
Another highlight in Renode’s current release is the overall improved inspectability offered by our simulation framework. This includes the opcodes counting mechanism, along with a RISC-V opcodes file parser, a refactored disassembler, and
gdb-compare – a tool to compare the execution of two GDB instances, for example one connected to Renode and one to hardware.
Another interesting feature in this area allows for OS-aware debugging of seL4 payloads and includes:
- system threads awareness (automatic handling of context switches),
- context aware breakpoints,
- awareness of virtual memory mapping changes on context switch.
New features for Windows
Our long term cooperation with Betrusted and other teams developing real-life, complex products resulted in many useful additions to our simulation framework. Renode’s 1.13 release includes multiple new features for Windows that were inspired by the Precursor use case, including various fixes in packaging, testing and scripting support. Other new features include VideoAnalyzer’s keyboard input and Wireshark support on Windows.
Renode Zephyr Dashboard
In order to fully utilize Renode’s flexibility and configurability, Antmicro created the Renode Zephyr dashboard, a massive CI dashboard with information about all Zephyr-compatible platforms that are currently supported in our simulation framework. As of today, this constitutes almost 140 boards – with more on the way. As described in a previous blog post, the dashboard leverages Zephyr’s structured device data and Renode’s building-blocks approach to platform description and, using a handy tool called dts2repl, automatically generates REPL files for available targets to run sample Zephyr applications. Next to each successfully passing platform and example you can find several files providing the most important information about the test, a set of files to recreate the setup locally, and even an interactive asciinema file, showing a playback of the recorded UART session.
The dashboard serves as an extensive database, facilitating navigation through the many platforms and features offered by Renode. Naturally, our work is not yet done – we’re constantly improving and expanding it to make it even better and more comprehensive. For more details about the future of the dashboard and other related projects we’ve been working on, join our keynote address and visit our booth at the Zephyr Developer Summit in June and find out how we took the Zephyr Dashboard a step further.
Software-driven development with Renode
This note, of course, doesn’t cover the entirety of changes that were introduced in Renode 1.13 – for a complete list of additions, improvements and fixes see the 1.13 changelog. With this new release we yet again strive to make our open source simulation framework target even more use cases, providing comprehensive services and assistance at every step. Thanks to the long time collaboration with various customers and partners, as well as multiple advancements introduced throughout the years, Renode can be used on every stage of development, from architectural exploration, through hardware development, to firmware and software development.
If you have questions, you can contact Antmicro here, or feel free to reach out to the community on the Zephyr Discord Channel.