Initial commit: retroDE_ps2 — first-of-its-kind PS2 GS FPGA core (DE25-Nano / Agilex 5)

RTL (GS rasterizer, EE core stub, platform bridge, LPDDR4B path), sim regression
(272 TBs), docs, and tooling. Copyrighted PS2 content (BIOS, game code, GS dumps,
and all dump-derived textures/traces) is excluded via .gitignore and stays local.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 20:10:50 -04:00
commit ec82764bef
2462 changed files with 2174303 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
# rtl/dmac
EE DMAC. Matches `docs/contracts/dmac.md`.
## Wave 2 / Wave 2.5 contents
- `dmac_reg_stub.sv` — channel-2-focused register shell + single-transfer
state machine. Wave 2.5 revision is memory-backed: DMAC now issues real
memory reads via the `mem_rd_*` port (connected directly to
`ee_ram_stub` in the current topology; routing through
`ee_memory_map_stub` is deferred). State flow: IDLE → FETCH_WAIT →
ACTIVE_SEND → DONE. MADR is the real fetch source address.
See `docs/wave25_memory_backed_dma_plan.md`.
**EE-core chapter 3** added a CPU write path: the EE memory map's
new `ee_dmac_ch2_wr_*` port drives `reg_wr_en` / `reg_offset` /
`reg_wr_data`, so the EE core can program MADR/QWC/CHCR from a
MIPS bootstrap via `SW`.
**EE-core chapter 4** added a CPU read path (`reg_rd_en` /
`reg_rd_data` / `reg_rd_valid`, 1-cycle latency) plus a DONE_COUNT
monotonic counter at offset 0x40. CHCR/MADR/QWC/TADR read back
their stored values; DONE_COUNT increments each time the state
machine enters S_DONE. The EE map forwards CPU reads in the same
DMAC window through a new `ee_dmac_ch2_rd_*` pair, so software
can now poll CHCR.start or compare DONE_COUNT before/after a
transfer without needing INTC.
## Explicit non-goals (Wave 2 / 2.5)
- Multi-channel arbitration or fairness.
- Chain mode (normal / chain / interleaved transfer modes).
- Stall / ring / suspend semantics.
- Interrupt routing to INTC.
- QWC > 1 multi-beat transfers (state machine is shaped for it; initial
signoff is QWC == 1 per Wave 2.5 plan).
- Routing through `ee_memory_map_stub` (current topology is direct to
`ee_ram_stub`).
Each of these is a future-wave concern, not a stub-plan shortcut.