From 581028a83dbf65c13a9a7c1beca72373125a4b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Wed, 3 Jun 2026 15:38:54 +0200 Subject: [PATCH] verify: only flag undriven-net on a fully-modelled net Real-data testing (3 BSDL-attached FPGAs in an 8-card system) showed undriven over-fires when only one side of a net has a known direction: the driver sits on an un-modelled part (direction Unknown). Require known == net pin count, so "undriven" is concluded only when every pin on the net is modelled. Drops 216 false positives to 0 on the sample system while the genuine JTAG findings remain; the unit test is unaffected (its net is fully modelled). Co-Authored-By: Claude Opus 4.8 --- src/system/bsdl_check.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/system/bsdl_check.cpp b/src/system/bsdl_check.cpp index 16d07b1..9d88599 100644 --- a/src/system/bsdl_check.cpp +++ b/src/system/bsdl_check.cpp @@ -104,7 +104,10 @@ std::vector check_pin_specs(System *sys) out.push_back(std::move(a)); } - if (ins >= 1 && drivers == 0) { + // Only conclude "undriven" when the whole net is modelled (every pin + // has a known direction). Otherwise the driver may sit on an + // un-modelled part (direction Unknown) and we must not flag it. + if (ins >= 1 && drivers == 0 && known == (int)pins.size()) { Anomaly a; a.kind = AnomalyKind::UndrivenNet; a.module = mod;