Hasty Briefsbeta

Bilingual

Building an FPGA 3dfx Voodoo with Modern RTL Tools

5 hours ago
  • #3dfx Voodoo
  • #RTL Tools
  • #FPGA
  • The article discusses building an FPGA reimplementation of the 3dfx Voodoo 1 using modern RTL tools like SpinalHDL.
  • The Voodoo 1's complexity comes from its fixed-function hardware, which includes various rendering behaviors like texture sampling, mipmapping, and depth testing.
  • The author highlights two key abstractions that made the project manageable: representing the Voodoo's register semantics in SpinalHDL and debugging using netlist-aware waveform queries in conetrace.
  • The Voodoo's register interface is deeply pipelined, requiring careful handling of register writes to avoid subtle corruption.
  • Voodoo registers are categorized into four types (FIFO, FIFO + Stall, Direct, Float) based on their behavior, which is architectural and not just software-facing.
  • SpinalHDL's `RegIf` abstraction allows encoding Voodoo-specific register semantics directly in the HDL, making the design more manageable.
  • Debugging involved tracing failing pixels through the rasterizer using conetrace, revealing a stack of small hardware-accuracy mismatches rather than a single catastrophic bug.
  • Modern RTL tools like SpinalHDL and conetrace help manage complexity by allowing architectural intent to be encoded directly and enabling more efficient debugging.