ARMv8-A and 64-bit peripheral support in Renode

Published:

Topics: Open source tools, Open hardware, Open FPGA

Propelled into widespread use by the rise of the smartphone in the 2010s, ARM Cortex-A SoCs are now found everywhere, powering Linux-based devices in areas like IoT, embedded, mobile, and - increasingly - servers. The currently prevailing variant, implemented by many SoCs in this space, is ARMv8A, the first architecture in the ARM family to introduce a 64-bit instruction set while remaining backward compatible with ARMv7-A and earlier versions. Antmicro uses ARMv8-A-based SoCs extensively for projects involving hardware such as Jetson Orin, NXP i.MX8, Qualcomm Snapdragons, or Xilinx US+ Kria.

In this note, we are happy to announce support for ARMv8-A in Renode, Antmicro’s open source simulation framework. This capability will allow Renode users to simulate 64-bit Cortex-A platforms in a fully controllable environment to make use of the extensive debugging and testing features offered by the framework to accelerate their development of complex systems.

Support for ARMv8-A, the third 64-bit architecture ever supported in Renode (after RISC-V and PowerPC), marks an important milestone in the framework’s history, as it introduces open source, full SoC simulation of the architecture used by most application processors in the world, on top of Renode’s vast coverage of MCU platforms which has made it a go-to platform for IoT device simulation.

ARMv8-A support in Renode

Simulating Cortex-A CPUs

The addition of ARMv8-A support in Renode opens up a world of possibilities and use cases involving wildly popular CPUs like Cortex-A53, Cortex-A75, and Cortex-A76. The initial ARMv8-A support in Renode allows you to run some of the more common embedded and IoT software like Zephyr, U-Boot, or Coreboot. Our newly released U-Boot Dashboard (similar in principle to the Zephyr Dashboard) is already able to run over 30 configurations on ARMv8-A in Renode. Due to the novelty of the support, only basic single-core simulation is available, but the implementation is being improved daily with support for interrupts, MPU, security features, and multi-core; booting 64-bit Linux on ARM in Renode is currently underway.

Bringing Full SoC Simulation to ARMv8-A

Implementing support for ARMv8-A - as many other developments in Renode - was driven by the real needs of a specific customer project, but at the same time, it is a very useful development for the ecosystem at large as well as for Antmicro’s internal use cases. Since we are often involved in the development of ARMv8-A-based systems, and many of our open source tools and frameworks target primarily those kinds of systems operating in the field today, there will be ample opportunity for practical integrations, especially in the field of automated testing.

Support for ARMv8-A in Renode also translated to the ability to simulate complex SoCs which integrate Cortex-A, Cortex-M, and perhaps even RISC-V cores, giving you full control over the CPU and the intricately interconnected bus interfaces, memory, and other components.

We have now brought Renode’s full awareness of the internal state of all simulated components, which grants access to features like extensive logging, execution tracing and guest application profiling to ARMv8-a. In addition, simulations in Renode can span multiple nodes for IoT, automotive, robotics, and similar scenarios and can be fully deterministic, which is critical from a testing perspective and gives you great flexibility and control over your simulated platform. To further enhance your testing experience, you can integrate Renode with many testing frameworks such as Robot Framework and CMock/Unity.

64-bit registers infrastructure in Renode

Bringing ARMv8-A to Renode required implementing support for 64-bit peripheral registers (called QuadWord in Renode). With the new changes to the Registers framework, you can create registers for your 64-bit peripherals for your platforms using a simple and standardized syntax. An example peripheral using this new API is ARM Generic Timer, which is included in the architecture specification and is widely used for timekeeping in Cortex-A platforms.

Cortex-A53 demo script

You can see a simulated ARMv8-A core in action on your local machine by using Renode’s built-in Cortex-A53 script:

include @scripts/single-node/cortex-a53.resc

This simple demo loads the Cortex-A53 Renode platform and runs a Zephyr hello world script.

Building your ARM-based systems with Antmicro and Renode

Renode can help you accelerate the development of your hardware-oriented projects with a fully deterministic and controllable environment to test your SoC with unmodified software repeatably. With access to a large catalog of simulated CPUs, such as the Cortex-A53 or A76, and peripherals ranging from sensors to mock network services, Renode can tackle extreme complexity to supercharge your testing.

Antmicro helps customers develop entire devices based on a variety of cutting-edge platforms. With the newly enabled ARMv8-A support, we are excited to work with customers to start adding models of edge AI boards based on this architecture, such as the Nvidia Jetson /Orin family or NXP i.MX8 to speed up product development by leveraging the many functionalities of Renode, from SoC simulation, open source tooling integration to pre-silicon design. If you are interested in developing hardware models and simulating your ARMv8-A-based platform in Renode, contact us at contact@antmicro.com.

See Also: