app
AI Flow: Reverse Engineering
Public Made by Adomby adom
Photos of a PCB to a tagged KiCad copy: parts placed, copper and nets with their evidence, a schematic, a measured confidence score, bench tests and a video of the run.
main
Caleb
Add the Driver board KiCad copy, data and pictures
5d462f7
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
{
"candidates": [
{
"connections": 249,
"drcErrors": 17,
"drcTypes": {
"clearance": 5,
"copper_edge_clearance": 12
},
"inheritedErrors": 146,
"kicadOpen": 84,
"layerUse": [
{
"layer": "F.Cu",
"plane": null,
"trackMm": 595.9
},
{
"layer": "In1.Cu",
"plane": "GND",
"trackMm": 0.0
},
{
"layer": "In2.Cu",
"plane": "+3V3",
"trackMm": 0.0
},
{
"layer": "B.Cu",
"plane": null,
"trackMm": 405.6
}
],
"layers": 4,
"log": "reverse-flow/routes/L4/route.log",
"narrowedPower": [
"VIN",
"PHASE_X3",
"PHASE_X2",
"PHASE_X1",
"VIN_LOGIC",
"+5V",
"+12V",
"DRV_DVDD",
"+3V3A"
],
"open": 54,
"passes": 2,
"planes": [
{
"layer": "In1.Cu",
"net": "GND",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
},
{
"layer": "In2.Cu",
"net": "+3V3",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
}
],
"ripups": 638,
"rules": "kicad-default",
"run": "reverse-flow/routes/L4",
"seconds": 200.6,
"seenCrossingMm": 326.8,
"seenTracksDisplaced": 102,
"stop": "time limit of 200 s",
"trackMm": 1001.5,
"vias": 210,
"warnings": 15
},
{
"connections": 249,
"drcErrors": 6,
"drcTypes": {
"clearance": 5,
"copper_edge_clearance": 1
},
"inheritedErrors": 146,
"kicadOpen": 76,
"layerUse": [
{
"layer": "F.Cu",
"plane": null,
"trackMm": 128.9
},
{
"layer": "In1.Cu",
"plane": "GND",
"trackMm": 0.0
},
{
"layer": "In2.Cu",
"plane": null,
"trackMm": 474.2
},
{
"layer": "In3.Cu",
"plane": null,
"trackMm": 526.6
},
{
"layer": "In4.Cu",
"plane": "+3V3",
"trackMm": 0.0
},
{
"layer": "B.Cu",
"plane": null,
"trackMm": 35.5
}
],
"layers": 6,
"log": "reverse-flow/routes/L6/route.log",
"narrowedPower": [
"VIN",
"PHASE_X3",
"PHASE_X2",
"PHASE_X1",
"+12V",
"DRV_DVDD",
"+3V3A"
],
"open": 34,
"passes": 3,
"planes": [
{
"layer": "In1.Cu",
"net": "GND",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
},
{
"layer": "In4.Cu",
"net": "+3V3",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
}
],
"ripups": 676,
"rules": "kicad-default",
"run": "reverse-flow/routes/L6",
"seconds": 200.5,
"seenCrossingMm": 23.9,
"seenTracksDisplaced": 52,
"stop": "time limit of 200 s",
"trackMm": 1165.3,
"vias": 230,
"warnings": 15
},
{
"connections": 249,
"drcErrors": 9,
"drcTypes": {
"clearance": 8,
"copper_edge_clearance": 1
},
"inheritedErrors": 146,
"kicadOpen": 69,
"layerUse": [
{
"layer": "F.Cu",
"plane": null,
"trackMm": 113.2
},
{
"layer": "In1.Cu",
"plane": "GND",
"trackMm": 0.0
},
{
"layer": "In2.Cu",
"plane": null,
"trackMm": 405.7
},
{
"layer": "In3.Cu",
"plane": null,
"trackMm": 276.8
},
{
"layer": "In4.Cu",
"plane": null,
"trackMm": 206.7
},
{
"layer": "In5.Cu",
"plane": null,
"trackMm": 171.7
},
{
"layer": "In6.Cu",
"plane": "+3V3",
"trackMm": 0.0
},
{
"layer": "B.Cu",
"plane": null,
"trackMm": 12.5
}
],
"layers": 8,
"log": "reverse-flow/routes/L8/route.log",
"narrowedPower": [
"VIN",
"PHASE_X3",
"PHASE_X2",
"PHASE_X1",
"+12V",
"DRV_DVDD",
"+3V3A"
],
"open": 29,
"passes": 3,
"planes": [
{
"layer": "In1.Cu",
"net": "GND",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
},
{
"layer": "In6.Cu",
"net": "+3V3",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
}
],
"ripups": 714,
"rules": "kicad-default",
"run": "reverse-flow/routes/L8",
"seconds": 200.8,
"seenCrossingMm": 29.8,
"seenTracksDisplaced": 46,
"stop": "time limit of 200 s",
"trackMm": 1186.7,
"vias": 215,
"warnings": 14
}
],
"escalation": "not closed; last: 8 layers: 29 open, 9 new DRC errors, 69 missing per KiCad (time limit of 200 s)",
"openNote": "34 connection(s) stay open at 6 layers: GND (D2.2); PHASE_X3 (U2.17); GLC (U2.18); PHASE_X2 (U2.14); GHB (U2.15); SPB (U2.12); GHA (U2.6); GLA (U2.8); +3V3 (U1.23); EXP_MISO_SDA (U1.42); +12V (J8.3); +12V (J9.3); +12V (C56.1); LDO5_ADJ (R10.1); CAN_TX (U1.34); SOA (U2.23); DRV_nFAULT (U2.25); DRV_nFAULT (U1.19); DRV_SDI (U2.27); DRV_nSCS (U1.12); DRV_EN (U1.44); DRV_CAL (U2.31); INHA (U1.30); INLA (U2.35); INHB (U2.36); INLB (U2.37); INHC (U2.38); SOA_ADC (U1.8); SOC_ADC (U1.10); AUX_A_MCU (U1.22); AUX_B_MCU (U1.24); AUX_D_MCU (U1.29); FAN_PWM_MCU (U1.46); FAN_TACH (U1.47)",
"planes": [
{
"layer": "In1.Cu",
"net": "GND",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
},
{
"layer": "In4.Cu",
"net": "+3V3",
"tag": "INFERRED",
"tests": [
"T-layers"
],
"why": "chosen for this stackup: the largest power nets on the layers next to the outer faces"
}
],
"proposed": 6,
"tag": "INFERRED",
"tests": [
"T-layers"
],
"trail": [
"4 layers: 54 of 249 connections open, 17 new DRC errors, 210 vias, 1002 mm of track, 327 mm crossing seen copper",
"6 layers: 34 of 249 connections open, 6 new DRC errors, 230 vias, 1165 mm of track, 24 mm crossing seen copper",
"8 layers: 29 of 249 connections open, 9 new DRC errors, 215 vias, 1187 mm of track, 30 mm crossing seen copper"
],
"why": "no stackup closed every connection. 6 layers is the smallest beyond which more layers stop helping. 4 layers: 54 of 249 connections open, 17 new DRC errors, 210 vias, 1002 mm of track, 327 mm crossing seen copper; 6 layers: 34 of 249 connections open, 6 new DRC errors, 230 vias, 1165 mm of track, 24 mm crossing seen copper; 8 layers: 29 of 249 connections open, 9 new DRC errors, 215 vias, 1187 mm of track, 30 mm crossing seen copper",
"rulesExperiment": {
"why": "The same seen copy routed with JLC 4-layer capabilities (0.127 track and clearance, 0.45/0.2 via) to test whether the open fan-outs are a rules limit. KiCad's shared service checks only default rules, so its DRC counts on this run do not apply.",
"folder": "reverse-flow/routes-experiment-jlc",
"candidates": [
{
"layers": 4,
"open": 30,
"vias": 282,
"trackMm": 1260.2,
"seenCrossingMm": 385.2
},
{
"layers": 6,
"open": 2,
"vias": 288,
"trackMm": 1556.2,
"seenCrossingMm": 39.0
}
]
}
}