net.feedback
the net is a regulator feedback / sense node (must not be probed)
What it is ¶
net.feedback(net) yields one row per net whose name reads as a regulator feedback or sense node: a
leaf name ending in _FB, _VFB, _FEEDBACK, _VSENSE, _SENSE, _SNS, or a bare FB / VFB.
It is name-derived. The test-point rule applies a feedback exclusion, and this relation is the
datalog face of that exclusion.
For hardware engineers ¶
A feedback net is the divider tap that feeds a switching or linear regulator’s control loop. It is a
high-impedance sense node, so anything you hang on it changes the voltage that the regulator reads
and shifts regulation. A scope probe or a test point on a feedback node is a review finding, because
the probe’s capacitance and loading disturb the loop it is measuring. During a review you query
net.feedback to list the sense nodes. net.rail already leaves a feedback net out unless the net
is marked global or power-driven (agni 679), so subtracting net.feedback from net.rail only
matters for those.
For software engineers ¶
Think of a feedback net as a node that you may read but must not tap. Observing it changes its
value, so it is off-limits to the instrumentation that a normal rail allows. net.feedback is a
filtered projection over Nets() with the naming predicate, so rows are 1:1 with feedback-named
nets, and an empty result means no net name matched the sense-node lexicon.
Go projector ¶
feedbackFacts in stdlib/relations/facts.go walks Model.Nets() and emits a row for each net
that carries the feedback role (check.NetHasRole). A net with a stamped role set answers from it.
A net without one falls back to Model.IsFeedbackName. That delegates to the active naming
lexicon’s IsFeedback (core/classify/rolenames.go), which matches the _FB / sense-suffix
patterns on the hierarchy leaf, case-insensitive. One row per feedback-named net; empty when no net
matches.
Datalog ¶
List every feedback / sense node:
net.feedback(?n) => ?n
Every supply rail that is not a sense node. The answer differs from net.rail alone only for a
global or power-driven feedback net:
net.rail(?n), not net.feedback(?n) => ?n