main
Colby Knox AI Flow 0.2.52: bottom parts, pour replacing, Gerber layers, test point files, clip pulls, cleaner routes d09912e

name: aiflow-test-plan description: >- Use when an adom-aiflow run reaches its test-plan step, or whenever someone asks where the board will be probed. The test-plan step of an adom-aiflow run: before the schematic is drawn, think through how the built board will be tested on the Adom probing workcell (the rails, the switch node, feedback, ripple, enable, power-good, every LED, the ground pin), write tests.json, and let adom-aiflow testplan check give every measurement a real probe spot, adding 0.5 mm round test points (adom/testpoint-pad-0-5mm) for the gaps; then check the landings again on the placed and finished board. Trigger words: test plan, test points, probe points, probing workcell, design for test, DFT, where will we probe, TP, testpoint, probe spot, bring-up measurements, what should we measure.

Parent skill: adom-aiflow

aiflow-test-plan: decide what you will measure, then make sure you can

Every Adom board goes to the probing workcell after it is built: a gantry lands a pogo-tipped scope probe on the board while a ground tether is plugged into a ground machine contact. A board can only be tested where there is copper the probe can land on. This step makes the AI decide, before the schematic is drawn, what a careful engineer would measure at the bench, and makes the binary prove each measurement has a spot. It is a required step: step and finish refuse to go past it.

1. Think like the engineer at the bench

Write tests.json, one entry per measurement, from THIS circuit and its simulation, not a template:

[
  {"id": "vin",  "what": "12 V arriving on the board",       "net": "VIN",  "why": "input path and the input cap", "kind": "dc",       "expect": "11.4 to 12.6 V"},
  {"id": "sw",   "what": "switch node: frequency, ringing", "net": "SW",   "why": "500 kHz, edges, dead time",    "kind": "waveform", "expect": "0 to 12 V square, 500 kHz"},
  {"id": "vout", "what": "5 V out, ripple at 1 A",           "net": "VOUT", "why": "regulation and ripple",       "kind": "ripple",   "expect": "5.0 V, under 20 mV p-p"},
  {"id": "fb",   "what": "feedback node",                    "net": "FB",   "why": "loop at 0.596 V",              "kind": "dc",       "expect": "0.596 V"},
  {"id": "led",  "what": "power LED lit",                    "net": "LED",  "why": "camera check",                "kind": "camera",   "expect": "on above 4.5 V in"}
]

Kinds: dc, ripple, waveform need a probe landing; camera (an LED, a display) needs none; ground is the tether's machine contact, which must be a free MachineContactMedium on that net (the tether ends in a medium pin; a test point or a large contact cannot take it). Typical for a regulator: the input at the board, the output, the switch node, both inductor ends, feedback, enable, power-good, the bulk caps' ripple, every LED.

Probe face: a test is probed from the top unless it says otherwise. "face": "bottom" (or "back") on a test, or "probeFace": "bottom" beside "tests" for the whole plan, lands it on bottom-side copper only (a board whose top is wall-to-wall parts, probed from below); "both" accepts either face. testplan check reports the face each landing was found on.

2. Give every measurement a spot (before the schematic)

adom-aiflow testplan check --tests tests.json --netlist <netlist.json> --add maps each measurement to its net and adds TP<n> (adom/testpoint-pad-0-5mm: a 0.5 mm round exposed-copper pad, no paste, a 1.1 mm courtyard) on every net with no landing. A MachineContactLarge already is a landing, so its net gets no test point. A MachineContactMedium is not one for now (see below), and neither is a corner pin. A ground test with no medium contact is a gap --add cannot fix: add the contact. The test points go into the library and the schematic like any part. --add also writes the test point's footprint, symbol, Fusion library and 3D model to testpoint/ beside the netlist, because its wiki page is private and most accounts cannot read it; fusion library falls back to the same files by itself. Read the table to the human: what you will measure and where the probe lands.

3. Check again on the real board

Run testplan check again after placement and before finish (finish runs it itself). On a board it looks for a real landing on each net: a test point, the ring of a large contact, or an exposed pad where a 0.5 mm landing fits clear of every part body (an inductor's pads under its body, a 1206's end caps, an IC's pins do not count) and 0.3 mm from other nets' copper, within 50 mm of a ground machine contact. A gap names why; fix it by moving a part, adding a test point (back to the schematic), or widening copper.

The workcell's numbers (Stephen's spec, adom/probing-workcell)

  • Smallest probing pad 200 um; pads under 300 um may need a human crosshair check, so 0.5 mm is the default test point. Use 1.0 mm for a signal you know you will need often.
  • Two probe tips work about 3 mm apart (the 2.5 mm pogo mount).
  • Every probed point within 50 mm of a MachineContactMedium ground contact; put one near each corner.
  • Parts directly under a probed point under 18 mm tall; within 50 mm of it, under 40 mm.
  • adom-aiflow-probing's planner still assumes a 0.3 mm tip and 0.15 mm XY error (unconfirmed); with those, a 0.5 mm pad shows negative landing margin there until the tip and error are measured.

Where test pads go on the board

  • At least 1.5 mm centre to centre from every other test pad, so a probe lands on one pad only; DRC passing is not enough (two pads 0.86 mm apart pass DRC and still share a probe).
  • Out of the machine-contact columns and corner-pin zones: the contacts keep their grid positions and their silkscreen tags; the test pads move.
  • A net on a MachineContactLarge needs no test pad: its ring is about 1 mm wide, clear of the bore, so the landing fits. A net only on a MachineContactMedium or a corner pin keeps its test pad for now: a medium contact's ring is about 0.3 mm wide around the bore, thinner than the 0.5 mm landing, and the human crosshair check for pads that small is not built.