intent/io-map-far-end
A net does not reach the far-end device pin the design intent's IO map declares.
Remedy ¶
Route the net to the declared device pin, or amend the far end the map declares. The reported route shows what the net actually goes through, so start by reading where it diverges.
What it checks ¶
A map row may declare where the net goes, not only where it starts:
- {net: PMIC_PG, device: U101, pin: PTC11, to: {device: U7000, pin: PG}}
This rule follows the net from the declared pin to the declared far end, through the series parts between them, and reports the rows where it does not arrive.
For hardware engineers ¶
A net can be on the right pin at one end and land on the wrong part at the other, and no per-net
check can see it. intent/io-map-pin-mismatch confirms the MCU end; this confirms the other end is
the device the architecture says it drives.
The walk crosses series pass elements (resistors, inductors, ferrite beads, fuses), because a resistor in the middle of a signal splits the net without breaking the connection. It never crosses a capacitor, which is a DC block, and it never continues through a rail or a plane, which touches almost everything and would join everything to everything.
A pass reports the ROUTE it walked, not just the verdict:
PMIC_PG -> [R3] -> MCU_NRST
so a reviewer can see the series resistor and decide whether that path is the intended one, without opening the schematic. A failure says where each end actually sits.
Coverage is most of the value here ¶
The far-end columns of a real map are filled sparsely. In the one we measured, the downstream part, its pin number and its pin name were filled on roughly 45%, 35% and 6% of rows.
Every row gets a verdict, including the rows declaring no far end, which report as
not-considered with that reason. A rule that reported only the rows carrying a far end would show a
clean result whose denominator was the empty ones, and a green answer would mean no more than that
the columns were blank.
The three outcomes, kept apart ¶
A path question has three answers and collapsing any two of them is a defect in the tool:
- A route was found. Reported with the route.
- No route within the radius. A real answer about the design: these two pins do not join.
- The question could not be asked. An endpoint resolved to a pin that sits on no net, so nothing
was walked. This reports as
not-consideredand never as a no-route, because a pin spelled wrong in a declaration and two pins genuinely unconnected send a reader to opposite places.
Declaring it ¶
to takes a device and a pin, and both are required. A to naming a device and no pin is rejected
when the declaration loads, rather than reaching the rule as half a question it would have to invent
a reading of.
The far-end pin is resolved the same way the near pin is, so it may be a package designator or the part type’s functional name.
Fixing a finding ¶
Read the route before editing anything. A net that arrives at the wrong device usually diverges at a recognisable point, and the reported path shows where. Then either route it to the declared pin or amend the far end the map declares, depending on which document is current.