Skip to content

v1.3

Latest
Compare
Choose a tag to compare
@elliotb-lowrisc elliotb-lowrisc released this 12 Aug 15:02
· 19 commits to main since this release

Please use the v1.3 branch of the sonata software repository for compatible software. Please note that software that ran on v0.4 and v0.2 will not be compatible with this release.

Release Notes

This release is primarily performance improvements.
It also adds external interrupts.

This release contains on top of v1.2:

  • Over 3x performance improvement of HyperRAM memory system.
    • Introduces separate data and instruction TL-UL ports, read buffering filled by burst reads, and write coalescing logic that can drive write bursts.
    • Particularly improves execution times when loading un-cached instructions from the HyperRAM, such as CHERIoT-RTOS interrupt handlers.
  • 2x throughput improvement in back-to-back SRAM accesses.
    • Increase the number of outstanding requests from one to two to avoid stalls.
    • Particularly improves the performance of capability load/store operations, such as context switching.
  • 2x performance improvement of multiplier unit.
    • Change from a 3-4 cycle multiplier to a 1-2 cycle multiplier that uses FPGA DSP blocks.
  • GPIO Pin-Change Interrupts (PCINT) introduced.
    • Can trigger a core interrupt when a GPIO pin experiences a rising-edge, a falling-edge, any-edge, or a low-level.
  • Halved access latency of GPIO, PWM, and timer peripherals.
  • SW-configurable SPI COPI line idle state.
  • Simulation improvements.
  • Test improvements.

Bitstream information

The utilization of the bitstream:

Type Used Available Percentage
Slice LUTs 26,942 32,600 82.64%
Slice Registers 16,210 65,200 24.86%
Block RAM Tiles 43 75 57.33%
DSPs 16 120 13.33%

Other bitstream statistics:

Name Value
Overall WNS 0.058 ns
System clock WNS 0.058 ns
HyperRAM clock WNS 0.428 ns
USB clock WNS 8.201 ns
Total on-chip power 0.318 W

Quick start guide

Here's the developer flow for using these files:

  1. Make sure the bitstream select switch (immediately below the main USB-C port) is set to position 1.
  2. Before plugging in your Sonata board, hold down the "SW9" button labelled "RP2040 Boot", and while holding this button plug your board into your laptop using the Main USB.
  3. A drive called "RPI-RP2" should pop up on your computer and copy rpi_rp2_v1.3.uf2 into it.
  4. 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.3.bit.slot1.uf2.
  5. 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.
  6. After programming the bitstream, drag the sonata_simple_demo_v1.3.slot1.uf2 into the "SONATA" drive.
  7. You should now see the user LEDs turn on and off, as well as the lowRISC logo appear on the LCD.
  8. You can also drag snake_demo_v1.3.slot2.uf2 into the SONATA drive to play snake using the joystick. Make sure to switch to the second software slot (SW7) and reset the board with SW5. Watch the CHERI error LEDs as you hit the boundary.