component.probed_both

A two-terminal part with a test point on both of its nets, so it can be measured in circuit.

What it is

component.probed_both(part) holds for each two-terminal part (component.two_terminal) whose two nets both carry a test point (net.has_test_point).

For hardware engineers

These are the parts in-circuit test can measure. A fixture reaches a part’s two nodes through test points, drives a stimulus across them, and checks the value it reads against the part’s nominal, so a wrong value, a missing part, or a part fitted backwards shows up before the board is powered. Coverage is usually reported as the share of parts that can be measured. That share is this relation counted against component.two_terminal.

A part listed here is reachable rather than guaranteed to measure cleanly. Parts in parallel are measured together, and a large capacitance on either node can swamp a small one. The test engineer judges those from the schematic.

For software engineers

It is component.two_terminal filtered by net.has_test_point on both of its nets, so the answer is a set of parts. Its complement within two-terminal parts splits in two. component.probed_one holds the parts with one probed net. In the rest, neither net is probed. No library member names those parts, and a query finds them by negating both.

Datalog

Measurable parts with their part numbers:

component.probed_both(?r), component.mpn(?r, ?mpn) => ?mpn, ?r

Two-terminal parts that cannot be measured at all:

component.two_terminal(?r, ?a, ?b), not net.has_test_point(?a), not net.has_test_point(?b) => ?r, ?a, ?b

How it is defined

component.probed_both(r: component), a derived relation in the component module, defined in Datalog in stdlib/lib/component.dl. In a clause, a bare name is another member of the same module and a dotted name is a full path.

probed_both(?r: component) :- two_terminal(?r, ?a, ?b), net.has_test_point(?a), net.has_test_point(?b);

agni query --relations component.probed_both prints the same definition. Adding a library member explains how the library is built.