{
 "schema": 1,
 "title": "Zap! compared with TraceMaker and tscircuit on 25 public KiCad boards",
 "measured": "2026-10-12 to 2026-10-14",
 "data_written": "2026-10-14T15:17:52Z",
 "boards_count": 25,
 "routers": [
  {
   "id": "zap",
   "name": "Zap!",
   "role": "ours",
   "show": true,
   "label": "Zap! (the build served today)",
   "version": "Zap! router build re92d124.57335f59, the build zap.mutual.solutions runs now; boards routed 2026-10-14",
   "settings": "the same machines and session as the others, 1 CPU core per board, single run (the service default); no clock: stops after a fixed amount of work (3.1 min median, 16 min longest here); makes its own copper pours",
   "status": "ready"
  },
  {
   "id": "zap_60",
   "name": "Zap!, 60 minutes",
   "role": "ours",
   "show": true,
   "status": "ready",
   "label": "Zap! with the upload option minutes: 60",
   "version": "Zap! router build re92d124.57335f59, the build zap.mutual.solutions runs now; boards routed 2026-10-14",
   "settings": "the same machines and session as the others, 1 CPU core per board: the single run, then more attempts one after another (twice and four times the work, then other router settings) until one has every connection and no short, or 60 minutes pass; keeps the best"
  },
  {
   "id": "zap_v1",
   "name": "Zap!, earlier measurement",
   "role": "ours",
   "show": false,
   "label": "Zap! router build r9393ad9 measured 2026-10-13 on another machine (replaced 2026-10-14)",
   "version": "Zap! router build r9393ad9.b2ac4b40 (commit 9393ad9), the build the service ran from 13 to 14 October; boards routed 2026-10-13",
   "settings": "1 CPU core per board; no clock: stops after a fixed amount of work (3.4 min median, 15 min longest here); makes its own copper pours",
   "status": "ready",
   "archived": true
  },
  {
   "id": "zap_prev",
   "name": "Zap! previous build",
   "role": "ours",
   "show": true,
   "variant": true,
   "label": "Zap! previous build (served until 2026-10-13)",
   "version": "Zap! router build r009e659.8f766f9f, served until service release 2026.10.13.29 on 2026-10-13; boards routed 2026-10-12",
   "settings": "same settings as the served build",
   "status": "ready"
  },
  {
   "id": "tracemaker",
   "name": "TraceMaker",
   "role": "other",
   "show": true,
   "label": "TraceMaker",
   "version": "TraceMaker v0.9.0-116-g49fbd3c (main branch, commit 49fbd3c of 2026-10-14, the latest public version when run), built CPU-only with GCC 14.2; boards routed 2026-10-14",
   "settings": "--time 3600 --threads 1 --no-kb --diff-pairs --keep-vias-off-pads --vias-off-pads-below 1000; 1 CPU core per board, no GPU",
   "status": "ready"
  },
  {
   "id": "tracemaker_v1",
   "name": "TraceMaker, 10 min",
   "role": "other",
   "show": false,
   "label": "TraceMaker (10-minute limit, --threads 1; replaced 2026-10-14)",
   "version": "TraceMaker v0.9.0-90-gc6fcb7b (main branch, commit of 2026-10-11, the latest public version when run), built CPU-only with GCC 14.2; boards routed 2026-10-13",
   "settings": "--time 600 --threads 1 --no-kb --diff-pairs --keep-vias-off-pads --vias-off-pads-below 1000; 1 CPU thread per board, no GPU",
   "status": "ready",
   "archived": true
  },
  {
   "id": "tracemaker_default",
   "name": "TraceMaker, own pair default",
   "role": "other",
   "show": true,
   "variant": true,
   "label": "TraceMaker without --diff-pairs",
   "version": "TraceMaker v0.9.0-90-gc6fcb7b (an earlier build, commit of 2026-10-11); boards routed 2026-10-13",
   "settings": "--time 600 --threads 1, without --diff-pairs (TraceMaker's own default pair handling)",
   "status": "ready"
  },
  {
   "id": "tscircuit",
   "name": "tscircuit, 10 min",
   "role": "other",
   "show": true,
   "variant": true,
   "label": "tscircuit autorouter",
   "version": "@tscircuit/capacity-autorouter 0.0.973 (AutoroutingPipelineSolver9_PreloadedTraceGraph) on Node.js v24.21.0; boards routed 2026-10-13 (UTC) from the corrected input conversion",
   "settings": "effort 1 (tscircuit's default); solver stopped at 600 s. tscircuit routes in stages and returns routing only after its last stage, so a board stopped at the limit has no routing at all: it never returns a partial result",
   "status": "ready"
  },
  {
   "id": "tscircuit_60",
   "name": "tscircuit, 60 min",
   "role": "other",
   "show": true,
   "variant": false,
   "label": "tscircuit autorouter with a 60-minute limit",
   "version": "@tscircuit/capacity-autorouter 0.0.973 (AutoroutingPipelineSolver9_PreloadedTraceGraph) on Node.js v24.21.0, through this page's runner from the corrected input conversion; boards routed 2026-10-14 (UTC)",
   "settings": "effort 1 (tscircuit's default); 1 CPU core per board; solver limit 3,600 s (60 minutes, the Zap! service's job limit), stopped at 75 minutes at the latest; a board stopped at the limit has no routing, since tscircuit returns routing only after its last stage",
   "status": "ready"
  },
  {
   "id": "tscircuit_60_v2",
   "name": "tscircuit, 60 min, earlier run",
   "role": "other",
   "show": false,
   "variant": false,
   "label": "tscircuit autorouter with a 60-minute limit (the 2026-10-13 run; replaced 2026-10-14)",
   "version": "same tscircuit package and corrected inputs; the boards that hit the 600 s limit were re-run with 60 minutes on 2026-10-13 (UTC), the others ended before 600 s and keep their result",
   "settings": "effort 1; solver stopped at 3,600 s (60 minutes, the Zap! service's job limit); a board stopped at the limit has no routing, since tscircuit returns routing only after its last stage",
   "status": "ready",
   "archived": true
  },
  {
   "id": "tscircuit_v1",
   "name": "tscircuit, 10 min, first input conversion",
   "role": "other",
   "show": false,
   "archived": true,
   "label": "tscircuit autorouter on the first input conversion (replaced 2026-10-14)",
   "version": "same tscircuit package; boards routed 2026-10-12 from the first input conversion",
   "settings": "effort 1; solver stopped at 600 s",
   "status": "ready"
  },
  {
   "id": "tscircuit_60_v1",
   "name": "tscircuit, 60 min, first input conversion",
   "role": "other",
   "show": false,
   "archived": true,
   "label": "tscircuit autorouter with a 60-minute limit on the first input conversion (replaced 2026-10-14)",
   "version": "same tscircuit package; the boards that hit the 600 s limit re-run with 60 minutes on 2026-10-13, first input conversion",
   "settings": "effort 1; solver stopped at 3,600 s",
   "status": "ready"
  },
  {
   "id": "tscircuit_e10",
   "name": "tscircuit, effort 10",
   "role": "other",
   "show": false,
   "label": "tscircuit autorouter at effort 10",
   "version": "same tscircuit package; boards routed 2026-10-12 from the first input conversion (not re-run)",
   "settings": "effort 10; solver stopped at 600 s (tscircuit returns no routing before its last stage)",
   "status": "ready"
  },
  {
   "id": "freerouting",
   "name": "Freerouting",
   "role": "other",
   "show": true,
   "label": "Freerouting",
   "version": "Freerouting 2.5.0 (latest stable release, published 2026-10-05; tag v2.5.0, build revision b647a2f824cfbc54bc4dcaee71b03b7cd945eb76 from the jar manifest), routed through the Specctra DSN and SES files that KiCad's Freerouting plugin uses (exported and imported with KiCad 10.0.6); boards routed 2026-10-14",
   "settings": "java -Xmx12g -Xms256m -jar freerouting-2.5.0.jar -de in.dsn -do out.ses --gui.enabled=false --api_server.enabled=false --profile.allow_telemetry=false --usage_and_diagnostic_data.disable_analytics=true --router.max_threads=1 --router.job_timeout=01:00:00 --router.result_json=result.json",
   "status": "ready",
   "licence": "GPL-3.0"
  },
  {
   "id": "freerouting_v1",
   "name": "Freerouting, 10 min",
   "role": "other",
   "show": false,
   "label": "Freerouting (10-minute limit, 1 thread; replaced 2026-10-14)",
   "version": "Freerouting 2.5.0 (latest stable release, published 2026-10-05; tag v2.5.0, build revision b647a2f824cfbc54bc4dcaee71b03b7cd945eb76 from the jar manifest), routed through the Specctra DSN and SES files that KiCad's Freerouting plugin uses (exported and imported with KiCad 10.0.6); boards routed 2026-10-13",
   "settings": "java -Xmx8g -Xms256m -jar freerouting-2.5.0.jar -de in.dsn -do out.ses --gui.enabled=false --api_server.enabled=false --profile.allow_telemetry=false --usage_and_diagnostic_data.disable_analytics=true --router.max_threads=1 --router.job_timeout=00:10:00 --router.result_json=result.json",
   "status": "ready",
   "licence": "GPL-3.0",
   "archived": true
  },
  {
   "id": "human",
   "name": "Human-routed",
   "role": "reference",
   "show": true,
   "label": "Human-routed (the published boards)",
   "version": "each board as its designers routed and published it",
   "settings": "reference, not a router",
   "status": "ready"
  }
 ],
 "totals": {
  "zap": {
   "boards": 25,
   "fully_connected": 14,
   "complete_and_clean": 6,
   "unconnected": 196,
   "rule_errors": 187,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 1181,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 265,
   "time_total_s": 6814,
   "time_median_s": 184,
   "time_longest_s": 937,
   "boards_over_600s": 2,
   "finished": 25,
   "stopped_at_limit": 0,
   "failed": 0,
   "complete_clean_no_shorts": 6,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 30,
   "boards_count_capped": 7
  },
  "zap_prev": {
   "boards": 25,
   "fully_connected": 10,
   "complete_and_clean": 5,
   "unconnected": 230,
   "rule_errors": 200,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 6009,
   "vias_in_smd_pads": 3531,
   "isolated_copper": 23,
   "hot_sections": 272,
   "time_total_s": 5049,
   "time_median_s": 42,
   "time_longest_s": 770,
   "boards_over_600s": 2,
   "finished": 25,
   "stopped_at_limit": 0,
   "failed": 0,
   "complete_clean_no_shorts": 5,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 37,
   "boards_count_capped": 9
  },
  "tracemaker": {
   "boards": 25,
   "fully_connected": 7,
   "complete_and_clean": 3,
   "unconnected": 808,
   "rule_errors": 439,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 2202,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 558,
   "time_total_s": 61301,
   "time_median_s": 3601,
   "time_longest_s": 3603,
   "boards_over_600s": 17,
   "finished": 11,
   "stopped_at_limit": 14,
   "failed": 0,
   "complete_clean_no_shorts": 3,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 100,
   "boards_count_capped": 8
  },
  "tracemaker_default": {
   "boards": 25,
   "fully_connected": 7,
   "complete_and_clean": 2,
   "unconnected": 1143,
   "rule_errors": 370,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 2067,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 476,
   "time_total_s": 11559,
   "time_median_s": 601,
   "time_longest_s": 605,
   "boards_over_600s": 0,
   "finished": 8,
   "stopped_at_limit": 17,
   "failed": 0,
   "complete_clean_no_shorts": 2,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 19,
   "boards_count_capped": 8
  },
  "tscircuit": {
   "boards": 25,
   "fully_connected": 10,
   "complete_and_clean": 0,
   "unconnected": 5885,
   "rule_errors": 6693,
   "shorts": 648,
   "boards_with_shorts": 15,
   "fab_violations": 3452,
   "vias_in_smd_pads": 75,
   "isolated_copper": 0,
   "hot_sections": 295,
   "time_total_s": 6289,
   "time_median_s": 142,
   "time_longest_s": 694,
   "boards_over_600s": 2,
   "finished": 18,
   "stopped_at_limit": 4,
   "failed": 3,
   "complete_clean_no_shorts": 0,
   "no_output": 7,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 4986,
   "boards_count_capped": 7
  },
  "tscircuit_60": {
   "boards": 25,
   "fully_connected": 10,
   "complete_and_clean": 0,
   "unconnected": 4864,
   "rule_errors": 8617,
   "shorts": 1081,
   "boards_with_shorts": 17,
   "fab_violations": 5100,
   "vias_in_smd_pads": 102,
   "isolated_copper": 0,
   "hot_sections": 668,
   "time_total_s": 11898,
   "time_median_s": 130,
   "time_longest_s": 4501,
   "boards_over_600s": 4,
   "finished": 20,
   "stopped_at_limit": 1,
   "failed": 4,
   "complete_clean_no_shorts": 0,
   "no_output": 5,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 5983,
   "boards_count_capped": 8
  },
  "tscircuit_v1": {
   "boards": 25,
   "fully_connected": 8,
   "complete_and_clean": 0,
   "unconnected": 7240,
   "rule_errors": 4423,
   "shorts": 439,
   "boards_with_shorts": 12,
   "fab_violations": 2698,
   "vias_in_smd_pads": 49,
   "isolated_copper": 0,
   "hot_sections": 197,
   "time_total_s": 7917,
   "time_median_s": 160,
   "time_longest_s": 1432,
   "boards_over_600s": 3,
   "finished": 15,
   "stopped_at_limit": 7,
   "failed": 3,
   "complete_clean_no_shorts": 0,
   "no_output": 10,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 3284,
   "boards_count_capped": 8
  },
  "tscircuit_60_v1": {
   "boards": 25,
   "fully_connected": 9,
   "complete_and_clean": 0,
   "unconnected": 4866,
   "rule_errors": 8544,
   "shorts": 1118,
   "boards_with_shorts": 17,
   "fab_violations": 5266,
   "vias_in_smd_pads": 96,
   "isolated_copper": 0,
   "hot_sections": 631,
   "time_total_s": 13301,
   "time_median_s": 160,
   "time_longest_s": 4501,
   "boards_over_600s": 6,
   "finished": 20,
   "stopped_at_limit": 1,
   "failed": 4,
   "complete_clean_no_shorts": 0,
   "no_output": 5,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 5779,
   "boards_count_capped": 9
  },
  "tscircuit_e10": {
   "boards": 25,
   "fully_connected": 9,
   "complete_and_clean": 0,
   "unconnected": 8181,
   "rule_errors": 3527,
   "shorts": 384,
   "boards_with_shorts": 11,
   "fab_violations": 2377,
   "vias_in_smd_pads": 29,
   "isolated_copper": 0,
   "hot_sections": 197,
   "time_total_s": 7278,
   "time_median_s": 158,
   "time_longest_s": 1050,
   "boards_over_600s": 3,
   "finished": 14,
   "stopped_at_limit": 6,
   "failed": 5,
   "complete_clean_no_shorts": 0,
   "no_output": 11,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 2785,
   "boards_count_capped": 7
  },
  "freerouting": {
   "boards": 25,
   "fully_connected": 11,
   "complete_and_clean": 2,
   "unconnected": 2073,
   "rule_errors": 2318,
   "shorts": 4,
   "boards_with_shorts": 3,
   "fab_violations": 2376,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 623,
   "time_total_s": 28280,
   "time_median_s": 529,
   "time_longest_s": 3689,
   "boards_over_600s": 10,
   "finished": 20,
   "stopped_at_limit": 5,
   "failed": 0,
   "complete_clean_no_shorts": 2,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 123,
   "boards_count_capped": 10
  },
  "human": {
   "boards": 25,
   "fully_connected": 25,
   "complete_and_clean": 13,
   "unconnected": 0,
   "rule_errors": 82,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 3235,
   "vias_in_smd_pads": 1015,
   "isolated_copper": 0,
   "hot_sections": 508,
   "time_total_s": null,
   "time_median_s": null,
   "time_longest_s": null,
   "boards_over_600s": null,
   "finished": 0,
   "stopped_at_limit": 0,
   "failed": 0,
   "complete_clean_no_shorts": 13,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 0,
   "boards_count_capped": 8
  },
  "tracemaker_v1": {
   "boards": 25,
   "fully_connected": 7,
   "complete_and_clean": 3,
   "unconnected": 1120,
   "rule_errors": 430,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 2083,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 528,
   "time_total_s": 13024,
   "time_median_s": 601,
   "time_longest_s": 604,
   "boards_over_600s": 0,
   "finished": 7,
   "stopped_at_limit": 18,
   "failed": 0,
   "complete_clean_no_shorts": 3,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 95,
   "boards_count_capped": 8
  },
  "freerouting_v1": {
   "boards": 25,
   "fully_connected": 9,
   "complete_and_clean": 2,
   "unconnected": 2676,
   "rule_errors": 2301,
   "shorts": 4,
   "boards_with_shorts": 4,
   "fab_violations": 2328,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 419,
   "time_total_s": 9872,
   "time_median_s": 537,
   "time_longest_s": 699,
   "boards_over_600s": 11,
   "finished": 14,
   "stopped_at_limit": 11,
   "failed": 0,
   "complete_clean_no_shorts": 2,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 124,
   "boards_count_capped": 10
  },
  "tscircuit_60_v2": {
   "boards": 25,
   "fully_connected": 10,
   "complete_and_clean": 0,
   "unconnected": 4864,
   "rule_errors": 8621,
   "shorts": 1086,
   "boards_with_shorts": 17,
   "fab_violations": 5374,
   "vias_in_smd_pads": 102,
   "isolated_copper": 0,
   "hot_sections": 668,
   "time_total_s": 12689,
   "time_median_s": 142,
   "time_longest_s": 4501,
   "boards_over_600s": 4,
   "finished": 20,
   "stopped_at_limit": 1,
   "failed": 4,
   "complete_clean_no_shorts": 0,
   "no_output": 5,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 5984,
   "boards_count_capped": 8
  },
  "zap_v1": {
   "boards": 25,
   "fully_connected": 14,
   "complete_and_clean": 6,
   "unconnected": 196,
   "rule_errors": 187,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 1194,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 265,
   "time_total_s": 7478,
   "time_median_s": 201,
   "time_longest_s": 915,
   "boards_over_600s": 4,
   "finished": 25,
   "stopped_at_limit": 0,
   "failed": 0,
   "complete_clean_no_shorts": 6,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 30,
   "boards_count_capped": 7
  },
  "zap_60": {
   "boards": 25,
   "fully_connected": 15,
   "complete_and_clean": 6,
   "unconnected": 124,
   "rule_errors": 166,
   "shorts": 0,
   "boards_with_shorts": 0,
   "fab_violations": 1214,
   "vias_in_smd_pads": 0,
   "isolated_copper": 0,
   "hot_sections": 263,
   "time_total_s": 39136,
   "time_median_s": 427,
   "time_longest_s": 3655,
   "boards_over_600s": 11,
   "finished": 16,
   "stopped_at_limit": 9,
   "failed": 0,
   "complete_clean_no_shorts": 6,
   "no_output": null,
   "rule_errors_from_placement": 74,
   "rule_errors_spacing": 16,
   "boards_count_capped": 7
  }
 },
 "fab_violations_by_type": {
  "zap": {
   "silk_over_copper": 595,
   "solder_mask_bridge": 440,
   "copper_edge_clearance": 60,
   "hole_clearance": 39,
   "acute_angle_acid_trap": 25,
   "clearance": 15,
   "connection_width": 6,
   "copper_sliver": 1
  },
  "zap_prev": {
   "via_in_pad": 3531,
   "hole_clearance": 876,
   "silk_over_copper": 775,
   "solder_mask_bridge": 424,
   "connection_width": 261,
   "acute_angle_acid_trap": 65,
   "copper_edge_clearance": 65,
   "clearance": 11,
   "copper_sliver": 1
  },
  "tracemaker": {
   "silk_over_copper": 722,
   "acute_angle_acid_trap": 610,
   "solder_mask_bridge": 430,
   "connection_width": 142,
   "hole_clearance": 99,
   "drill_out_of_range": 97,
   "copper_edge_clearance": 87,
   "clearance": 14,
   "copper_sliver": 1
  },
  "tracemaker_default": {
   "silk_over_copper": 707,
   "acute_angle_acid_trap": 513,
   "solder_mask_bridge": 428,
   "connection_width": 119,
   "drill_out_of_range": 110,
   "hole_clearance": 97,
   "copper_edge_clearance": 80,
   "clearance": 12,
   "copper_sliver": 1
  },
  "tscircuit": {
   "acute_angle_acid_trap": 1032,
   "solder_mask_bridge": 719,
   "silk_over_copper": 595,
   "clearance": 424,
   "hole_clearance": 352,
   "drill_out_of_range": 98,
   "via_in_pad": 75,
   "hole_to_hole": 70,
   "copper_edge_clearance": 68,
   "connection_width": 12,
   "holes_co_located": 6,
   "copper_sliver": 1
  },
  "tscircuit_60": {
   "acute_angle_acid_trap": 1910,
   "solder_mask_bridge": 1032,
   "silk_over_copper": 794,
   "hole_clearance": 534,
   "clearance": 470,
   "via_in_pad": 102,
   "drill_out_of_range": 98,
   "hole_to_hole": 70,
   "copper_edge_clearance": 68,
   "connection_width": 15,
   "holes_co_located": 6,
   "copper_sliver": 1
  },
  "tscircuit_v1": {
   "solder_mask_bridge": 647,
   "acute_angle_acid_trap": 614,
   "silk_over_copper": 595,
   "hole_clearance": 345,
   "clearance": 195,
   "drill_out_of_range": 98,
   "copper_edge_clearance": 71,
   "hole_to_hole": 67,
   "via_in_pad": 49,
   "connection_width": 10,
   "holes_co_located": 6,
   "copper_sliver": 1
  },
  "tscircuit_60_v1": {
   "acute_angle_acid_trap": 1876,
   "solder_mask_bridge": 1012,
   "silk_over_copper": 794,
   "clearance": 677,
   "hole_clearance": 551,
   "drill_out_of_range": 98,
   "via_in_pad": 96,
   "copper_edge_clearance": 71,
   "hole_to_hole": 67,
   "connection_width": 15,
   "holes_co_located": 8,
   "copper_sliver": 1
  },
  "tscircuit_e10": {
   "acute_angle_acid_trap": 608,
   "silk_over_copper": 595,
   "solder_mask_bridge": 588,
   "hole_clearance": 236,
   "clearance": 142,
   "drill_out_of_range": 98,
   "copper_edge_clearance": 71,
   "via_in_pad": 29,
   "hole_to_hole": 5,
   "connection_width": 4,
   "copper_sliver": 1
  },
  "freerouting": {
   "silk_over_copper": 699,
   "solder_mask_bridge": 498,
   "hole_clearance": 420,
   "connection_width": 324,
   "track_width": 161,
   "acute_angle_acid_trap": 115,
   "drill_out_of_range": 79,
   "copper_edge_clearance": 66,
   "clearance": 13,
   "copper_sliver": 1
  },
  "human": {
   "via_in_pad": 1015,
   "silk_over_copper": 596,
   "acute_angle_acid_trap": 479,
   "solder_mask_bridge": 463,
   "hole_clearance": 423,
   "drill_out_of_range": 126,
   "copper_edge_clearance": 117,
   "clearance": 11,
   "connection_width": 4,
   "copper_sliver": 1
  },
  "tracemaker_v1": {
   "silk_over_copper": 708,
   "acute_angle_acid_trap": 524,
   "solder_mask_bridge": 432,
   "connection_width": 127,
   "hole_clearance": 98,
   "drill_out_of_range": 97,
   "copper_edge_clearance": 81,
   "clearance": 15,
   "copper_sliver": 1
  },
  "freerouting_v1": {
   "silk_over_copper": 691,
   "solder_mask_bridge": 497,
   "hole_clearance": 382,
   "connection_width": 327,
   "track_width": 161,
   "acute_angle_acid_trap": 116,
   "drill_out_of_range": 79,
   "copper_edge_clearance": 62,
   "clearance": 12,
   "copper_sliver": 1
  },
  "tscircuit_60_v2": {
   "acute_angle_acid_trap": 1910,
   "solder_mask_bridge": 1032,
   "silk_over_copper": 794,
   "clearance": 733,
   "hole_clearance": 545,
   "via_in_pad": 102,
   "drill_out_of_range": 98,
   "hole_to_hole": 70,
   "copper_edge_clearance": 68,
   "connection_width": 15,
   "holes_co_located": 6,
   "copper_sliver": 1
  },
  "zap_v1": {
   "silk_over_copper": 595,
   "solder_mask_bridge": 440,
   "copper_edge_clearance": 60,
   "hole_clearance": 51,
   "acute_angle_acid_trap": 25,
   "clearance": 15,
   "connection_width": 7,
   "copper_sliver": 1
  },
  "zap_60": {
   "silk_over_copper": 595,
   "solder_mask_bridge": 440,
   "hole_clearance": 69,
   "copper_edge_clearance": 60,
   "acute_angle_acid_trap": 23,
   "clearance": 15,
   "connection_width": 11,
   "copper_sliver": 1
  }
 },
 "boards": [
  {
   "id": "b01-cm4-lvds",
   "name": "Antmicro CM4 baseboard LVDS adapter",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/cm4-baseboard-lvds-adapter",
   "commit": "4af945ed558e58e4b8aea6fe909fc33d78b63f6f",
   "licence_url": "https://github.com/antmicro/cm4-baseboard-lvds-adapter/blob/4af945ed558e58e4b8aea6fe909fc33d78b63f6f/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 52,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 478,
     "outcome": "finished",
     "vias": 315,
     "peak_mb": 1282,
     "time_exact_s": 477.6
    },
    "zap_prev": {
     "unconnected": 21,
     "rule_errors": 15,
     "shorts": 0,
     "fab_violations": 215,
     "vias_in_smd_pads": 138,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 203,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 1,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 61,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3602,
     "outcome": "stopped at limit",
     "vias": 193,
     "peak_mb": 2475,
     "time_exact_s": 3602.3
    },
    "tracemaker_default": {
     "unconnected": 7,
     "rule_errors": 10,
     "shorts": 0,
     "fab_violations": 54,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 1,
     "rule_errors": 389,
     "shorts": 3,
     "fab_violations": 102,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 521,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 1,
     "rule_errors": 389,
     "shorts": 3,
     "fab_violations": 102,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 439,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 238,
     "peak_mb": 2159,
     "time_exact_s": 439.2
    },
    "tscircuit_v1": {
     "unconnected": 377,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 603,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60_v1": {
     "unconnected": 1,
     "rule_errors": 563,
     "shorts": 28,
     "fab_violations": 143,
     "vias_in_smd_pads": 2,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 656,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_e10": {
     "unconnected": 377,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "freerouting": {
     "unconnected": 6,
     "rule_errors": 137,
     "shorts": 0,
     "fab_violations": 56,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 1,
     "time_s": 733,
     "outcome": "finished",
     "vias": 139,
     "peak_mb": 912,
     "time_exact_s": 733.4
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 161,
     "vias_in_smd_pads": 21,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 10,
     "rule_errors": 11,
     "shorts": 0,
     "fab_violations": 56,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 600,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 6,
     "rule_errors": 137,
     "shorts": 1,
     "fab_violations": 56,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 1,
     "time_s": 612,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 1,
     "rule_errors": 389,
     "shorts": 3,
     "fab_violations": 102,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 521,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 52,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 511,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 52,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 487,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 486.9
    }
   },
   "connections": 377,
   "image_files": {
    "zap": "compare/b01-cm4-lvds-zap.webp",
    "tracemaker": "compare/b01-cm4-lvds-tracemaker.webp",
    "tscircuit_60": "compare/b01-cm4-lvds-tscircuit.webp",
    "freerouting": "compare/b01-cm4-lvds-freerouting.webp",
    "human": "compare/b01-cm4-lvds-human.webp"
   }
  },
  {
   "id": "b02-ecp5-dcscm",
   "name": "Antmicro ECP5 DC-SCM",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/ecp5-dc-scm",
   "commit": "0019313fd2e214f618788e5e61636a4a023ee361",
   "licence_url": "https://github.com/antmicro/ecp5-dc-scm/blob/0019313fd2e214f618788e5e61636a4a023ee361/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 113,
     "rule_errors": 50,
     "shorts": 0,
     "fab_violations": 98,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 39,
     "time_s": 937,
     "outcome": "finished",
     "vias": 1555,
     "peak_mb": 11614,
     "time_exact_s": 937.4
    },
    "zap_prev": {
     "unconnected": 115,
     "rule_errors": 59,
     "shorts": 0,
     "fab_violations": 1177,
     "vias_in_smd_pads": 672,
     "isolated_copper": 0,
     "hot_sections": 32,
     "time_s": 770,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 352,
     "rule_errors": 23,
     "shorts": 0,
     "fab_violations": 334,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 11,
     "time_s": 3602,
     "outcome": "stopped at limit",
     "vias": 687,
     "peak_mb": 25200,
     "time_exact_s": 3602.2
    },
    "tracemaker_default": {
     "unconnected": 401,
     "rule_errors": 31,
     "shorts": 0,
     "fab_violations": 353,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 25,
     "time_s": 605,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 1843,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 97,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board"
    },
    "tscircuit_60": {
     "unconnected": 1843,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 81,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board",
     "vias": 0,
     "peak_mb": 1349,
     "time_exact_s": 80.6
    },
    "tscircuit_v1": {
     "unconnected": 1843,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 133,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board"
    },
    "tscircuit_60_v1": {
     "unconnected": 1843,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 133,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board",
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 1843,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 97,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board"
    },
    "freerouting": {
     "unconnected": 1818,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3689,
     "outcome": "stopped at limit",
     "vias": 68,
     "peak_mb": 2885,
     "time_exact_s": 3688.8
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 219,
     "vias_in_smd_pads": 90,
     "isolated_copper": 0,
     "hot_sections": 8,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 416,
     "rule_errors": 20,
     "shorts": 0,
     "fab_violations": 333,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 11,
     "time_s": 603,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 1843,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 699,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 1843,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 90,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 97,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board",
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 113,
     "rule_errors": 50,
     "shorts": 0,
     "fab_violations": 112,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 39,
     "time_s": 915,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 61,
     "rule_errors": 31,
     "shorts": 0,
     "fab_violations": 98,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 34,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "attempts": 4,
     "kept_attempt": 2,
     "time_exact_s": 3601.3
    }
   },
   "connections": 1843,
   "image_files": {
    "zap": "compare/b02-ecp5-dcscm-zap.webp",
    "tracemaker": "compare/b02-ecp5-dcscm-tracemaker.webp",
    "tscircuit_60": "compare/b02-ecp5-dcscm-tscircuit.webp",
    "freerouting": "compare/b02-ecp5-dcscm-freerouting.webp",
    "human": "compare/b02-ecp5-dcscm-human.webp"
   }
  },
  {
   "id": "b03-ftdi-jtag",
   "name": "FTDI JTAG programmer",
   "author": "Anthony Bernaert",
   "licence": "CERN-OHL-P-2.0",
   "source": "https://github.com/anthony-bernaert/ftdi-jtag-programmer",
   "commit": "c33005ef528526c137ba8fd1e9cf4e8ceab63a1f",
   "licence_url": "https://github.com/anthony-bernaert/ftdi-jtag-programmer/blob/c33005ef528526c137ba8fd1e9cf4e8ceab63a1f/LICENSE.md",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 20,
     "outcome": "finished",
     "vias": 181,
     "peak_mb": 924,
     "time_exact_s": 19.6
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 111,
     "vias_in_smd_pads": 99,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 9,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 72,
     "outcome": "finished",
     "vias": 133,
     "peak_mb": 821,
     "time_exact_s": 72.0
    },
    "tracemaker_default": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 27,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 51,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 419,
     "shorts": 21,
     "fab_violations": 86,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 97,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 419,
     "shorts": 21,
     "fab_violations": 86,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 89,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 155,
     "peak_mb": 1426,
     "time_exact_s": 88.7
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 419,
     "shorts": 21,
     "fab_violations": 86,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 92,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 419,
     "shorts": 21,
     "fab_violations": 86,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 92,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 419,
     "shorts": 21,
     "fab_violations": 86,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 110,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 11,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 205,
     "outcome": "finished",
     "vias": 99,
     "peak_mb": 1119,
     "time_exact_s": 205.1
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 34,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 77,
     "outcome": "finished"
    },
    "freerouting_v1": {
     "unconnected": 11,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 199,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 419,
     "shorts": 21,
     "fab_violations": 86,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 97,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 17,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 24,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 24.3
    }
   },
   "connections": 264,
   "image_files": {
    "zap": "compare/b03-ftdi-jtag-zap.webp",
    "tracemaker": "compare/b03-ftdi-jtag-tracemaker.webp",
    "tscircuit_60": "compare/b03-ftdi-jtag-tscircuit.webp",
    "freerouting": "compare/b03-ftdi-jtag-freerouting.webp",
    "human": "compare/b03-ftdi-jtag-human.webp"
   }
  },
  {
   "id": "b04-trellis",
   "name": "Trellis Core",
   "author": "Protolux Electronics SARL-S",
   "licence": "CERN-OHL-P-2.0",
   "source": "https://github.com/protolux-electronics/trellis_core",
   "commit": "db4fe71623c14bcea47d7457d0db4c99d3899124",
   "licence_url": "https://github.com/protolux-electronics/trellis_core/blob/db4fe71623c14bcea47d7457d0db4c99d3899124/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 20,
     "outcome": "finished",
     "vias": 111,
     "peak_mb": 708,
     "time_exact_s": 20.4
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 72,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 8,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 22,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 559,
     "outcome": "finished",
     "vias": 84,
     "peak_mb": 1682,
     "time_exact_s": 559.2
    },
    "tracemaker_default": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 24,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 404,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 130,
     "shorts": 2,
     "fab_violations": 35,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 69,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 130,
     "shorts": 2,
     "fab_violations": 35,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 80,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 110,
     "peak_mb": 916,
     "time_exact_s": 80.1
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 130,
     "shorts": 2,
     "fab_violations": 35,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 116,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 130,
     "shorts": 2,
     "fab_violations": 35,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 116,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 130,
     "shorts": 2,
     "fab_violations": 35,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 96,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 6,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 130,
     "outcome": "finished",
     "vias": 68,
     "peak_mb": 771,
     "time_exact_s": 130.1
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 11,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 22,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 504,
     "outcome": "finished"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 6,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 135,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 130,
     "shorts": 2,
     "fab_violations": 35,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 69,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 19,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 29,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 29.0
    }
   },
   "connections": 208,
   "image_files": {
    "zap": "compare/b04-trellis-zap.webp",
    "tracemaker": "compare/b04-trellis-tracemaker.webp",
    "tscircuit_60": "compare/b04-trellis-tscircuit.webp",
    "freerouting": "compare/b04-trellis-freerouting.webp",
    "human": "compare/b04-trellis-human.webp"
   }
  },
  {
   "id": "b05-bitaxe",
   "name": "Bitaxe Ultra (fork)",
   "author": "BastelPichi, fork of skot/bitaxe",
   "licence": "CERN-OHL-S-2.0",
   "source": "https://github.com/BastelPichi/bitaxe",
   "commit": "0c3e71fd54fc0edef4c19c06d2320ef5468adc6a",
   "licence_url": "https://github.com/BastelPichi/bitaxe/blob/0c3e71fd54fc0edef4c19c06d2320ef5468adc6a/LICENSE",
   "images": false,
   "image_note": "its licence (CERN-OHL-S) asks that modified designs be shared in full under the same licence, which we have not done",
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 112,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 8,
     "time_s": 420,
     "outcome": "finished",
     "vias": 190,
     "peak_mb": 1361,
     "time_exact_s": 419.6
    },
    "zap_prev": {
     "unconnected": 1,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 202,
     "vias_in_smd_pads": 94,
     "isolated_copper": 0,
     "hot_sections": 15,
     "time_s": 128,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 3,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 135,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 108,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 151,
     "peak_mb": 1718,
     "time_exact_s": 3601.3
    },
    "tracemaker_default": {
     "unconnected": 3,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 124,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 110,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 444,
     "shorts": 24,
     "fab_violations": 225,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 138,
     "time_s": 218,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 444,
     "shorts": 24,
     "fab_violations": 225,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 138,
     "time_s": 256,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 203,
     "peak_mb": 2500,
     "time_exact_s": 256.5
    },
    "tscircuit_v1": {
     "unconnected": 1,
     "rule_errors": 334,
     "shorts": 40,
     "fab_violations": 160,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 124,
     "time_s": 160,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 1,
     "rule_errors": 334,
     "shorts": 40,
     "fab_violations": 160,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 124,
     "time_s": 160,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 1,
     "rule_errors": 334,
     "shorts": 40,
     "fab_violations": 160,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 124,
     "time_s": 187,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 1,
     "rule_errors": 69,
     "shorts": 1,
     "fab_violations": 113,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 84,
     "time_s": 86,
     "outcome": "finished",
     "vias": 127,
     "peak_mb": 431,
     "time_exact_s": 86.1
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 135,
     "vias_in_smd_pads": 14,
     "isolated_copper": 0,
     "hot_sections": 24,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 3,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 135,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 108,
     "time_s": 600,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 1,
     "rule_errors": 69,
     "shorts": 1,
     "fab_violations": 113,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 84,
     "time_s": 71,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 444,
     "shorts": 24,
     "fab_violations": 225,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 138,
     "time_s": 218,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 112,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 8,
     "time_s": 472,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 112,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 8,
     "time_s": 427,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 427.3
    }
   },
   "connections": 333
  },
  {
   "id": "b06-loadcell",
   "name": "Ender-3 load-cell bed-levelling sensor",
   "author": "Lakshminarayanan",
   "licence": "MIT",
   "source": "https://github.com/jujojujo2003/Ender-3-3DPrinter-Load-Cell-Bed-Leveling-Sensor",
   "commit": "eae5c6f3e67d0b7f83a500bfb3d1aef38cb69b0b",
   "licence_url": "https://github.com/jujojujo2003/Ender-3-3DPrinter-Load-Cell-Bed-Leveling-Sensor/blob/eae5c6f3e67d0b7f83a500bfb3d1aef38cb69b0b/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 29,
     "outcome": "finished",
     "vias": 93,
     "peak_mb": 292,
     "time_exact_s": 28.6
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 61,
     "vias_in_smd_pads": 58,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 11,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 116,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 109,
     "outcome": "finished",
     "vias": 97,
     "peak_mb": 500,
     "time_exact_s": 109.0
    },
    "tracemaker_default": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 122,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 84,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 285,
     "shorts": 13,
     "fab_violations": 129,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 87,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 285,
     "shorts": 13,
     "fab_violations": 129,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 103,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 98,
     "peak_mb": 1074,
     "time_exact_s": 102.6
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 268,
     "shorts": 11,
     "fab_violations": 129,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 150,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 268,
     "shorts": 11,
     "fab_violations": 129,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 150,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 268,
     "shorts": 11,
     "fab_violations": 129,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 118,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 1,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 82,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 71,
     "outcome": "finished",
     "vias": 79,
     "peak_mb": 396,
     "time_exact_s": 71.0
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 75,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 116,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 111,
     "outcome": "finished"
    },
    "freerouting_v1": {
     "unconnected": 1,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 82,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 73,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 285,
     "shorts": 13,
     "fab_violations": 129,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 87,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 17,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 30,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 29.7
    }
   },
   "connections": 157,
   "image_files": {
    "zap": "compare/b06-loadcell-zap.webp",
    "tracemaker": "compare/b06-loadcell-tracemaker.webp",
    "tscircuit_60": "compare/b06-loadcell-tscircuit.webp",
    "freerouting": "compare/b06-loadcell-freerouting.webp",
    "human": "compare/b06-loadcell-human.webp"
   }
  },
  {
   "id": "b07-rp2040",
   "name": "RP2040 development board",
   "author": "acon",
   "licence": "MIT",
   "source": "https://github.com/acornitum/fucked-up-rp2040-devboard",
   "commit": "d94328619f4fcaef2f2d62aa42c62c789a463d56",
   "licence_url": "https://github.com/acornitum/fucked-up-rp2040-devboard/blob/d94328619f4fcaef2f2d62aa42c62c789a463d56/LICENSE",
   "images": false,
   "image_note": "shown as numbers only",
   "results": {
    "zap": {
     "unconnected": 1,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 199,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 184,
     "outcome": "finished",
     "vias": 97,
     "peak_mb": 335,
     "time_exact_s": 183.8
    },
    "zap_prev": {
     "unconnected": 8,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 236,
     "vias_in_smd_pads": 34,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 36,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 11,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 215,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 2174,
     "outcome": "finished",
     "vias": 110,
     "peak_mb": 427,
     "time_exact_s": 2173.7
    },
    "tracemaker_default": {
     "unconnected": 13,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 221,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 600,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 793,
     "shorts": 162,
     "fab_violations": 531,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 574,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 793,
     "shorts": 162,
     "fab_violations": 536,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 518,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 144,
     "peak_mb": 1274,
     "time_exact_s": 518.3
    },
    "tscircuit_v1": {
     "unconnected": 135,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 199,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 801,
     "shorts": 167,
     "fab_violations": 607,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 525,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 789,
     "shorts": 161,
     "fab_violations": 528,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 586,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 17,
     "rule_errors": 35,
     "shorts": 0,
     "fab_violations": 206,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 257,
     "outcome": "finished",
     "vias": 60,
     "peak_mb": 1167,
     "time_exact_s": 257.1
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 211,
     "vias_in_smd_pads": 2,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 13,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 216,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 17,
     "rule_errors": 35,
     "shorts": 0,
     "fab_violations": 206,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 242,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 793,
     "shorts": 162,
     "fab_violations": 531,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 574,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 1,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 199,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 201,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 1,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 199,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3600,
     "outcome": "stopped at limit",
     "attempts": 19,
     "kept_attempt": 13,
     "time_exact_s": 3600.1
    }
   },
   "connections": 139
  },
  {
   "id": "b08-discretesim",
   "name": "discretesim test board",
   "author": "cnlohr",
   "licence": "MIT",
   "source": "https://github.com/cnlohr/discretesim",
   "commit": "f7a169ee07b18b6c857d23582474b8ba20185436",
   "licence_url": "https://github.com/cnlohr/discretesim/blob/f7a169ee07b18b6c857d23582474b8ba20185436/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 40,
     "outcome": "finished",
     "vias": 187,
     "peak_mb": 365,
     "time_exact_s": 39.5
    },
    "zap_prev": {
     "unconnected": 3,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 164,
     "vias_in_smd_pads": 154,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 12,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 25,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 84,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3007,
     "outcome": "finished",
     "vias": 244,
     "peak_mb": 1785,
     "time_exact_s": 3007.0
    },
    "tracemaker_default": {
     "unconnected": 20,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 55,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 2,
     "rule_errors": 566,
     "shorts": 16,
     "fab_violations": 249,
     "vias_in_smd_pads": 18,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 170,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 2,
     "rule_errors": 566,
     "shorts": 16,
     "fab_violations": 248,
     "vias_in_smd_pads": 18,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 139,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 273,
     "peak_mb": 1841,
     "time_exact_s": 138.6
    },
    "tscircuit_v1": {
     "unconnected": 2,
     "rule_errors": 566,
     "shorts": 16,
     "fab_violations": 251,
     "vias_in_smd_pads": 18,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 163,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 2,
     "rule_errors": 566,
     "shorts": 16,
     "fab_violations": 251,
     "vias_in_smd_pads": 18,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 163,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 582,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 158,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error in its clean-up stage (only runs above effort 1)"
    },
    "freerouting": {
     "unconnected": 62,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 261,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 613,
     "outcome": "finished",
     "vias": 72,
     "peak_mb": 4142,
     "time_exact_s": 613.3
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 57,
     "vias_in_smd_pads": 14,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 28,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 63,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 62,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 261,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 609,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 2,
     "rule_errors": 566,
     "shorts": 16,
     "fab_violations": 249,
     "vias_in_smd_pads": 18,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 170,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 49,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 42,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 41.6
    }
   },
   "connections": 582,
   "image_files": {
    "zap": "compare/b08-discretesim-zap.webp",
    "tracemaker": "compare/b08-discretesim-tracemaker.webp",
    "tscircuit_60": "compare/b08-discretesim-tscircuit.webp",
    "freerouting": "compare/b08-discretesim-freerouting.webp",
    "human": "compare/b08-discretesim-human.webp"
   }
  },
  {
   "id": "b09-waterlevel",
   "name": "Arduino water-level monitor",
   "author": "Srushti D",
   "licence": "MIT",
   "source": "https://github.com/Srushti-D-Hebbar/arduino-water-level-monitor",
   "commit": "7b47f46949e99d8075590de0c5a08a550d646d84",
   "licence_url": "https://github.com/Srushti-D-Hebbar/arduino-water-level-monitor/blob/7b47f46949e99d8075590de0c5a08a550d646d84/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 5,
     "outcome": "finished",
     "vias": 21,
     "peak_mb": 480,
     "time_exact_s": 5.4
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 14,
     "vias_in_smd_pads": 14,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 2,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 11,
     "outcome": "finished",
     "vias": 14,
     "peak_mb": 678,
     "time_exact_s": 11.0
    },
    "tracemaker_default": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 9,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 6,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 8,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 25,
     "peak_mb": 400,
     "time_exact_s": 7.6
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 11,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 11,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 9,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 2,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 17,
     "outcome": "finished",
     "vias": 5,
     "peak_mb": 265,
     "time_exact_s": 17.0
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 2,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 15,
     "outcome": "finished"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 2,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 19,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 6,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 5,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 6,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 6.5
    }
   },
   "connections": 52,
   "image_files": {
    "zap": "compare/b09-waterlevel-zap.webp",
    "tracemaker": "compare/b09-waterlevel-tracemaker.webp",
    "tscircuit_60": "compare/b09-waterlevel-tscircuit.webp",
    "freerouting": "compare/b09-waterlevel-freerouting.webp",
    "human": "compare/b09-waterlevel-human.webp"
   }
  },
  {
   "id": "b10-ecp5-bga381",
   "name": "ECP5 BGA-381 FT2232HQ FIFO board",
   "author": "gildobjanschi",
   "licence": "MIT",
   "source": "https://github.com/gildobjanschi/ECP5_BGA381_FT2232HQ_FIFO_EXT",
   "commit": "81403f7487a9eded36c6500b8c8b6c12a6705f81",
   "licence_url": "https://github.com/gildobjanschi/ECP5_BGA381_FT2232HQ_FIFO_EXT/blob/81403f7487a9eded36c6500b8c8b6c12a6705f81/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 18,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 69,
     "outcome": "finished",
     "vias": 152,
     "peak_mb": 626,
     "time_exact_s": 69.4
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 94,
     "vias_in_smd_pads": 71,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 32,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 6,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 22,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3602,
     "outcome": "stopped at limit",
     "vias": 95,
     "peak_mb": 3761,
     "time_exact_s": 3602.2
    },
    "tracemaker_default": {
     "unconnected": 8,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 21,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 25,
     "rule_errors": 26,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 73,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 25,
     "rule_errors": 26,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 63,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 99,
     "peak_mb": 1089,
     "time_exact_s": 63.3
    },
    "tscircuit_v1": {
     "unconnected": 25,
     "rule_errors": 26,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 109,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 25,
     "rule_errors": 26,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 109,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 25,
     "rule_errors": 26,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 76,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 19,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 120,
     "outcome": "finished",
     "vias": 117,
     "peak_mb": 766,
     "time_exact_s": 120.1
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 18,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 8,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 21,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 19,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 110,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 25,
     "rule_errors": 26,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 73,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 18,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 74,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 18,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 71,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 70.8
    }
   },
   "connections": 144,
   "image_files": {
    "zap": "compare/b10-ecp5-bga381-zap.webp",
    "tracemaker": "compare/b10-ecp5-bga381-tracemaker.webp",
    "tscircuit_60": "compare/b10-ecp5-bga381-tscircuit.webp",
    "freerouting": "compare/b10-ecp5-bga381-freerouting.webp",
    "human": "compare/b10-ecp5-bga381-human.webp"
   }
  },
  {
   "id": "256foundation_emberone00-pcb",
   "name": "EmberOne",
   "author": "256 Foundation",
   "licence": "CERN-OHL-S-2.0",
   "source": "https://github.com/256foundation/emberone00-pcb",
   "commit": "b21b32ca49710b99cb75f86406b0df5190c9beb4",
   "licence_url": "https://github.com/256foundation/emberone00-pcb/blob/b21b32ca49710b99cb75f86406b0df5190c9beb4/LICENSE",
   "images": false,
   "image_note": "its licence (CERN-OHL-S) asks that modified designs be shared in full under the same licence, which we have not done",
   "results": {
    "zap": {
     "unconnected": 5,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 201,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 18,
     "time_s": 445,
     "outcome": "finished",
     "vias": 516,
     "peak_mb": 6379,
     "time_exact_s": 444.8
    },
    "zap_prev": {
     "unconnected": 8,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 499,
     "vias_in_smd_pads": 288,
     "isolated_copper": 0,
     "hot_sections": 33,
     "time_s": 353,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 18,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 237,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 89,
     "time_s": 3602,
     "outcome": "stopped at limit",
     "vias": 496,
     "peak_mb": 6747,
     "time_exact_s": 3602.3
    },
    "tracemaker_default": {
     "unconnected": 23,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 241,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 61,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 20,
     "rule_errors": 797,
     "shorts": 58,
     "fab_violations": 562,
     "vias_in_smd_pads": 13,
     "isolated_copper": 0,
     "hot_sections": 81,
     "time_s": 493,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 20,
     "rule_errors": 799,
     "shorts": 59,
     "fab_violations": 448,
     "vias_in_smd_pads": 13,
     "isolated_copper": 0,
     "hot_sections": 81,
     "time_s": 577,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 525,
     "peak_mb": 5387,
     "time_exact_s": 576.6
    },
    "tscircuit_v1": {
     "unconnected": 862,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 199,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 610,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60_v1": {
     "unconnected": 20,
     "rule_errors": 802,
     "shorts": 59,
     "fab_violations": 432,
     "vias_in_smd_pads": 13,
     "isolated_copper": 0,
     "hot_sections": 81,
     "time_s": 611,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_e10": {
     "unconnected": 862,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 199,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 619,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 218,
     "shorts": 0,
     "fab_violations": 214,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 95,
     "time_s": 2653,
     "outcome": "finished",
     "vias": 428,
     "peak_mb": 12330,
     "time_exact_s": 2653.0
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 425,
     "vias_in_smd_pads": 186,
     "isolated_copper": 0,
     "hot_sections": 184,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 28,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 243,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 70,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 14,
     "rule_errors": 223,
     "shorts": 0,
     "fab_violations": 216,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 95,
     "time_s": 613,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 20,
     "rule_errors": 797,
     "shorts": 58,
     "fab_violations": 562,
     "vias_in_smd_pads": 13,
     "isolated_copper": 0,
     "hot_sections": 81,
     "time_s": 493,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 5,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 201,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 18,
     "time_s": 492,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 5,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 201,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 18,
     "time_s": 3600,
     "outcome": "stopped at limit",
     "attempts": 5,
     "kept_attempt": 1,
     "time_exact_s": 3600.5
    }
   },
   "connections": 1125
  },
  {
   "id": "CNES_argos-demo-board",
   "name": "Argos demo board",
   "author": "CNES",
   "licence": "CERN-OHL-S-2.0",
   "source": "https://github.com/CNES/argos-demo-board",
   "commit": "1eccb3f20cb9004c046dba82b72bf85c500efcaa",
   "licence_url": "https://github.com/CNES/argos-demo-board/blob/1eccb3f20cb9004c046dba82b72bf85c500efcaa/LICENSE",
   "images": false,
   "image_note": "its licence (CERN-OHL-S) asks that modified designs be shared in full under the same licence, which we have not done",
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 3,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 24,
     "outcome": "finished",
     "vias": 115,
     "peak_mb": 1690,
     "time_exact_s": 23.6
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 107,
     "vias_in_smd_pads": 92,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 8,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 511,
     "outcome": "finished",
     "vias": 63,
     "peak_mb": 1945,
     "time_exact_s": 511.2
    },
    "tracemaker_default": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 11,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 61,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 115,
     "shorts": 18,
     "fab_violations": 53,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 85,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 114,
     "shorts": 18,
     "fab_violations": 53,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 104,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 111,
     "peak_mb": 1118,
     "time_exact_s": 103.9
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 115,
     "shorts": 18,
     "fab_violations": 53,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 170,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 115,
     "shorts": 18,
     "fab_violations": 53,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 170,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 115,
     "shorts": 18,
     "fab_violations": 53,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 115,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 104,
     "outcome": "finished",
     "vias": 58,
     "peak_mb": 560,
     "time_exact_s": 104.1
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 603,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 82,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 115,
     "shorts": 18,
     "fab_violations": 53,
     "vias_in_smd_pads": 4,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 85,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 3,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 19,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 3,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 29,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 29.4
    }
   },
   "connections": 234
  },
  {
   "id": "OLIMEX_RP2350-PICO2-BB48",
   "name": "RP2350-PICO2-BB48",
   "author": "Olimex Ltd",
   "licence": "MIT",
   "source": "https://github.com/OLIMEX/RP2350-PICO2-BB48",
   "commit": "74b030363ca03eea5bfa6dac59cbcd9e4277e910",
   "licence_url": "https://github.com/OLIMEX/RP2350-PICO2-BB48/blob/74b030363ca03eea5bfa6dac59cbcd9e4277e910/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 34,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 376,
     "outcome": "finished",
     "vias": 133,
     "peak_mb": 398,
     "time_exact_s": 375.8
    },
    "zap_prev": {
     "unconnected": 28,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 137,
     "vias_in_smd_pads": 56,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 431,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 30,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 98,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 154,
     "peak_mb": 1230,
     "time_exact_s": 3601.2
    },
    "tracemaker_default": {
     "unconnected": 33,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 104,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 240,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60": {
     "unconnected": 3,
     "rule_errors": 1028,
     "shorts": 215,
     "fab_violations": 1043,
     "vias_in_smd_pads": 17,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 941,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 281,
     "peak_mb": 2266,
     "time_exact_s": 941.0
    },
    "tscircuit_v1": {
     "unconnected": 240,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60_v1": {
     "unconnected": 3,
     "rule_errors": 1027,
     "shorts": 215,
     "fab_violations": 1049,
     "vias_in_smd_pads": 17,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1078,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_e10": {
     "unconnected": 240,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 605,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "freerouting": {
     "unconnected": 8,
     "rule_errors": 245,
     "shorts": 0,
     "fab_violations": 105,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 557,
     "outcome": "finished",
     "vias": 113,
     "peak_mb": 3701,
     "time_exact_s": 557.2
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 87,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 37,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 91,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 8,
     "rule_errors": 245,
     "shorts": 0,
     "fab_violations": 104,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 608,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 3,
     "rule_errors": 1029,
     "shorts": 216,
     "fab_violations": 1062,
     "vias_in_smd_pads": 17,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1122,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "zap_v1": {
     "unconnected": 34,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 441,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 28,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3600,
     "outcome": "stopped at limit",
     "attempts": 6,
     "kept_attempt": 3,
     "time_exact_s": 3600.3
    }
   },
   "connections": 269,
   "image_files": {
    "zap": "compare/olimex-rp2350-pico2-bb48-zap.webp",
    "tracemaker": "compare/olimex-rp2350-pico2-bb48-tracemaker.webp",
    "tscircuit_60": "compare/olimex-rp2350-pico2-bb48-tscircuit-60.webp",
    "freerouting": "compare/olimex-rp2350-pico2-bb48-freerouting.webp",
    "human": "compare/olimex-rp2350-pico2-bb48-human.webp"
   }
  },
  {
   "id": "antmicro_cvbs-mipi-bridge",
   "name": "Antmicro CVBS-to-MIPI bridge",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/cvbs-mipi-bridge",
   "commit": "7cbcec2bceaf6e1efd25cce1d73ff4989dfcfe02",
   "licence_url": "https://github.com/antmicro/cvbs-mipi-bridge/blob/7cbcec2bceaf6e1efd25cce1d73ff4989dfcfe02/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 26,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 109,
     "outcome": "finished",
     "vias": 116,
     "peak_mb": 1400,
     "time_exact_s": 108.6
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 89,
     "vias_in_smd_pads": 63,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 41,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 3,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 31,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 71,
     "peak_mb": 4760,
     "time_exact_s": 3601.2
    },
    "tracemaker_default": {
     "unconnected": 4,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 30,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 240,
     "shorts": 32,
     "fab_violations": 70,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 162,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 240,
     "shorts": 32,
     "fab_violations": 70,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 144,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 115,
     "peak_mb": 2074,
     "time_exact_s": 143.6
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 240,
     "shorts": 32,
     "fab_violations": 70,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 155,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 240,
     "shorts": 32,
     "fab_violations": 70,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 155,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 240,
     "shorts": 32,
     "fab_violations": 70,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 269,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 4,
     "rule_errors": 16,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 410,
     "outcome": "finished",
     "vias": 78,
     "peak_mb": 1804,
     "time_exact_s": 410.3
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 46,
     "vias_in_smd_pads": 9,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 3,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 31,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 603,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 4,
     "rule_errors": 16,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 317,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 240,
     "shorts": 32,
     "fab_violations": 70,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 162,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 26,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 89,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 26,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 111,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 111.3
    }
   },
   "connections": 211,
   "image_files": {
    "zap": "compare/antmicro-cvbs-mipi-bridge-zap.webp",
    "tracemaker": "compare/antmicro-cvbs-mipi-bridge-tracemaker.webp",
    "tscircuit_60": "compare/antmicro-cvbs-mipi-bridge-tscircuit.webp",
    "freerouting": "compare/antmicro-cvbs-mipi-bridge-freerouting.webp",
    "human": "compare/antmicro-cvbs-mipi-bridge-human.webp"
   }
  },
  {
   "id": "antmicro_dual-ipex-csi-interposer",
   "name": "Antmicro dual IPEX CSI interposer",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/dual-ipex-csi-interposer",
   "commit": "6b6bd0af5aafe13c02377d534a23a6373922f350",
   "licence_url": "https://github.com/antmicro/dual-ipex-csi-interposer/blob/6b6bd0af5aafe13c02377d534a23a6373922f350/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 33,
     "outcome": "finished",
     "vias": 96,
     "peak_mb": 400,
     "time_exact_s": 33.3
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 10,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 10,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 20,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 0,
     "rule_errors": 69,
     "shorts": 0,
     "fab_violations": 8,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 412,
     "outcome": "finished",
     "vias": 58,
     "peak_mb": 851,
     "time_exact_s": 412.1
    },
    "tracemaker_default": {
     "unconnected": 0,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 223,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 35,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 57,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 35,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 61,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 82,
     "peak_mb": 1372,
     "time_exact_s": 60.7
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 48,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 94,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 48,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 94,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 48,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 102,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 68,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 71,
     "outcome": "finished",
     "vias": 72,
     "peak_mb": 505,
     "time_exact_s": 71.0
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 0,
     "rule_errors": 69,
     "shorts": 0,
     "fab_violations": 8,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 419,
     "outcome": "finished"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 68,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 64,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 35,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 57,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 38,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 36,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 36.0
    }
   },
   "connections": 85,
   "image_files": {
    "zap": "compare/antmicro-dual-ipex-csi-interposer-zap.webp",
    "tracemaker": "compare/antmicro-dual-ipex-csi-interposer-tracemaker.webp",
    "tscircuit_60": "compare/antmicro-dual-ipex-csi-interposer-tscircuit.webp",
    "freerouting": "compare/antmicro-dual-ipex-csi-interposer-freerouting.webp",
    "human": "compare/antmicro-dual-ipex-csi-interposer-human.webp"
   }
  },
  {
   "id": "antmicro_gmsl-serializer",
   "name": "Antmicro GMSL serializer",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/gmsl-serializer",
   "commit": "58641df7b331050bbb4456cb4cb73e3975ae9de9",
   "licence_url": "https://github.com/antmicro/gmsl-serializer/blob/58641df7b331050bbb4456cb4cb73e3975ae9de9/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 4,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 131,
     "outcome": "finished",
     "vias": 142,
     "peak_mb": 706,
     "time_exact_s": 130.8
    },
    "zap_prev": {
     "unconnected": 4,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 78,
     "vias_in_smd_pads": 77,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 42,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 2,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 3,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3382,
     "outcome": "finished",
     "vias": 98,
     "peak_mb": 1348,
     "time_exact_s": 3382.1
    },
    "tracemaker_default": {
     "unconnected": 6,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 600,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 252,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 28,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit limit: a fixed step limit inside one solver stage, the same at every effort level"
    },
    "tscircuit_60": {
     "unconnected": 252,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 24,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit limit: a fixed step limit inside one solver stage (it ran out of iterations)",
     "vias": 0,
     "peak_mb": 1133,
     "time_exact_s": 23.7
    },
    "tscircuit_v1": {
     "unconnected": 252,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 42,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit limit: a fixed step limit inside one solver stage, the same at every effort level"
    },
    "tscircuit_60_v1": {
     "unconnected": 252,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 42,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit limit: a fixed step limit inside one solver stage, the same at every effort level",
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 252,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 24,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit limit: a fixed step limit inside one solver stage, the same at every effort level"
    },
    "freerouting": {
     "unconnected": 20,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 2,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 547,
     "outcome": "finished",
     "vias": 71,
     "peak_mb": 1132,
     "time_exact_s": 547.3
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 37,
     "vias_in_smd_pads": 17,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 2,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 3,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 600,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 20,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 2,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 537,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 252,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 28,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit limit: a fixed step limit inside one solver stage, the same at every effort level",
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 4,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 125,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 1,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 2,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3601,
     "outcome": "finished",
     "attempts": 24,
     "kept_attempt": 14,
     "time_exact_s": 3600.9
    }
   },
   "connections": 256,
   "image_files": {
    "zap": "compare/antmicro-gmsl-serializer-zap.webp",
    "tracemaker": "compare/antmicro-gmsl-serializer-tracemaker.webp",
    "tscircuit_60": "compare/antmicro-gmsl-serializer-tscircuit.webp",
    "freerouting": "compare/antmicro-gmsl-serializer-freerouting.webp",
    "human": "compare/antmicro-gmsl-serializer-human.webp"
   }
  },
  {
   "id": "antmicro_pmod-i3c-sensor-board",
   "name": "Antmicro PMOD I3C sensor board",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/pmod-i3c-sensor-board",
   "commit": "5ee5d34ff918422fe7af59f7ffdc9d4bdabf18a7",
   "licence_url": "https://github.com/antmicro/pmod-i3c-sensor-board/blob/5ee5d34ff918422fe7af59f7ffdc9d4bdabf18a7/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 10,
     "outcome": "finished",
     "vias": 71,
     "peak_mb": 138,
     "time_exact_s": 10.3
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 54,
     "vias_in_smd_pads": 48,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 19,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 324,
     "outcome": "finished",
     "vias": 95,
     "peak_mb": 663,
     "time_exact_s": 324.1
    },
    "tracemaker_default": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 199,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 5,
     "rule_errors": 232,
     "shorts": 38,
     "fab_violations": 58,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 40,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 5,
     "rule_errors": 232,
     "shorts": 38,
     "fab_violations": 58,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 42,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 82,
     "peak_mb": 1046,
     "time_exact_s": 42.5
    },
    "tscircuit_v1": {
     "unconnected": 6,
     "rule_errors": 126,
     "shorts": 9,
     "fab_violations": 44,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 89,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 6,
     "rule_errors": 126,
     "shorts": 9,
     "fab_violations": 44,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 89,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 6,
     "rule_errors": 126,
     "shorts": 9,
     "fab_violations": 44,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 63,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 1,
     "rule_errors": 86,
     "shorts": 2,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 414,
     "outcome": "finished",
     "vias": 46,
     "peak_mb": 2371,
     "time_exact_s": 414.2
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 104,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 19,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 547,
     "outcome": "finished"
    },
    "freerouting_v1": {
     "unconnected": 1,
     "rule_errors": 86,
     "shorts": 1,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 442,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 5,
     "rule_errors": 232,
     "shorts": 38,
     "fab_violations": 58,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 40,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 4,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 12,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 11.6
    }
   },
   "connections": 185,
   "image_files": {
    "zap": "compare/antmicro-pmod-i3c-sensor-board-zap.webp",
    "tracemaker": "compare/antmicro-pmod-i3c-sensor-board-tracemaker.webp",
    "tscircuit_60": "compare/antmicro-pmod-i3c-sensor-board-tscircuit.webp",
    "freerouting": "compare/antmicro-pmod-i3c-sensor-board-freerouting.webp",
    "human": "compare/antmicro-pmod-i3c-sensor-board-human.webp"
   }
  },
  {
   "id": "antmicro_signal-integrity-test-board",
   "name": "Antmicro signal-integrity test board",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/signal-integrity-test-board",
   "commit": "de0b5922c372481bb146cbd1d0a9f3b7e97c124a",
   "licence_url": "https://github.com/antmicro/signal-integrity-test-board/blob/de0b5922c372481bb146cbd1d0a9f3b7e97c124a/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 62,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 88,
     "outcome": "finished",
     "vias": 65,
     "peak_mb": 673,
     "time_exact_s": 88.0
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 126,
     "vias_in_smd_pads": 65,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 5,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 5,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 60,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 319,
     "outcome": "finished",
     "vias": 80,
     "peak_mb": 3262,
     "time_exact_s": 319.1
    },
    "tracemaker_default": {
     "unconnected": 5,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 60,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 305,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 36,
     "rule_errors": 20,
     "shorts": 17,
     "fab_violations": 104,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 26,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 36,
     "rule_errors": 20,
     "shorts": 17,
     "fab_violations": 104,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 34,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 22,
     "peak_mb": 800,
     "time_exact_s": 33.8
    },
    "tscircuit_v1": {
     "unconnected": 36,
     "rule_errors": 20,
     "shorts": 17,
     "fab_violations": 104,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 49,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 36,
     "rule_errors": 20,
     "shorts": 17,
     "fab_violations": 104,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 49,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 36,
     "rule_errors": 20,
     "shorts": 17,
     "fab_violations": 104,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 33,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 107,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 529,
     "outcome": "finished",
     "vias": 28,
     "peak_mb": 6093,
     "time_exact_s": 529.3
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 3,
     "shorts": 0,
     "fab_violations": 242,
     "vias_in_smd_pads": 138,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 5,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 60,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 520,
     "outcome": "finished"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 107,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 585,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 36,
     "rule_errors": 20,
     "shorts": 17,
     "fab_violations": 104,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 26,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 62,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 7,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 62,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 89,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 88.9
    }
   },
   "connections": 107,
   "image_files": {
    "zap": "compare/antmicro-signal-integrity-test-board-zap.webp",
    "tracemaker": "compare/antmicro-signal-integrity-test-board-tracemaker.webp",
    "tscircuit_60": "compare/antmicro-signal-integrity-test-board-tscircuit.webp",
    "freerouting": "compare/antmicro-signal-integrity-test-board-freerouting.webp",
    "human": "compare/antmicro-signal-integrity-test-board-human.webp"
   }
  },
  {
   "id": "antmicro_stm32h7-hdmi-board-sodimm",
   "name": "Antmicro STM32H7 HDMI SO-DIMM board",
   "author": "Antmicro",
   "licence": "Apache-2.0",
   "source": "https://github.com/antmicro/stm32h7-hdmi-board-sodimm",
   "commit": "27e3ac9968983f236155c288ded30beb1a2d24a1",
   "licence_url": "https://github.com/antmicro/stm32h7-hdmi-board-sodimm/blob/27e3ac9968983f236155c288ded30beb1a2d24a1/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 219,
     "outcome": "finished",
     "vias": 407,
     "peak_mb": 1684,
     "time_exact_s": 218.7
    },
    "zap_prev": {
     "unconnected": 2,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 85,
     "vias_in_smd_pads": 77,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 228,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 36,
     "rule_errors": 203,
     "shorts": 0,
     "fab_violations": 89,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 472,
     "peak_mb": 2286,
     "time_exact_s": 3601.1
    },
    "tracemaker_default": {
     "unconnected": 85,
     "rule_errors": 203,
     "shorts": 0,
     "fab_violations": 32,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 600,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 71,
     "rule_errors": 1122,
     "shorts": 201,
     "fab_violations": 399,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 574,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 71,
     "rule_errors": 1122,
     "shorts": 201,
     "fab_violations": 395,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 470,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 382,
     "peak_mb": 1692,
     "time_exact_s": 469.9
    },
    "tscircuit_v1": {
     "unconnected": 71,
     "rule_errors": 1122,
     "shorts": 201,
     "fab_violations": 401,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 580,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 71,
     "rule_errors": 1122,
     "shorts": 201,
     "fab_violations": 401,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 580,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 567,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 562,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error in its clean-up stage (only runs above effort 1)"
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 240,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3621,
     "outcome": "stopped at limit",
     "vias": 284,
     "peak_mb": 12371,
     "time_exact_s": 3620.6
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 70,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 87,
     "rule_errors": 203,
     "shorts": 0,
     "fab_violations": 39,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 603,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 55,
     "rule_errors": 219,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 618,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 71,
     "rule_errors": 1122,
     "shorts": 201,
     "fab_violations": 399,
     "vias_in_smd_pads": 7,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 574,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 0,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 242,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 228,
     "outcome": "finished",
     "attempts": 1,
     "kept_attempt": 1,
     "time_exact_s": 227.6
    }
   },
   "connections": 567,
   "image_files": {
    "zap": "compare/antmicro-stm32h7-hdmi-board-sodimm-zap.webp",
    "tracemaker": "compare/antmicro-stm32h7-hdmi-board-sodimm-tracemaker.webp",
    "tscircuit_60": "compare/antmicro-stm32h7-hdmi-board-sodimm-tscircuit.webp",
    "freerouting": "compare/antmicro-stm32h7-hdmi-board-sodimm-freerouting.webp",
    "human": "compare/antmicro-stm32h7-hdmi-board-sodimm-human.webp"
   }
  },
  {
   "id": "apfaudio_tiliqua-hardware",
   "name": "Tiliqua (apfaudio)",
   "author": "Sebastian Holzapfel",
   "licence": "CERN-OHL-S-2.0",
   "source": "https://github.com/apfaudio/tiliqua-hardware",
   "commit": "4ee5878ae821a6b7096f6aed6795dc1349475cb5",
   "licence_url": "https://github.com/apfaudio/tiliqua-hardware/blob/4ee5878ae821a6b7096f6aed6795dc1349475cb5/LICENSE",
   "images": false,
   "image_note": "its licence (CERN-OHL-S) asks that modified designs be shared in full under the same licence, which we have not done",
   "results": {
    "zap": {
     "unconnected": 2,
     "rule_errors": 17,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 533,
     "outcome": "finished",
     "vias": 425,
     "peak_mb": 1930,
     "time_exact_s": 532.8
    },
    "zap_prev": {
     "unconnected": 2,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 213,
     "vias_in_smd_pads": 119,
     "isolated_copper": 23,
     "hot_sections": 0,
     "time_s": 237,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 42,
     "rule_errors": 16,
     "shorts": 0,
     "fab_violations": 77,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 208,
     "peak_mb": 5347,
     "time_exact_s": 3601.2
    },
    "tracemaker_default": {
     "unconnected": 76,
     "rule_errors": 15,
     "shorts": 0,
     "fab_violations": 65,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 510,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60": {
     "unconnected": 510,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1444,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error after 1442 s: repair04 merge rejected a new via in the boundary collar",
     "vias": 0,
     "peak_mb": 5618,
     "time_exact_s": 1443.6
    },
    "tscircuit_v1": {
     "unconnected": 510,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60_v1": {
     "unconnected": 510,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1522,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error after 1520 s: repair04 merge rejected a new via in the boundary collar"
    },
    "tscircuit_e10": {
     "unconnected": 510,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 610,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 242,
     "shorts": 0,
     "fab_violations": 263,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1727,
     "outcome": "finished",
     "vias": 219,
     "peak_mb": 7476,
     "time_exact_s": 1726.7
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 72,
     "vias_in_smd_pads": 8,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 60,
     "rule_errors": 15,
     "shorts": 0,
     "fab_violations": 75,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 251,
     "shorts": 0,
     "fab_violations": 271,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 610,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 510,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1613,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error after 1612 s: repair04 merge rejected a new via in the boundary collar"
    },
    "zap_v1": {
     "unconnected": 2,
     "rule_errors": 17,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 599,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 0,
     "rule_errors": 17,
     "shorts": 0,
     "fab_violations": 53,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1455,
     "outcome": "finished",
     "attempts": 2,
     "kept_attempt": 2,
     "time_exact_s": 1455.3
    }
   },
   "cite_only": true,
   "connections": 531
  },
  {
   "id": "buildbotics_bbctrl-pcb-new",
   "name": "Buildbotics controller",
   "author": "Buildbotics LLC",
   "licence": "CERN-OHL-S-2.0",
   "source": "https://github.com/buildbotics/bbctrl-pcb-new",
   "commit": "1a2f36ddc4797ac05e45405fb5664ff1f7ca7974",
   "licence_url": "https://github.com/buildbotics/bbctrl-pcb-new/blob/1a2f36ddc4797ac05e45405fb5664ff1f7ca7974/LICENSE",
   "images": false,
   "image_note": "its licence (CERN-OHL-S) asks that modified designs be shared in full under the same licence, which we have not done",
   "results": {
    "zap": {
     "unconnected": 7,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 156,
     "time_s": 515,
     "outcome": "finished",
     "vias": 527,
     "peak_mb": 5648,
     "time_exact_s": 515.0
    },
    "zap_prev": {
     "unconnected": 7,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 391,
     "vias_in_smd_pads": 206,
     "isolated_copper": 0,
     "hot_sections": 154,
     "time_s": 495,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 46,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 153,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 282,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 302,
     "peak_mb": 4843,
     "time_exact_s": 3601.3
    },
    "tracemaker_default": {
     "unconnected": 76,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 131,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 263,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 785,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 694,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60": {
     "unconnected": 1,
     "rule_errors": 899,
     "shorts": 217,
     "fab_violations": 796,
     "vias_in_smd_pads": 10,
     "isolated_copper": 0,
     "hot_sections": 373,
     "time_s": 1383,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 649,
     "peak_mb": 4007,
     "time_exact_s": 1383.3
    },
    "tscircuit_v1": {
     "unconnected": 785,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1432,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60_v1": {
     "unconnected": 1,
     "rule_errors": 936,
     "shorts": 210,
     "fab_violations": 848,
     "vias_in_smd_pads": 10,
     "isolated_copper": 0,
     "hot_sections": 353,
     "time_s": 1570,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_e10": {
     "unconnected": 785,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1050,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "freerouting": {
     "unconnected": 26,
     "rule_errors": 203,
     "shorts": 0,
     "fab_violations": 127,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 368,
     "time_s": 3618,
     "outcome": "stopped at limit",
     "vias": 348,
     "peak_mb": 12116,
     "time_exact_s": 3618.4
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 5,
     "shorts": 0,
     "fab_violations": 15,
     "vias_in_smd_pads": 6,
     "isolated_copper": 0,
     "hot_sections": 283,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 78,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 132,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 271,
     "time_s": 603,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 163,
     "rule_errors": 203,
     "shorts": 0,
     "fab_violations": 106,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 172,
     "time_s": 612,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 1,
     "rule_errors": 903,
     "shorts": 222,
     "fab_violations": 937,
     "vias_in_smd_pads": 10,
     "isolated_copper": 0,
     "hot_sections": 373,
     "time_s": 1673,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "zap_v1": {
     "unconnected": 7,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 156,
     "time_s": 570,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 7,
     "rule_errors": 4,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 156,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "attempts": 4,
     "kept_attempt": 1,
     "time_exact_s": 3601.0
    }
   },
   "connections": 890
  },
  {
   "id": "greatscottgadgets_hackrf-pro",
   "name": "HackRF Pro",
   "author": "Great Scott Gadgets",
   "licence": "CERN-OHL-P-2.0",
   "source": "https://github.com/greatscottgadgets/hackrf-pro",
   "commit": "359b98f2451395408bc25dae64efa9fc518e93d0",
   "licence_url": "https://github.com/greatscottgadgets/hackrf-pro/blob/359b98f2451395408bc25dae64efa9fc518e93d0/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 11,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 223,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 642,
     "outcome": "finished",
     "vias": 968,
     "peak_mb": 6507,
     "time_exact_s": 641.9
    },
    "zap_prev": {
     "unconnected": 3,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 915,
     "vias_in_smd_pads": 501,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 634,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 130,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 277,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 1,
     "time_s": 3602,
     "outcome": "stopped at limit",
     "vias": 529,
     "peak_mb": 12954,
     "time_exact_s": 3602.2
    },
    "tracemaker_default": {
     "unconnected": 225,
     "rule_errors": 10,
     "shorts": 0,
     "fab_violations": 255,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 1,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 1364,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 202,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 38,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board"
    },
    "tscircuit_60": {
     "unconnected": 1364,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 202,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 33,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board",
     "vias": 0,
     "peak_mb": 1074,
     "time_exact_s": 32.8
    },
    "tscircuit_v1": {
     "unconnected": 1364,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 202,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 57,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board"
    },
    "tscircuit_60_v1": {
     "unconnected": 1364,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 202,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 57,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board",
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 1364,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 202,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 34,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board"
    },
    "freerouting": {
     "unconnected": 80,
     "rule_errors": 210,
     "shorts": 0,
     "fab_violations": 283,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 11,
     "time_s": 3626,
     "outcome": "stopped at limit",
     "vias": 488,
     "peak_mb": 12257,
     "time_exact_s": 3626.3
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 467,
     "vias_in_smd_pads": 62,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 224,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 262,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 1,
     "time_s": 604,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 452,
     "rule_errors": 208,
     "shorts": 0,
     "fab_violations": 261,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 3,
     "time_s": 616,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 1364,
     "rule_errors": 8,
     "shorts": 0,
     "fab_violations": 202,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 38,
     "outcome": "failed",
     "no_output": true,
     "why": "tscircuit error: its pre-check reported a connection as impossible, but the designers' own route for it fits the converted board",
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 11,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 223,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 751,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 4,
     "rule_errors": 9,
     "shorts": 0,
     "fab_violations": 235,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3655,
     "outcome": "stopped at limit",
     "attempts": 4,
     "kept_attempt": 2,
     "time_exact_s": 3654.7
    }
   },
   "connections": 1677,
   "image_files": {
    "zap": "compare/greatscottgadgets-hackrf-pro-zap.webp",
    "tracemaker": "compare/greatscottgadgets-hackrf-pro-tracemaker.webp",
    "tscircuit_60": "compare/greatscottgadgets-hackrf-pro-tscircuit.webp",
    "freerouting": "compare/greatscottgadgets-hackrf-pro-freerouting.webp",
    "human": "compare/greatscottgadgets-hackrf-pro-human.webp"
   }
  },
  {
   "id": "id8-engineering_seven-hardware",
   "name": "Seven",
   "author": "ID8 Engineering AB",
   "licence": "CERN-OHL-P-2.0",
   "source": "https://github.com/id8-engineering/seven-hardware",
   "commit": "7c69a1482ffd1dddc206294a55602477c55e17d8",
   "licence_url": "https://github.com/id8-engineering/seven-hardware/blob/7c69a1482ffd1dddc206294a55602477c55e17d8/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 2,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 21,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 402,
     "outcome": "finished",
     "vias": 209,
     "peak_mb": 1322,
     "time_exact_s": 401.5
    },
    "zap_prev": {
     "unconnected": 2,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 108,
     "vias_in_smd_pads": 85,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 464,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 14,
     "rule_errors": 2,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3603,
     "outcome": "stopped at limit",
     "vias": 145,
     "peak_mb": 2538,
     "time_exact_s": 3603.2
    },
    "tracemaker_default": {
     "unconnected": 23,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 36,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 540,
     "shorts": 25,
     "fab_violations": 92,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 142,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 0,
     "rule_errors": 540,
     "shorts": 25,
     "fab_violations": 92,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 130,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 214,
     "peak_mb": 1713,
     "time_exact_s": 129.7
    },
    "tscircuit_v1": {
     "unconnected": 0,
     "rule_errors": 610,
     "shorts": 67,
     "fab_violations": 147,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 196,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 0,
     "rule_errors": 610,
     "shorts": 67,
     "fab_violations": 147,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 196,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 0,
     "rule_errors": 612,
     "shorts": 68,
     "fab_violations": 148,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 164,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 18,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 692,
     "outcome": "finished",
     "vias": 126,
     "peak_mb": 4262,
     "time_exact_s": 692.3
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 28,
     "vias_in_smd_pads": 5,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 21,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 39,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 18,
     "rule_errors": 7,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 607,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 0,
     "rule_errors": 540,
     "shorts": 25,
     "fab_violations": 92,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 142,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 2,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 21,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 455,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 2,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 21,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 3600,
     "outcome": "stopped at limit",
     "attempts": 6,
     "kept_attempt": 5,
     "time_exact_s": 3600.3
    }
   },
   "connections": 240,
   "image_files": {
    "zap": "compare/id8-engineering-seven-hardware-zap.webp",
    "tracemaker": "compare/id8-engineering-seven-hardware-tracemaker.webp",
    "tscircuit_60": "compare/id8-engineering-seven-hardware-tscircuit.webp",
    "freerouting": "compare/id8-engineering-seven-hardware-freerouting.webp",
    "human": "compare/id8-engineering-seven-hardware-human.webp"
   }
  },
  {
   "id": "piotr-binkowski_kintex-pcie-board",
   "name": "Kintex PCIe board",
   "author": "Piotr Binkowski",
   "licence": "Apache-2.0",
   "source": "https://github.com/piotr-binkowski/kintex-pcie-board",
   "commit": "056792c009a8920d4ef11e76ba3284ee58376078",
   "licence_url": "https://github.com/piotr-binkowski/kintex-pcie-board/blob/056792c009a8920d4ef11e76ba3284ee58376078/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 6,
     "rule_errors": 30,
     "shorts": 0,
     "fab_violations": 6,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 3,
     "time_s": 567,
     "outcome": "finished",
     "vias": 863,
     "peak_mb": 4507,
     "time_exact_s": 566.7
    },
    "zap_prev": {
     "unconnected": 7,
     "rule_errors": 30,
     "shorts": 0,
     "fab_violations": 534,
     "vias_in_smd_pads": 326,
     "isolated_copper": 0,
     "hot_sections": 4,
     "time_s": 348,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 57,
     "rule_errors": 55,
     "shorts": 0,
     "fab_violations": 25,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 19,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 351,
     "peak_mb": 10273,
     "time_exact_s": 3601.1
    },
    "tracemaker_default": {
     "unconnected": 99,
     "rule_errors": 29,
     "shorts": 0,
     "fab_violations": 18,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 706,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 612,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60": {
     "unconnected": 706,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 4501,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "killed at the 75-minute backstop, past its 60-minute time limit, while still inside one solver step; no routing written",
     "vias": 0,
     "peak_mb": null,
     "time_exact_s": 4500.7
    },
    "tscircuit_v1": {
     "unconnected": 706,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 629,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_60_v1": {
     "unconnected": 706,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 4501,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "tscircuit_e10": {
     "unconnected": 706,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 602,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 263,
     "shorts": 1,
     "fab_violations": 159,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 19,
     "time_s": 3618,
     "outcome": "stopped at limit",
     "vias": 354,
     "peak_mb": 12282,
     "time_exact_s": 3617.6
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 491,
     "vias_in_smd_pads": 431,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 68,
     "rule_errors": 49,
     "shorts": 0,
     "fab_violations": 26,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 19,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 258,
     "shorts": 1,
     "fab_violations": 145,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 19,
     "time_s": 615,
     "outcome": "stopped at limit"
    },
    "tscircuit_60_v2": {
     "unconnected": 706,
     "rule_errors": 18,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 4501,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": "stopped at the time limit before it had written any routing"
    },
    "zap_v1": {
     "unconnected": 6,
     "rule_errors": 30,
     "shorts": 0,
     "fab_violations": 6,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 3,
     "time_s": 720,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 6,
     "rule_errors": 27,
     "shorts": 0,
     "fab_violations": 5,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 6,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "attempts": 6,
     "kept_attempt": 5,
     "time_exact_s": 3601.0
    }
   },
   "connections": 706,
   "image_files": {
    "zap": "compare/piotr-binkowski-kintex-pcie-board-zap.webp",
    "tracemaker": "compare/piotr-binkowski-kintex-pcie-board-tracemaker.webp",
    "tscircuit_60": "compare/piotr-binkowski-kintex-pcie-board-tscircuit-60.webp",
    "freerouting": "compare/piotr-binkowski-kintex-pcie-board-freerouting.webp",
    "human": "compare/piotr-binkowski-kintex-pcie-board-human.webp"
   }
  },
  {
   "id": "rapidanalysis_xerxes",
   "name": "Xerxes",
   "author": "Rapid Analysis",
   "licence": "Apache-2.0",
   "source": "https://github.com/rapidanalysis/xerxes",
   "commit": "43abf5730d092358bc6d10e9faa7233818b5412e",
   "licence_url": "https://github.com/rapidanalysis/xerxes/blob/43abf5730d092358bc6d10e9faa7233818b5412e/LICENSE",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 11,
     "rule_errors": 15,
     "shorts": 0,
     "fab_violations": 17,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 41,
     "time_s": 518,
     "outcome": "finished",
     "vias": 522,
     "peak_mb": 2138,
     "time_exact_s": 517.6
    },
    "zap_prev": {
     "unconnected": 19,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 312,
     "vias_in_smd_pads": 112,
     "isolated_copper": 0,
     "hot_sections": 34,
     "time_s": 529,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 27,
     "rule_errors": 13,
     "shorts": 0,
     "fab_violations": 52,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 48,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "vias": 127,
     "peak_mb": 7448,
     "time_exact_s": 3601.2
    },
    "tracemaker_default": {
     "unconnected": 36,
     "rule_errors": 19,
     "shorts": 0,
     "fab_violations": 46,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 16,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 25,
     "rule_errors": 481,
     "shorts": 18,
     "fab_violations": 289,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 76,
     "time_s": 223,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60": {
     "unconnected": 25,
     "rule_errors": 481,
     "shorts": 18,
     "fab_violations": 289,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 76,
     "time_s": 234,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "vias": 198,
     "peak_mb": 1808,
     "time_exact_s": 233.8
    },
    "tscircuit_v1": {
     "unconnected": 25,
     "rule_errors": 336,
     "shorts": 5,
     "fab_violations": 301,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 73,
     "time_s": 472,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "tscircuit_60_v1": {
     "unconnected": 25,
     "rule_errors": 336,
     "shorts": 5,
     "fab_violations": 301,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 73,
     "time_s": 472,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "tscircuit_e10": {
     "unconnected": 25,
     "rule_errors": 336,
     "shorts": 5,
     "fab_violations": 301,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 73,
     "time_s": 387,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "freerouting": {
     "unconnected": 0,
     "rule_errors": 237,
     "shorts": 0,
     "fab_violations": 208,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 45,
     "time_s": 172,
     "outcome": "finished",
     "vias": 169,
     "peak_mb": 1245,
     "time_exact_s": 172.1
    },
    "human": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 213,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 9,
     "time_s": null,
     "outcome": "reference"
    },
    "tracemaker_v1": {
     "unconnected": 29,
     "rule_errors": 14,
     "shorts": 0,
     "fab_violations": 58,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 48,
     "time_s": 602,
     "outcome": "stopped at limit"
    },
    "freerouting_v1": {
     "unconnected": 0,
     "rule_errors": 237,
     "shorts": 0,
     "fab_violations": 208,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 45,
     "time_s": 177,
     "outcome": "finished"
    },
    "tscircuit_60_v2": {
     "unconnected": 25,
     "rule_errors": 481,
     "shorts": 18,
     "fab_violations": 289,
     "vias_in_smd_pads": 1,
     "isolated_copper": 0,
     "hot_sections": 76,
     "time_s": 223,
     "outcome": "finished",
     "no_output": false,
     "why": null,
     "same_as_600s": true
    },
    "zap_v1": {
     "unconnected": 11,
     "rule_errors": 15,
     "shorts": 0,
     "fab_violations": 16,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 41,
     "time_s": 646,
     "outcome": "finished"
    },
    "zap_60": {
     "unconnected": 9,
     "rule_errors": 17,
     "shorts": 0,
     "fab_violations": 33,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 41,
     "time_s": 3601,
     "outcome": "stopped at limit",
     "attempts": 4,
     "kept_attempt": 3,
     "time_exact_s": 3600.9
    }
   },
   "connections": 314,
   "image_files": {
    "zap": "compare/rapidanalysis-xerxes-zap.webp",
    "tracemaker": "compare/rapidanalysis-xerxes-tracemaker.webp",
    "tscircuit_60": "compare/rapidanalysis-xerxes-tscircuit.webp",
    "freerouting": "compare/rapidanalysis-xerxes-freerouting.webp",
    "human": "compare/rapidanalysis-xerxes-human.webp"
   }
  }
 ],
 "own_boards": [
  {
   "id": "tm_kicad-pic_programmer",
   "name": "KiCad demo: PIC programmer",
   "author": "KiCad project demo authors",
   "licence": "CC-BY-SA-4.0",
   "source": "https://gitlab.com/kicad/code/kicad/-/tree/7a7d0267a0bcf7cff2e3d7c6a030b602f4c88a8f/demos/pic_programmer",
   "commit": "7a7d0267a0bcf7cff2e3d7c6a030b602f4c88a8f",
   "licence_url": "https://gitlab.com/kicad/code/kicad/-/blob/7a7d0267a0bcf7cff2e3d7c6a030b602f4c88a8f/LICENSE.README",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 0,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 8,
     "time_s": 21,
     "outcome": "finished"
    },
    "zap_prev": {
     "unconnected": 2,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 7,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 8,
     "time_s": 8,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 4,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 1,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 8,
     "time_s": 108,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 72,
     "shorts": 20,
     "fab_violations": 56,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 14,
     "time_s": 19,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "published": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 4,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 9,
     "time_s": null,
     "outcome": "reference"
    }
   },
   "connections": null,
   "side": "TraceMaker side (stand-in): a human-routed KiCad demo from TraceMaker's own test set",
   "rules": "board's own project",
   "published": "human-routed",
   "image_files": {
    "zap": "compare/tm-kicad-pic-programmer-zap.webp",
    "tracemaker": "compare/tm-kicad-pic-programmer-tracemaker.webp"
   }
  },
  {
   "id": "tm_kicad-video",
   "name": "KiCad demo: video",
   "author": "KiCad project demo authors",
   "licence": "CC-BY-SA-4.0",
   "source": "https://gitlab.com/kicad/code/kicad/-/tree/7a7d0267a0bcf7cff2e3d7c6a030b602f4c88a8f/demos/video",
   "commit": "7a7d0267a0bcf7cff2e3d7c6a030b602f4c88a8f",
   "licence_url": "https://gitlab.com/kicad/code/kicad/-/blob/7a7d0267a0bcf7cff2e3d7c6a030b602f4c88a8f/LICENSE.README",
   "images": true,
   "image_note": null,
   "results": {
    "zap": {
     "unconnected": 231,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 13,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 2,
     "time_s": 699,
     "outcome": "finished"
    },
    "zap_prev": {
     "unconnected": 257,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 154,
     "vias_in_smd_pads": 138,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 495,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 248,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 104,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 20,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 1458,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 12,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 603,
     "outcome": "stopped at limit",
     "no_output": true,
     "why": null
    },
    "published": {
     "unconnected": 0,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 49,
     "vias_in_smd_pads": 23,
     "isolated_copper": 0,
     "hot_sections": 18,
     "time_s": null,
     "outcome": "reference"
    }
   },
   "connections": null,
   "side": "TraceMaker side (stand-in): a human-routed KiCad demo from TraceMaker's own test set",
   "rules": "board's own project",
   "published": "human-routed",
   "image_files": {
    "zap": "compare/tm-kicad-video-zap.webp",
    "tracemaker": "compare/tm-kicad-video-tracemaker.webp"
   }
  },
  {
   "id": "tm_plane_smd",
   "name": "TraceMaker test board (plane + SMD)",
   "author": "The TraceMaker authors",
   "licence": "GPL-3.0-or-later",
   "source": "https://github.com/DingoOz/TraceMaker/tree/c6fcb7b4912bdabefeb7f4191c011b1a086335e0/tests/boards/plane_smd",
   "commit": "c6fcb7b4912bdabefeb7f4191c011b1a086335e0",
   "licence_url": "https://github.com/DingoOz/TraceMaker/blob/c6fcb7b4912bdabefeb7f4191c011b1a086335e0/LICENSE",
   "images": false,
   "image_note": "its licence (GPL-3.0) asks that modified files be shared under the same licence, which we have not done",
   "results": {
    "zap": {
     "unconnected": 1,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 24,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1,
     "outcome": "finished"
    },
    "zap_prev": {
     "unconnected": 1,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 48,
     "vias_in_smd_pads": 20,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 1,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 1,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 30,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 267,
     "outcome": "finished"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 262,
     "shorts": 49,
     "fab_violations": 235,
     "vias_in_smd_pads": 6,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 231,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "published": {
     "unconnected": 47,
     "rule_errors": 0,
     "shorts": 0,
     "fab_violations": 24,
     "vias_in_smd_pads": 0,
     "isolated_copper": 2,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    }
   },
   "connections": null,
   "side": "TraceMaker side (stand-in): TraceMaker's own synthetic test board",
   "rules": "board's own project",
   "published": "published unrouted"
  },
  {
   "id": "tsc_core1106-carrier",
   "name": "tscircuit Core1106 carrier",
   "author": "tscircuit",
   "licence": null,
   "source": "https://github.com/tscircuit/rv1106g2",
   "commit": "86799ce9bc2b1b3b7edbfe334420a9dbedc33e9b",
   "licence_url": null,
   "images": false,
   "image_note": "its repository states no licence",
   "results": {
    "zap": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 6,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 46,
     "outcome": "finished"
    },
    "zap_prev": {
     "unconnected": 0,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 87,
     "vias_in_smd_pads": 79,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 41,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 5,
     "rule_errors": 1,
     "shorts": 0,
     "fab_violations": 24,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 464,
     "shorts": 2,
     "fab_violations": 28,
     "vias_in_smd_pads": 3,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 100,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "published": {
     "unconnected": 0,
     "rule_errors": 1452,
     "shorts": 0,
     "fab_violations": 142,
     "vias_in_smd_pads": 0,
     "isolated_copper": 39,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    }
   },
   "connections": null,
   "side": "tscircuit side: a public tscircuit board with a KiCad export",
   "rules": "KiCad defaults (no rules file published)",
   "published": "routed by tscircuit's own pipeline"
  },
  {
   "id": "tsc_rp2040-lipo-charger",
   "name": "tscircuit RP2040 LiPo charger",
   "author": "tscircuit",
   "licence": null,
   "source": "https://github.com/tscircuit/rp2040-lipo-charger",
   "commit": "bbcc9fa976478dc712705716f3156631ea0c6b25",
   "licence_url": null,
   "images": false,
   "image_note": "its repository states no licence",
   "results": {
    "zap": {
     "unconnected": 20,
     "rule_errors": 6,
     "shorts": 0,
     "fab_violations": 10,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 7,
     "outcome": "finished"
    },
    "zap_prev": {
     "unconnected": 20,
     "rule_errors": 6,
     "shorts": 0,
     "fab_violations": 75,
     "vias_in_smd_pads": 65,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 6,
     "outcome": "finished"
    },
    "tracemaker": {
     "unconnected": 4,
     "rule_errors": 6,
     "shorts": 0,
     "fab_violations": 28,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 601,
     "outcome": "stopped at limit"
    },
    "tscircuit": {
     "unconnected": 0,
     "rule_errors": 258,
     "shorts": 5,
     "fab_violations": 38,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": 49,
     "outcome": "finished",
     "no_output": false,
     "why": null
    },
    "published": {
     "unconnected": 0,
     "rule_errors": 510,
     "shorts": 5,
     "fab_violations": 81,
     "vias_in_smd_pads": 0,
     "isolated_copper": 0,
     "hot_sections": 0,
     "time_s": null,
     "outcome": "reference"
    }
   },
   "connections": null,
   "side": "tscircuit side: a public tscircuit board with a KiCad export",
   "rules": "KiCad defaults (no rules file published)",
   "published": "routed by tscircuit's own pipeline"
  }
 ],
 "rule_gaps": {
  "tscircuit": [
   {
    "what": "Rounded, oval and chamfered pads are given as rectangles of the pad size, corners filled in (the input format has no rounded shape; tscircuit's own KiCad import does the same)",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "Spacing overrides on single pads or parts are dropped",
    "boards": 5,
    "boards_exact": true
   },
   {
    "what": "Differential pairs that reach more than two pads are routed as ordinary nets",
    "boards": 12,
    "boards_exact": true
   },
   {
    "what": "No track-to-track or via-to-via spacing rule; the pad spacing is used instead, and some solver stages use a fixed 0.1 mm",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "No copper pours: power and ground are routed as tracks",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "One track width per connection: no width ranges, neck-downs or length tuning",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "No length-matching limits for differential pairs",
    "boards": 17,
    "boards_exact": true
   },
   {
    "what": "Keep-out areas that only forbid pours or parts are ignored (it makes no pours)",
    "boards": 12,
    "boards_exact": true
   },
   {
    "what": "One spacing for every net class (the default class)",
    "boards": 3,
    "boards_exact": true
   },
   {
    "what": "One via size for every net class (the default class)",
    "boards": 1,
    "boards_exact": true
   },
   {
    "what": "Odd-shaped copper inside parts is covered by rectangles that follow its outline",
    "boards": 5,
    "boards_exact": true
   },
   {
    "what": "Custom-shape pads are covered by rectangles that follow the pad outline (exact where its edges are straight and square)",
    "boards": 7,
    "boards_exact": true
   },
   {
    "what": "The board's custom design rules (.kicad_dru) cannot be expressed",
    "boards": 2,
    "boards_exact": true
   },
   {
    "what": "Track-only keep-outs also block vias (stricter than the board)",
    "boards": 1,
    "boards_exact": true
   },
   {
    "what": "Odd-shaped keep-out areas are covered by rectangles that follow their outline",
    "boards": 2,
    "boards_exact": true
   },
   {
    "what": "Internal cut-outs are blocked on every layer",
    "boards": 2,
    "boards_exact": true
   },
   {
    "what": "Via-only keep-outs are left out (vias placed there count as errors)",
    "boards": 2,
    "boards_exact": true
   },
   {
    "what": "Odd-shaped board cut-outs are covered by rectangles that follow their outline",
    "boards": 1,
    "boards_exact": true
   }
  ],
  "freerouting": [
   {
    "what": "Differential pairs: no coupling, gap, uncoupled-length or skew rule; routed as independent nets",
    "boards": 17,
    "boards_exact": true
   },
   {
    "what": "No hole clearance rule (KiCad's minimum hole clearance; Freerouting used 0)",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "No minimum hole-to-hole distance",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "No copper pours: power and ground are routed as tracks",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "No length or skew rules (net-class or custom)",
    "boards": 25,
    "boards_exact": true
   },
   {
    "what": "Keep-out areas that only forbid pours or parts were removed so tracks may pass, as KiCad allows",
    "boards": 11,
    "boards_exact": true
   },
   {
    "what": "Copper-to-edge spacing above 0.25 mm not passed on (Freerouting used 0.25 mm)",
    "boards": 10,
    "boards_exact": true
   },
   {
    "what": "The board's custom design rules (.kicad_dru) are not exported",
    "boards": 2,
    "boards_exact": true
   },
   {
    "what": "Track-only keep-outs also block vias (stricter than the board)",
    "boards": 1,
    "boards_exact": true
   }
  ],
  "tracemaker": [
   {
    "what": "No copper pours: power and ground are routed as tracks",
    "boards": 25,
    "boards_exact": true
   }
  ],
  "tracemaker_rules": "TraceMaker reported no other board rule it could not evaluate on the 25 public boards; it writes no copper pours.",
  "zap_rules": "Zap! reads KiCad net classes and custom rules itself and refuses a job whose rules it cannot read; it refused none of the 25 boards."
 },
 "setup": {
  "time_limit_s": 600,
  "cores_per_board": 1,
  "zap_work_minutes": 10,
  "kicad": "10.0.6",
  "fab_check": "1.3.1",
  "fab_check_service": "1.6",
  "fab_check_newer_columns": "1.6",
  "fab_check_newer_columns_ids": [
   "freerouting",
   "tracemaker",
   "tscircuit_60",
   "zap"
  ],
  "zap_prev_no_via_in_pad_rule": true,
  "zap_jlc_minimum_sizes": true,
  "tscircuit_60_boards_rerun": 4,
  "tracemaker_default_copies": 8,
  "tracemaker_load_low": 12,
  "tracemaker_load_high": 27,
  "machine_threads": 32,
  "tscircuit_boards_at_once": 13,
  "tscircuit_machines": 2,
  "tscircuit_v1_boards_at_once": 16,
  "tscircuit_e10_boards_at_once": 8,
  "tscircuit_own_effort_levels": [
   "1x",
   "1.5x",
   "2x",
   "5x",
   "10x",
   "100x"
  ],
  "kookabus_checked": "2026-10-13",
  "zap_no_via_in_pad_rule": null,
  "freerouting": {
   "load_high": 31,
   "default_threads": "all logical processors minus one",
   "fanout_first": true,
   "timeout_between_passes": true
  },
  "zap_measurement": {
   "machine": "the same machines and session as TraceMaker, Freerouting and tscircuit (2026-10-14), one board per physical core, one thread",
   "build": "re92d124.57335f59",
   "run": "single run, the service default",
   "fab_check": "fab1 1.6"
  },
  "tm_fr_time_limit_s": 3600,
  "tm_fr_cores": 1,
  "tm_fr_gpu": false,
  "tm_commit": "49fbd3c39796ed226a5b7d8f1bfde4f4997a6068",
  "zap_memory_gb": 14,
  "tm_peak_memory_gb": 25,
  "tm_peak_memory_mb": 25200,
  "fr_java_heap_gb": 12,
  "ts_time_limit_s": 3600,
  "ts_backstop_s": 4500,
  "own_boards_tracemaker_rerun": [],
  "single_core_run": {
   "date": "2026-10-14",
   "cores_per_board": 1,
   "time_limit_s": 3600,
   "tscircuit_backstop_s": 4500,
   "gpu": false,
   "machine": "the same machine type for TraceMaker, Freerouting and tscircuit, one board per physical core",
   "scoring": "fab1 1.6 graded fab pass (KiCad 10.0.6 design-rule check with each board's rules after refilling pours, JLCPCB check, heat check); unrouted connections from pcbnew's ratsnest after refilling pours",
   "zap": "Zap!'s single run (the service default) in the same session"
  }
 },
 "licences_checked": "2026-10-13",
 "tscircuit_benchmark": {
  "status": "ready",
  "repo": "https://github.com/tscircuit/tscircuit-autorouter",
  "commit": "1256328a3260842f98e594e69c1e4f893313da46",
  "commit_date": "2026-10-12T19:41:30-07:00",
  "package": "@tscircuit/capacity-autorouter 0.0.976",
  "router_licence": "MIT",
  "zap_run": "rh-009e659",
  "datasets": [
   {
    "name": "dataset01",
    "problems": 85,
    "finished": "2026-10-13T06:54:11Z",
    "routers": {
     "tscircuit": {
      "samples": 85,
      "solver_reported": 85,
      "solver_reported_pct": 100.0,
      "verified": 85,
      "verified_pct": 100.0,
      "relaxed_drc": 85,
      "relaxed_drc_pct": 100.0,
      "time_median_s": 4.27,
      "avg_vias": 39.0,
      "timeouts": 0
     },
     "zap_prev": {
      "samples": 85,
      "solver_reported": 85,
      "solver_reported_pct": 100.0,
      "verified": 85,
      "verified_pct": 100.0,
      "relaxed_drc": 84,
      "relaxed_drc_pct": 98.8,
      "time_median_s": 0.97,
      "avg_vias": 23.9,
      "timeouts": 0
     }
    },
    "dashboard": {
     "completed": 100,
     "relaxed_drc": 100,
     "run_url": "https://github.com/tscircuit/tscircuit-autorouter/actions/runs/38338090418",
     "created": "2026-10-13",
     "reproduced": true
    },
    "unpassable_with_preloaded": null,
    "withheld": 0,
    "source": "https://github.com/tscircuit/autorouting-dataset-01",
    "licence": "MIT"
   },
   {
    "name": "srj18",
    "problems": 15,
    "finished": "2026-10-13T06:59:59Z",
    "routers": {
     "tscircuit": {
      "samples": 15,
      "solver_reported": 15,
      "solver_reported_pct": 100.0,
      "verified": 13,
      "verified_pct": 86.7,
      "relaxed_drc": 15,
      "relaxed_drc_pct": 100.0,
      "time_median_s": 44.39,
      "avg_vias": 222.4,
      "timeouts": 0
     },
     "zap_prev": {
      "samples": 15,
      "solver_reported": 15,
      "solver_reported_pct": 100.0,
      "verified": 15,
      "verified_pct": 100.0,
      "relaxed_drc": 14,
      "relaxed_drc_pct": 93.3,
      "time_median_s": 12.39,
      "avg_vias": 119.2,
      "timeouts": 0
     }
    },
    "dashboard": null,
    "unpassable_with_preloaded": null,
    "withheld": 1,
    "source": "https://github.com/tscircuit/dataset-srj18",
    "licence": "none"
   },
   {
    "name": "srj19",
    "problems": 200,
    "finished": "2026-10-13T07:30:50Z",
    "routers": {
     "tscircuit": {
      "samples": 200,
      "solver_reported": 187,
      "solver_reported_pct": 93.5,
      "verified": 184,
      "verified_pct": 92.0,
      "relaxed_drc": 183,
      "relaxed_drc_pct": 91.5,
      "time_median_s": 23.43,
      "avg_vias": 94.7,
      "timeouts": 13
     },
     "zap_prev": {
      "samples": 200,
      "solver_reported": 142,
      "solver_reported_pct": 71.0,
      "verified": 142,
      "verified_pct": 71.0,
      "relaxed_drc": 141,
      "relaxed_drc_pct": 70.5,
      "time_median_s": 2.3,
      "avg_vias": 39.7,
      "timeouts": 0
     }
    },
    "dashboard": {
     "completed": 92.5,
     "relaxed_drc": 90.5,
     "run_url": "https://github.com/tscircuit/tscircuit-autorouter/actions/runs/38338090418",
     "created": "2026-10-13",
     "reproduced": false
    },
    "unpassable_with_preloaded": null,
    "withheld": 0,
    "source": "https://github.com/tscircuit/dataset-srj19",
    "licence": "MIT"
   },
   {
    "name": "srj20",
    "problems": 200,
    "finished": "2026-10-13T08:22:56Z",
    "routers": {
     "tscircuit": {
      "samples": 200,
      "solver_reported": 158,
      "solver_reported_pct": 79.0,
      "verified": 158,
      "verified_pct": 79.0,
      "relaxed_drc": 158,
      "relaxed_drc_pct": 79.0,
      "time_median_s": 22.97,
      "avg_vias": 96.3,
      "timeouts": 41
     },
     "zap_prev": {
      "samples": 200,
      "solver_reported": 103,
      "solver_reported_pct": 51.5,
      "verified": 103,
      "verified_pct": 51.5,
      "relaxed_drc": 102,
      "relaxed_drc_pct": 51.0,
      "time_median_s": 4.65,
      "avg_vias": 42.5,
      "timeouts": 0
     }
    },
    "dashboard": {
     "completed": 78.5,
     "relaxed_drc": 78.5,
     "run_url": "https://github.com/tscircuit/tscircuit-autorouter/actions/runs/38338090418",
     "created": "2026-10-13",
     "reproduced": false
    },
    "unpassable_with_preloaded": null,
    "withheld": 0,
    "source": "https://github.com/tscircuit/dataset-srj20",
    "licence": "none"
   },
   {
    "name": "srj21",
    "problems": 10,
    "finished": "2026-10-13T06:47:47Z",
    "routers": {
     "tscircuit": {
      "samples": 10,
      "solver_reported": 10,
      "solver_reported_pct": 100.0,
      "verified": 10,
      "verified_pct": 100.0,
      "relaxed_drc": 10,
      "relaxed_drc_pct": 100.0,
      "time_median_s": 2.28,
      "avg_vias": 12.4,
      "timeouts": 0
     },
     "zap_prev": {
      "samples": 10,
      "solver_reported": 10,
      "solver_reported_pct": 100.0,
      "verified": 10,
      "verified_pct": 100.0,
      "relaxed_drc": 10,
      "relaxed_drc_pct": 100.0,
      "time_median_s": 0.09,
      "avg_vias": 11.2,
      "timeouts": 0
     }
    },
    "dashboard": {
     "completed": 100,
     "relaxed_drc": 100,
     "run_url": "https://github.com/tscircuit/tscircuit-autorouter/actions/runs/38338090418",
     "created": "2026-10-13",
     "reproduced": true
    },
    "unpassable_with_preloaded": null,
    "withheld": 0,
    "source": "https://github.com/tscircuit/dataset-srj21",
    "licence": "none"
   },
   {
    "name": "srj23",
    "problems": 76,
    "finished": "2026-10-13T06:49:14Z",
    "routers": {
     "tscircuit": {
      "samples": 76,
      "solver_reported": 75,
      "solver_reported_pct": 98.7,
      "verified": 74,
      "verified_pct": 97.4,
      "relaxed_drc": 60,
      "relaxed_drc_pct": 78.9,
      "time_median_s": 3.44,
      "avg_vias": 27.7,
      "timeouts": 0
     },
     "zap_prev": {
      "samples": 76,
      "solver_reported": 66,
      "solver_reported_pct": 86.8,
      "verified": 76,
      "verified_pct": 100.0,
      "relaxed_drc": 58,
      "relaxed_drc_pct": 76.3,
      "time_median_s": 0.65,
      "avg_vias": 8.7,
      "timeouts": 0
     }
    },
    "dashboard": {
     "completed": 98.7,
     "relaxed_drc": 78.9,
     "run_url": "https://github.com/tscircuit/tscircuit-autorouter/actions/runs/38338090418",
     "created": "2026-10-13",
     "reproduced": true
    },
    "unpassable_with_preloaded": null,
    "withheld": 0,
    "source": "https://github.com/tscircuit/dataset-srj23-partially-routed-subcircuits",
    "licence": "none"
   }
  ],
  "running": [],
  "facts": {},
  "sources_checked": "2026-10-13",
  "via_floor": {
   "zap_via_mm": 0.4,
   "zap_drill_mm": 0.3,
   "problem_via_mm": 0.3,
   "problem_drill_mm": 0.2,
   "diag_build": "009e659",
   "diag_set": "srj19",
   "diag_complete": 7,
   "diag_of": 12,
   "diagnostic_only": true
  },
  "zap_is_served": false,
  "run_date": "2026-10-13"
 },
 "tscircuit_conversion": {
  "boards": 25,
  "items": 57679,
  "conflicts": 1075,
  "pct": 1.86,
  "rounded_pads_as_rectangles": 473,
  "keepout_export": 145,
  "human_tighter_clearance": 456,
  "obstacle_area_missed_mm2": 0.004,
  "obstacle_area_excess_pct": 3.4,
  "first_conversion": {
   "boards": 25,
   "items": 57679,
   "conflicts": 1410,
   "pct": 2.44,
   "rounded_pads_as_rectangles": 473,
   "keepout_export": 480,
   "human_tighter_clearance": 456,
   "obstacle_area_missed_mm2": 0.004,
   "obstacle_area_excess_pct": 3.54
  },
  "converter_changes": "corrected 2026-10-14",
  "boards_input_changed": 13,
  "tscircuit_import_check": {
   "boards": 21,
   "boards_import_failed": 4,
   "their_obstacles": 15587,
   "identical": 14168,
   "package": "0.0.142",
   "core": "0.0.2145"
  }
 },
 "cpu6": {
  "label": "6 CPU threads",
  "routers": [
   {
    "id": "zap",
    "label": "Zap!, best of attempts within 60 minutes, 6 CPU threads",
    "version": "Zap! router build re92d124.57335f59, the build zap.mutual.solutions runs now; boards routed 2026-10-14",
    "settings": "6 CPU threads per board: up to 6 routing attempts at once with different settings of the build, new ones as threads free up, until one has every connection and no short (the running ones then finish) or 60 minutes pass; keeps the best (12.4 min median, 8 of 25 boards timed out here); makes its own copper pours"
   },
   {
    "id": "zap_60",
    "show": false
   },
   {
    "id": "tracemaker",
    "version": "TraceMaker v0.9.0-116-g49fbd3c (main branch, commit 49fbd3c of 2026-10-14, the latest public version when run), built CPU-only with GCC 14.2; boards routed 2026-10-14",
    "settings": "--time 3600 --threads 6 --no-kb --diff-pairs --keep-vias-off-pads --vias-off-pads-below 1000; 6 CPU threads per board, no GPU"
   },
   {
    "id": "freerouting",
    "settings": "java -Xmx12g -Xms256m -jar freerouting-2.5.0.jar -de in.dsn -do out.ses --gui.enabled=false --api_server.enabled=false --profile.allow_telemetry=false --usage_and_diagnostic_data.disable_analytics=true --router.max_threads=6 --router.job_timeout=01:00:00 --router.result_json=result.json"
   }
  ],
  "totals": {
   "zap": {
    "boards": 25,
    "fully_connected": 18,
    "complete_and_clean": 6,
    "unconnected": 100,
    "rule_errors": 174,
    "shorts": 0,
    "boards_with_shorts": 0,
    "fab_violations": 1298,
    "vias_in_smd_pads": 0,
    "isolated_copper": 0,
    "hot_sections": 259,
    "time_total_s": 37255,
    "time_median_s": 746,
    "time_longest_s": 3653,
    "boards_over_600s": 14,
    "finished": 18,
    "stopped_at_limit": 7,
    "failed": 0,
    "complete_clean_no_shorts": 6,
    "no_output": null,
    "rule_errors_from_placement": 74,
    "rule_errors_spacing": 16,
    "boards_count_capped": 7
   },
   "tracemaker": {
    "boards": 25,
    "fully_connected": 12,
    "complete_and_clean": 5,
    "unconnected": 432,
    "rule_errors": 461,
    "shorts": 0,
    "boards_with_shorts": 0,
    "fab_violations": 2704,
    "vias_in_smd_pads": 0,
    "isolated_copper": 0,
    "hot_sections": 659,
    "time_total_s": 47510,
    "time_median_s": 2062,
    "time_longest_s": 3604,
    "boards_over_600s": 16,
    "finished": 15,
    "stopped_at_limit": 10,
    "failed": 0,
    "complete_clean_no_shorts": 5,
    "no_output": null,
    "rule_errors_from_placement": 74,
    "rule_errors_spacing": 107,
    "boards_count_capped": 8
   },
   "freerouting": {
    "boards": 25,
    "fully_connected": 11,
    "complete_and_clean": 2,
    "unconnected": 2100,
    "rule_errors": 2323,
    "shorts": 4,
    "boards_with_shorts": 3,
    "fab_violations": 2382,
    "vias_in_smd_pads": 0,
    "isolated_copper": 0,
    "hot_sections": 637,
    "time_total_s": 24432,
    "time_median_s": 283,
    "time_longest_s": 3654,
    "boards_over_600s": 8,
    "finished": 22,
    "stopped_at_limit": 3,
    "failed": 0,
    "complete_clean_no_shorts": 2,
    "no_output": null,
    "rule_errors_from_placement": 74,
    "rule_errors_spacing": 128,
    "boards_count_capped": 11
   }
  },
  "fab_violations_by_type": {
   "zap": {
    "silk_over_copper": 595,
    "solder_mask_bridge": 440,
    "hole_clearance": 144,
    "copper_edge_clearance": 60,
    "acute_angle_acid_trap": 31,
    "clearance": 15,
    "connection_width": 12,
    "copper_sliver": 1
   },
   "tracemaker": {
    "acute_angle_acid_trap": 999,
    "silk_over_copper": 794,
    "solder_mask_bridge": 434,
    "hole_clearance": 151,
    "copper_edge_clearance": 114,
    "connection_width": 111,
    "drill_out_of_range": 87,
    "clearance": 13,
    "copper_sliver": 1
   },
   "freerouting": {
    "silk_over_copper": 701,
    "solder_mask_bridge": 497,
    "hole_clearance": 412,
    "connection_width": 328,
    "track_width": 167,
    "acute_angle_acid_trap": 120,
    "drill_out_of_range": 79,
    "copper_edge_clearance": 66,
    "clearance": 11,
    "copper_sliver": 1
   }
  },
  "boards": {
   "b01-cm4-lvds": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 13,
      "shorts": 0,
      "fab_violations": 52,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 790,
      "outcome": "finished",
      "vias": 315,
      "peak_mb": 7857,
      "time_exact_s": 789.9,
      "attempts": 7,
      "kept_attempt": 4
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 11,
      "shorts": 0,
      "fab_violations": 78,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 630,
      "outcome": "finished",
      "vias": 173,
      "peak_mb": 6521,
      "time_exact_s": 629.5
     },
     "freerouting": {
      "unconnected": 6,
      "rule_errors": 137,
      "shorts": 0,
      "fab_violations": 56,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 1,
      "time_s": 552,
      "outcome": "finished",
      "vias": 139,
      "peak_mb": 1577,
      "time_exact_s": 552.2
     }
    },
    "image_files": {
     "zap": "compare/b01-cm4-lvds-zap-6t.webp",
     "tracemaker": "compare/b01-cm4-lvds-tracemaker-6t.webp",
     "tscircuit_60": "compare/b01-cm4-lvds-tscircuit.webp",
     "freerouting": "compare/b01-cm4-lvds-freerouting-6t.webp",
     "human": "compare/b01-cm4-lvds-human.webp"
    }
   },
   "b02-ecp5-dcscm": {
    "results": {
     "zap": {
      "unconnected": 61,
      "rule_errors": 31,
      "shorts": 0,
      "fab_violations": 98,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 34,
      "time_s": 3602,
      "outcome": "stopped at limit",
      "vias": 1547,
      "peak_mb": 69313,
      "time_exact_s": 3601.7,
      "attempts": 18,
      "kept_attempt": 8
     },
     "tracemaker": {
      "unconnected": 239,
      "rule_errors": 26,
      "shorts": 0,
      "fab_violations": 346,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 41,
      "time_s": 3604,
      "outcome": "stopped at limit",
      "vias": 904,
      "peak_mb": 60155,
      "time_exact_s": 3603.8
     },
     "freerouting": {
      "unconnected": 1824,
      "rule_errors": 6,
      "shorts": 0,
      "fab_violations": 90,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3654,
      "outcome": "stopped at limit",
      "vias": 63,
      "peak_mb": 1408,
      "time_exact_s": 3653.6
     }
    },
    "image_files": {
     "zap": "compare/b02-ecp5-dcscm-zap-6t.webp",
     "tracemaker": "compare/b02-ecp5-dcscm-tracemaker-6t.webp",
     "tscircuit_60": "compare/b02-ecp5-dcscm-tscircuit.webp",
     "freerouting": "compare/b02-ecp5-dcscm-freerouting-6t.webp",
     "human": "compare/b02-ecp5-dcscm-human.webp"
    }
   },
   "b03-ftdi-jtag": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 1,
      "shorts": 0,
      "fab_violations": 4,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 94,
      "outcome": "finished",
      "vias": 168,
      "peak_mb": 5895,
      "time_exact_s": 93.8,
      "attempts": 6,
      "kept_attempt": 3
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 1,
      "shorts": 0,
      "fab_violations": 34,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 108,
      "outcome": "finished",
      "vias": 128,
      "peak_mb": 2936,
      "time_exact_s": 108.0
     },
     "freerouting": {
      "unconnected": 11,
      "rule_errors": 4,
      "shorts": 0,
      "fab_violations": 7,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 168,
      "outcome": "finished",
      "vias": 99,
      "peak_mb": 1543,
      "time_exact_s": 168.1
     }
    },
    "image_files": {
     "zap": "compare/b03-ftdi-jtag-zap-6t.webp",
     "tracemaker": "compare/b03-ftdi-jtag-tracemaker-6t.webp",
     "tscircuit_60": "compare/b03-ftdi-jtag-tscircuit.webp",
     "freerouting": "compare/b03-ftdi-jtag-freerouting-6t.webp",
     "human": "compare/b03-ftdi-jtag-human.webp"
    }
   },
   "b04-trellis": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 5,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 622,
      "outcome": "finished",
      "vias": 106,
      "peak_mb": 4383,
      "time_exact_s": 621.8,
      "attempts": 6,
      "kept_attempt": 1
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 25,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 827,
      "outcome": "finished",
      "vias": 84,
      "peak_mb": 3038,
      "time_exact_s": 827.1
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 2,
      "shorts": 0,
      "fab_violations": 6,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 42,
      "outcome": "finished",
      "vias": 68,
      "peak_mb": 2761,
      "time_exact_s": 42.0
     }
    },
    "image_files": {
     "zap": "compare/b04-trellis-zap-6t.webp",
     "tracemaker": "compare/b04-trellis-tracemaker-6t.webp",
     "tscircuit_60": "compare/b04-trellis-tscircuit.webp",
     "freerouting": "compare/b04-trellis-freerouting-6t.webp",
     "human": "compare/b04-trellis-human.webp"
    }
   },
   "b05-bitaxe": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 3,
      "shorts": 0,
      "fab_violations": 113,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 12,
      "time_s": 746,
      "outcome": "finished",
      "vias": 183,
      "peak_mb": 9413,
      "time_exact_s": 746.3,
      "attempts": 6,
      "kept_attempt": 0
     },
     "tracemaker": {
      "unconnected": 3,
      "rule_errors": 3,
      "shorts": 0,
      "fab_violations": 135,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 108,
      "time_s": 3601,
      "outcome": "stopped at limit",
      "vias": 151,
      "peak_mb": 4826,
      "time_exact_s": 3601.3
     },
     "freerouting": {
      "unconnected": 1,
      "rule_errors": 69,
      "shorts": 2,
      "fab_violations": 113,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 84,
      "time_s": 50,
      "outcome": "finished",
      "vias": 127,
      "peak_mb": 1438,
      "time_exact_s": 50.0
     }
    }
   },
   "b06-loadcell": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 2,
      "shorts": 0,
      "fab_violations": 0,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 52,
      "outcome": "finished",
      "vias": 90,
      "peak_mb": 1753,
      "time_exact_s": 52.1,
      "attempts": 6,
      "kept_attempt": 5
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 2,
      "shorts": 0,
      "fab_violations": 101,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 39,
      "outcome": "finished",
      "vias": 87,
      "peak_mb": 1750,
      "time_exact_s": 39.0
     },
     "freerouting": {
      "unconnected": 1,
      "rule_errors": 2,
      "shorts": 0,
      "fab_violations": 82,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 37,
      "outcome": "finished",
      "vias": 79,
      "peak_mb": 1281,
      "time_exact_s": 37.0
     }
    },
    "image_files": {
     "zap": "compare/b06-loadcell-zap-6t.webp",
     "tracemaker": "compare/b06-loadcell-tracemaker-6t.webp",
     "tscircuit_60": "compare/b06-loadcell-tscircuit.webp",
     "freerouting": "compare/b06-loadcell-freerouting-6t.webp",
     "human": "compare/b06-loadcell-human.webp"
    }
   },
   "b07-rp2040": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 4,
      "shorts": 0,
      "fab_violations": 199,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 2695,
      "outcome": "finished",
      "vias": 100,
      "peak_mb": 1831,
      "time_exact_s": 2694.7,
      "attempts": 59,
      "kept_attempt": 53
     },
     "tracemaker": {
      "unconnected": 10,
      "rule_errors": 5,
      "shorts": 0,
      "fab_violations": 223,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3072,
      "outcome": "finished",
      "vias": 104,
      "peak_mb": 1373,
      "time_exact_s": 3072.2
     },
     "freerouting": {
      "unconnected": 17,
      "rule_errors": 35,
      "shorts": 0,
      "fab_violations": 206,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 227,
      "outcome": "finished",
      "vias": 60,
      "peak_mb": 1444,
      "time_exact_s": 227.1
     }
    }
   },
   "b08-discretesim": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 1,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 73,
      "outcome": "finished",
      "vias": 181,
      "peak_mb": 2110,
      "time_exact_s": 72.6,
      "attempts": 6,
      "kept_attempt": 5
     },
     "tracemaker": {
      "unconnected": 21,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 80,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3250,
      "outcome": "finished",
      "vias": 227,
      "peak_mb": 5042,
      "time_exact_s": 3249.6
     },
     "freerouting": {
      "unconnected": 62,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 261,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 597,
      "outcome": "finished",
      "vias": 72,
      "peak_mb": 1846,
      "time_exact_s": 597.2
     }
    },
    "image_files": {
     "zap": "compare/b08-discretesim-zap-6t.webp",
     "tracemaker": "compare/b08-discretesim-tracemaker-6t.webp",
     "tscircuit_60": "compare/b08-discretesim-tscircuit.webp",
     "freerouting": "compare/b08-discretesim-freerouting-6t.webp",
     "human": "compare/b08-discretesim-human.webp"
    }
   },
   "b09-waterlevel": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 0,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 9,
      "outcome": "finished",
      "vias": 21,
      "peak_mb": 2883,
      "time_exact_s": 8.9,
      "attempts": 6,
      "kept_attempt": 4
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 0,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 14,
      "outcome": "finished",
      "vias": 11,
      "peak_mb": 1605,
      "time_exact_s": 14.1
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 7,
      "shorts": 0,
      "fab_violations": 2,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 7,
      "outcome": "finished",
      "vias": 5,
      "peak_mb": 487,
      "time_exact_s": 7.0
     }
    },
    "image_files": {
     "zap": "compare/b09-waterlevel-zap-6t.webp",
     "tracemaker": "compare/b09-waterlevel-tracemaker-6t.webp",
     "tscircuit_60": "compare/b09-waterlevel-tscircuit.webp",
     "freerouting": "compare/b09-waterlevel-freerouting-6t.webp",
     "human": "compare/b09-waterlevel-human.webp"
    }
   },
   "b10-ecp5-bga381": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 18,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 141,
      "outcome": "finished",
      "vias": 152,
      "peak_mb": 4023,
      "time_exact_s": 141.3,
      "attempts": 6,
      "kept_attempt": 4
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 26,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 159,
      "outcome": "finished",
      "vias": 89,
      "peak_mb": 4758,
      "time_exact_s": 159.1
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 19,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 35,
      "outcome": "finished",
      "vias": 117,
      "peak_mb": 2871,
      "time_exact_s": 35.0
     }
    },
    "image_files": {
     "zap": "compare/b10-ecp5-bga381-zap-6t.webp",
     "tracemaker": "compare/b10-ecp5-bga381-tracemaker-6t.webp",
     "tscircuit_60": "compare/b10-ecp5-bga381-tscircuit.webp",
     "freerouting": "compare/b10-ecp5-bga381-freerouting-6t.webp",
     "human": "compare/b10-ecp5-bga381-human.webp"
    }
   },
   "256foundation_emberone00-pcb": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 1,
      "shorts": 0,
      "fab_violations": 201,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 24,
      "time_s": 774,
      "outcome": "finished",
      "vias": 511,
      "peak_mb": 41030,
      "time_exact_s": 773.7,
      "attempts": 6,
      "kept_attempt": 2
     },
     "tracemaker": {
      "unconnected": 1,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 250,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 107,
      "time_s": 3603,
      "outcome": "stopped at limit",
      "vias": 532,
      "peak_mb": 15559,
      "time_exact_s": 3603.3
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 218,
      "shorts": 0,
      "fab_violations": 214,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 95,
      "time_s": 2432,
      "outcome": "finished",
      "vias": 428,
      "peak_mb": 5597,
      "time_exact_s": 2431.8
     }
    }
   },
   "CNES_argos-demo-board": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 3,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 79,
      "outcome": "finished",
      "vias": 113,
      "peak_mb": 10558,
      "time_exact_s": 78.9,
      "attempts": 6,
      "kept_attempt": 0
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 10,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 86,
      "outcome": "finished",
      "vias": 61,
      "peak_mb": 3344,
      "time_exact_s": 86.0
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 1,
      "shorts": 0,
      "fab_violations": 7,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 28,
      "outcome": "finished",
      "vias": 58,
      "peak_mb": 3635,
      "time_exact_s": 28.0
     }
    }
   },
   "OLIMEX_RP2350-PICO2-BB48": {
    "results": {
     "zap": {
      "unconnected": 25,
      "rule_errors": 3,
      "shorts": 0,
      "fab_violations": 77,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3601,
      "outcome": "stopped at limit",
      "vias": 139,
      "peak_mb": 2754,
      "time_exact_s": 3600.9,
      "attempts": 35,
      "kept_attempt": 22
     },
     "tracemaker": {
      "unconnected": 25,
      "rule_errors": 2,
      "shorts": 0,
      "fab_violations": 104,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3602,
      "outcome": "stopped at limit",
      "vias": 144,
      "peak_mb": 4311,
      "time_exact_s": 3601.8
     },
     "freerouting": {
      "unconnected": 4,
      "rule_errors": 254,
      "shorts": 0,
      "fab_violations": 107,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 742,
      "outcome": "finished",
      "vias": 124,
      "peak_mb": 2010,
      "time_exact_s": 742.3
     }
    },
    "image_files": {
     "zap": "compare/olimex-rp2350-pico2-bb48-zap-6t.webp",
     "tracemaker": "compare/olimex-rp2350-pico2-bb48-tracemaker-6t.webp",
     "tscircuit_60": "compare/olimex-rp2350-pico2-bb48-tscircuit-60.webp",
     "freerouting": "compare/olimex-rp2350-pico2-bb48-freerouting-6t.webp",
     "human": "compare/olimex-rp2350-pico2-bb48-human.webp"
    }
   },
   "antmicro_cvbs-mipi-bridge": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 2,
      "shorts": 0,
      "fab_violations": 26,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 181,
      "outcome": "finished",
      "vias": 115,
      "peak_mb": 8460,
      "time_exact_s": 180.6,
      "attempts": 6,
      "kept_attempt": 3
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 40,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 79,
      "outcome": "finished",
      "vias": 103,
      "peak_mb": 5844,
      "time_exact_s": 79.0
     },
     "freerouting": {
      "unconnected": 4,
      "rule_errors": 16,
      "shorts": 0,
      "fab_violations": 25,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 283,
      "outcome": "finished",
      "vias": 78,
      "peak_mb": 1999,
      "time_exact_s": 283.1
     }
    },
    "image_files": {
     "zap": "compare/antmicro-cvbs-mipi-bridge-zap-6t.webp",
     "tracemaker": "compare/antmicro-cvbs-mipi-bridge-tracemaker-6t.webp",
     "tscircuit_60": "compare/antmicro-cvbs-mipi-bridge-tscircuit.webp",
     "freerouting": "compare/antmicro-cvbs-mipi-bridge-freerouting-6t.webp",
     "human": "compare/antmicro-cvbs-mipi-bridge-human.webp"
    }
   },
   "antmicro_dual-ipex-csi-interposer": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 8,
      "shorts": 0,
      "fab_violations": 3,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 72,
      "outcome": "finished",
      "vias": 102,
      "peak_mb": 2487,
      "time_exact_s": 72.4,
      "attempts": 6,
      "kept_attempt": 3
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 89,
      "shorts": 0,
      "fab_violations": 6,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 91,
      "outcome": "finished",
      "vias": 51,
      "peak_mb": 2213,
      "time_exact_s": 91.1
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 68,
      "shorts": 0,
      "fab_violations": 1,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 24,
      "outcome": "finished",
      "vias": 72,
      "peak_mb": 3560,
      "time_exact_s": 24.0
     }
    },
    "image_files": {
     "zap": "compare/antmicro-dual-ipex-csi-interposer-zap-6t.webp",
     "tracemaker": "compare/antmicro-dual-ipex-csi-interposer-tracemaker-6t.webp",
     "tscircuit_60": "compare/antmicro-dual-ipex-csi-interposer-tscircuit.webp",
     "freerouting": "compare/antmicro-dual-ipex-csi-interposer-freerouting-6t.webp",
     "human": "compare/antmicro-dual-ipex-csi-interposer-human.webp"
    }
   },
   "antmicro_gmsl-serializer": {
    "results": {
     "zap": {
      "unconnected": 1,
      "rule_errors": 14,
      "shorts": 0,
      "fab_violations": 2,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3601,
      "outcome": "stopped at limit",
      "vias": 139,
      "peak_mb": 4265,
      "time_exact_s": 3600.6,
      "attempts": 117,
      "kept_attempt": 12
     },
     "tracemaker": {
      "unconnected": 2,
      "rule_errors": 13,
      "shorts": 0,
      "fab_violations": 3,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3602,
      "outcome": "stopped at limit",
      "vias": 98,
      "peak_mb": 4750,
      "time_exact_s": 3601.5
     },
     "freerouting": {
      "unconnected": 20,
      "rule_errors": 18,
      "shorts": 0,
      "fab_violations": 2,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 337,
      "outcome": "finished",
      "vias": 71,
      "peak_mb": 1741,
      "time_exact_s": 337.2
     }
    },
    "image_files": {
     "zap": "compare/antmicro-gmsl-serializer-zap-6t.webp",
     "tracemaker": "compare/antmicro-gmsl-serializer-tracemaker-6t.webp",
     "tscircuit_60": "compare/antmicro-gmsl-serializer-tscircuit.webp",
     "freerouting": "compare/antmicro-gmsl-serializer-freerouting-6t.webp",
     "human": "compare/antmicro-gmsl-serializer-human.webp"
    }
   },
   "antmicro_pmod-i3c-sensor-board": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 7,
      "shorts": 0,
      "fab_violations": 4,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 13,
      "outcome": "finished",
      "vias": 70,
      "peak_mb": 923,
      "time_exact_s": 13.3,
      "attempts": 6,
      "kept_attempt": 2
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 7,
      "shorts": 0,
      "fab_violations": 15,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 91,
      "outcome": "finished",
      "vias": 85,
      "peak_mb": 1611,
      "time_exact_s": 91.0
     },
     "freerouting": {
      "unconnected": 1,
      "rule_errors": 86,
      "shorts": 1,
      "fab_violations": 7,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 197,
      "outcome": "finished",
      "vias": 46,
      "peak_mb": 4413,
      "time_exact_s": 197.1
     }
    },
    "image_files": {
     "zap": "compare/antmicro-pmod-i3c-sensor-board-zap-6t.webp",
     "tracemaker": "compare/antmicro-pmod-i3c-sensor-board-tracemaker-6t.webp",
     "tscircuit_60": "compare/antmicro-pmod-i3c-sensor-board-tscircuit.webp",
     "freerouting": "compare/antmicro-pmod-i3c-sensor-board-freerouting-6t.webp",
     "human": "compare/antmicro-pmod-i3c-sensor-board-human.webp"
    }
   },
   "antmicro_signal-integrity-test-board": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 62,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 154,
      "outcome": "finished",
      "vias": 64,
      "peak_mb": 4223,
      "time_exact_s": 154.0,
      "attempts": 6,
      "kept_attempt": 2
     },
     "tracemaker": {
      "unconnected": 5,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 60,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 355,
      "outcome": "finished",
      "vias": 80,
      "peak_mb": 6117,
      "time_exact_s": 355.0
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 107,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 198,
      "outcome": "finished",
      "vias": 28,
      "peak_mb": 6827,
      "time_exact_s": 198.1
     }
    },
    "image_files": {
     "zap": "compare/antmicro-signal-integrity-test-board-zap-6t.webp",
     "tracemaker": "compare/antmicro-signal-integrity-test-board-tracemaker-6t.webp",
     "tscircuit_60": "compare/antmicro-signal-integrity-test-board-tscircuit.webp",
     "freerouting": "compare/antmicro-signal-integrity-test-board-freerouting-6t.webp",
     "human": "compare/antmicro-signal-integrity-test-board-human.webp"
    }
   },
   "antmicro_stm32h7-hdmi-board-sodimm": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 4,
      "shorts": 0,
      "fab_violations": 0,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 377,
      "outcome": "finished",
      "vias": 395,
      "peak_mb": 9720,
      "time_exact_s": 377.1,
      "attempts": 6,
      "kept_attempt": 1
     },
     "tracemaker": {
      "unconnected": 19,
      "rule_errors": 203,
      "shorts": 0,
      "fab_violations": 158,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3603,
      "outcome": "stopped at limit",
      "vias": 559,
      "peak_mb": 5661,
      "time_exact_s": 3602.6
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 240,
      "shorts": 0,
      "fab_violations": 1,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3290,
      "outcome": "finished",
      "vias": 284,
      "peak_mb": 5394,
      "time_exact_s": 3290.2
     }
    },
    "image_files": {
     "zap": "compare/antmicro-stm32h7-hdmi-board-sodimm-zap-6t.webp",
     "tracemaker": "compare/antmicro-stm32h7-hdmi-board-sodimm-tracemaker-6t.webp",
     "tscircuit_60": "compare/antmicro-stm32h7-hdmi-board-sodimm-tscircuit.webp",
     "freerouting": "compare/antmicro-stm32h7-hdmi-board-sodimm-freerouting-6t.webp",
     "human": "compare/antmicro-stm32h7-hdmi-board-sodimm-human.webp"
    }
   },
   "apfaudio_tiliqua-hardware": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 18,
      "shorts": 0,
      "fab_violations": 53,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 1522,
      "outcome": "finished",
      "vias": 440,
      "peak_mb": 11657,
      "time_exact_s": 1521.6,
      "attempts": 9,
      "kept_attempt": 5
     },
     "tracemaker": {
      "unconnected": 3,
      "rule_errors": 18,
      "shorts": 0,
      "fab_violations": 87,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3602,
      "outcome": "stopped at limit",
      "vias": 345,
      "peak_mb": 11762,
      "time_exact_s": 3602.5
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 242,
      "shorts": 0,
      "fab_violations": 271,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 476,
      "outcome": "finished",
      "vias": 226,
      "peak_mb": 3971,
      "time_exact_s": 476.2
     }
    }
   },
   "buildbotics_bbctrl-pcb-new": {
    "results": {
     "zap": {
      "unconnected": 3,
      "rule_errors": 4,
      "shorts": 0,
      "fab_violations": 0,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 158,
      "time_s": 3601,
      "outcome": "stopped at limit",
      "vias": 534,
      "peak_mb": 36509,
      "time_exact_s": 3601.4,
      "attempts": 25,
      "kept_attempt": 13
     },
     "tracemaker": {
      "unconnected": 13,
      "rule_errors": 4,
      "shorts": 0,
      "fab_violations": 249,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 321,
      "time_s": 3603,
      "outcome": "stopped at limit",
      "vias": 405,
      "peak_mb": 10994,
      "time_exact_s": 3602.8
     },
     "freerouting": {
      "unconnected": 25,
      "rule_errors": 203,
      "shorts": 0,
      "fab_violations": 128,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 380,
      "time_s": 3611,
      "outcome": "stopped at limit",
      "vias": 350,
      "peak_mb": 2387,
      "time_exact_s": 3611.4
     }
    }
   },
   "greatscottgadgets_hackrf-pro": {
    "results": {
     "zap": {
      "unconnected": 4,
      "rule_errors": 9,
      "shorts": 0,
      "fab_violations": 235,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3653,
      "outcome": "stopped at limit",
      "vias": 990,
      "peak_mb": 41203,
      "time_exact_s": 3653.0,
      "attempts": 19,
      "kept_attempt": 8
     },
     "tracemaker": {
      "unconnected": 88,
      "rule_errors": 10,
      "shorts": 0,
      "fab_violations": 335,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 2,
      "time_s": 3603,
      "outcome": "stopped at limit",
      "vias": 637,
      "peak_mb": 29241,
      "time_exact_s": 3602.8
     },
     "freerouting": {
      "unconnected": 106,
      "rule_errors": 208,
      "shorts": 0,
      "fab_violations": 288,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 13,
      "time_s": 3631,
      "outcome": "stopped at limit",
      "vias": 478,
      "peak_mb": 2965,
      "time_exact_s": 3631.2
     }
    },
    "image_files": {
     "zap": "compare/greatscottgadgets-hackrf-pro-zap-6t.webp",
     "tracemaker": "compare/greatscottgadgets-hackrf-pro-tracemaker-6t.webp",
     "tscircuit_60": "compare/greatscottgadgets-hackrf-pro-tscircuit.webp",
     "freerouting": "compare/greatscottgadgets-hackrf-pro-freerouting-6t.webp",
     "human": "compare/greatscottgadgets-hackrf-pro-human.webp"
    }
   },
   "id8-engineering_seven-hardware": {
    "results": {
     "zap": {
      "unconnected": 2,
      "rule_errors": 0,
      "shorts": 0,
      "fab_violations": 22,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 3601,
      "outcome": "stopped at limit",
      "vias": 205,
      "peak_mb": 8602,
      "time_exact_s": 3600.8,
      "attempts": 32,
      "kept_attempt": 5
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 1,
      "shorts": 0,
      "fab_violations": 43,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 2062,
      "outcome": "finished",
      "vias": 166,
      "peak_mb": 5663,
      "time_exact_s": 2062.1
     },
     "freerouting": {
      "unconnected": 18,
      "rule_errors": 7,
      "shorts": 0,
      "fab_violations": 25,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 0,
      "time_s": 608,
      "outcome": "finished",
      "vias": 126,
      "peak_mb": 1763,
      "time_exact_s": 608.3
     }
    },
    "image_files": {
     "zap": "compare/id8-engineering-seven-hardware-zap-6t.webp",
     "tracemaker": "compare/id8-engineering-seven-hardware-tracemaker-6t.webp",
     "tscircuit_60": "compare/id8-engineering-seven-hardware-tscircuit.webp",
     "freerouting": "compare/id8-engineering-seven-hardware-freerouting-6t.webp",
     "human": "compare/id8-engineering-seven-hardware-human.webp"
    }
   },
   "piotr-binkowski_kintex-pcie-board": {
    "results": {
     "zap": {
      "unconnected": 4,
      "rule_errors": 36,
      "shorts": 0,
      "fab_violations": 8,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 2,
      "time_s": 3601,
      "outcome": "stopped at limit",
      "vias": 959,
      "peak_mb": 27771,
      "time_exact_s": 3601.3,
      "attempts": 25,
      "kept_attempt": 3
     },
     "tracemaker": {
      "unconnected": 3,
      "rule_errors": 52,
      "shorts": 0,
      "fab_violations": 181,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 28,
      "time_s": 3603,
      "outcome": "stopped at limit",
      "vias": 540,
      "peak_mb": 25406,
      "time_exact_s": 3602.9
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 263,
      "shorts": 1,
      "fab_violations": 149,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 19,
      "time_s": 3116,
      "outcome": "finished",
      "vias": 350,
      "peak_mb": 8302,
      "time_exact_s": 3116.1
     }
    },
    "image_files": {
     "zap": "compare/piotr-binkowski-kintex-pcie-board-zap-6t.webp",
     "tracemaker": "compare/piotr-binkowski-kintex-pcie-board-tracemaker-6t.webp",
     "tscircuit_60": "compare/piotr-binkowski-kintex-pcie-board-tscircuit-60.webp",
     "freerouting": "compare/piotr-binkowski-kintex-pcie-board-freerouting-6t.webp",
     "human": "compare/piotr-binkowski-kintex-pcie-board-human.webp"
    }
   },
   "rapidanalysis_xerxes": {
    "results": {
     "zap": {
      "unconnected": 0,
      "rule_errors": 14,
      "shorts": 0,
      "fab_violations": 112,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 29,
      "time_s": 3601,
      "outcome": "finished",
      "vias": 522,
      "peak_mb": 13379,
      "time_exact_s": 3600.6,
      "attempts": 19,
      "kept_attempt": 14
     },
     "tracemaker": {
      "unconnected": 0,
      "rule_errors": 14,
      "shorts": 0,
      "fab_violations": 115,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 52,
      "time_s": 621,
      "outcome": "finished",
      "vias": 218,
      "peak_mb": 15665,
      "time_exact_s": 621.1
     },
     "freerouting": {
      "unconnected": 0,
      "rule_errors": 237,
      "shorts": 0,
      "fab_violations": 208,
      "vias_in_smd_pads": 0,
      "isolated_copper": 0,
      "hot_sections": 45,
      "time_s": 90,
      "outcome": "finished",
      "vias": 169,
      "peak_mb": 3897,
      "time_exact_s": 90.0
     }
    },
    "image_files": {
     "zap": "compare/rapidanalysis-xerxes-zap-6t.webp",
     "tracemaker": "compare/rapidanalysis-xerxes-tracemaker-6t.webp",
     "tscircuit_60": "compare/rapidanalysis-xerxes-tscircuit.webp",
     "freerouting": "compare/rapidanalysis-xerxes-freerouting-6t.webp",
     "human": "compare/rapidanalysis-xerxes-human.webp"
    }
   }
  },
  "setup": {
   "compute_unit": "thread",
   "zap_threads": 6,
   "tm_fr_cores": 6,
   "tm_fr_time_limit_s": 3600,
   "tm_fr_gpu": false,
   "tm_commit": "49fbd3c39796ed226a5b7d8f1bfde4f4997a6068",
   "tm_peak_memory_gb": 60,
   "tm_peak_memory_mb": 60155,
   "fr_java_heap_gb": 12,
   "zap_minutes": 60,
   "fr_peak_memory_gb": 8,
   "fr_peak_memory_mb": 8302,
   "zap_peak_memory_gb": 69,
   "zap_peak_memory_mb": 69313,
   "run_windows": "Runs on 14 October (UTC): TraceMaker and Freerouting 09:30 to 10:40, Zap! 12:35 and 16:14 to 17:15; all on the same machine type, with 6 consecutive vCPUs per board.",
   "zap_method": "router build re92d124 on 6 CPU threads per board: up to 6 routing attempts at once with different settings of the build, new ones as threads free up, until one has every connection and no short (the running ones then finish) or 60 minutes pass; keeps the best.",
   "same_as_1_core": [
    "tscircuit_60"
   ],
   "six_thread_run": {
    "zap": "best of attempts on 6 CPU threads within 60 minutes (2026-10-14)",
    "tracemaker_freerouting": "6 CPU threads, 60 minutes per board (2026-10-14)",
    "tscircuit": "uses one thread: its 1-core results",
    "scoring": "fab1 1.6 graded fab pass (KiCad 10.0.6 design-rule check with each board's rules after refilling pours, JLCPCB check, heat check); unrouted connections from pcbnew's ratsnest after refilling pours"
   }
  },
  "data_written": "2026-10-14T17:23:57Z"
 }
}