The Road to DOOM on an FPGA - Building a Soft-Logic Computer with Open Source Tools
Stay tuned for notes and slides on Supercon 2026 in Pasadena, CA. (Available after the event)
https://hackaday.io/superconference
In the meantime, check out the following related links for more information on Hazard3 Doom, ULX3S, and more:
Demo
- ULX4M Doom Video Clip ULX5M Doom Video Clip
Hazard3
Literally the core of the Hazard3 Doom project.
- github.com/Wren6991/Hazard3 Luke’s Hazard3; 3-stage RISC-V processor, included in Hazard3 Doom as a submodule.
- wren.wtf/hazard3/doc Luke’s Hazard3 RISC-V Documentation.
- Hazard3 Pipeline Stages - Fetch, Execute, Memory
- RISC-V JTAG Debugging some of my JTAG debugging notes
- Notes for Hazard3 RISC-V with JTAG in particular my WSL X-Windows tips
Hazard3-Doom Stable
All open source, even the hardware.
- github.com/ulx3s/Hazard3-Doom
- hazard3-doom.readthedocs.io
- ulx3s.github.io/Hazard3-Doom/ web device tool
- ulx3s.github.io/ulx-doom A single page walk-through of Hazard3 Doom setup.
My WIP:
- gojimmypi/Hazard3-Doom (develop branch)
- hazard3-doom-gojimmypi-develop.readthedocs.io
- gojimmypi.github.io/Hazard3-Doom web device tool
- ambitious TO-DO list
Hardware
Can run on most FPGA boards, currently implemented on:
- ulx3s buy at Mouser
- ulx4m-ls, sign up at Crowd Supply
- ulx5m-gs, reach out on Discord or send me a message if interested.
Lattice
Maker of the ECP5 FPGA used in the ULX3S and ULX4M boards:
For reference, this DDR3 controller NOT used in Hazard3 Doom, but is a good example of a Lattice IP core:
Alliance Memory
The DDR3 memory on the ULX4M:
LiteX
Code generator, used for DDR3 controller for Hazard3-Doom.
- enjoy-digital/litedram - The DDR3 controller used in Hazard3 Doom.
- LiteX BIOS
- MicroPython on LiteX: Python at both ends
wolfSSL
Cryptographic libraries. I wrote some related ESP32 and RISC-V blogs while working at wolfSSL:
- wolfSSL visits Radiona in Zagreb
- wolfSSL on Softcore RISC-V Hazard3 on the ULX3S!
- Part 1: Ready for Integration: wolfSSL and RISC-V
- Part 2: Installing and Configuring wolfSSL on RISC-V
- Part 3: Sample Application: Integrating wolfSSL with a RISC-V
- Part 4: Customization and Advanced wolfSSL Features on RISC-V
- Part 5: 5 Real-World Use Cases and Troubleshooting
- Secure Your Apple HomeKit Espressif ESP32 Devices with wolfSSL (connect your ULX3S ESP32)
wolfSSL Examples
Some things to do with the ESP32 on the ULX3S:
My SSH on a stick (the M5Stack ESP32 “Stick”):
More wolfSSL Links:
Waveshare
Some of the many available RPi Carriers for ULX4M and ULX5M boards:
Other Cool Stuff
- Soft z80386 on the ULX3S (using nand2mario z386 MiSTer core).
- nand2mario’s Intel 8086 Microcode Explorer
- Bruno Levy’s HDMI Tutorial
- ulx3s.github.io for examples and more
- CoreMark
- pinout
- fpgas.online
- DOOM on Bare-Metal FPGA by mummanajagadeesh
Supercon 2019 Badge
Also used a Lattice ECP5 FPGA, a great example of a custom badge with a lot of features:
- Jeroen Domburg - Design and Manufacture of the Hackaday Superconference Badge - YouTube
- Behind the Scenes of the 2019 Superconference Badge - Hackaday
- 2019 Superconference Badge Gold Release Bitstreams
- 2019 Superconference Badge PCB Files
- 2019 Superconference Badge Gold image
-
GateMate
The FPGA on the ULX5M:
- GateMate FPGA Datasheet CCGM1A1 CCGM1A2
- A 3.3V GPIO Tolerance Evaluation for GateMate FPGA
- oshn.eu/gatemate
Bootloaders
- tinydfu-bootloader for the ULX5M
- emard’s ULX3S DFU Binaries
- emard’s Hackaday Supercon 2019 Playground
- Hazard3-Doom DFU bootloader for ULX3S
Toolchain
- verilator
- YosysHQ/oss-cad-suite-build
- YosysHQ ECP5 Primitives
- usbview
- github.com/olofk/serv Award Winning SERV RISC-V!
- my VLE - Verilog Language Extension for Visual Studio
Tiny Tapeout
I’m scheduled to be a workshop assistant for the Tiny Tapeout workshop at Supercon 2026. Check out the following links for more information:
- Tiny Tapeout
- Tiny Tapeout Store
- Your projects on Tiny Tapeout App
- Tiny Tapeout Advanced Template Project (includes bidirectional pins)
- Tiny Tapeout GDS Action for the ULX3S and ULX4M ECP5 FPGA
- TT fpga-ulx3s-experimental-test
- TT Commander connect to your TT board!
Hazard3 Doom Credits and Licensing
No paid affiliate or sponsored links: everything mentioned is just from my personal experience. No particular endorsement is implied. I have no financial interest in any of the products or companies mentioned.
For Hazard3 Doom:
Chat and support
Discord Channel
- https://discord.gg/qwMUk6W (problems/question/general chat)
Gitter Channel
- https://gitter.im/ulx3s/Lobby (Focused on development)
Contact
Contact me for corrections, additions or comments.