High-Speed Review Workflow¶
This workflow uses only MCP tools and headless-safe checks where possible. It is intended as a preflight before a human layout review, not as a replacement for field solving or lab validation.
1. Set the Project and Intent¶
Start by setting the active KiCad project, then record the nets and frequencies that deserve stricter routing and EMC checks:
kicad_set_project(project_dir="/path/to/project")
project_set_design_intent(
critical_nets=["USB_DP", "USB_DN", "PCIE_TX_P", "PCIE_TX_N"],
critical_frequencies_mhz=[5000.0, 8000.0],
thermal_hotspots=["U1", "U7"]
)
The critical_nets list is reused by placement scoring, EMC return-path checks,
and the high-speed review loop.
2. Check Stackup and Time-Domain Routing¶
Use pcb_get_stackup to confirm dielectric and copper data, then run
route_tune_time_domain for timing-critical nets. On KiCad 10 projects the tool
derives required length from per-layer dielectric data; KiCad 9 keeps the legacy
length-based fallback.
route_tune_time_domain(
net_name="USB_DP",
target_delay_ps=250.0,
layer="F_Cu",
tolerance_pct=5.0
)
3. Review Via Stubs¶
si_check_via_stub now reports the quarter-wave resonant frequency for each
stub and flags any stub within 10 percent of a frequency listed in
critical_frequencies_mhz.
si_check_via_stub(net_name="PCIE_TX_P", max_stub_mm=0.8, dielectric_constant=4.0)
Treat a CRITICAL resonance near ... MHz line as a routing-review escalation:
backdrill, use blind/buried vias, shorten the stub, or move the layer transition.
4. Score Placement Before Routing¶
Run pcb_score_placement after coarse placement. The score includes a
critical-net Manhattan length proxy and thermal-hotspot proximity signal, so it
can catch long high-speed detours and clustered hot parts before routing starts.
5. Route and Inspect FreeRouting Telemetry¶
When a DSN is available, route_autoroute_freerouting prefers Docker with the
pinned ghcr.io/freerouting/freerouting:2.1.0 image and falls back to the JAR
runner. The result includes routed percentage, total nets, unrouted nets, pass
count, wall time, SES path, and the last 4 KB of router output.
route_autoroute_freerouting(
dsn_path="output/routing/board.dsn",
max_passes=100,
threads=8,
exclude_nets=["GND", "SHIELD"],
drc_report_path="output/routing/freerouting.drc.json"
)
6. Run PI and EMC Preflight¶
For power and thermal risk, use pdn_calculate_voltage_drop,
pdn_check_copper_weight, and thermal_calculate_via_count. The thermal via
tool accepts both the legacy power_w mode and the package-envelope mode:
thermal_calculate_via_count(
package_power_w=2.0,
ambient_c=35.0,
max_junction_c=95.0,
theta_ja_deg_c_w=60.0,
via_diameter_mm=0.3
)
For EMC, call emc_check_return_path_continuity without a signal name to sweep
the design-intent critical nets automatically:
emc_check_return_path_continuity(reference_plane_layer="auto", search_radius_mm=2.0)
Any reported violation includes a simple geometry hint (net=..., radius=...mm)
so an agent can propose stitching vias or plane-continuity edits.
7. Commit a Checkpoint¶
If the board is improving, create a reversible checkpoint before the next iteration:
vcs_commit_checkpoint(message="High-speed preflight pass")
Keep manual SI/PI simulation and lab validation in the loop for final release.