Skip to content

fix(ci): read trinet_node_core.v in the TRI-NET baud and node-v2 workflows - #889

Open
gHashTag wants to merge 1 commit into
mainfrom
fix/trinet-node-core-reads
Open

gHashTag wants to merge 1 commit into
mainfrom
fix/trinet-node-core-reads

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Fixes #888. Part of #851 (W15).

Change

  • ax7203-trinet-baud.yml and ax7203-trinet-node-v2.yml now read fpga/portable/trinet_node_core.v in every read_verilog/iverilog list, and name it in paths:. 5b09159 moved the node logic there on 2026-08-02. ax7203-trinet-fleet.yml and trinet-portability.yml already read it.
  • set -o pipefail on the six steps that pipe into tee. A Yosys error now fails the Yosys step instead of surfacing 16 nextpnr attempts later as no clean seed across heap+sa x8. The Yosys and fasm2bit steps carry a # tee-pipefail: marker, because the gate takes -nocarry and docker … bash -c for a shell of their own.
  • tools/tee_pipefail_baseline.txt: the six entries are removed, 78 → 72. The gate is a ratchet, and a stale entry fails it.

Measured

Locally, sources from origin/main 57de4a1:

check without the core with the core
iverilog -g2012, Node v2 golden TB exit 3, Unknown module type: trinet_node_core (the error in CI run 30796536505) exit 0
vvp — SIM RESULT: 6/6 keyed receipts bit-exact (fails=0), TB PASS
yosys hierarchy -check -top trinet_node_v2_ax7203 with the Xilinx cell libraries exit 1, the error in CI run 37225332379 exit 0
tools/check_tee_pipefail.py — 122 of 122 workflows read, 72 known, 0 new, exit 0
same, with the Yosys step's marker removed — flags the step (the marker is needed)

CI: both workflows have no pull_request trigger, so they were dispatched on this branch at e2756f9. Both passed (2026-10-05):

run result
Node v2, 37246227964 golden: SipHash TB PASS; SIM RESULT: 6/6 keyed receipts bit-exact (fails=0), TB PASS. bitstream: Yosys 1489 LCs, routed with heap/1, .bit sha256 77b5bfa9…0948e
Baud Ladder, 37246230148 baud30: 1498 LCs, heap/1, .bit bda1ef35…83ce. baud60: 1525 LCs, heap/1, 6d2a8715…a429. baud120: 1545 LCs, heap/1, 6fdf7192…8532

Main's last runs of these two workflows (37225332354, 37225332379) failed at iverilog and after 16 nextpnr attempts respectively.

This PR's doc-refs and orphan-artefacts checks are red for the same files as main since #510 merged (research/arxiv_gft/*, research/GFT_DEFECTS_2026-08-08.md, research/GF_INVENTORY_2026-08-08.md). It inherits them from main and does not touch them. #872 fixes them.

Not measured

  • Whether the designs meet 50 MHz. Both workflows run nextpnr with --timing-allow-fail and keep its log in /tmp, so a routed bitstream says nothing about timing.
  • All four chipdb cache lookups missed (Cache not found for input keys: chipdb-xc7a200tfbg484-2-regymm-…), and each job built the chipdb. There was no chipdb entry on main to restore: see ci: setup-zig caches fill the 10 GB Actions cache and evict every chipdb #844.
  • No board load. None is needed to merge this.

🤖 Generated with Claude Code

…flows

5b09159 (2026-08-02) moved the node logic into
fpga/portable/trinet_node_core.v. The fleet and portability workflows
were given the new file; ax7203-trinet-baud.yml and
ax7203-trinet-node-v2.yml were not, and both have been red on main
since 2026-08-02. Neither runs on pull_request, so no PR showed it.

- node-v2 golden: iverilog "Unknown module type: trinet_node_core"
  (exit 3), bitstream skipped.
- baud: Yosys printed the ERROR but the step stayed green (tee without
  pipefail, and the next grep matched the ERROR line). The job then
  built the chipdb and ran 16 nextpnr attempts on a missing node.json,
  and failed as "no clean seed across heap+sa x8".

Add the core to both workflows' source lists and paths filters, and set
pipefail on the six steps that pipe into tee, so a Yosys error stops at
Yosys. Their six tee_pipefail_baseline entries are removed (78 -> 72).

Local controls, sources from origin/main 57de4a1:
- iverilog without the core: exit 3, CI's error; with it: vvp prints
  "SIM RESULT: 6/6 keyed receipts bit-exact (fails=0)", TB PASS.
- yosys hierarchy -check (Xilinx cell libs): exit 1 without the core,
  exit 0 with it.
- tools/check_tee_pipefail.py: 72 known, 0 new, exit 0; removing the
  Yosys step's marker makes it flag the step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

X Brain Health Check

Score: 100.0/100
Status: 🟢 HEALTHY
Threshold: 80/100

X Brain is above merge threshold

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

🧪 Brain Stress Test Results

Score: not measured (no stress test prints a Score: line)
Status: 🟢 PASS
Threshold: 270/300

X Stress test passed

@tri-claw

tri-claw Bot commented Oct 10, 2026

Copy link
Copy Markdown

Summary by t27-bees

This PR fixes two TRI-NET CI workflows to include fpga/portable/trinet_node_core.v (added in 5b09159) in their Verilog source lists and path triggers, and adds set -o pipefail to six steps that pipe into tee so Yosys errors fail fast instead of surfacing later as nextpnr seed failures. The baseline file is updated to remove the now-covered entries.

Worth a look

  • .github/workflows/ax7203-trinet-node-v2.yml:30 — The iverilog command lists trinet_node_v2_ax7203.v before trinet_node_core.v and trinet_siphash24.v. If trinet_node_v2_ax7203.v references modules defined in those later files, iverilog may still resolve them (it reads all sources), but the conventional dependency order would be siphash → core → node → testbench.
  • .github/workflows/ax7203-trinet-baud.yml:56 — The read_verilog order is trinet_siphash24.v, trinet_node_core.v, trinet_node_v2_ax7203.v; this matches the dependency chain and is correct.
  • .github/workflows/ax7203-trinet-node-v2.yml:27 — The SipHash iverilog step adds set -o pipefail but does not include trinet_node_core.v (not needed for that testbench), which is fine.
  • .github/workflows/ax7203-trinet-baud.yml:100 and .github/workflows/ax7203-trinet-node-v2.yml:99 — The fasm2bit steps add set -o pipefail with a comment explaining the bash -c shell; the pipe is only around the docker run … | tee, so pipefail will catch a failure from the docker command itself.
  • tools/tee_pipefail_baseline.txt — Six entries removed (lines 52–53, 59–62 in the old file). The gate is a ratchet; if any of those steps regress and lose pipefail, the check will fail.

Read: 3 files, +15 -9, the whole diff. Head 25b0839. Model: openai-compatible/nvidia/nemotron-3-ultra-550b-a55b. Commands: @t27-bees review | summary | help | pause | resume. Free for every repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TRI-NET baud and node-v2 workflows red on main since 2026-08-02: trinet_node_core.v not read

1 participant