svf: initial SVF player + svf_play command
New modules/svf/ plays the single-device SVF subset over the bscan_* primitives: SIR/SDR with masked TDO compare, RUNTEST (TCK/SEC), STATE (RESET/IDLE), ENDIR/ENDDR (IDLE only), HIR/HDR/TIR/TDR (length 0), TRST, FREQUENCY. Exposed as `svf_play <file>`. It warms up the FTDI link first — the MPSSE's first data read after open returns stale FIFO content, normally hidden because jtag_scan runs before anything. Also adds the bscan_tap_reset prototype. Validated on the live IGLOO2 M2GL010T: a hand-written IDCODE-check SVF passes (masked compare) and a deliberately wrong one is caught at the mismatching bit. A generic program dispatch off the prog tag, multi-device chains and non-IDLE end states are still TODO. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
12
CLAUDE.md
12
CLAUDE.md
@@ -242,6 +242,18 @@ progress and partial ops. The equivalent SVF ("indirect flash") is huge
|
||||
|
||||
### The SVF player (the real work)
|
||||
|
||||
**Status: initial implementation in `modules/svf/` + the `svf_play <file>`
|
||||
command.** Supports the single-device subset: `SIR`/`SDR` with
|
||||
`TDI`/`TDO`/`MASK`/`SMASK` and the masked TDO compare, `RUNTEST`
|
||||
(TCK/SCK + SEC), `STATE` (RESET/IDLE), `ENDIR`/`ENDDR` (IDLE only),
|
||||
`HIR/HDR/TIR/TDR` (length 0 only), `TRST`, `FREQUENCY`. Built on the
|
||||
`bscan_*` primitives (`shift_ir`/`shift_dr`/`tap_reset`/`idle_cycles`).
|
||||
Validated on the live IGLOO2 with a hand-written IDCODE-check SVF (pass
|
||||
and a deliberate mismatch). `svf_play` warms up the FTDI link first (its
|
||||
first data read after open returns stale FIFO content). Not yet wired
|
||||
into a generic `program` dispatch off the `prog` tag; no multi-device
|
||||
headers, no non-IDLE end states. Remaining design below.
|
||||
|
||||
A player is more than shifting bits. It must handle:
|
||||
- `SIR`/`SDR` with `TDI`/`TDO`/`MASK` — the **masked TDO compare** is
|
||||
what detects prog/erase failures; that's the main addition over
|
||||
|
||||
Reference in New Issue
Block a user