Placement: rank heat, EMC and routability for each board, and place by that ranking

noah · ·closed by Colby Knox

Placement: rank heat, EMC and routability for each board, and place by that ranking

Seen on: adom-aiflow 0.2.44 (AM32 ESC run, adom/am32-esc-2s6s-molecule). It applies to every board.

What happened: placement is the AI's step, helped by place pack --wish, place check and place land. What place check judges is legality (courtyards, outline, molecule grid, decoupling and placement-intent constraints). Nothing asks which of heat, EMC and easy routing should drive this board's placement. Nothing measures the placement against that choice before routing starts. Problems found later send the run back (current, thermal, Fields), but by then the routing is built on the placement.

On the ESC, the gate-drive loops, back-EMF lines and MCU-to-driver lines came out 1.5 times (gate drive) to 4 to 12 times (back-EMF, PWM) longer than on the hand-placed board of the same circuit (numbers in #128 and #129). Those are placement outcomes: the router had no way to fix them.

How a layout engineer decides: good placement is what makes routing easy, and it should be dictated by a combination of heat, EMC and easy routing for the prioritised signals. The AI has to rank how serious each one is on this board. For example, two very hot chips whose only signal is a 9600-baud UART: place for thermals first (spread them, give them copper and vias, keep them off each other's heat path). Easy routing comes second, although good routing can help the thermals.

Suggested fix:

  1. A placement ranking at the start of the placement step, as spec.placementPriorities: thermal, EMC (loop areas, return paths, the noisy and quiet zones), and routability of the top signal classes (from spec.signalPriority, #129). Each gets a rank and a reason from this board's numbers: the watts from spec.hot, the di/dt from the switching nodes, the class list. step placement asks for it; the timeline shows it.
  2. place check scores the placement against the ranking, before place land:
    • thermal: each hot part's spacing to the others and its copper and via budget area, a quick screen in the spirit of the current thermal step
    • EMC: the power-loop and gate-loop areas, switch-node copper area, and the distance from noisy nodes to the sensitive class
    • routability: the ratsnest length per top class, and crossings It prints the score in rank order with the worst offender named.
  3. place pack honours the order: top-ranked groups are placed first and get their space.
  4. A return from current, thermal or Fields to placement records which ranking item failed, so the ledger shows whether the ranking was wrong or only the placement.

2 Replies

John Lauer ·

Noah, agreed, and it builds on #129. Here is the plan, as suggestions rather than gates, since AI Flow never refuses now (0.2.48):

  1. spec.placementPriorities: thermal, EMC and routability, each with a rank and a reason drawn from this board's numbers (the watts in spec.hot, the switching nodes, the #129 classes). step placement suggests a draft and says what it was based on.
  2. place check scores the placement in rank order before place land, naming the worst offender for each:
    • thermal: spacing between hot parts, and their copper and via area;
    • EMC: power-loop and gate-loop area, switch-node copper, and the distance from noisy nodes to the sensitive class;
    • routability: ratsnest length for each top class, and crossings.
  3. place pack places the top-ranked groups first, so they get their space.
  4. A return to placement from current, thermal or Fields records which ranking item it was about.

0.2.49 starts on this with the per-net detour and vias report and its "move U2 toward U1" suggestions (#128). Keeping this open until the ranking ships.

Colby Knox mentioned this in pull request #67 ·
Colby Knox linked pull request #86, which closes this when it merges ·
Colby Knox closed this in pull request #86 ·
Colby Knox ·

Noah, the placement ranking is in AI Flow 0.2.67, next to the signal ranking from #129.

  • spec.placementPriorities: thermal, EMC and routability, each with a rank and a why.
  • place check scores the placement in that order and names the worst offender of each:
    • thermal: the closest pair of spec.hot parts and their watts;
    • EMC: the pad-hull area of each noisy class and the switch nodes, and the closest any sensitive class comes to a noisy one;
    • routability: the ratsnest length, the worst net and the crossings of the top three signal classes.
  • adom-aiflow priorities drafts the ranking from the spec's numbers (the hot parts' watts, the switch nodes, the top signal class) and scores the current placement.
  • A return says what it's about: step placement --back --why "..." --about thermal (or emc, routability, or a class name) goes in the ledger with that item's rank. That shows whether the ranking or the placement was wrong.

Everything is a suggestion. Without a ranking, place check scores in the default order and says so.

Not done here: the thermal score doesn't yet count each hot part's copper and via area, because at placement there's no copper yet. The current and thermal steps still measure that once the copper exists.

Upgrade with adom-wiki pkg install adom/adom-aiflow; adom-aiflow --version then shows 0.2.67.

Log in to reply.