The VERA Ecosystem

The repository contains more than the module PCB. Its tools form a path from source code to a programmed board and then to an interactive hardware test.

FPGA firmware

The Verilog sources live in firmware/source. They target the iCE40UP5K-SG48 and build with Yosys, nextpnr, and Project IceStorm. The pinned container build produces firmware/build/vera.bin and performs timing checks before accepting the image.

Programmer and command-line tool

The dedicated programmer is based on a Raspberry Pi Pico. Its PCB, firmware, and native command-line application are kept together under toolchain/programmer. The command-line tool identifies the flash device, programs the FPGA image, verifies its contents, and reports failures rather than leaving a partly programmed device looking successful.

The programmer’s READ and WRITE LEDs show flash activity. The Pico’s onboard LED reports whether the FPGA completed its boot sequence. This makes the tool useful both for manufacturing and for firmware development.

Arduino Mega bridge

The driver PCB and firmware turn an Arduino Mega 2560 into a USB-to-parallel bridge. The bridge owns the electrical bus cycles and exposes a framed serial protocol at 500,000 baud. Commands cover reset, register access, block VRAM transfers, and SPI transfers.

Keeping graphics policy on the computer and bus timing on the bridge has two benefits: the firmware stays small, and large test assets can be prepared by the desktop application before being sent to VERA.

VERA Test Console

The Qt desktop application provides a guided hardware test surface. It can discover and connect to the bridge, identify the FPGA image, configure VGA, upload test patterns, exercise tile and sprite rendering, play PSG audio, inspect interrupts, and perform a read-only SD-card diagnostic.

Continuous integration builds a self-contained Windows installer with the Qt runtime included. An end user therefore needs neither a compiler nor a separate Qt installation. See VERA Test Console for the practical workflow.