A developer built an FPGA reimplementation of the 3dfx Voodoo 1 GPU using SpinalHDL, a modern hardware description language. The post covers two key abstractions that made the project tractable: encoding the Voodoo's four register behavior categories (FIFO, FIFO+Stall, Direct, Float) directly in SpinalHDL's RegIf abstraction, and using a netlist-aware waveform query tool called conetrace to debug a subtle multi-stage rendering bug. The bug appeared to be a framebuffer memory-ordering hazard but turned out to be three stacked precision mismatches in W quantization, perspective texcoord rounding, and blend-factor destination color handling. The post argues that modern RTL tools reduce the cognitive load of hardware design by making architectural intent explicit and execution queryable.

10m read timeFrom noquiche.fyi
Post cover image
Table of contents
Table of ContentsA Fixed-Function Chip That Is Harder Than It LooksWhy Register Writes Cannot All Behave the Same WayThe Voodoo's Four Register BehaviorsEncoding Register Semantics in SpinalHDLQuerying Execution Instead of Scrolling WaveformsWhat Modern RTL Tools Actually Changed
211 Impressions