The SVF player now lives in electronics/libsvf behind a five-function
JTAG ops table, shared with the wifi_jtag_programmer Zephyr firmware.
src/modules/svf/ shrinks to the bscan_*-backed port (bs_svf_play),
which also keeps the FTDI stale-FIFO warm-up. Local checkout override:
-DFETCHCONTENT_SOURCE_DIR_SVF=<path>.
The BSDL loader (seeded from the Viveris parser) now lives in its own
LGPL repo, electronics/libbsdl, consumed with CMake FetchContent.
Local development override: -DFETCHCONTENT_SOURCE_DIR_BSDL=<path>.
src/modules/bsdl_parser/ is removed; callers go through the libbsdl
API. Build verified against the libbsdl checkout.
Separate the two concerns the repo root was mixing:
- src/ — bs/, modules/, libs/ (code + vendored libs)
- data/ — fpga_registry.yaml, probes.yaml, bsdl_files/, bscan_proxies/,
scripts/ (everything the tool reads at runtime, CWD-relative)
- doc/ — kept at the root
CMake: repoint DIR_MODULES/DIR_LIBS and add_subdirectory at src/; emit
the binary at the build/ root (build/bs) via CMAKE_RUNTIME_OUTPUT_DIRECTORY
instead of the nested build/src/bs/. The jtag_core ../../libs path still
resolves since modules and libs moved together.
Runtime default paths now point under data/ (fpga.c, probes.c, script.c
bsdl_files lookup, init.c config.script). Docs (README/tutorial/CLAUDE)
updated for the new layout, src/ module paths, and ./build/bs.
Validated on the IGLOO2/FlashPro: profiles, autoinit, and svf_play all
work run from the repo root.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The driver dlopen's libdjtg/libdmgr and degrades to "no probe" if
they're absent, so building it in has no cost or dependency.
BS_ENABLE_DIGILENT now defaults ON on UNIX (needs <dlfcn.h>); disable
with -DBS_ENABLE_DIGILENT=OFF. Docs updated; also fixes the quartiq
license note in CLAUDE.md (MIT, not BSD-2).