Everything you need before week 1. Plan one weekend of preparation.
Two paths
Path A: physical kit. Buy a Sipeed Tang Primer 25K (or Tang Nano 20K as the Tier-1 alt). All labs work end-to-end; you flash bitstreams to silicon; the capstone runs on hardware you own.
Path B: browser-only. No kit. Use the academy workbench at https://virtuscyberacademy.org/workbench/. All labs except the final flash-to-silicon step work end-to-end; the capstone can be demonstrated via the workbench's simulation view.
Pick A if you want the full experience and can afford the hardware. Pick B if budget is tight or hardware shipping is a barrier. Path B students who later acquire hardware can re-do the final labs.
Path A: Physical kit
Canonical board: Sipeed Tang Primer 25K
The course's canonical target per ratification 2026-05-01.
- Silicon: GW5A-LV25 (Gowin Arora V family); 22,800 LUT4 budget
- Toolchain: Apicula (gowin_pack), open-source bitstream emitter; Yosys for synthesis; nextpnr-himbaechel for place-and-route
- Order: Sipeed AliExpress shop (typically ~$75 starter kit; ~$144 full kit including HDMI cable + PMOD breakout + USB cable)
- US distributors: as available; check the Sipeed wiki for current resellers
Tier-1 alternative: Sipeed Tang Nano 20K
- Silicon: GW2AR-LV18 (Gowin Arora II); 20,736 LUT4 budget
- Apicula chipdb:
GW2A-18C.msgpack.xz - Smaller and cheaper than the Tang Primer 25K. Used in earlier course iterations and still supported for advanced-track students who want a tighter form factor
- Reference doc:
virtus-academy-support/docs/references/tang-nano-20k-board-reference.md
Required local software
Install before week 1:
- Apicula 0.32 or newer.
pip install apyculaplus the chipdb file for your board - Yosys 0.40 or newer. Synthesis.
apt install yosyson Debian/Ubuntu; build from source elsewhere - nextpnr-himbaechel (the Gowin variant). Build from source via the nextpnr GitHub instructions
- openFPGALoader. Flash bitstreams to the board.
apt install openfpgaloaderon recent distributions - Verilog editor of choice. VS Code with the Verilog HDL extension is the academy default; Vim plus syntax files works fine
- Python 3.11+. The academy toolchain (assembler, linker, VM translator, compiler) is Python
- gdb-multiarch with RISC-V support.
apt install gdb-multiarch - Ghidra 11.0+. For weeks 4, 6a, and 10 lab reconciliation steps
Optional but recommended
- USB-Blaster JTAG cable (some Tang boards need this for stable flash; check your board's docs)
- A multimeter, logic probe, and basic breadboard kit for weeks 1-3 (only required for the bench-path discrete-logic labs)
- HDMI display or capture device for week 11+ HDMI output
- Soldering iron for hand-modifications (advanced-track only)
Verification: post-install smoke test
After installing, run the academy's smoke-test script:
cd ~/student-repo/
./scripts/smoke-test-toolchain.sh
Expected output: 5 PASS lines (apicula, yosys, nextpnr, openFPGALoader, python). If any FAIL, debug before week 1.
Path B: Browser-only
What you need
- A modern browser (Chrome / Firefox / Safari / Edge, 2024 or later)
- Stable internet (the academy workbench is at
https://virtuscyberacademy.org/workbench/) - An academy account to save your work between sessions
What works in the browser
Stages 1-4 of the FPGA pipeline run entirely client-side via WebAssembly: Yosys synthesis; nextpnr-himbaechel place-and-route; bitstream emit; simulation view. Stage 3 (the final bitstream-emit step that produces a .fs file the academy can verify on real silicon) is server-hop via the academy-bitstream-server endpoint.
The workbench supports every lab in CSA-101 through the simulation view. The flash-to-silicon step (week 5 lab 5.3+5.4 plus the capstone's hardware-verification dimension) requires either a physical board or instructor-arranged shared bench access.
What you still need to install locally
- A text editor for offline note-taking and Toolchain Diary entries
- Optional: Ghidra (for weeks 4, 6a, 10 reconciliation labs; Ghidra does not run in the browser as of this writing)
Folder structure recommendation
~/student-repo/
├── toolchain-diary.md (your running tool journal)
├── lectures-notes/ (per-week)
├── labs/ (per-week worksheet copies + your work)
├── projects/
│ ├── ch1-boolean/
│ ├── ch2-arithmetic/
│ ├── ...
│ └── ch12-virtus-os/
├── capstone/ (week 14 deliverable assembly)
└── scratch/ (anything experimental)
Use git from week 1. Commit often. Push to a personal GitHub or GitLab repo (or to the academy GitLab if your cohort has accounts provisioned). The git history is part of your portfolio.
Reading material to bookmark
- Petzold reading guide, the page-by-page map for the course
- RV32I-Lite encoding card, the ISA contract for everything from week 4 forward
- VM segment cheat sheet, the segment-to-base-address map from week 8 forward
- VOF v1 layout reference, the object-file format from week 6 forward
- Virtus OS stdlib service reference, the OS API from week 12 forward
- The academy workbench, for browser-path work
- NESdev wiki and RISC-V User-Level ISA Specification, for outside reading
Estimated install time
| Step | Time |
|---|---|
| Install apicula + chipdb | ~30 min |
| Build nextpnr-himbaechel from source | ~45 min (depends on machine) |
| Install yosys + openFPGALoader | ~20 min |
Install Python 3.11+ and pip install -r requirements.txt |
~15 min |
| Install gdb-multiarch | ~10 min |
| Install Ghidra | ~30 min |
| Run smoke-test | ~10 min |
| Total path A | ~2.5 hr; one focused evening |
| Total path B | ~30 min (browser bookmarks + academy account) |
Where to get help
- Academy Discord channel (link distributed at enrollment)
- Instructor office hours (schedule shared at course start)
- RISC-V community forums for ISA questions
- The Gowin nextpnr wiki page for FPGA toolchain questions
If smoke-test fails, ask for help before week 1 starts. Setup friction at the front of the course costs every later week. Better to spend the weekend before week 1 fixing your install than to start week 5 unable to flash a bitstream.
Setup guide v0.1 prepared 2026-05-11. Updates after pilot-cohort install feedback.