Unbreak FPGA CI and correct two unbacked hardware claims - #2081
Open
dmitrii-f-t27 wants to merge 1 commit into
Open
Unbreak FPGA CI and correct two unbacked hardware claims#2081dmitrii-f-t27 wants to merge 1 commit into
dmitrii-f-t27 wants to merge 1 commit into
Conversation
bootstrap/src/main.rs:4937,4962 — both synth.ys writers (Docker branch and
local-yosys branch) emitted `read_verilog {files}`, parsing the compiler's
own output with the Verilog-2005 frontend. The Verilog backend deliberately
emits SystemVerilog static casts (bootstrap/src/compiler.rs:5068,
`format!("{}'({})", width, buf)`), so yosys aborted with "Static cast is only
supported in SystemVerilog mode" on build/fpga/generated/uart.v. Switched
both to `read_verilog -sv -DSIMULATION {files}`, matching the working
invocation already used at bootstrap/src/suite.rs:859.
.github/workflows/fpga-build.yml:327 — the fpga-bitstream job cloned upstream
YosysHQ/nextpnr and configured it with -DARCH=xilinx, but upstream nextpnr
has no xilinx architecture, so CMake rejected the arch and the job exited 1.
Clone gatecat/nextpnr-xilinx instead; dropped the `-b nextpnr-0.8` tag (it
does not exist on the fork) and updated the following `cd` to the new
directory name. The build/ and `cp nextpnr-xilinx` steps already match the
fork's binary name and needed no change. prjxray clones left untouched.
README.md:60,61,70 — System Status advertised the FPGA end-to-end bitstream
pipeline as GREEN. Per the GitHub API, fpga-build.yml has 881 runs: 36
success, 842 failure, 3 cancelled; last success 2026-04-14; fpga-bitstream is
skipped because its `needs: fpga-synthesis` never passes. Downgraded the
three rows to RED with the measured numbers and the last-green date, while
noting the local gen-verilog smoke still passes 5/5.
specs/numeric/formats_catalog.t27:228 — the gf16 row cited Zenodo DOI
10.5281/zenodo.19227877 as its standard/source. That record is "Trinity B007:
VSA Operations for Ternary Computing v5.0", resource type Software, a single
2.0 kB file with no FPGA frequency and no design, so it backs neither the
standard nor the "323 MHz" claim. Dropped the "FPGA 35/35 at 323 MHz Artix-7"
clause and the zenodo reference; source now cites specs/numeric/gf16.t27,
which exists in this repo. All other fields unchanged.
docs/arxiv-submission/trinity-gf16.tex:296 — XC7A100T LUT count was given as
126,800, which is the part's flip-flop count; corrected to 63,400.
docs/arxiv-trinity-gf16-draft.md:116 — same correction.
Deferred: the spiOverJtag bitstream rename is not included; it involves binary
files and a .gz regeneration and is left for the maintainer.
dmitrii-f-t27
force-pushed
the
fix/ci-unbreak
branch
from
August 11, 2026 11:49
9ac616e to
33f265f
Compare
This was referenced Aug 12, 2026
This was referenced Aug 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four independent fixes, all small.
1.
fpga-synthesishas been red since 2026-04-14. Both writers ofsynth.ysinbootstrap/src/main.rs(:4937 Docker branch, :4962 local-yosys branch) emitread_verilog {files}with the Verilog-2005 frontend, while the backend deliberately emits SystemVerilog static casts (compiler.rs:5068). Yosys therefore fails withStatic cast is only supported in SystemVerilog modeonbuild/fpga/generated/uart.v. Both now readread_verilog -sv -DSIMULATION {files}, matching the invocation that already works atsuite.rs:859.That
fpga-synthesis-artypasses today is not a counter-example:--minimalnarrows the yosys input to{top}.v, which carries no test blocks.2.
fpga-bitstreamhas never succeeded once..github/workflows/fpga-build.yml:327clones upstreamYosysHQ/nextpnrand configures-DARCH=xilinx, but upstream nextpnr has no xilinx architecture — nextpnr-xilinx is a separate fork. CMake rejects the arch and the job exits 1. Now clonesgatecat/nextpnr-xilinx./dev/zeroplaceholder, and real nextpnr-xilinx will reject it. Building the chipdb from prjxray-db is a larger change and is deliberately not in this PR.3. README claimed GREEN for three red rows. Measured from the API:
fpga-build.ymlhas 881 runs — 36 success, 842 failure, 3 cancelled; last success 2026-04-14; thefpga-bitstreamjob is skipped behindneeds: fpga-synthesis. Those three rows now read RED with the last-green date. Thegen-verilogsmoke rows are left GREEN — that path uses the correct invocation and does pass.4. Two unbacked hardware figures.
specs/numeric/formats_catalog.t27:228citedzenodo 10.5281/zenodo.19227877as its hardware archive. That DOI resolves to Trinity B007: VSA Operations for Ternary Computing v5.0 — resource type Software, one 2.0 kB file, no FPGA frequency and no design. The 323 MHz figure and the Zenodo citation are removed;sourcenow points atspecs/numeric/gf16.t27. The 35/35 claim goes with them: the only 35/35 in this repo is Icarus and cocotb, i.e. simulation, not an FPGA run.docs/arxiv-submission/trinity-gf16.tex:296anddocs/arxiv-trinity-gf16-draft.md:116give the XC7A100T LUT count as 126,800. That is the part's flip-flop count; its LUT count is 63,400. Corrected. Note this makes the design's occupancy look better, not worse: 40,350/63,400 = 63.6%.Not in this PR, flagged for you:
specs/igla/coder/benchmark.t27:670and:677carry the same 35/35 at 323 MHz. That file faithfully quotes arXiv:2606.05017, so editing it before a v4 correction would desynchronise it from its own source.spiOverJtag_xc7a100tfgg676.bitrename (the file is an FTG256 bitstream; the real FGG676 build is parked under.v2) involves binaries and a.gzregeneration.