Repository navigation
feat(spec): jtag tdo_verdict asserts the IR capture ends in 01 (Closes #8030) - #8032
Merged
Merged
Conversation
…#8030) An even DR word after a raw shift is not an IDCODE, but it can mean two different things: BYPASS (the TAP is alive) or a broken shift (TCK, TMS order, TDO path). IEEE 1149.1 separates them: Capture-IR loads 01 into the two low bits of every instruction register. A 7-series part reads 0x35. specs/port/tools/jtag/tdo_verdict.t27 names five verdicts (stuck high, stuck low, broken shift, BYPASS, IDCODE) and carries 8 tests, including the Wukong XC7A200T's raw IDCODE 0x13636093. Mutation check: replacing the 01 test with `return true` fails 3 of the 8 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 9, 2026
Open
Contributor
This was referenced Oct 9, 2026
This was referenced Oct 9, 2026
Merged
gHashTag
commented
Oct 9, 2026
gHashTag
left a comment
Owner
Author
There was a problem hiding this comment.
Reviewer bee verdict: correct. Capture-IR check is (IR & 3) == 1 per IEEE 1149.1, verdict order stuck-high > stuck-low > broken shift > BYPASS > IDCODE matches, and the tests hit every branch. The t27b-native-ratchet red is master drift: same verdict on master 8eb0ff4 against the same stale ledger b94f486 (UNEXPECTED PASS 2, UNLISTED 81); the new spec itself is t27b pass.
This was referenced Oct 9, 2026
Merged
gHashTag
added a commit
to gHashTag/trinity
that referenced
this pull request
Oct 9, 2026
… widget (#1567) * feat(website): BYPASS or a broken shift -- blog post and jtag-verdict widget The post explains the IEEE 1149.1 Capture-IR rule (the two low IR cells load 01) that tdo_verdict.t27 now checks before reading bit 0 of the DR word (gHashTag/t27#8032), with the recording at /term/tri-fpga-jtag-ir/. The jtag-verdict widget runs the same five checks on a typed IR capture and DR word; its words and 7 test vectors live in the spec. Closes #1566 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(website): give the real reason stuck lines are checked first A TDO held high reads the IR as 0x3F, which fails the IR test; stuck high comes first because it is the narrower diagnosis, not because the IR test would pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(website): put the jtag-verdict widget in the jtag-asks-the-chip lesson check:course requires every gallery widget to appear in some lesson. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
github-actions Bot
added a commit
to gHashTag/trinity
that referenced
this pull request
Oct 9, 2026
feat(website): BYPASS or a broken shift -- blog post and jtag-verdict widget (#1567) * feat(website): BYPASS or a broken shift -- blog post and jtag-verdict widget The post explains the IEEE 1149.1 Capture-IR rule (the two low IR cells load 01) that tdo_verdict.t27 now checks before reading bit 0 of the DR word (gHashTag/t27#8032), with the recording at /term/tri-fpga-jtag-ir/. The jtag-verdict widget runs the same five checks on a typed IR capture and DR word; its words and 7 test vectors live in the spec. Closes #1566 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(website): give the real reason stuck lines are checked first A TDO held high reads the IR as 0x3F, which fails the IR test; stuck high comes first because it is the narrower diagnosis, not because the IR test would pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(website): put the jtag-verdict widget in the jtag-asks-the-chip lesson check:course requires every gallery widget to appear in some lesson. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <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.
Closes #8030
What
specs/port/tools/jtag/tdo_verdict.t27: the rule behindtri fpga-jtag's no-chain fallback, now with the IR capture check that was printed but never asserted.IEEE 1149.1 Capture-IR loads
01into the two low IR bits. With that check, an even DR word gets a definite verdict:01and DR bit 0 = 0: BYPASS, the TAP is alive.01: broken shift (TCK, TMS order, TDO path).Five verdicts in total: stuck high, stuck low, broken shift, BYPASS, IDCODE.
Evidence
t27check.mjs) reports the spec clean: typecheck ok, 0 errors, 0 discarded, 8 tests and 8 asserts pass.ir_capture_ok's body withreturn truefails 3 of 8 tests: broken shift → BYPASS, broken shift → IDCODE, and!ir_capture_ok(0x3F). The asserts run.tri hooks pre-commitand the L1 traceability check passed.Not in this PR
The wiring in
fpga_bench.py(gHashTag/skills) is Python. Under the Only-t27 rule it waits for the owner'sowner-approved-foreignlabel.🤖 Generated with Claude Code