{
  "schema_version": "synth.routing.v1",
  "state": "routed",
  "engine": "freerouting",
  "capability": {
    "engine": "freerouting",
    "available": true,
    "version": "freerouting-2.4.1",
    "runtime_version": "openjdk version \"21.0.12.1\" 2026-08-18",
    "detail": null,
    "failure": null
  },
  "provenance": {
    "engine": "freerouting",
    "engine_version": "freerouting-2.4.1.jar",
    "runtime_version": "openjdk version \"25.0.4.1\" 2026-08-18 LTS",
    "profile": "jlcpcb",
    "command": [
      "/usr/bin/python3",
      "tools/freeroute_autoroute.py",
      "out/usb_uart.synth.kicad_pcb",
      "out/usb_uart.freerouting.kicad_pcb",
      "--jar",
      "tools/freerouting/freerouting-2.4.1.jar",
      "--java",
      "tools/jre25/bin/java",
      "--passes",
      "40",
      "--threads",
      "4",
      "--ses-output",
      "out/usb_uart.freerouting.ses",
      "--report",
      "out/usb_uart.freerouting.json",
      "--clean-netlist",
      "--allow-via-in-pad"
    ],
    "settings": {
      "clean_netlist": "true",
      "passes": "40",
      "threads": "4",
      "wall_clock_secs": "1200"
    },
    "input_hash": "26d21c2814533986c19ed730c3c63b3f775ca0ba5221886e655ded0dbea7d026",
    "output_hash": "",
    "source_revision": null,
    "duration_ms": 210916
  },
  "statistics": {
    "connected_nets": 26,
    "open_nets": 0,
    "open_net_names": [],
    "segments": 273,
    "vias": 43,
    "wire_length_mm": 515.429141,
    "pad_escape_rejections": 0,
    "engine_findings": {
      "claimed_imported_segments": "273",
      "claimed_imported_vias": "43"
    }
  },
  "artifacts": {
    "baseline": "out/usb_uart.synth.kicad_pcb",
    "candidate": "out/usb_uart.freerouting.kicad_pcb",
    "delivered": "out/usb_uart.kicad_pcb",
    "session_log": "out/usb_uart.freerouting.log",
    "ses": "out/usb_uart.freerouting.ses",
    "router_report": "out/usb_uart.freerouting.json",
    "connectivity_report": null,
    "drc_report": null
  },
  "validation": {
    "fabrication_ready": true,
    "topology": {
      "missing_footprints": [],
      "extra_footprints": [],
      "missing_nets": [],
      "missing_layers": [],
      "missing_pads": [],
      "renet_pads": [],
      "outline_present": true
    },
    "connectivity": {
      "connected_nets": 26,
      "open_nets": 0,
      "open": [],
      "unconnected_pads": [],
      "via_in_pad": [
        "via at (23.800, 17.300) mm U1.25"
      ],
      "undersized_vias": [],
      "undersized_tracks": []
    },
    "kicad_drc": {
      "errors": 0,
      "unconnected": 0,
      "warnings": 0
    },
    "blocking_reasons": [],
    "unavailable_checks": []
  },
  "failure": null,
  "escape": [
    {
      "refdes": "J1",
      "package": "Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12",
      "pads": 22,
      "pitch_mm": 0.5,
      "gap_mm": 0.2,
      "via_span_mm": 0.687,
      "max_drill_mm": 0.113,
      "layers": 2,
      "suggested_layers": 4,
      "limit": "track",
      "detail": "adjacent pins are 0.500 mm apart and the pads leave 0.200 mm between them; a fabrication-floor via needs 0.687 mm between centres, so the drill that would fit is 0.113 mm; even a minimum track needs 0.254 mm of gap",
      "remediation": "use via-in-pad if the process allows, or choose a coarser-pitch part; this board has 2 copper layers — an inner plane at 4 layers gives these pins somewhere to change layers"
    },
    {
      "refdes": "U1",
      "package": "Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm",
      "pads": 25,
      "pitch_mm": 0.5,
      "gap_mm": 0.212132,
      "via_span_mm": 0.687,
      "max_drill_mm": 0.113,
      "layers": 2,
      "suggested_layers": 4,
      "limit": "track",
      "detail": "adjacent pins are 0.500 mm apart and the pads leave 0.212 mm between them; a fabrication-floor via needs 0.687 mm between centres, so the drill that would fit is 0.113 mm; even a minimum track needs 0.254 mm of gap",
      "remediation": "use via-in-pad if the process allows, or choose a coarser-pitch part; this board has 2 copper layers — an inner plane at 4 layers gives these pins somewhere to change layers"
    }
  ]
}