KiCad
KiCad EDA: schematic capture, PCB layout, footprint libraries, and generating fabrication outputs.
KiCad is a free, open-source EDA suite capable of professional-quality schematic capture and PCB layout, and it is the tool most embedded hardware engineers reach for first. This subtopic covers KiCad at the practical, tool-specific level: the schematic-to-fabrication workflow, library management, and the routing features needed for controlled-impedance and differential-pair designs.
What Is KiCad?
KiCad is a full PCB design suite: a schematic editor (Eeschema), PCB layout editor (Pcbnew), footprint and symbol editors, a Gerber viewer (GerbView), and a PCB calculator utility, distributed under the GPL and developed with contributions from CERN, a dedicated core team, and the wider community. A KiCad project is a set of plain-text files (.kicad_pro, .kicad_sch, .kicad_pcb, plus .kicad_sym/.kicad_mod library files), which makes the entire design — schematic, layout, and libraries — cleanly version-controllable with Git. This subtopic is part of the PCB Design topic, which covers PCB design principles independent of tool choice.
Why KiCad Matters
- Zero licensing cost removes a barrier to professional layout — a startup or solo engineer can design a production-grade board without a commercial EDA subscription, and design files remain accessible without ongoing licence payments.
- Plain-text project files enable real version control — schematic and PCB changes can be diffed, branched, and reviewed in Git the same way source code is, which most commercial EDA file formats do not support natively.
- Library discipline determines long-term maintainability — a project's symbols and footprints, not just its schematic and layout, need the same care as any other design asset; a missing or mismatched footprint is a common source of last-minute fabrication failures.
- Fabrication output correctness is the last gate before money is spent — an error in Gerber layer selection, drill coordinate origin, or impedance-controlled trace geometry is invisible until boards come back from the fabricator wrong.
Key Concepts
- Project file structure —
.kicad_pro(project settings),.kicad_sch(schematic),.kicad_pcb(PCB layout) form the core of every project; all are plain text and diff cleanly in Git. - Symbol and footprint libraries — schematic symbols live in
.kicad_symfiles; PCB footprints live in.prettydirectories of.kicad_modfiles. Libraries can be project-scoped (travel with the project folder) or global (shared across all designs via the library table). See KiCad footprint and symbol library management. - Update PCB from Schematic — the netlist transfer step (F8) that pushes schematic connectivity and footprint assignments into the PCB editor; the standard point where footprint mismatches or unassigned symbols surface.
- Net Classes — per-signal-group rules (track width, clearance, via size) set in Board Setup → Design Rules → Net Classes; the mechanism that enforces controlled-impedance and differential-pair geometry across a layout. See controlled-impedance and differential-pair routing in KiCad.
- Gerber X2 — the modern Gerber format KiCad exports by default, embedding layer-function attributes so fabricator tools can auto-identify layers rather than relying on filename conventions. See exporting Gerbers from KiCad.
- Design Rule Check (DRC) — KiCad's real-time and full-board rule checker, validating clearance, annular ring, and net class compliance before a board is sent to fabrication.
Common Tools and Software
- PCB Calculator — KiCad's built-in utility (Tools → External Plugins, or standalone) for computing trace geometry against a target impedance, track current capacity, and other common PCB design calculations.
- GerbView — KiCad's bundled Gerber viewer, used to verify a fabrication output package (layer count, drill alignment, board outline closure) before submission.
- Interactive router — three routing modes (Interactive, Push and Shove, Walkaround) plus a dedicated differential-pair router with length-tuning meanders for matched-length routing.
- ngspice — KiCad's built-in SPICE circuit simulator, used at the schematic stage to validate a design's DC operating point, frequency response, and transient behaviour before committing to layout. See KiCad SPICE simulation.
- kicad-cli and the pcbnew Python API — a headless command-line tool for running ERC, DRC, and exports in CI without a GUI session, plus a Python module for scripting checks and generation tasks the built-in tools don't cover. See KiCad Python scripting and pcbnew automation.
Relevant Standards
- IPC-7351 — Generic Requirements for Surface Mount Design and Land Pattern Standard. KiCad's official footprint libraries follow IPC-7351 nominal (Class M) density; use it as the reference when creating custom footprints rather than scaling existing ones by eye.
- IPC-2141A — Design Guide for High-Speed Controlled Impedance Circuit Boards. The basis for the trace geometry KiCad's PCB Calculator computes for a target impedance.
Common Questions
Is KiCad good enough for a commercial, production PCB design?
Yes. KiCad is used for commercial products across consumer electronics, industrial equipment, and open-source hardware. Its practical limitations relative to commercial tools (Altium, Cadence Allegro) are mainly around large-team collaboration features, vendor-managed component database libraries, and advanced signal-integrity simulation for very high-speed designs. Basic schematic capture and layout capability, by contrast, is professional-grade for the vast majority of embedded product PCBs.
Can I import an existing Eagle or Altium design into KiCad?
Yes, with caveats. KiCad can import Eagle .sch/.brd files directly, and can import Altium .SchDoc/.PcbDoc files (import-only, no round-trip back to Altium). Conversion quality varies with design complexity: always verify the imported schematic connectivity and footprint assignments rather than assuming a clean 1:1 conversion, particularly for designs with hierarchical sheets or custom library parts.
How do I keep KiCad libraries consistent across a team?
Use a shared global library (referenced via a common library table checked into version control or distributed via a setup script) rather than letting each team member maintain independent local libraries. Store project-specific parts in a project-scoped library that travels with the repository. Review new library entries against the component datasheet before merging: library errors (wrong footprint, wrong pin mapping) propagate silently into every design that references the part.
What's the difference between KiCad and Altium Designer?
KiCad is free and open-source with plain-text, Git-friendly project files; Altium Designer is a commercial tool with stronger built-in team collaboration (Altium 365, database libraries) and more mature signal-integrity and PDN analysis tooling, at a significant licensing cost. See Altium Designer vs KiCad for the full comparison and decision guide. Zeus Design designs production PCBs in both KiCad and Altium depending on project requirements.
Knowledge Base
Workflow
- How to Use KiCad: Schematic Entry and PCB Layout Workflow — end-to-end KiCad workflow: project setup, schematic entry, footprint assignment, PCB layout, routing, DRC, and Gerber export
- How Do You Design a Hierarchical Schematic in KiCad? — sheet symbols, hierarchical labels and sheet pins, global labels, reusing sub-sheets, and how hierarchy flattens for PCB layout
Library Management
- How Do You Create and Manage KiCad Footprint and Symbol Libraries? — creating custom symbols and footprints, library file formats, project vs global scope, library table setup, and Git version control
Routing
- How Do You Route Controlled-Impedance and Differential Pairs in KiCad? — Net Classes, the PCB Calculator impedance tool, the differential pair router, length tuning, and via stitching
Fabrication Output
- How to Export Gerber Files from KiCad for PCB Fabrication — Gerber plot layer selection, drill file generation, coordinate origin alignment, Gerber X2 settings, and GerbView verification before fab submission
Automation and Scripting
- How Do You Automate KiCad with Python Scripting and the pcbnew API? — kicad-cli for headless CI checks and exports, the pcbnew Python object model, scripting custom DRC/ERC-style checks, and automating BOM and parametric footprint generation
Simulation
- How Do You Run SPICE Simulation in KiCad? — assigning SPICE models, ground reference requirements, .op/.dc/.ac/.tran analysis types, and where simulation fits before layout
Forum Discussions
- ERC errors I can't clear after first real schematic — 'PWR_PIN undriven' and 'pin not connected' in KiCad — power-input pin types, PWR_FLAG placement, and distinguishing genuine ERC violations from intentional no-connects
- PCB design rule check keeps failing — annular ring and acid trap errors I don't understand — annular ring minimums, acid trap geometry at acute-angle trace junctions, and fixing both without abandoning the layout
Forum Discussions
ERC errors I can't clear after first real schematic — 'PWR_PIN undriven' and 'pin not connected' in KiCad
First time drawing a schematic in KiCad that I actually intend to route a real board from, not just for reference. Components placed, wires
PCB design rule check keeps failing — annular ring and acid trap errors I don't understand
Doing my first real multi-component board (not a breadboard-to-perfboard thing, an actual two-layer PCB) and DRC is throwing a wall of red I