intent/rail-current-margin
A rail's supply meets its declared peak current budget but not the declared margin factor over it.
Remedy ¶
Fit a supply carrying the declared margin over the rail’s peak, or lower the margin factor if the declaration is stricter than this design needs.
What it checks ¶
A rail’s supply must be rated for its declared peak budget multiplied by the declared margin factor. A factor of 1.2 asks for 20% headroom over the budget.
The rule fires only in the band between the two thresholds, where the supply clears the peak but
falls short of peak x factor. Below the peak it reports nothing. That shortfall is
intent/rail-current-capacity’s finding, and one defect should not be reported under two review
items.
For hardware engineers ¶
A current budget is an estimate. It is assembled early, from parts that are not all chosen yet, at temperatures nobody has measured, and it does not capture inrush, a load added late in the schedule, or a part drawing more than its typical figure because it is running hot.
Headroom absorbs that. If a supply is sized to exactly the budget, the first thing the budget missed turns into a droop, and by then the board is built.
Read this before binding a review item to it ¶
The margin factor is declared policy, not physics. Nothing in electronics says 20%. Different teams use different numbers for different rail classes, and the right number for a rail feeding a processor’s core is not the right number for one feeding an LED. So the factor is an input to the check, never a constant inside it, the same discipline that keeps naming vocabularies in a lexicon instead of in rule literals.
It has no default. With no margin_factor declared this rule is not compiled at all, so a
review item bound to it reads needs-design-intent and names the missing input. That is deliberate,
because a default would let an item read PASS against a policy number that nobody on the project
ever stated.
It shares two limits with intent/rail-current-capacity, which states them in full. The rule says
nothing about a rail that no seeded part supplies, and the needs-data gate that covers the unseeded
case is design-wide rather than per-rail.
Thermal derating is a separate question and is not modelled here. A regulator’s usable output falls with ambient temperature and with how much voltage it is dropping. So a part rated 1A on its front page may not deliver 1A inside this board’s enclosure. This rule compares against the datasheet number as stated.
Declaring it ¶
intent:
nets:
+3V3: {peak: 0.8}
margin_factor: 1.2
One factor applies to every budget in the declaration. It must be greater than 1, because a factor of 1 restates the capacity rule, and anything below 1 asks for a supply smaller than the budget. Both are rejected at load rather than becoming a second rule that duplicates or inverts the first.
Fixing a finding ¶
The supply carries the load but has no room. Specify a larger part, cut the budget, or record a deliberate decision to run this rail closer to its rating than the house factor allows. The third is a legitimate answer, and it belongs in the declaration or the review record rather than in silence.