Add general Cyclone IV bitstream-RE tooling + routing-codec data - #1
Open
labeth wants to merge 1 commit into
Open
Add general Cyclone IV bitstream-RE tooling + routing-codec data#1labeth wants to merge 1 commit into
labeth wants to merge 1 commit into
Conversation
Curated general-purpose additions (target-specific RE deliberately kept out), placed per repo convention (scripts in fuzz/, data in results/, notes in docs/): - fuzz/quartus_grind.py: memory-safe Quartus compile scheduler (RAM gate + watchdog + OOM-safe /proc kill) — lets bulk CRAM mining run unattended on a small box. - fuzz/iostd_codec_mine.py: IOB I/O-standard/drive/slew codec miner (variant-vs-ref diff cancels routing). Ships as method + a documented HONEST NEGATIVE: the electrical bits are not cleanly position-invariant, and the small 'invariant' core is a min-offset normalisation artifact. - fuzz/dense_fill.py: snake-chain column-fill route-forcing payload. - fuzz/config.py: WORK_DIR honors $FUZZ_WORK_DIR (isolated parallel campaigns). - results/rcf_wire_cells.json: 102 routing wires -> CRAM cells across 5 switch classes (RCF back-annotation) — solid positive routing-codec data. - results/iostd_specimens.jsonl: raw specimens behind the iostd negative, committed so a better alignment is re-analyzable without re-mining. - docs/mined_codec_data.md: notes on both data files. Cleared a 4-lens adversarial review (privacy / correctness / license+accuracy / value+honesty) and a no-Quartus functional test (analyze reproduces on shipped data). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
General-purpose additions to the fuzzing/mining toolkit, placed per repo convention (scripts in
fuzz/, data inresults/, notes indocs/). Target-specific reverse-engineering was deliberately kept out — this is only the reusable-for-any-Cyclone-IV pieces.What's here
Tooling (
fuzz/)quartus_grind.py— a memory-safe Quartus compile scheduler: a RAM gate + watchdog + OOM-safe/prockill, so bulk CRAM mining can run unattended on a small box without OOM-crashing it.dense_fill.py— a snake-chain column-fill route-forcing payload; it saturates a LAB column to force many distinct wires per compile (far more bits/compile than a 2-LUT pair).iostd_codec_mine.py— an IOB I/O-standard / drive / slew codec miner (variant-vs-reference diff to cancel routing). Shipped as a method plus a documented honest negative (see below).config.py— one-line generalization:WORK_DIRhonors$FUZZ_WORK_DIRso isolated parallel campaigns don't share a work dir.Data (
results/) + notes (docs/)rcf_wire_cells.json— 102 routing wires → CRAM cells across the 5 switch classes (RCF back-annotation). Solid positive routing-codec data.iostd_specimens.jsonl— the raw specimens behind the iostd negative, committed so a better alignment can be re-analyzed without re-mining.docs/mined_codec_data.md— notes on both data files.Honesty note (the iostd miner)
The I/O-standard codec miner is included as a method and a negative result, not an over-claim: the electrical bits are not cleanly position-invariant, and the small "invariant" core turned out to be a min-offset normalization artifact. The raw specimens are committed so someone with a better alignment idea can pick it up.
Provenance
Cleared a 4-lens adversarial review (privacy / correctness / license+accuracy / value+honesty) and a no-Quartus functional test (the analyzer reproduces on the shipped data). One
fuzz/config.pyline changed; everything else is additive.Happy to adjust placement/naming or split this into smaller PRs if you'd prefer.
🤖 Generated with Claude Code
https://claude.ai/code/session_01LHRcDS2uPMxKLED57kziom