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.