fpga: load registry from yaml at runtime, not compile-time
- registry moves from the array in fpga.c to fpga_registry.yaml at the repo root, parsed via libyaml (pkg-config yaml-0.1); adding a part is now a YAML edit, no rebuild - looked up CWD-relative (like bsdl_files/), overridable with $BS_FPGA_REGISTRY, loaded lazily once; public API unchanged - fpga_list shows the source file (fpga_registry_source()) - add microsemi_igloo2/smartfusion2 and lattice_machxo2/3 families, ready for the non-Xilinx targets - docs updated: CLAUDE.md, README, tutorial "add a target" walkthrough Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
15
CLAUDE.md
15
CLAUDE.md
@@ -89,8 +89,14 @@ derived from the BSDL alone:
|
||||
- `proxy_bitstream_path` — path to the BSCAN proxy `.bit` for this part
|
||||
- `caveats` — flags for known hardware gotchas (e.g. CCLK via STARTUPE3)
|
||||
|
||||
Registry is a compile-time array. Adding a part = one entry + its
|
||||
`.bsd` in `bsdl_files/` + its proxy `.bit` in `bscan_proxies/`.
|
||||
Registry is a **runtime YAML file** (`fpga_registry.yaml` at the repo
|
||||
root), parsed via libyaml — no longer a compile-time array. It is looked
|
||||
up CWD-relative (like `bsdl_files/`), overridable with
|
||||
`$BS_FPGA_REGISTRY`, and loaded lazily on first access. Adding a part =
|
||||
one YAML entry + its `.bsd` in `bsdl_files/` + (optionally) its proxy
|
||||
`.bit` in `bscan_proxies/` — no rebuild. The `family` field accepts
|
||||
`xilinx_*`, `microsemi_igloo2/smartfusion2`, `lattice_machxo2/3`
|
||||
(enum in `fpga.h`).
|
||||
|
||||
### Digilent SMT2 modules need libdjtg, not raw MPSSE
|
||||
|
||||
@@ -249,6 +255,11 @@ mkdir build && cd build && cmake .. && make
|
||||
./bs/bs # interactive REPL
|
||||
```
|
||||
|
||||
Build needs **libyaml** (pkg-config `yaml-0.1`; Arch `libyaml`, Debian
|
||||
`libyaml-dev`) — the FPGA registry is parsed from `fpga_registry.yaml`
|
||||
at runtime. Run `bs` from the repo root so it finds that file (and
|
||||
`bsdl_files/`, `bscan_proxies/`), or point `$BS_FPGA_REGISTRY` at it.
|
||||
|
||||
The Digilent SMT2 backend is built by default on UNIX (disable with
|
||||
`-DBS_ENABLE_DIGILENT=OFF`). To actually use such a probe, install the
|
||||
Adept Runtime system-wide (provides `libdjtg.so` + `libdmgr.so`).
|
||||
|
||||
Reference in New Issue
Block a user