Running Doom on Our Custom CPU and Going Viral
8 hours ago
- The team designed a custom CPU from logic gates, adapted DOOM source code, and ran it on an FPGA at 0.7 FPS initially.
- Major challenges were memory size (DDR3 vs BRAM) and speed; they implemented two caches (ICache and DCache) with a memory arbiter to handle DDR3 latency.
- Porting DOOM revealed CPU bugs such as infinite loops, incorrect immediate calculations, and cache overwrite issues; debugging required isolating parts of the program.
- Hardware issues included unstable DDR3 interface (solved with Clock Domain Crossings and FIFOs) and keyboard input problems (used UART forwarding from a laptop).
- Optimizations like raising clock speed, fixing fetch stage inefficiency, adding multiplication instructions, pipelining cache reads, and enabling compiler optimization raised FPS from 0.7 to 15-20.
- The team plans to implement out-of-order processing and better memory access to reach 30 FPS, and possibly port Quake 2 after building a basic GPU.