Goal
Запустить полный pipeline на реальном железе и получить измеренные tokens/sec из UART. Всё ПО готово в main (PR #9, #12, #13).
Anchor: φ² + φ⁻² = 3 · TRINITY · REAL HARDWARE
Что готово (в main)
| Артефакт |
Файл |
Статус |
| GF16 веса |
bitstream/igla_champion_gf16.bin |
BPB=0.1427, SHA de2719b5 |
| VSA matmul |
fpga/vsa/vsa_matmul.v |
64×64, 0 DSP48 |
| Synthesis top |
fpga/vsa/vsa_matmul_top.v |
XDC готов |
| CLI |
trios-fpga synth-vsa/flash/bench/status |
Rust, в main |
| Ring FP-01 |
OpenXc7Runner |
Docker regymm/openxc7:latest |
| Ring FP-02 |
XvcFlasher |
TCP/XVC, порт 2542 |
Hardware setup
XC7A100T (QMTECH board)
└── JTAG ←── ESP32 XVC bridge (WiFi, порт 2542)
└── UART TX ──→ хост 115200 baud
Steps
Step 1 — Синтез битстрима
cargo build --release -p trios-fpga
trios-fpga synth-vsa --rtl fpga/vsa/ --constraints fpga/vsa/vsa_matmul_top.xdc
Ожидаемый результат:
Step 2 — Прошивка через XVC
trios-fpga flash --xvc <ESP32_IP> --bitstream bitstream/design_v02.bit
trios-fpga verify --xvc <ESP32_IP> # IDCODE == 0x03631093
Ожидаемый результат:
Step 3 — Benchmark tokens/sec
trios-fpga bench --xvc <ESP32_IP> --uart /dev/ttyUSB0 --baud 115200
Ожидаемый результат:
Step 4 — Release v0.2-igla-fpga
gh release create v0.2-igla-fpga \
bitstream/design_v02.bit \
bitstream/igla_champion_gf16.bin \
bench/results_v02.json \
--title "v0.2-igla-fpga: IGLA Champion on XC7A100T" \
--notes-file release/RELEASE-v0.2.md
Step 5 — arXiv submit
Acceptance Criteria
- [ ] bitstream/design_v02.bit синтезирован (LUT ≤ 80%)
- [ ] IDCODE = 0x03631093 верифицирован на железе
- [ ] STATUS = 0x401079FC (DONE=1, no errors)
- [ ] tokens/sec ≥ 100 из UART
- [ ] watts/token задокументирован
- [ ] Release v0.2-igla-fpga опубликован
- [ ] arXiv draft отправлен
Debug hints (если упадёт)
Синтез падает
# Проверить Docker
docker pull regymm/openxc7:latest
docker run --rm regymm/openxc7:latest yosys --version
# Проверить RTL
iverilog -o /dev/null fpga/vsa/vsa_matmul_top.v fpga/vsa/vsa_matmul.v
XVC не отвечает
# Проверить ESP32
nc -zv <ESP32_IP> 2542
trios-fpga status --xvc <ESP32_IP> # IDCODE ping
UART нет токенов
# Проверить baud
stty -F /dev/ttyUSB0 115200
cat /dev/ttyUSB0 | hexdump -C | head
# STATUS регистр
trios-fpga status --xvc <ESP32_IP>
LUT > 80%
- Уменьшить
VECTOR_DIM с 64 до 32 в vsa_matmul_top.v
- Пересинтезировать
References
Priority: P0 · железо доступно · запускать немедленно
φ² + φ⁻² = 3 · TRINITY · NEVER STOP
Goal
Запустить полный pipeline на реальном железе и получить измеренные tokens/sec из UART. Всё ПО готово в
main(PR #9, #12, #13).Anchor:
φ² + φ⁻² = 3 · TRINITY · REAL HARDWAREЧто готово (в main)
bitstream/igla_champion_gf16.binde2719b5fpga/vsa/vsa_matmul.vfpga/vsa/vsa_matmul_top.vtrios-fpga synth-vsa/flash/bench/statusOpenXc7RunnerXvcFlasherHardware setup
Steps
Step 1 — Синтез битстрима
Ожидаемый результат:
bitstream/design_v02.bitсозданbitstream/design_v02.bit.sha256Step 2 — Прошивка через XVC
Ожидаемый результат:
0x03631093(XC7A100T)STATUS=0x401079FC(DONE=1)Step 3 — Benchmark tokens/sec
Ожидаемый результат:
bench/results_v02.jsonStep 4 — Release v0.2-igla-fpga
gh release create v0.2-igla-fpga \ bitstream/design_v02.bit \ bitstream/igla_champion_gf16.bin \ bench/results_v02.json \ --title "v0.2-igla-fpga: IGLA Champion on XC7A100T" \ --notes-file release/RELEASE-v0.2.mddesign_v02.bit+ SHA-256 в релизеStep 5 — arXiv submit
docs/arxiv-trinity-stack-draft.mdAcceptance Criteria
Debug hints (если упадёт)
Синтез падает
XVC не отвечает
UART нет токенов
LUT > 80%
VECTOR_DIMс 64 до 32 вvsa_matmul_top.vReferences
fpga/COMPLETE_CONNECTION_GUIDE.md— схема подключения ESP32fpga/ESP32_CONNECTION_GUIDE.md— XVC WiFi JTAG setupPriority: P0 · железо доступно · запускать немедленно
φ² + φ⁻² = 3 · TRINITY · NEVER STOP