bscan: rename from bscan_spi, add TAP primitives for the SVF player
The module outgrew its "SPI bridge" name — it's mostly generic single-device JTAG TAP primitives now. Rename modules/bscan_spi -> modules/bscan (dir, files, library target, includes, doc paths); bscan_* function names and bscan_spi_xfer() kept. Add the two primitives the SVF player needs beyond shift_dr: - bscan_shift_ir: general IR scan with TDO capture (bscan_set_ir is opcode-only, no readback) - bscan_tap_reset: force Test-Logic-Reset, land in Run-Test/Idle Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,7 @@ to FPGAs (Xilinx KU15P first, then others) over JTAG, from a CLI tool
|
||||
running on a host with an FTDI probe.
|
||||
|
||||
The Viveris library itself lives unchanged in `modules/`. Everything
|
||||
new is in `bs/` (the REPL) and future modules (`fpga/`, `bscan_spi/`,
|
||||
new is in `bs/` (the REPL) and future modules (`fpga/`, `bscan/`,
|
||||
`spi_flash/`) sitting alongside the Viveris ones.
|
||||
|
||||
## Architecture
|
||||
@@ -50,7 +50,7 @@ Adding a feature usually means adding a new script command in
|
||||
|-------|--------|--------|---------|
|
||||
| 1 | `bs/` cleanup, REPL polish, README | **done** (commit `7cb3627`) | Fix format-strings, delete dead code, tab-completion, banner |
|
||||
| 2 | `fpga/` | **done** (commit `545fe09`) | Per-target descriptor (IDCODE, BSDL, IR codes, proxy path, caveats). Compile-time registry. |
|
||||
| 2.5 | `bscan_spi/` | **done** (commit `dec0d14`) | Load BSCAN proxy bitstream via `CFG_IN`, expose fast `bscan_spi_xfer()` via `USER1`. Required for realistic flashing speeds. |
|
||||
| 2.5 | `bscan/` | **done** (commit `dec0d14`) | Load BSCAN proxy bitstream via `CFG_IN`, expose fast `bscan_spi_xfer()` via `USER1`. Required for realistic flashing speeds. |
|
||||
| 3 | `spi_flash/` | **done** (commit `c4afe87`) | Chip DB (JEDEC ID → page/sector/cmd set) + generic `read/erase/program/verify` over an `xfer` callback. detect+read validated on KCU105; erase/program implemented but not yet hardware-tested. |
|
||||
| 4 | script commands | **done** (commit `d6f843e`) | `flash_detect`, `flash_read` (+file), `flash_erase`, `flash_write`, `flash_verify`. Full set validated on KCU105 (save/erase/write-random/verify/restore round-trip). ~100 KB/s write once the proxy is loaded. |
|
||||
|
||||
@@ -234,7 +234,7 @@ progress and partial ops. The equivalent SVF ("indirect flash") is huge
|
||||
|
||||
| Target | Recommended path |
|
||||
|--------|------------------|
|
||||
| Xilinx external SPI config flash | **native proxy** (`bscan_spi/`+`spi_flash/`, done). SVF works but is bloated. |
|
||||
| Xilinx external SPI config flash | **native proxy** (`bscan/`+`spi_flash/`, done). SVF works but is bloated. |
|
||||
| Xilinx fabric config (volatile) | SVF, or our `bscan_load_bitstream` (equivalent) |
|
||||
| Lattice MachXO2/3 (internal flash) | **SVF** (Diamond/Radiant export). Native IEEE-1532 ISC optional, only for a self-contained `.jed` flow. |
|
||||
| Microsemi IGLOO2 / SmartFusion2 | **SVF/STAPL** (Libero/FlashPro export). Native algorithm too complex/proprietary. |
|
||||
|
||||
Reference in New Issue
Block a user