Next Run
Queue for the 5-hourly automation. Checked = eligible — the topmost checked item runs next. Uncheck to hold/skip an item (edit this file, or toggle on the Status page when the site is served via scripts/serve_site.py). The automation removes completed items, preserves your holds, and appends new suggestions checked by default.
Roadblocked items are not queued here — they're parked in
docs/unsolved/ until a human fixes them on a branch.
Currently: UNSOLVED-001 (MOESI DMA flush,
BUG-006).
Queue
- Wireless peripheral driver — package NPU result frames and transmit to remote displays (currently a no-op port)
- Multi-word NPU DMA — burst-load a full weight tile (256 words) per DMA transaction
- Formal verification of MOESI FSM — SymbiYosys: no deadlock;
npu_dma_ackpulses exactly once per request - GPU vector ALU: more ops — v1 covers ADD/SUB/AND/XOR; add OR, shifts, and min/max/compare
Last run
2026-07-21 — GPU / AIPU internal micro-architecture — minimum viable 16-lane INT32
vector ALU (ADD/SUB/AND/XOR), completing the item that had been sitting checked at the
top of the queue since it was scheduled for 2026-07-20 20:00 — that run and every
5-hourly run since never actually fired (cron never produced a single log line; see
automation/guard.sh fixes below), so this was done as a manual catch-up run in its
place.
- New
rtl/gpu.sv: 16-lane parallel INT32 vector ALU (LOAD_A/LOAD_B/COMPUTE/NOP, opcode0x57).vec_a/vec_bpersist across instructions. rtl/noc_router.sv: GPU port restored (3rd port; was CPU+NPU only since v3) — custom-0 now routes to GPU.rtl/base_die_top.sv/rtl/system_top.sv: GPU instantiated directly on the base die (no UCIe crossing for this MVP); newgpu_result_*bus forwarded tosystem_top.- 4 new tests in
tb/tb_server_dispatch_unit.py(run_gpu_vector_add,_sub,_bitwise,_random_reload). Full regression: TESTS=15 PASS=15 FAIL=0. MOESI suite unchanged (1 PASS / 2 FAIL, BUG-006 still open, confirmed unrelated). - Docs:
gpu.md(new),todo.md,progression.md,verification.md,README.md,mkdocs.ymlnav. - Fixed two bugs in
automation/guard.shfound while diagnosing why the schedule hadn't run:date -d 'monday this week'returns the next Monday (not the most recent one) when today isn't Monday, so the weekly-cap window was silently wrong; and cron's minimalPATHdoesn't include~/.local/bin, where theclaudeCLI lives, so the automated invocation ofclaude -pwould never resolve under cron even though the crontab entry itself was correct.guard.shnow computesweek_startfrom the ISO weekday and exports an explicitPATHincluding$HOME/.local/bin.
2026-07-20 — Added the Unsolved log: pulled "Fix BUG-006" out of the
queue above and logged it as UNSOLVED-001 — it had already
gone unsolved through two runs (found 2026-07-19, re-attempted and still unresolved
2026-07-20) without new information, so it's parked for a human to investigate on a
branch rather than keep retrying it unattended every 5 hours. automation/dev_cycle.md
now checks that log before picking a queue item, and routes future roadblocks there
instead of leaving them silently unfinished in the queue.
2026-07-20 — Chiplet disaggregation + UCIe (user-directed, out of queue order).
- Split
system_topinto three dies connected by modeled UCIe links:base_die_top.sv(NoC router + MOESI L2 + external I/O),cpu_chiplet_top.sv(riscv_core+ imem + halt),npu_chiplet_top.sv(npu+ result buffering). New support RTL:ucie_chan.sv(credit-based flow control + crossing latency),ucie_link_ctrl.sv(link training FSM),duck_ucie_pkg.sv(flit reference, docs only).system_top's external port list is unchanged; full writeup at chiplets.md. noc_router.sv,duck_coherency_ctrl.sv,riscv_core.sv, andnpu.svare all unmodified — every new file is a bridge/wrapper.- BUG-007 (found and fixed): splitting network ingestion from CPU stall
cycles (
cpu_readyis now UCIe channel credit, not!core_stall) let the fetch pointer race ahead to the halt word while a chainedremu t3, s1, s2/remu t4, s5, s1pair was still retiring, sohaltfired ~24 cycles early andt3read back as0instead of1. Fixed by gatinghalton!core_stallincpu_chiplet_top.svand raisingHALT_DRAIN_CYCLES10 → 40 intb/tb_server_dispatch_unit.pyfor the remaining one-op race window. See docs/issues/BUG-007.md. - Testbench updates: hierarchical register-file paths (
dut.cpu_core_inst...→dut.cpu_chiplet_inst.cpu_core_inst...), five new sources added toMakefile'sVERILOG_SOURCES. - Full
tb_server_dispatch_unitregression: TESTS=11 PASS=11 FAIL=0 (matches pre-split baseline). MOESI integration: 1 PASS / 2 FAIL, unchanged — confirmed BUG-006 is pre-existing and unrelated to this session's changes.
2026-07-19 — Fixed run_riscv_program (user-directed, out of queue order).
- BUG-004:
rtl/system_top.svwas calling$finishdirectly from RTL 20 cycles afterhalt, racing cocotb's own end-of-regression shutdown and causingSimFailure: Simulator shut down prematurelyon every run. Removed the block — simulation lifecycle now belongs entirely to cocotb, as it already did for every other test in the suite. - BUG-005: with BUG-004 fixed, the sim ran to completion and exposed a second,
independent bug:
tb/cpu_peak_tests.asm'sremu t4, s5, s1check assertedt4==55, but88560 % 205is actually0(205×432=88560exactly; the comment's205×431+55=88410arithmetic was wrong). Corrected the expected value. - Full
tb_server_dispatch_unitregression: TESTS=11 PASS=11 FAIL=0. - While verifying, also ran the MOESI suite as a sanity check and found
TC-MOESI-1/TC-MOESI-2 failing with BUG-003's exact symptom even though BUG-003's
fix (
ST_NPU_GAP) is present in the code. Confirmed viagit stashthat this predates this session's changes — filed as BUG-006 (open) rather than fixed here, since it's unrelated to therun_riscv_programscope of this run.