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:
@@ -43,6 +43,9 @@ int bscan_shift_ir(jtag_core *jc, const uint8_t *tdi, uint8_t *tdo, int nbits);
|
||||
/* Emit `ncycles` TCK cycles while staying in Run-Test/Idle. */
|
||||
int bscan_idle_cycles(jtag_core *jc, int ncycles);
|
||||
|
||||
/* Force Test-Logic-Reset (5 TCK with TMS=1) and land in Run-Test/Idle. */
|
||||
int bscan_tap_reset(jtag_core *jc);
|
||||
|
||||
/* --- High-level operations ---------------------------------------- */
|
||||
|
||||
/* Load a raw bitstream payload (no .bit container header) into the
|
||||
|
||||
Reference in New Issue
Block a user