Renode uses a text-based format to describe platforms.
Platform description files typically have the
.repl extension, but this is not a requirement.
The broad description of the format and its grammar is available in the Platform description format section. Here we present the basic usage and most common scenarios.
To add a peripheral, you need to know its type, choose its name and the registration point.
Most peripherals will be registered on the
sysbus - a peripheral that is always available and does not have to be explicitly defined.
The type name has to indicate the class of the peripheral model.
This has to be a full name with a namespace, but the default namespace,
Antmicro.Renode.Peripherals, can be omitted.
For example, to create a UART object of type
Antmicro.Renode.Peripherals.UART.MiV_CoreUART, connected to the system bus at
uart0: UART.MiV_CoreUART @ sysbus 0x80000000
Some peripherals, like the mentioned UART, need parameters to be constructed. The REPL format allows you to set the constructor parameters and properties of the peripheral model. They are placed below the declaration, with four spaces of indentation:
uart0: UART.MiV_CoreUART @ sysbus 0x80000000 clockFrequency: 66000000
Constructor parameters begin with a lower case letter, and properties with an upper case letter.
In the example above the
uart0 peripheral was connected to the system bus at a specific address.
It is possible, however, to connect peripherals to other buses as well, like I2C or SPI, to a GPIO controller, etc.
For example, to connect a temperature sensor to an I2C controller called
sensor: Sensors.SI70xx @ i2c0 0x80
Peripherals can also be connected via GPIOs or interrupts.
Renode treats these signals similarly, and allows you to create a connection with the
To connect a timer to the 31-st interrupt on the
plic interrupt controller, run:
timer: Timers.MiV_CoreTimer @ sysbus 0x1000000 -> plic @ 31
You can include an existing REPL file in your platform with the
The provided filename can be either a full path or a path relative to the Renode root directory.