{
  "animations": [
    {
      "bytes": 337656,
      "captions": [
        "0 vias \u00b7 9.3 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 1 by route objective",
        "2 finalists routed, the best route chosen",
        "2 legal starts, 2 shortlisted by capacity proxy",
        "2 parts \u00b7 2 nets \u00b7 2 layers",
        "Connector + LED",
        "Global placement \u00b7 start-00",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-00",
        "Placement",
        "Routed",
        "Routed \u00b7 start-00-route",
        "Routing: commit \u00b7 start-00-route",
        "Routing: negotiation \u00b7 start-00-route",
        "Two parts, external 2mA current source required (no omitted onboard resistor).",
        "Unplaced board"
      ],
      "case": "01-connector-led-2",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "01-connector-led-2.webp",
      "format": "webp",
      "frames": 110,
      "height": 710,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 9.272645,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 0,
        "violations": {}
      },
      "seconds": 16.68,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "473b4d9cd2b3d15d089a88e2ee4ed9be93c932fb9f45668c1c70036f2b08190b",
      "title": "Connector + LED",
      "trace_sha256": "f28ae5eb89992bd3ad03acd41b5bbecdee6e9673bcad1e71be9a840a8a90e048",
      "width": 800
    },
    {
      "bytes": 444674,
      "captions": [
        "0 vias \u00b7 12.8 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "3 finalists routed, the best route chosen",
        "3 parts \u00b7 3 nets \u00b7 2 layers",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Current-limited LED with movable resistor and LED.",
        "Global placement \u00b7 start-05",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-05",
        "Placement",
        "Resistor + LED",
        "Routed",
        "Routed \u00b7 start-05-route",
        "Routing: commit \u00b7 start-05-route",
        "Routing: negotiation \u00b7 start-05-route",
        "Unplaced board"
      ],
      "case": "02-resistor-led-3",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "02-resistor-led-3.webp",
      "format": "webp",
      "frames": 114,
      "height": 726,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 12.803711,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 0,
        "violations": {}
      },
      "seconds": 17.0,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "cc3c0caffeb2abaddc4b4417d2ac95f936d6a172da58b68c9093a23aa093c8a7",
      "title": "Resistor + LED",
      "trace_sha256": "ce7fe01703ff7d0f0b527b06080b8f061bc5c0b6ede47b0728c538a5e59b2889",
      "width": 800
    },
    {
      "bytes": 632352,
      "captions": [
        "0 vias \u00b7 31.1 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "3 finalists routed, the best route chosen",
        "5 parts \u00b7 4 nets \u00b7 2 layers",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Global placement \u00b7 start-02",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-02",
        "Placement",
        "Routed",
        "Routed \u00b7 start-02-route",
        "Routing: commit \u00b7 start-02-route",
        "Routing: negotiation \u00b7 start-02-route",
        "Two LEDs",
        "Two independent LED loads sharing supply and return.",
        "Unplaced board"
      ],
      "case": "03-branched-leds-5",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "03-branched-leds-5.webp",
      "format": "webp",
      "frames": 130,
      "height": 688,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 31.127039,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 0,
        "violations": {}
      },
      "seconds": 17.9,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "b5fd92ca316ca9a609323045463b5f02aa453927d633e13ced3af03301b171ef",
      "title": "Two LEDs",
      "trace_sha256": "1be04eb3d2b7be416174ef6aa8b45eff78a63dd2edeea394e465dfebbfc20f6c",
      "width": 800
    },
    {
      "bytes": 1021626,
      "captions": [
        "3 finalists routed, the best route chosen",
        "4 vias \u00b7 72.9 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "8 parts \u00b7 6 nets \u00b7 2 layers",
        "Global placement \u00b7 start-05",
        "Inverter indicators",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-05",
        "Logic-controlled complementary LED indicators and bypass capacitors.",
        "Placement",
        "Routed",
        "Routed \u00b7 start-05-route",
        "Routing: commit \u00b7 start-05-route",
        "Routing: negotiation \u00b7 start-05-route",
        "Unplaced board"
      ],
      "case": "04-inverter-leds-8",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "04-inverter-leds-8.webp",
      "format": "webp",
      "frames": 131,
      "height": 704,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 72.929719,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 4,
        "violations": {}
      },
      "seconds": 18.45,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "8bbcfecc598166e08669619e8edf5a13517b8a88b98351c768d538e9099b9558",
      "title": "Inverter indicators",
      "trace_sha256": "b0c3c1929f7681df859431b875c1fa786a20ddf8b92ed7569d003d025cd16b99",
      "width": 800
    },
    {
      "bytes": 2232607,
      "captions": [
        "10 parts \u00b7 7 nets \u00b7 2 layers",
        "3 finalists routed, the best route chosen",
        "7 vias \u00b7 120.1 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Global placement \u00b7 start-00",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-00",
        "Placement",
        "Routed",
        "Routed \u00b7 start-00-route",
        "Routing: commit \u00b7 start-00-route",
        "Routing: negotiation \u00b7 start-00-route",
        "TLC555 astable LED blinker with timing, control and supply capacitors.",
        "TLC555 blinker",
        "Unplaced board"
      ],
      "case": "05-timer-led-10",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "05-timer-led-10.gif",
      "format": "gif",
      "frames": 118,
      "height": 596,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 120.119987,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 7,
        "violations": {}
      },
      "seconds": 19.7,
      "seed": 0,
      "settings": {
        "colors": 128,
        "frame_ms": 80,
        "width": 640
      },
      "sha256": "c3c352d5e344161e9d7b154ddbb6695f545f4dadae674ce8fff3ed11d8b1c2ec",
      "title": "TLC555 blinker",
      "trace_sha256": "40b5ccf699d813455fc2a2384a0fda7870d4d488ea346ef7fff948f53645ef16",
      "width": 640
    },
    {
      "bytes": 1308820,
      "captions": [
        "10 parts \u00b7 7 nets \u00b7 2 layers",
        "3 finalists routed, the best route chosen",
        "7 vias \u00b7 120.1 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Global placement \u00b7 start-00",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-00",
        "Placement",
        "Routed",
        "Routed \u00b7 start-00-route",
        "Routing: commit \u00b7 start-00-route",
        "Routing: negotiation \u00b7 start-00-route",
        "TLC555 astable LED blinker with timing, control and supply capacitors.",
        "TLC555 blinker",
        "Unplaced board"
      ],
      "case": "05-timer-led-10",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "05-timer-led-10.webp",
      "format": "webp",
      "frames": 140,
      "height": 726,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 120.119987,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 7,
        "violations": {}
      },
      "seconds": 19.41,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "0d3d4a28b836dc9da6fbe6832532eb5663c7d12368010bb49a4ac6e756311ccc",
      "title": "TLC555 blinker",
      "trace_sha256": "40b5ccf699d813455fc2a2384a0fda7870d4d488ea346ef7fff948f53645ef16",
      "width": 800
    },
    {
      "bytes": 2032658,
      "captions": [
        "10 vias \u00b7 244.9 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "14 parts \u00b7 11 nets \u00b7 2 layers",
        "3 finalists routed, the best route chosen",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Global placement \u00b7 start-06",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-06",
        "Placement",
        "Routed",
        "Routed \u00b7 start-06-route",
        "Routing: commit \u00b7 start-06-route",
        "Routing: negotiation \u00b7 start-06-route",
        "TLC555 clock + CD4017B modulo-2 LED chaser; unused counter outputs intentionally NC.",
        "Two-stage chaser",
        "Unplaced board"
      ],
      "case": "06-chaser-14",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "06-chaser-14.webp",
      "format": "webp",
      "frames": 164,
      "height": 710,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 244.889886,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 10,
        "violations": {}
      },
      "seconds": 20.64,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "5c6373f2d05f53d84a1892d22c78993b3120204023972937a0df07203f4bae3d",
      "title": "Two-stage chaser",
      "trace_sha256": "80bfa85274b92dd1097a6b17f5a66803c7667fb1f25b6f9473133406929f5f21",
      "width": 800
    },
    {
      "bytes": 2142354,
      "captions": [
        "19 vias \u00b7 310.8 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "20 parts \u00b7 17 nets \u00b7 2 layers",
        "3 finalists routed, the best route chosen",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Five-stage chaser",
        "Global placement \u00b7 start-05",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-05",
        "Placement",
        "Routed",
        "Routed \u00b7 start-05-route",
        "Routing: commit \u00b7 start-05-route",
        "Routing: negotiation \u00b7 start-05-route",
        "TLC555 clock + CD4017B modulo-5 LED chaser; unused counter outputs intentionally NC.",
        "Unplaced board"
      ],
      "case": "07-chaser-20",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "07-chaser-20.webp",
      "format": "webp",
      "frames": 181,
      "height": 698,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 310.750275,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 19,
        "violations": {}
      },
      "seconds": 21.9,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "fea54510eac703272040ade6bf2f8f5fb11f213ecf9ac0e54eae139efb352d9d",
      "title": "Five-stage chaser",
      "trace_sha256": "711fe0b59df2fe95a80dc695eb20c30521d19d1272fb3dfb0c1a3596b3d2cc3d",
      "width": 800
    },
    {
      "bytes": 2042266,
      "captions": [
        "20 parts \u00b7 17 nets \u00b7 4 layers",
        "26 vias \u00b7 274.3 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 5 by capacity proxy, 2 by route objective",
        "3 finalists routed, the best route chosen",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Five-stage chaser with plane",
        "Global placement \u00b7 start-05",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-05",
        "Placement",
        "Routed",
        "Routed \u00b7 start-05-route",
        "Routing: commit \u00b7 start-05-route",
        "Routing: negotiation \u00b7 start-05-route",
        "TLC555 clock + CD4017B modulo-5 LED chaser; unused counter outputs intentionally NC.",
        "Unplaced board"
      ],
      "case": "08-chaser-20-plane",
      "coarse": false,
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3"
      ],
      "file": "08-chaser-20-plane.webp",
      "format": "webp",
      "frames": 182,
      "height": 698,
      "pillow": "12.3.0",
      "result": {
        "copper_length_mm": 274.296635,
        "opens": 0,
        "passed": true,
        "rules": {},
        "vias": 26,
        "violations": {}
      },
      "seconds": 21.99,
      "seed": 0,
      "settings": {
        "frame_ms": 60,
        "quality": 80,
        "width": 800
      },
      "sha256": "3a5267e8de32983220083090385800fc699672db6dba7de31e3c6a11972f9724",
      "title": "Five-stage chaser with plane",
      "trace_sha256": "265a75f590849cc7c161c3dfb6eb6a2be61dbf3a12905c545c502bc395b62ec6",
      "width": 800
    }
  ],
  "generated": {
    "ladder": {
      "engine_dirty": false,
      "engine_revision": "6e95a4c0b20f76f3f426d98d1914831d543f69ca",
      "fab_profile": "legacy",
      "image": null,
      "kicad": "10.0.6",
      "platform": "darwin-arm64",
      "sources_sha256": "93a12ef82d2ca69c651b5d13dd9f2f8cabbd2697a0abc55b9ad30a4de62a364c"
    },
    "render": {
      "date": "2026-09-30",
      "pillow": "12.3.0",
      "platform": "darwin-arm64",
      "renderer": 2
    }
  },
  "readme": {
    "case": "05-timer-led-10",
    "file": "05-timer-led-10.gif"
  },
  "readme_showcase": {
    "cases": [
      "07-chaser-20",
      "line-chaser-20"
    ],
    "file": "showcase-chaser-line.gif"
  },
  "schema": "yapnr-animations-v1",
  "showcases": [
    {
      "bytes": 4915934,
      "captions": [
        "19 vias \u00b7 310.8 mm copper \u00b7 HPWL 271 mm",
        "19 vias, 311 mm",
        "2 open, 23 vias, 399 mm",
        "20 parts \u00b7 17 nets \u00b7 2 layers",
        "20 parts \u00b7 17 nets \u00b7 2 layers \u00b7 seed 0",
        "20 vias \u00b7 322.5 mm copper \u00b7 HPWL 272 mm",
        "20 vias, 322 mm",
        "20 vias, 372 mm",
        "24 vias, 395 mm",
        "27 vias, 383 mm",
        "3 finalists routed, the best route chosen",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Five-stage chaser: free LEDs vs. a line group",
        "Global placement \u00b7 start-05",
        "Global placement \u00b7 start-07",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "LEDs held in a line group",
        "LEDs placed freely",
        "Legalization \u00b7 start-05",
        "Legalization \u00b7 start-07",
        "Placement",
        "Routed",
        "Routed \u00b7 start-05-route",
        "Routed \u00b7 start-07-route",
        "Routing: commit \u00b7 start-05-route",
        "Routing: commit \u00b7 start-07-route",
        "Routing: negotiation \u00b7 start-05-route",
        "Routing: negotiation \u00b7 start-07-route",
        "TLC555 clock + CD4017B modulo-5 LED chaser; unused counter outputs intentionally NC.",
        "The 07-chaser-20 chaser with LEDs D1 to D5 held in one line group (3.0 mm pitch), so the sequence reads as a row.",
        "Unplaced board",
        "chosen \u00b7 start-05",
        "chosen \u00b7 start-05-route",
        "chosen \u00b7 start-07",
        "chosen \u00b7 start-07-route",
        "line_group D1-D5 \u00b7 3.0 mm pitch",
        "proxy 101",
        "proxy 105",
        "proxy 126",
        "proxy 131",
        "proxy 143",
        "proxy 146",
        "proxy 186",
        "proxy 187",
        "proxy 210",
        "proxy 24.2",
        "proxy 299",
        "proxy 52.4",
        "proxy 83",
        "proxy 90.1",
        "proxy 95.3",
        "proxy 97.9",
        "start-00",
        "start-00-route",
        "start-01",
        "start-01-route",
        "start-02",
        "start-03",
        "start-04",
        "start-05",
        "start-06",
        "start-07",
        "target, not constrained here"
      ],
      "cases": [
        "07-chaser-20",
        "line-chaser-20"
      ],
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3",
        "--trace-placement-every",
        "5"
      ],
      "file": "showcase-chaser-line.gif",
      "format": "gif",
      "frames": 153,
      "height": 432,
      "kind": "compare",
      "labels": [
        "LEDs placed freely",
        "LEDs held in a line group"
      ],
      "pillow": "12.3.0",
      "results": {
        "07-chaser-20": {
          "copper_length_mm": 310.750275,
          "opens": 0,
          "passed": true,
          "rules": {},
          "vias": 19,
          "violations": {}
        },
        "line-chaser-20": {
          "copper_length_mm": 322.487476,
          "opens": 0,
          "passed": true,
          "rules": {},
          "vias": 20,
          "violations": {}
        }
      },
      "seconds": 24.27,
      "settings": {
        "colors": 64,
        "frame_ms": 100,
        "max_seconds": 30.0,
        "pacing": "showcase",
        "replay_pool": false,
        "width": 800
      },
      "sha256": "19515ff67d16a731a0e8a4c61faa98400fddf2ba783d3ae4b024ed454879b1b0",
      "title": "Five-stage chaser: free LEDs vs. a line group",
      "trace_sha256": {
        "07-chaser-20": "014284f9678febb4b453e1feb2c951f1d7764978c141b526904af00384c5164e",
        "line-chaser-20": "7b5a7efe4780561358465316f3f1dd703a8f5372e83a2ff473ce63048ec0e0ba"
      },
      "width": 800
    },
    {
      "bytes": 2415854,
      "captions": [
        "19 vias \u00b7 310.8 mm copper \u00b7 HPWL 271 mm",
        "19 vias, 311 mm",
        "2 open, 23 vias, 399 mm",
        "20 parts \u00b7 17 nets \u00b7 2 layers",
        "20 parts \u00b7 17 nets \u00b7 2 layers \u00b7 seed 0",
        "20 vias \u00b7 322.5 mm copper \u00b7 HPWL 272 mm",
        "20 vias, 322 mm",
        "20 vias, 372 mm",
        "24 vias, 395 mm",
        "27 vias, 383 mm",
        "3 finalists routed, the best route chosen",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "Five-stage chaser: free LEDs vs. a line group",
        "Global placement \u00b7 start-05",
        "Global placement \u00b7 start-07",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "LEDs held in a line group",
        "LEDs placed freely",
        "Legalization \u00b7 start-05",
        "Legalization \u00b7 start-07",
        "Placement",
        "Routed",
        "Routed \u00b7 start-05-route",
        "Routed \u00b7 start-07-route",
        "Routing: commit \u00b7 start-05-route",
        "Routing: commit \u00b7 start-07-route",
        "Routing: negotiation \u00b7 start-05-route",
        "Routing: negotiation \u00b7 start-07-route",
        "TLC555 clock + CD4017B modulo-5 LED chaser; unused counter outputs intentionally NC.",
        "The 07-chaser-20 chaser with LEDs D1 to D5 held in one line group (3.0 mm pitch), so the sequence reads as a row.",
        "Unplaced board",
        "chosen \u00b7 start-05",
        "chosen \u00b7 start-05-route",
        "chosen \u00b7 start-07",
        "chosen \u00b7 start-07-route",
        "line_group D1-D5 \u00b7 3.0 mm pitch",
        "proxy 101",
        "proxy 105",
        "proxy 126",
        "proxy 131",
        "proxy 143",
        "proxy 146",
        "proxy 186",
        "proxy 187",
        "proxy 210",
        "proxy 24.2",
        "proxy 299",
        "proxy 52.4",
        "proxy 83",
        "proxy 90.1",
        "proxy 95.3",
        "proxy 97.9",
        "start-00",
        "start-00-route",
        "start-01",
        "start-01-route",
        "start-02",
        "start-03",
        "start-04",
        "start-05",
        "start-06",
        "start-07",
        "target, not constrained here"
      ],
      "cases": [
        "07-chaser-20",
        "line-chaser-20"
      ],
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3",
        "--trace-placement-every",
        "5"
      ],
      "file": "showcase-chaser-line.webp",
      "format": "webp",
      "frames": 177,
      "height": 494,
      "kind": "compare",
      "labels": [
        "LEDs placed freely",
        "LEDs held in a line group"
      ],
      "pillow": "12.3.0",
      "results": {
        "07-chaser-20": {
          "copper_length_mm": 310.750275,
          "opens": 0,
          "passed": true,
          "rules": {},
          "vias": 19,
          "violations": {}
        },
        "line-chaser-20": {
          "copper_length_mm": 322.487476,
          "opens": 0,
          "passed": true,
          "rules": {},
          "vias": 20,
          "violations": {}
        }
      },
      "seconds": 24.27,
      "settings": {
        "frame_ms": 80,
        "max_seconds": 30.0,
        "pacing": "showcase",
        "quality": 60,
        "replay_pool": false,
        "width": 960
      },
      "sha256": "bb5c707b65a1317a6bea92361e747b13a8da5487057cc556c24b290939f0d6a5",
      "title": "Five-stage chaser: free LEDs vs. a line group",
      "trace_sha256": {
        "07-chaser-20": "014284f9678febb4b453e1feb2c951f1d7764978c141b526904af00384c5164e",
        "line-chaser-20": "7b5a7efe4780561358465316f3f1dd703a8f5372e83a2ff473ce63048ec0e0ba"
      },
      "width": 960
    },
    {
      "bytes": 2620990,
      "captions": [
        "12 parts \u00b7 8 nets \u00b7 2 layers",
        "12 parts \u00b7 8 nets \u00b7 2 layers \u00b7 seed 0",
        "12 vias, 179 mm \u00b7 J1\u00b7SW1\u00b7D1",
        "13 vias, 177 mm \u00b7 D1\u00b7J1\u00b7SW1",
        "13 vias, 183 mm",
        "3 finalists routed, the best route chosen",
        "8 legal starts, 3 shortlisted by capacity proxy",
        "8 vias \u00b7 198.5 mm copper \u00b7 HPWL 169 mm",
        "8 vias, 198 mm \u00b7 D1\u00b7J1\u00b7SW1",
        "9 vias \u00b7 176.9 mm copper \u00b7 HPWL 139 mm",
        "9 vias, 177 mm",
        "9 vias, 220 mm",
        "Global placement \u00b7 start-01",
        "Global placement \u00b7 start-05",
        "Hold-to-blink board: free vs. hard board-edge constraints",
        "J1, SW1 and D1 held on the south edge",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization \u00b7 start-01",
        "Legalization \u00b7 start-05",
        "Placed freely",
        "Placement",
        "Placement \u00b7 start-01",
        "Placement \u00b7 start-05",
        "Routed",
        "Routed \u00b7 start-01-route",
        "Routed \u00b7 start-05-route",
        "Routing: commit \u00b7 start-01-route",
        "Routing: commit \u00b7 start-05-route",
        "Routing: negotiation \u00b7 start-01-route",
        "Routing: negotiation \u00b7 start-05-route",
        "TLC555 blinker that runs while SW1 is held; supply connector, button and LED on the south edge (hard edge alignment).",
        "TLC555 blinker that runs while SW1 is held; supply connector, button and LED placed freely.",
        "Unplaced board",
        "chosen \u00b7 start-01",
        "chosen \u00b7 start-01-route",
        "chosen \u00b7 start-05",
        "chosen \u00b7 start-05-route",
        "edge_align south (hard): J1, SW1, D1",
        "global placement of 8 starts, replayed",
        "proxy 116 \u00b7 D1\u00b7J1\u00b7SW1",
        "proxy 116 \u00b7 J1\u00b7D1\u00b7SW1",
        "proxy 116 \u00b7 J1\u00b7SW1\u00b7D1",
        "proxy 138 \u00b7 D1\u00b7J1\u00b7SW1",
        "proxy 138 \u00b7 J1\u00b7D1\u00b7SW1",
        "proxy 138 \u00b7 J1\u00b7SW1\u00b7D1",
        "proxy 183",
        "proxy 25.4",
        "proxy 25.5",
        "proxy 25.6",
        "proxy 26.3 \u00b7 D1\u00b7J1\u00b7SW1",
        "proxy 27.4",
        "proxy 54.2",
        "proxy 67.3",
        "proxy 69.9",
        "proxy 70.2 \u00b7 J1\u00b7D1\u00b7SW1",
        "proxy 70.2 \u00b7 J1\u00b7SW1\u00b7D1",
        "proxy 71.4 \u00b7 SW1\u00b7J1\u00b7D1",
        "proxy 94.9 \u00b7 D1\u00b7J1\u00b7SW1",
        "start-00",
        "start-00-route",
        "start-01",
        "start-01-route",
        "start-02",
        "start-03",
        "start-04",
        "start-04-route",
        "start-05",
        "start-06",
        "start-07",
        "target, not constrained here",
        "the 8 starts, legalized"
      ],
      "cases": [
        "edge-io-12-free",
        "edge-io-12"
      ],
      "config": [
        "--initial-pool",
        "--initial-starts",
        "8",
        "--initial-finalists",
        "3",
        "--trace-placement-every",
        "5"
      ],
      "file": "showcase-edge-io.webp",
      "format": "webp",
      "frames": 281,
      "height": 476,
      "kind": "compare",
      "labels": [
        "Placed freely",
        "J1, SW1 and D1 held on the south edge"
      ],
      "pillow": "12.3.0",
      "results": {
        "edge-io-12": {
          "copper_length_mm": 198.473369,
          "opens": 0,
          "passed": true,
          "rules": {},
          "vias": 8,
          "violations": {}
        },
        "edge-io-12-free": {
          "copper_length_mm": 176.865291,
          "opens": 0,
          "passed": true,
          "rules": {},
          "vias": 9,
          "violations": {}
        }
      },
      "seconds": 27.65,
      "settings": {
        "frame_ms": 60,
        "max_seconds": 30.0,
        "pacing": "showcase",
        "quality": 70,
        "replay_pool": true,
        "width": 960
      },
      "sha256": "6ec854f3dfbc8433224d5e370cf42782d0db9c13882e812c1172a587d738e787",
      "title": "Hold-to-blink board: free vs. hard board-edge constraints",
      "trace_sha256": {
        "edge-io-12": "b783dea4c5265e90c0b6e0a1b452537d7c1da9043e068ea0d6248c3532eb5e56",
        "edge-io-12-free": "bdc26820f5887ac913592519a9aac683f603d5091a16ff59840b1e2f255a99ad"
      },
      "width": 960
    },
    {
      "bytes": 3195254,
      "captions": [
        "1 \u00b7 Blocks",
        "2 \u00b7 Top level",
        "3 \u00b7 Knitting",
        "32 parts \u00b7 28 nets \u00b7 2 layers",
        "32 parts \u00b7 28 nets \u00b7 2 layers \u00b7 3 blocks, 2 templates",
        "38 vias \u00b7 598.0 mm copper \u00b7 seed 0 \u00b7 rivals set aside: 14 by block rank, 3 by route objective",
        "4 top-level placements knitted, the best route chosen",
        "Blocks become macros",
        "Blocks: one layout per template \u00b7 bank_a and bank_b: one layout, 2 instances",
        "Blocks: placed and routed on their own boards \u00b7 2 templates, each on its own board",
        "Global placement",
        "Global placement \u00b7 top-02",
        "KiCad DRC verdict",
        "KiCad DRC: 0 unconnected \u00b7 0 violations",
        "KiCad: planes",
        "KiCad: writeback",
        "KiCad: zone refill",
        "Legalization",
        "Legalization \u00b7 top-02",
        "Routed",
        "Routed \u00b7 100% routed",
        "Routed \u00b7 top-02-route",
        "Routing: commit \u00b7 100% routed",
        "Routing: commit \u00b7 25% routed",
        "Routing: commit \u00b7 50% routed",
        "Routing: commit \u00b7 52% routed",
        "Routing: commit \u00b7 63% routed",
        "Routing: commit \u00b7 73% routed",
        "Routing: commit \u00b7 75% routed",
        "Routing: commit \u00b7 8% routed",
        "Routing: commit \u00b7 84% routed",
        "Routing: commit \u00b7 top-02-route",
        "Routing: negotiation \u00b7 0% routed",
        "Routing: negotiation \u00b7 top-02-route",
        "Routing: rip-up and reroute \u00b7 57% routed",
        "Routing: rip-up and reroute \u00b7 78% routed",
        "Routing: rip-up and reroute \u00b7 89% routed",
        "TLC555 clock and two CD4017B five-LED banks as three blocks (two templates), placed and routed hierarchically.",
        "Twin-bank chaser: hierarchical place and route",
        "Unplaced board",
        "bank_a",
        "bank_a, bank_b \u00b7 trial start-05",
        "bank_a, bank_b: 8 trial layouts, the best by rank chosen",
        "bank_b",
        "chosen \u00b7 start-05",
        "clock",
        "clock \u00b7 trial start-05",
        "debt 106 \u00b7 525 sq mm \u00b7 20 vias",
        "debt 109 \u00b7 525 sq mm \u00b7 20 vias",
        "debt 123 \u00b7 525 sq mm \u00b7 20 vias",
        "debt 77 \u00b7 394 sq mm \u00b7 26 vias",
        "debt 81 \u00b7 394 sq mm \u00b7 26 vias",
        "debt 84 \u00b7 394 sq mm \u00b7 18 vias",
        "debt 90 \u00b7 394 sq mm \u00b7 16 vias",
        "debt 99 \u00b7 525 sq mm \u00b7 20 vias",
        "each block template is placed and routed on its own board",
        "rank: opens, port debt, area, vias, copper",
        "start-00",
        "start-01",
        "start-02",
        "start-03",
        "start-04",
        "start-06",
        "start-07",
        "the blocks become rigid macros and are placed on the board",
        "the nets between the blocks are routed"
      ],
      "cases": [
        "hier-twin-bank-32"
      ],
      "config": [
        "--trace-placement-every",
        "5"
      ],
      "file": "showcase-hier-twin-bank.webp",
      "format": "webp",
      "frames": 214,
      "height": 662,
      "kind": "hier",
      "labels": [],
      "pillow": "12.3.0",
      "results": {
        "hier-twin-bank-32": {
          "copper_length_mm": 598.015992,
          "opens": 0,
          "passed": true,
          "rules": {},
          "vias": 38,
          "violations": {}
        }
      },
      "seconds": 31.22,
      "settings": {
        "budget_mb": 3.5,
        "frame_ms": 80,
        "max_seconds": 34.0,
        "pacing": "showcase",
        "quality": 60,
        "width": 800
      },
      "sha256": "6a963f53362a24740571e051122dbf0a469a32ddce9e1e982178fee610b490d0",
      "title": "Twin-bank chaser: hierarchical place and route",
      "trace_sha256": {
        "hier-twin-bank-32": "0fdf5a428a4451f8f4a319060ea04b2dcba25856feb3f5bf1af254956da01d60"
      },
      "width": 800
    }
  ],
  "showcases_generated": {
    "ladder": {
      "engine_dirty": false,
      "engine_revision": "c4db5fbe6b1f859cff8f880e7e71234b75d79cc6",
      "fab_profile": "legacy",
      "image": null,
      "kicad": "10.0.6",
      "platform": "darwin-arm64",
      "sources_sha256": "7a374be8ad44f5ae68b5ec8b111b5f48881cf50952ab77654edb03d3bd24d099"
    },
    "render": {
      "date": "2026-09-30",
      "pillow": "12.3.0",
      "platform": "darwin-arm64"
    }
  }
}
