# KiCad

KiCad ist ein freies ECAD-Programmpaket zur Entwicklung von Leiterplatten in der Elektronik. Es wird von einer Gruppe von freiwilligen Entwicklern und zwei Wissenschaftlern des CERN entwickelt und steht unter der GPL. KiCad ist als vorkompiliertes Paket für Linux, Windows, MacOS und FreeBSD verfügbar, es basiert auf dem WxWidgets-Framework.

## Entwicklungsgeschichte

Im Jahr 1992 wurde KiCad erstmals veröffentlicht. Der Initiator des Projektes, Jean-Pierre Charras, ist Wissenschaftler am Laboratoire des Images et des Signaux (LIS) in Grenoble, Frankreich und Lehrer am IUT de Saint-Martin-d’Hères.
In 2012 wurde das Dateiformat für Boards und damit die Dateiendung von „.brd“ auf „.kicad_pcb“ umgestellt. Aktuelle KiCad-Versionen können beide Formate einlesen und abspeichern.
Seit 2013 arbeitet die Abteilung BE-CO-HT vom CERN an KiCad, was der Entwicklung einen Schub gab.
Ende des Jahres 2015 veränderte das KiCad-Team mit Version 4.0.0 den Release-Mechanismus. Zuvor gab es keine offizielle Installationsdatei zum Download und Nutzer mussten sich behelfen, indem sie den Quellcode selbst kompilierten. Seitdem erscheinen regelmäßig neue Versionen und zeitnah Patches für Bugs, sofern diese das Programm zum Absturz bringen.
Seit Dezember 2019 ist der Projektleiter (Maintainer) Wayne Stambaugh bei der KiCad Services Corporation (KiPro) fest angestellt.

## Komponenten

KiCad beinhaltet folgende Programmteile:
* KiCad – Grundmodul mit integrierter Projektverwaltung
* EESchema – Schaltplan-Editor
* Schematic library editor – Ein Editor, um Schaltplansymbole zu erstellen. Diese Komponente war in älteren KiCad-Versionen ein Teil von EESchema.
* CVpcb – Tool für die Verbindung eines Schaltplansymboles mit einem oder mehreren Bauteil-Footprints. Dieser Teil ist in neueren Versionen in EEschema integriert.
* PCBnew – Layout-Editor für Leiterplatten mit integriertem Footprint/Modul-Editor
* PCB footprint editor – Ein Editor, um Bauteil-Footprints zu erstellen. Diese Komponente war in älteren KiCad-Versionen ein Teil von PCBnew.
* Gerbview – Programm zum Datenaustausch im Gerber-Format, z. B. für Plotter oder Leiterplattenhersteller
* Bitmap2component – (experimentell) Werkzeuge zur Erstellung von Symbolen und Footprints aus Bitmaps (z. B. um Logos zu importieren)
* PCB Calculator – ein „Taschenrechner“ und Formelsammlung für Berechnungen rund um die Entwicklung von Schaltungen und Leiterplatten
* PL-Editor – Editor für den in KiCad üblichen Zeichnungsrahmen

## Arbeitsablauf
### EESchema – Schaltplan-Editor

Zuerst wird mit EESchema ein Schaltplan unter Verwendung der Schaltplansymbole aus der Symbolbibliothek erstellt. Dabei unterstützt EEschema sogenannte hierarchische Schaltpläne, das heißt, ein Schaltplan kann als „Blackbox“ Unterschaltpläne enthalten, die wiederum weitere Unterschaltpläne enthalten können. Umgekehrt kann auch aus vorhandenen Unterschaltplänen durch passendes Einbinden in übergeordnete Schaltpläne sehr schnell ein Schaltplan modular aufgebaut werden.
Schaltplansymbole können mit dem in EESchema enthaltenen Symboleditor angepasst oder komplett neu erstellt werden. Des Weiteren enthält EESchema ein Tool für Annotation (Automatisches Vergeben von Referenzbezeichnern für die verwendeten Bauteile) und für einen ERC (Electrical rule check), der den Schaltplan grob auf Fehler untersucht, zum Beispiel, ob alle Pins angeschlossen sind, mit Ausnahme derer, bei denen ausdrücklich kein Anschluss gewollt ist. Eine Netzliste kann in verschiedenen Formaten exportiert werden, wie für Spice oder den Specctra Autorouter. NGSpice ist integriert.

### CVpcb

Danach wird diese Netzliste in CVpcb eingelesen. Dort kann jedem Bauteil ein Footprint (in KiCad Module genannt) zugewiesen werden. Bei einem Technologiewechsel (z. B. beim Übergang von Through hole- auf SMD-Technik) können hier auch nachträglich andere Footprints eingetragen werden. Nach erneutem Abspeichern der Netzliste kann diese nun in das Platinenlayoutmodul von KiCad, PCBnew, eingelesen werden. Ein anderer Ansatz ist der direkte Verweis auf Footprints, der in ein Feld des Symbols eingetragen wird. Diese Footprints erscheinen dann als Voreintrag in CVpcb, wo sie auch noch editiert werden können. Fehlt der Verweis auf den Footprint im Symbol, bleibt die Liste in CVpcb an der Stelle leer, und muss dort editiert werden.

### PCBnew – Layout-Editor

In PCBnew werden die Bauteile auf der Platine platziert und mit Leiterbahnen verbunden. Auch können Netzklassen definiert werden, die z. B. Leiterbahnbreiten und Isolationsabstände festlegen. Das Verbinden kann manuell oder über den mitgebrachten Autorouter erfolgen. Auch ein externer Autorouter, der irgendwo auf einem Server läuft oder ganz fremde Software, wie z. B. der Specctra Autorouter, kann verwendet werden.
Das manuelle Routen wird von einem abschaltbaren permanenten DRC (design rule check) unterstützt, der überprüft, ob Leiterbahnbreiten und Abstände gemäß der Netzlistendefinition eingehalten werden und das Platzieren nicht DRC-konformer Leiterbahnen verhindert. Der DRC kann auch nach Abschluss der Arbeit extra gestartet werden, dann werden Ausnahmen und alle anderen DRC-Verletzungen gemeldet, so dass man entscheiden kann, ob man die Regelverletzung beseitigt oder als Ausnahme zulässt.
PCBnew beherrscht interaktives „Push & Shove“ sowie „matched pair“, um das manuelle Routen zu erleichtern. Allerdings basiert dieses auf der Hardwareunterstützung durch die Grafikkarte mit openGL, so dass es auf älteren Rechnern oder bei nicht unterstützter Hardware nicht verwendet werden kann. Gewöhnliches manuelles Routen funktioniert aber dann noch. Der Push & Shove-Router ist eine gute Alternative zu Autoroutern, besonders wenn man bedenkt, dass die Ergebnisse von Autoroutern ja im Allgemeinen auch noch manuell überarbeitet werden müssen.
PCBnew unterstützt das Einbinden schon vorhandener gerouteter Platinen, so dass aus verschiedenen Platinen Ausschnitte entnommen und zu einer neuen verbunden werden können. Allerdings müssen alle dafür nötigen Annotationen von Hand vorgenommen werden.
PCBnew enthält ein HF-Tool, mit dem bequem Stubs und Gaps definierter Abmessung erzeugt werden können. Des Weiteren können Polygone eingelesen werden, die als Shapefile (eine Liste von Koordinaten) vorliegen. Auf die Art und Weise lassen sich HF-Filterstrukturen und Antennen erzeugen, aber auch andere Kupferstrukturen wie Sensorflächen oder „Lötjumper“.
Die Ausgabe der Platine kann als Extended Gerber, PostScript, DXF, HPGL, SVG oder direkt auf einen Drucker erfolgen. Bohrdatenfiles, Pick+Place-Daten für SMD-Bestückungsroboter und eine Stückliste (BOM) als Text oder CSV können erstellt werden.

### Bauteilbibliothek

Es stehen viele Bauteilbibliotheken im Repository zur Verfügung, die durch die Arbeit der aktiven Community entstehen. Des Weiteren können Eagle-Bibliotheken direkt importiert werden. Mittlerweile gibt es auch externe Anbieter von Bibliotheken, wie z. B. SnapEDA, die einen Export ihrer Bibliotheken auch für KiCad ermöglichen, oder der Bauteilehändler Digi-Key, der ebenfalls Footprints und 3D-Modelle zu seinem Bauteilangebot zum Download auch für KiCad anbietet.

### Gerbview

Eine Besonderheit stellt die Fähigkeit von KiCad dar, „Extended Gerber“ mit dem mitgebrachten Gerberviewer „Gerbview“ nicht nur anzusehen, sondern auch als Layout in PCBnew importieren zu können.
Dort kann man die Platine bearbeiten, z. B. zu größeren Nutzen vervielfachen, und wieder als Extended Gerber exportieren. Eine weitergehende Bearbeitung ist aber nur möglich, wenn eine Netzliste besteht. Diese könnte durchaus von Hand unter Benutzung von Gerbview und PCBnew erstellt werden. Insofern ist KiCad für reverse engineering geeignet.
Der Programmteil Bitmap2component wandelt Bitmaps wahlweise in Symbole oder in Footprints um. Auf diese Weise können also auch Logos oder spezielle Muster für HF-Anwendungen in KiCad importiert werden, sofern sie als Bitmap vorliegen. Diese Funktion ist allerdings sehr neu (im Frühjahr 2011 eingefügt) und eher als experimentell zu bezeichnen.

### PCB Calculator

Der PCB Calculator enthält einige kleine Berechnungsprogramme bzw. Tabellen. Berechnet werden kann z. B. der Wellenwiderstand von Leitungen, Leiterbahnbreiten und -widerstände. Dimensionierungswiderstände von Spannungsreglern (z. B. LM 317).

### 3D-Modell

KiCad ermöglicht die 3D-Vorschau der erstellten Leiterplatten sowie einen Export des mechanischen Leiterplattenmodels (mit Bauteilen) im VRML- oder STEP-Format. Dafür müssen die verwendeten Bauteile auch als 3D-Modelle hinterlegt sein, z. B. im Format VRML (WRL) oder STEP. Standardbauteile sind bereits integriert. Zum Erstellen und Bearbeiten der Bauteile als 3D-Modell ist externe Software erforderlich, z. B. Wings 3D, FreeCAD oder Blender (alle ebenfalls Open Source).
Mit dem externen Werkzeug TTConv können AutoCAD-dxf-Dateien im- und exportiert werden.

### Automatisierung

KiCad besitzt eine Python-Schnittstelle, die aber zurzeit nur für das Board implementiert ist. Geplant ist etwas Ähnliches, wie Eagle es mit den ULPs bereits eingeführt hat. Da alle Dateien nicht im Binärformat, sondern als Textformat vorliegen, können diese relativ leicht extern manipuliert werden.

## Dokumentation

Für das KiCad-Projekt existieren umfangreiche offizielle Dokumentationen und Tutorials in verschiedenen Sprachen, welche auf GitLab unter dem offiziellen KiCad documentation project gepflegt werden.

## Adaptionen

Zur browserbasierten Anzeige von online, beispielsweise auf GitHub, veröffentlichten KiCad-Dateien der Version 6 und höher existiert seit 2023 KiCanvas.
Das PLM- und Inventarmanagementsystem InvenTree besitzt eine KiCAD-Integration.