app
AI Flow
Public Made by Adomby adom
Adom's AI Flow: a tool to help the AI follow all of the steps it takes to build a board.
← Commit history
aiflow-scaffold-probe: leave a GND contact free for the probe's ground tether; never route a wire over the board (probing-wiring)
1 file changed
+8−7
skills/aiflow-scaffold-probe/SKILL.md+8−7@@ -22,7 +22,8 @@ The Control Panel Scaffold (adom/control-panel-scaffold, V2.1.0) contacts that m Rules: - Power input to +PS1, its return to -PS1. On V2.1.0, jumper JP1 bonds -PS1 to GND once (bridged by default), so a molecule whose input return and signal ground are the same net is fine; if the user has opened JP1 to float PS1, the molecule becomes the tie point, so ask before wiring both.-- Every molecule that talks to GPIO or ADC gets its own wire to panel GND.+- **Leave one GND machine contact FREE for the probing workcell.** The probe's ground tether ends in a medium machine pin that plugs into a free GND contact (a contact holds one pin), and the probe reaches 50 mm from it. With JP1 bridged (the default), the input-return wire to -PS1 is already the panel ground for GPIO and ADC, so do not wire a second GND contact. Only with JP1 open does a molecule need its own panel-GND wire, and then it needs another GND contact for the tether.+- **No wire over the board, at any height.** The probe works there. Each wire leaves its contact straight out through the nearest board edge and goes around the board to the panel (skill probing-wiring; `adom-aiflow-probing wires check` lints it, `wires route` writes the bend points). - Monitor outputs go to MC29 to MC32 and must be inside the ADC range (scale on the molecule, aiflow-molecule). - Enable and control pins go to plain USER_IO; say the drive mode (open-drain low to disable, never above the pin's maximum). - Current per wire: 24 AWG is fine at the 1 A level; parallel a second contact when the rail's current is higher or the drop matters.@@ -62,7 +63,7 @@ Start from a known-good layout of the same editor version (a published workcell - `pins` and `pinType`: copy what the molecule's import gives for its pin size; do not invent values. - `contactPosition` is molecule-local (mm from MP1; z is the footprint JSON's `contact_z`, 2.8 mm for medium contacts). `contactName` matches the board's reference. - Check the layout against the geometry before handing it over: a three.js page that loads the base grid, the scaffold GLB, the molecule GLB and the control panel GLB (Draco, so load it with DRACOLoader) at the layout's positions, with the wires drawn to each panel contact's position from the panel's `.kicad_pcb`. Land the wire ends on the panel board's top face (find the flat mesh about 160 x 45 mm; the panel's own bounding box includes the dock connector and parts below the board, so neither its centre nor its minimum z is the board). Render it headless (puppeteer-core with Chromium) and look at a close view of the contact row.-- Routing fields (`routingType`, `manualBendPoints`, `segments`, `color`, `diameter`) are what the editor writes when it routes; let it, then read the file back.+- Routing fields (`routingType`, `manualBendPoints`, `segments`, `color`, `diameter`): the editor's auto route (up, across X, across Y) runs straight over the board whenever the panel contact is on the far side, so a probing layout uses `routingType: "manual"` with `manualBendPoints` (layout mm) that go around the board. `adom-aiflow-probing wires route` writes them. Validate before handing over: every `moleculeName` exists in `molecules`, every `contactName` exists on that molecule's footprint JSON, every `controlPanelContactName` is a real V2.1.0 contact in the right group, and no panel contact is used twice by different nets. Open it in the Hydrogen 3D editor and look. @@ -73,12 +74,12 @@ Write `probe/plan.json` and a readable table in the README. Each test point in t ```json {"frame": "molecule, mm from MP1 centre, y up", "points": [- {"ref": "TP1", "net": "SW", "x": 15.6, "y": 4.9, "measure": "switch node, 500 kHz, 0 to VIN", "ground": "TP4"},- {"ref": "TP3", "net": "VOUT", "x": 21.6, "y": 4.9, "measure": "ripple, short ground spring to TP4", "expect": "about 3 mV pp at 12 V"}+ {"ref": "TP1", "net": "SW", "x": 15.6, "y": 4.9, "measure": "switch node, 500 kHz, 0 to VIN"},+ {"ref": "TP3", "net": "VOUT", "x": 21.6, "y": 4.9, "measure": "ripple, 20 MHz limit, spikes rejected", "expect": "about 3 mV pp at 12 V"} ]} ``` -Each test gets: the setup (PS1 voltage and current limit, load, what GPIO does), the probe points, the expected value with its source (calcs.json, the ngspice result, the vendor model) and the pass band. Include the checks the design left open for the bench (the load step the model disagreed on, the UVLO thresholds). Probe ripple with the shortest ground you can; a long ground lead measures itself.+Each test gets: the setup (PS1 voltage and current limit, load, what GPIO does), the probe points, the expected value with its source (calcs.json, the ngspice result, the vendor model) and the pass band. Include the checks the design left open for the bench (the load step the model disagreed on, the UVLO thresholds). The probe grounds once per board through its tether in the free GND contact, so ripple read through that lead picks up the switching edges: plan it with the 20 MHz limit and score it with the spikes rejected (adom-aiflow-probing's `pp_spikefree_mV`), raw beside it. ## Getting the molecules into Hydrogen @@ -99,9 +100,9 @@ The layout JSON, the contact mapping table, the probe plan, and a line in the ru | J2 (0,8) | GND | MC20 (-PS1) | input return beside the input | | J3 (0,4) | EN | MC33 (USER_IO25) | open-drain low disables; released = the UVLO divider decides | | J4 (24,12) | VOUT | load | bench electronic load for the 0 to 1 A step |-| J5 (24,8) | GND | MC15 (GND) | reference for ADC and GPIO |+| J5 (24,8) | GND | (free) | the probing workcell's ground tether plugs in here | | J6 (24,4) | VMON | MC29 (USER_IO29, ADC3) | VOUT/2, about 2.5 V | -J2 and J5 are the same net on the molecule, so this plan also joins -PS1 and panel GND through the board; with JP1 bridged (the default) they are already common, so nothing changes. The molecule sits on a LrgMed 64 x 64 scaffold (FL large pin at 240, 464; molecule FL pin at 260, 488, centred on the scaffold's 4 mm grid). Layout, preview and probe plan: the john/buck-12v5v-molecule page, `scaffold/`.+J2 also carries the panel ground for the ADC and GPIO (JP1 bridged, the default), so J5 stays free for the probe's ground tether. EN (J3, left edge) goes to MC33 on the right: it leaves left and goes around the board, never over it. The molecule sits on a LrgMed 64 x 64 scaffold (FL large pin at 240, 464; molecule FL pin at 260, 488, centred on the scaffold's 4 mm grid). Layout, preview and probe plan: the john/buck-12v5v-molecule page, `scaffold/`. Probe points: TP1 SW (15.6, 4.9), TP2 FB (9.4, 5.6), TP3 VOUT (21.6, 4.9), TP4 GND (15.6, 2.8). Expected: VOUT 4.98 V (4.86 to 5.11 V over the reference tolerance), about 3 mV ripple at 12 V, UVLO start 8.6 V and stop 6.9 V, and a 0 to 1 A step of about 180 mV (the vendor model's figure; the fitted model said less), settling in about 0.2 ms.