net.switching
the net is a regulator power-stage node, the switch node or its bootstrap (must not be probed); the twin of feedback
What it is ¶
net.switching(net) yields one row per net whose name reads as a regulator’s power-stage node, meaning a leaf
name ending in _SW, _BOOT, _PHASE, or _LX. It is name-derived and is the twin of
net.feedback, since both relations name a net that matches the rail vocabulary and is not a rail.
For hardware engineers ¶
The switch node is the point between a buck converter’s high-side and low-side transistors, before
the inductor. It does not sit at the output voltage. It slams between ground and the input rail at
the switching frequency, and that makes it the highest dV/dt net on most boards. _BOOT is the
bootstrap capacitor’s node. It sits on top of the switch node and moves with it, so the high-side
gate driver has a supply above the rail it is switching. _PHASE and _LX are the switch node
under other vendors’ spellings.
All of them are conventionally named after the rail the converter produces, so a 12V converter’s
switch node is 12V_SW and is never at 12V. A review cares about two consequences. Probing one is
worse than useless, because a test point there loads the fastest edge in the design and couples it into
whatever the probe is attached to. And any rule that reasons about a rail’s voltage will be wrong
about this net by the whole input-to-output ratio.
During a review you query net.switching to list the power-stage nodes, and net.rail already
leaves it out alongside net.feedback, so a probe-point or decoupling rule does not treat a switch node
as ordinary distribution.
For software engineers ¶
A switch node’s name makes it look like a member of an object it does not belong to. 12V_SW
reads as a member of the 12V rail, but it is a separate net with a different value. net.switching
is a filtered projection over Nets() with the naming predicate, so rows are 1:1 with
switching-named nets, and an empty result means no net name matched the power-stage lexicon.
Go projector ¶
switchingFacts in stdlib/relations/facts.go walks Model.Nets() and emits a row for each net
carrying the switching role, falling back to Model.IsSwitchingName for a net that skipped the
ingestion stamp. The role is stamped by classify.StampNetRoles from the active naming lexicon, so a
project extends the patterns in its conventions: section rather than patching the engine. One row
per switching-named net; empty when no net matches.
Datalog ¶
List every power-stage node:
net.switching(?n) => ?n
Every supply rail that is neither a sense node nor a power-stage node. A probe-point or pull-up rule may treat this set as ordinary distribution:
net.rail(?n), not net.feedback(?n), not net.switching(?n) => ?n
Note that net.rail already excludes a rail-NAMED net carrying either role, because Model.IsRailNet
subtracts them before the rail role is granted. A net marked global or asserted-driven still
answers net.rail whatever its name, since Model.IsPowerRail admits those before it consults the
name. Write the form above anyway when the query sits beside one that does not go through the rail
relation, such as a rule built from the name FFIs.