
SotaSoC is a compact RISC-V System-on-Chip (SoC) targeting Tiny Tapeout tape-out and also capable of running on Artix 7 FPGA with Vivado. Suitable for custom boards, teaching, and as a base for your own SoC. Software support includes FreeRTOS, MicroPython (in development), and bare-metal.
A BSP is available for FreeRTOS and bare-metal development:
SotaSoC is capable of driving real-world applications such as a 320×240 ST7789 LCD display at ~10 FPS via SPI at 16 MHz clock.

The photo above was taken from a test on an Artix 7 FPGA; the tapeout chip is not yet available.
More examples and demos are available in the SotaSoC-BSP (https://github.com/sotatek-dev/SotaSoC-BSP) repository.
For more detailed technical information, see https://github.com/sotatek-dev/SotaSoC.
Prerequisites for testing:
This test verifies the basic functionality of the design by blinking an LED.
Write firmware to Flash
Download the blink firmware: https://github.com/sotatek-dev/SotaSoC-BSP/blob/main/examples-baremetal/blink-tt/build/blink-tt.bin, then write it to Flash at address 0x0000_0000.
Connect two LEDs to the board
Connect two LEDs (each with a suitable series resistor): one to uo_out[1] and one to uo_out[2].
Reset and run
Reset the board. The LED connected to uo_out[2] will blink.
If there is an error related to Flash and PSRAM, the LED connected to uo_out[1] will light up.
This test verifies the ability to drive the ST7789 LCD via SPI. Follow the instructions below:
Write firmware to Flash
Download the firmware from https://github.com/sotatek-dev/SotaSoC-BSP/blob/main/examples-baremetal/spi-st7789-tt/build/spi-st7789-tt.bin, then write it to Flash at address 0x0000_0000.
Wiring
Connect the LCD to the development board as follows:
| LCD Pin | Development Board Pin |
|---|---|
| VCC | VCC |
| GND | GND |
| CS | uo_out[3] |
| SCK | uo_out[4] |
| SDI (MOSI) | uo_out[5] |
| DC | uo_out[6] |
| RST | uo_out[7] |
| LED | VCC |
Expected Result
After reset, you will see some content displayed on the LCD as shown in the figure below:

The https://github.com/sotatek-dev/SotaSoC-BSP repository provides other sample firmware (e.g. UART, PWM, I2C). You can download any of them and write the binary to flash at address 0x0000_0000 to run different demos or test other peripherals.
Important note: To test I2C or GPIO[0], you need to cut the PSRAM B trace on the QSPI Pmod, because I2C and GPIO[0] are using pin uio[7].
To test blink: you need a QSPI Pmod and two LEDs connected to uo_out[2] and uo_out[1] as described in How to test above.
To test ST7789 LCD: you need a 320×240 ST7789 LCD (SPI). Connect it to the development board as described in the ST7789 LCD test section above.
To test other peripherals (UART, PWM, SPI, I2C, etc.), refer to the specific examples in the https://github.com/sotatek-dev/SotaSoC-BSP repository.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | SPI_MISO | UART0_TX | FLASH_CS_N |
| 1 | GPIO_IN[0] | ERROR_FLAG | BUS_IO[0] |
| 2 | GPIO_IN[1] | GPIO_OUT[0]/I2C_SCL | BUS_IO[1] |
| 3 | GPIO_IN[2] | GPIO_OUT[1]/SPI_CS_N | BUS_SPI_SCLK |
| 4 | GPIO_IN[3] | GPIO_OUT[2]/SPI_SCLK | BUS_IO[2] |
| 5 | GPIO_IN[4] | GPIO_OUT[3]/SPI_MOSI | BUS_IO[3] |
| 6 | GPIO_IN[5] | GPIO_OUT[4]/PWM[0] | RAM_CS_N |
| 7 | UART0_RX | GPIO_OUT[5]/PWM[1] | GPIO_IO[0]/I2C_SDA |