Releases: lowRISC/sonata-system
Sonata system v1.0
This is a stable release, from here on out we aim not to make any software visible changes to the hardware. Please note that software that ran on v0.4 and v0.2 will not be compatible with v1.0 because of improvements that we think are necessary for the longevity of the project. Please use the v1.0 branch of the sonata software repository for compatible software.
Release Notes
This release contains on top of the previous v0.4 release:
- New functionality:
- Pin multiplexer and padring. You can see a diagram of the connection possible through the pinmux here.
- Pmod 0 and 1 now also have I2C and SPI connections, and Pmod C is now also accessible.
- SPI chip selects can now be compartmentalized as they are controlled by each SPI host separately.
- Support software slots in bootloader. On boot the bootloader will look at the software switch to determine which program to run.
- Live switching of bitstreams so that when you change the bitstream selector the FPGA will be reprogrammed without having to unplug and replug the board.
- GPIO output enable is now software accessible.
- Interrupt are refactored so that each block just has one interrupt.
- System information IP for reporting git build hash, system frequency and IP block numbers.
- RS-485 now connected up.
- LCD backlight now dimmable.
- Quality and performance improvements:
- Main system clock is now 40 MHz up from 30 MHz.
- Timing and pin constraints reworked.
- Improve TL-UL bus access latency. Before access to SRAM went through multiple FIFOs, which added multiple cycles of latency. This is now reduced so that you can have single-cycle access to SRAM.
- Area improvements including reducing FIFO sizes in I2C and UART.
- FPGA build and testing in CI.
- Linting and more checks in CI.
- I2C and SPI DPI model for simulation.
Bitstream information
The utilization of the bitstream:
Type | Used | Available | Percentage |
---|---|---|---|
Slice LUTs | 22,691 | 32,600 | 69.60% |
Slice Registers | 15,618 | 65,200 | 23.95% |
Block RAM Tiles | 41 | 75 | 54.67% |
DSPs | 13 | 120 | 10.83% |
Other bitstream statistics:
Name | Value |
---|---|
Overall WNS | 0.120 ns |
System clock WNS | 0.120 ns |
HyperRAM clock WNS | 2.298 ns |
USB clock WNS | 7.848 ns |
Total on-chip power | 0.313 W |
Quick start guide
Here's the developer flow for using these files:
- Make sure the bitstream select switch (immediately below the main USB-C port) is set to position 1.
- Before plugging in your Sonata board, hold down the "SW9" button labeled "RP2040 Boot", and while holding this button plug your board into your laptop using the Main USB.
- A drive called "RPI-RP2" should pop up on your computer and copy
rpi_rp2_v1.0.uf2
into it. - This drive should automatically dismount once the file is transferred and remount as "SONATA". Once the remount has happened, you can drag in the wrapped bitstream
sonata_bitstream_v1.0.bit.slot1.uf2
. - Once programming is successful, you should see the "CHERI" LED light up and the "LEGACY" LED turn off. If this is not the case, the bitstream loading may have failed and you should retry by unplugging and replugging the main USB on the Sonata board. Then re-drag the bitstream into the "SONATA" drive.
- After programming the bitstream, select position 1 on the "SW App" switch (bottom left corner of the board) drag the
sonata_simple_demo_v1.0.slot1.uf2
into the "SONATA" drive. - You should now see the user LEDs turn on and off, as well as the lowRISC logo appear on the LCD.
- You can also drag
snake_demo_v1.0.slot2.uf2
into the SONATA drive to play snake using the joystick. - After copying the snake demo across select position 2 on the "SW App" switch and reset the board (with the reset button or a power cycle) to run it
- Watch the CHERI error LEDs as you hit the boundary.
As a next step, have a look at our getting started guide.
PRE-RELEASE 2 Sonata system v1.0
This is a pre-release for testing, v0.4.1 remains the latest release recommended for end-users.
This is the second pre-release of v1.0, the release notes will be added to the v1.0 release when it is fully released. This release contains the bitstream, the bitstream UF2s, the bootloader elf and a tarball of the complete build directory. There is also a new RP2040 firmware.
When using sonata-software
you must use the staging branch until we've merged that into main.
Here are a few characteristics of this bitstream:
- Utilization
- Slice LUTs 69.83% (22766 / 32600)
- Slice Registers: 23.96% (15619 / 65200)
- Block RAM Tile: 54.67% (41/75)
- DSPs: 10.83% (13/120)
- Timing
- Overall WNS: 0.319 ns
- System clock WNS: 0.319 ns
- HyperRAM clock WNS: 2.947 ns
- USB clock WNS: 7.729 ns
- Total on-chip power: 0.316 W
PRE-RELEASE 1 Sonata system v1.0
This is a pre-release for testing, v0.4.1 remains the latest release recommended for end-users
Pre-release of v1.0. Release notes are not yet available. Only bitstream UF2s are provided.
When using sonata-software
the CHERIoT RTOS sub-module needs to point to the latest sonata
branch of the lowRISC CHERIoT RTOS fork.
Tests from sonata-system
are passing, however there are known issues with ethernet. They are believe to be software related but further investigation is required.
Here are a few characteristics of this bitstream:
- Utilization
- Slice LUTs 70.45% (22967 / 32600)
- Slice Registers: 23.92% (15594 / 65200)
- Block RAM Tile: 54.67% (41/75)
- DSPs: 10.83% (13/120)
- Timing
- Overall WNS: 0.003 ns
- System clock WNS: 0.003 ns
- HyperRAM clock WNS: 2.454 ns
- USB clock WNS: 8.287 ns
- Total on-chip power: 0.316 W
Sonata system v0.4.1
This release contains on top of v0.3:
- Execution from HyperRAM including instruction cache support and bootloader support
- Bumped version of CHERIoT Ibex
- Support for XADC, which is the FPGA's analogue to digital converter
- Improvements to CI and automated testing
It fixes a bug from v0.4 that caused the icache to be effectively disabled following execution of a fence.i
. It is recommended you use this release over v0.4.
This is the release that we will use during the CHES hackathon 2024. It is recommended you use the v0.4 branch of sonata-software repository with this release. That branch will be maintained to remain compatible with this release.
Here's the flow for using these files:
- Make sure the bitstream select switch (immediately below the main USB-C port) is set to position 1.
- Before plugging in your Sonata board, hold down the SW9 labelled "RP2040 Boot", and while holding this button plug your board into your laptop using the Main USB.
- A drive called
RPI-RP2
should pop up on your computer and copyrpi_rp2_v0.4.uf2
into it. - This drive should automatically dismount once the file is transferred and remount as
SONATA
. Once the remount has happened, you can drag in the wrapped bitstreamsonata_bitstream_v0.4.bit.slot1.uf2
. - Once programming is successful, you should see the CHERI LED light up and the LEGACY LED turn off. If this is not the case, the bitstream loading may have failed and you should retry by unplugging and replugging the main USB on the Sonata board and re-drag the bitstream into the
SONATA
drive. - After programming the bitstream, drag the
sonata_simple_demo_v0.4.slot1.uf2
into theSONATA
drive. - You should now see the user LEDs turn on and off, as well as the lowRISC logo appear on the LCD.
- You can also drag
snake_demo_v0.4.slot1.uf2
into theSONATA
drive to play snake using the joystick. Watch the CHERI error LEDs as you hit the boundary.
Sonata system v0.4
There is an icache related bug in v0.4 it is recommended you use v0.4.1 instead.
This release contains on top of v0.3:
- Execution from HyperRAM including instruction cache support and bootloader support
- Bumped version of CHERIoT Ibex
- Support for XADC, which is the FPGA's analogue to digital converter
- Improvements to CI and automated testing
This is the release that we will use during the CHES hackathon 2024. It is recommended you use the v0.4 branch of sonata-software repository with this release. That branch will be maintained to remain compatible with this release.
Here's the flow for using these files:
- Make sure the bitstream select switch (immediately below the main USB-C port) is set to position 1.
- Before plugging in your Sonata board, hold down the SW9 labelled "RP2040 Boot", and while holding this button plug your board into your laptop using the Main USB.
- A drive called
RPI-RP2
should pop up on your computer and copyrpi_rp2_v0.4.uf2
into it. - This drive should automatically dismount once the file is transferred and remount as
SONATA
. Once the remount has happened, you can drag in the wrapped bitstreamsonata_bitstream_v0.4.bit.slot1.uf2
. - Once programming is successful, you should see the CHERI LED light up and the LEGACY LED turn off. If this is not the case, the bitstream loading may have failed and you should retry by unplugging and replugging the main USB on the Sonata board and re-drag the bitstream into the
SONATA
drive. - After programming the bitstream, drag the
sonata_simple_demo_v0.4.slot1.uf2
into theSONATA
drive. - You should now see the user LEDs turn on and off, as well as the lowRISC logo appear on the LCD.
- You can also drag
snake_demo_v0.4.slot1.uf2
into theSONATA
drive to play snake using the joystick. Watch the CHERI error LEDs as you hit the boundary.
Sonata system v0.3
This release contains the following on top of v0.2:
- Use Sonata JTAG ID code
- Documentation updates
- Implemented Elf bootloader
- Fixes to the Nix environment
- Enabling hardware revoker
- New testing framework
The main reason for this pre-release is to enable usage of the new RP2040 firmware (v0.4) and provide a release compatible with the latest sonata-software. This firmware uses UF2 for both FPGA bitstreams and Sonata firmware providing more reliable operation. Firmware is now written as an elf file into the flash and the sonata-software repository does not maintain support for the old method used by the v0.2 release.
It is recommended you use the v0.3 branch of sonata-software repository with this release. That branch will be maintained to remain compatible with this release.
Here's the flow for using these files:
- Before plugging in your Sonata board, hold down the SW9 labelled "RP2040 Boot", and while holding this button plug your board into your laptop using the Main USB.
- A drive called
RPI-RP2
should pop up on your computer and copyrpi_rp2_v0.4.uf2
into it. - Make sure the bitstream select switch (immediately below the main USB-C port) is set to position 1.
- This drive should automatically dismount once the file is transferred and remount as
SONATA
. Once the remount has happened, you can drag in the wrapped bitstreamsonata-v0.3.bit.slot1.uf2
. You may have to unplug and replug the USB cable if the drive does not mount automatically. - Once programming is successful, you should see the CHERI LED light up and the LEGACY LED turn off. If this is not the case, the bitstream loading may have failed and you should retry by unplugging and replugging the main USB on the Sonata board and re-drag the bitstream into the
SONATA
drive. - After programming the bitstream, drag the
sonata_simple_demo_v0.3.uf2
into theSONATA
drive. - You should now see the user LEDs turn on and off, as well as the lowRISC logo appear on the LCD.
Sonata system v0.2
Release notes
This is a release that contains all the infrastructure of v0.1
with the addition of:
- SPI blocks for Raspberry Pi HAT, Arduino Shield and mikroBUS Click.
- Control for the RGB LEDs.
- Documentation updates.
- Nix environment and CI updates.
- Fixes to simulator.
For more information on the system please refer to the documentation. It has full support to run CHERIoT RTOS and we have a software template repository where you can develop your own application running on top of the RTOS.
Temporary flow
This is a temporary flow that should help you get your board to life (LCD powers up and LEDs blink). We've had reports that interacting with the SONATA
drive can cause problems in the main persistent flow. This temporary flow avoids interacting with that drive and just uses the RPI_RP2
drive instead. After you have tested this flow please try the main persistent flow and if that does not work, you can come back to this as a backup.
Here are the steps you should take:
- Unplug your Sonata board.
- Hold down SW9, labelled "RP2040 Boot".
- While holding button re-plug your Sonata board.
- A drive named
RPI-RP2
should show up, copy the file namedtmp_rpi_rp2_part1_v0.2.uf2
into this drive. - After the drive dismounts automatically, it will remount as
SONATA
, please ignore this drive and its contents while using this temporary flow. - Unplug your Sonata board.
- Hold down SW9, labelled "RP2040 Boot".
- While holding button re-plug your Sonata board.
- A drive named
RPI-RP2
should show up, copy the file namedtmp_rpi_rp2_part2_v0.2.uf2
into this drive.
Main persistent flow
You can download the generated bitstream below named sonata_bitstream_v0.2.bit
. This generated bitstream contains a bootloader that will load a software image from flash.
Besides the bitstream, you'll also need a UF2 to program the RP2040, which is named rpi_rp2_v0.2.uf2
. Future releases may be found in the sonata-rp2040 repository.
You will also need a UF2 of the software that you want to execute. You can create your own using our template repository. For testing I've also attached an example to this release named sonata_simple_demo_v0.2.uf2
to this release.
A quick start guide:
- Before plugging in your Sonata board, hold down the SW9 labelled "RP2040 Boot", and while holding this button plug your board into your laptop using the Main USB.
- A drive called
RPI-RP2
should pop up on your computer and dragrpi_rp2_v0.2.uf2
into it. - This drive should automatically dismount once the file is transferred and remount as
SONATA
. Once the remount has happened, you can drag in the bitstreamsonata_bistream_v0.2.bit
. You may have to unplug and replug the USB cable if the drive does not mount automatically. - Once programming is successful, you should see the CHERI LED light up and the LEGACY LED turn off. If this is not the case, the bitstream loading may have failed and you should retry by unplugging and replugging the main USB on the Sonata board and redrag the bitstream into the
SONATA
drive. - After programming the bitstream, drag the
sonata_simple_demo_v0.2.uf2
into theSONATA
drive. - You should now see the user LEDs turn on and off, as well as the lowRISC logo appear on the LCD.
Non-persistent flow
If all of the above fails you can circumvent the RP2040 altogether by using JTAG:
openFPGALoader -c ft4232 sonata_bitstream_v0.2.bit
./util/mem_helper.sh load_program -e sonata_simple_demo_v0.2.elf
Do note that this flow is not persistent so you will need to reprogram both the bitstream and the firmware after each power cycle.
Sonata system v0.1
This is a pre-release bitstream that contains the basic infrastructure for a CHERIoT SoC:
- A GPIO for LED output and user input.
- 256 KiB of SRAM for both data and instructions.
- Revocation tags that cover all of SRAM.
- A TL-UL bus extended with capability tags in the user field.
- 2 UARTs.
- 2 I2C hosts.
- 3 SPI blocks: one for LCD, one for Flash and one for ethernet.
- USB device for using the user USB.
- Timer for generating interrupts.
You can download the generated bitstream below named sonata_bitstream_v0.1.bit
. This generated bitstream contains a bootloader that will load a software image from flash.
Besides the bitstream, you'll also need a UF2 to program the RP2040, which is named rpi_rp2_v0.1.uf2
. Future releases may be found in the sonata-rp2040 repository.
You will also need a UF2 of the software that you want to execute. You can create your own using our template repository. For testing I've also attached an example to this release named sonata_simple_demo_v0.1.uf2
to this release.
A quick start guide:
- Before plugging in your Sonata board, hold down the SW9 labelled "RP2040 Boot", and while holding this button plug your board into your laptop using the Main USB.
- A drive called
RPI-RP2
should pop up on your computer and dragrpi_rp2_v0.1.uf2
into it. - This drive should automatically dismount once the file is transfered and remount as
SONATA
. Once the remount has happened, you can drag in the bitstreamsonata_bistream_v0.1.bit
. You may have to unplug and replug the USB cable if the drive does not mount automatically. - Once programming is successful, you should see the CHERI LED light up and the LEGACY LED turn off. If this is not the case, the bitstream loading may have failed and you should retry by unplugging and replugging the main USB on the Sonata board and redrag the bitstream into the
SONATA
drive. - After programming the bitstream, drag the
sonata_simple_demo_v0.1.uf2
into theSONATA
drive. - You should now see the user LEDs turn on and off.
For more information please refer to the documentation.