Georgia Tech's Vortex, the open-source RISC-V GPGPU, taken as a black box.
Part of the Tape-Out IP library, wired up by xirang. The GPU is a submodule at third_party/vortex, on upstream's default branch master; nothing in it is modified.
Vortex has no Verilog parameters. Its whole configuration is a set of VX_CFG_* macros, and two headers generated by its own ci/gen_config.py. The manifest's setup: cfg task runs the generator for both XLEN settings into build/vx/, and writes a Flist per setting that lists every RTL directory as include and library path. The xlen knob picks one of the two.
Only XLEN, the raw knobs and the FPU/TCU selectors are passed as macros. Everything else is derived inside VX_config.vh, which is left unevaluated on purpose; upstream's hw/syn/firesim/Makefile does the same, because passing the evaluated values turns the memory port count into zero.
| Knob | Values |
|---|---|
xlen |
32, 64 |
numClusters |
1–4 |
numCores |
1–8 |
numWarps, numThreads |
2, 4, 8, 16, 32 |
l2, l3 |
on, off |
Two receipt probes run at every point of the matrix: VX_gpu_pkg::NUM_SOCKETS must equal numCores, and VX_gpu_pkg::L2_MEM_PORTS must be at least 1. A projection that is wrong only away from the defaults shows up there.
$ ran run vortex cfg
$ ran test vortexVortex relies on Verilator's leniency for hierarchical references inside $bits, and the manifest allows that slang diagnostic. Signals used before their declaration were the other case; upstream fixed them in 8311a72 (vortexgpgpu/vortex#418), the commit the submodule is pinned at.
The FPU is fixed to the STD implementation that upstream picks for ASIC synthesis; FPNEW needs the nested cvfpu, DPI is for simulation and DSP for FPGAs. The extensions (TCU, DXA, RTU, graphics, virtual memory, atomics) are not exposed yet. Upstream's own test flow needs its RISC-V toolchain and runtime, and does not run here. The target is FPGA-proven at most: the design has no ASIC memories.
This repository: 任选其一 MIT · Apache 2.0 · 木兰宽松许可证 第2版.
third_party/vortex stays under Apache-2.0; see its licence file.