verify: JTAG boundary-scan chain integrity (flagship)

New check_jtag_chain(System*): collects TAP pins by PinSpec.function, resolves
each to its net, and flags JtagTapIncomplete (a device missing TDI/TDO/TMS/
TCK), JtagBusUnbridged (TMS or TCK not common to every TAP device), and
JtagChainBreak (dangling TDO/TDI, chain fan-out, or not a single head->tail
daisy chain). Surfaced as a pass in `verify`; AnomalyKind extended. Covered by
test_bsdl_check (healthy chain, broken chain + split bus, incomplete TAP).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 15:24:00 +02:00
parent 5caa4c530d
commit 952afe3979
6 changed files with 256 additions and 0 deletions

View File

@@ -16,4 +16,13 @@ class System;
// un-modelled parts).
std::vector<Anomaly> check_pin_specs(System *sys);
// JTAG boundary-scan chain integrity, using pins whose PinSpec.function is a TAP
// role (JtagTdi/Tdo/Tms/Tck/Trst). Resolves each TAP pin to its net and checks:
// - JtagTapIncomplete : a TAP device missing TDI/TDO/TMS/TCK;
// - JtagBusUnbridged : TMS or TCK not common to every TAP device;
// - JtagChainBreak : the TDO→TDI daisy chain dangles, fans out, or is not a
// single path (≠1 head / ≠1 tail).
// Empty when the system has no TAP pins.
std::vector<Anomaly> check_jtag_chain(System *sys);
#endif // _BSDL_CHECK_HPP_