Getting Started

Author: Johannes Hofmann 2025

This chapter provides a quick introduction for working with the PicoNut project – both in simulation and on real hardware. It outlines the required tools and guides you through running a basic “Hello World” example.

Prerequisites

For simulation of the PicoNut using its SystemC model:

For software compilation:

For synthesizing:

  • OSS CAD Suite (tested with 2025-07-24) (latest release)

  • Intel® Compiler for SystemC (tested with releases 1.25.1 and 1.6.8) (latest release)

Alternativly, you can use a docker image with all the necessary software preinstalled.

Navigate to the base directory of the source tree.

$ cd tools/docker
$ ./docker-create-piconut-image.sh --cloud-raw --qt

Note

You can also build the image yourself with more options for which software to install. The build process is pretty resource intensive. It is highly recommended to have at least ~24GB of memory as well as ~80GB of disk space available. For more information use:

$ ./docker-create-piconut-image.sh --help

To run the examples, a shell in the container can be started as follows:

$ docker compose up -d
$ docker exec -it piconut_container bash

Note

Older versions of Docker Compose may require to write docker-compose instead of docker compose.

Running the “Hello World” Example in Simulation

Navigate to the base directory of the source tree.

$ make hello

If everything works, you should see in the console PicoNut/RISC-V in ascii art style.

Running the “Hello World” Example on ULX3S FPGA Board

Note

Currently the ULX3S FPGA development board is supported only.

  1. Setup ULX3S udev rules. They are found here.

  2. Plug the USB cable from your computer into the US1 USB port of the ULX3S.

Note

When using docker make sure to plug in the board before starting docker to make sure all devices are mounted in the container.

Navigate to the base directory of the source tree.

$ make hello-ulx3s
  1. To see the printed “Hello World!” output via UART. The UART signal is transmitted via the FTDI chip. It has a baudrate of 115200. The port (typical ttyUSB0) is available after the FPGA was flashed. To connect type:

$ picocom -b 115200 /dev/ttyXXXX

If everything works, you should see in the console PicoNut/RISC-V in ascii art style.

Note

To reset the system press the button F1 on the board.