KiCad 7 Workflow Notes: What Changed From Version 6 That Actually Matters
The new constraint engine and interactive router improvements in KiCad 7 are real productivity wins. The footprint wizard regressions are equally real.

KiCad 7.0.10 on our hardware team's Ubuntu 22.04 workstations replaced KiCad 6.0.11 after a staged migration in Q4 2024. The constraint engine and interactive router are genuine upgrades. The footprint wizard and some library migration paths regressed. Here is what actually changed day-to-day — not the release notes marketing list.
Upgrade path we used
- Parallel install: KiCad 7 via official PPA
ppa:kicad/kicad-7.0-releases, projects copied — not opened in-place on 6 first week kicad-cli sch export pdfbatch-tested 42 archived projects — 3 had symbol lib table breaks- Git diff on
.kicad_pro/.kicad_sch— text format stable enough for review - Locked fab house outputs (Gerbers) from v6 reference board before trusting v7 exports
Team migration checklist
We ran a 90-minute workshop: net classes, DRC rules file anatomy, router mode cycling, and what not to auto-migrate (footprint wizard). Attendance mandatory before write access to hardware/ repo.
Rollback plan: keep KiCad 6.0.11 in Docker image kicad:6.0.11-focal for emergency Gerber regen from tagged releases — used once when 7.0.9 zone fill bug hit production panel.
Symbol and footprint library governance
We moved company symbols to git submodule kicad-libs/ with CI validating every symbol has Description, Datasheet URL, and MPN field. KiCad 7 ERC warns on missing fields more aggressively — good for us, painful during migration week.
Footprint assignment uses MPN-keyed table exported from Octopart — wizard disabled for production symbols.
Wins that stuck
Design Rules engine (DRC 2.0)
KiCad 7's custom rules in .kicad_dru replaced hacky DRC scripts we ran in CI.
Example — USB HS length match within 5 mil on our i.MX RT1062 carrier:
(rule "usb_hs_length"
(condition "A.netClass == 'USB_HS'")
(constraint length (max 5000 mil))
(constraint skew (max 5 mil))
)
Catches violations live during route instead of at Gerber review. Cut one respin on DP83825 RGMII length mismatch too — net class RGMII skew rule at 2 mil.
Interactive router push/shove
Shove mode on 6-layer DDR3 fly-by topology: fewer manual cleanups at escape via BGA. Not Altium-grade on dense BGAs, but 30% faster on our tracked 12-layer SOM design (internal time study, n=3 boards, same engineer).
Hotkey unchanged: / to cycle modes.
Schematic file stability
Multi-unit symbols behave better when editing in team — fewer "unit 2 detached" git conflicts. Still not merge-friendly; we lock sheets by directory ownership.
3D viewer STEP export
Export assembly STEP with MCAD-aligned origin — fixed offset bug from 6.0.9 that broke SolidWorks mates. STEP AP214 export now default; verify with FreeCAD 0.21.
Regressions and workarounds
Footprint wizard (QFN thermal)
Auto-generated thermal vias on 0.5 mm pitch QFN overlap drill with default 0.3 mm via / 0.15 mm annular on our fab's 6 mil class. Wizard in 6 had same issue but 7 changed defaults silently — DRC passed until fab DFM rejected.
Workaround: company template footprint QFN-32_5x5_P0.5 with vias manually offset; wizard disabled in onboarding doc.
Library table migration
Mixed ENVVAR and absolute paths in fp-lib-table — migration tool dropped two entries without error. Symptom: footprints show as ?? until re-linked.
Fix script:
kicad-cli fp export svg --footprint LIB:FP -o /tmp/test.svg # batch validate
We now CI-check all footprints resolve.
Gerber job file naming
Fab house Sierra Circuits portal wanted RS-274X without X2 attributes on one legacy flow — KiCad 7 Gerber job defaults include X2. Toggle in plot dialog: "Use Protel filename extensions" + disable X2 attribute for that vendor only.
Plugin API breaks
pcbnew.ActionPlugin modules written for 6 — 4 of 9 community plugins dead until authors updated. We pinned internal plugins to kicad 7.0.8 API; read release notes before 7.0.11 bump.
Version-specific bugs (7.0.10)
- Zone fill on odd-layer stack sometimes stale until save-close-reopen — known, workaround documented in KiCad gitlab #14822
- BOM export via
kicad-cli sch export bom— LCSC field mapping requires custom Python script still
Workflow we standardized
| Step | Tool | KiCad 7 change |
|---|---|---|
| Schematic capture | eeschema | ERC stricter on power flags — good |
| Layout | pcbnew | DRC rules file in repo |
| Review | GitHub PR + screenshots | 3D raytrace PNG from CLI |
| Fab | kicad-cli pcb export gerbers | Job file in fabrication/ |
Hardware cross-links
Thermal issues caught earlier with FLIR — see thermal camera PCB debugging.
Substituting passives during layout library churn ties to component substitution tiers.
What I'd do next
Migrate DRC rules to per-project files checked into git — already started; add CI job running kicad-cli pcb drc --format json on every PR touching .kicad_pcb.
Evaluate KiCad 8 when stable — not rushing; 7.0 DRC investment should amortize 12+ months.
Train juniors on net classes first — most router wins came from clean class setup, not tool magic.
Manish Bookreader
Electronics enthusiast, Embedded Systems Expert, Linux/Networking programmer, and Software Engineer passionate about AI, electronics, books, and cooking.

