Tutorials for KiCad – A Free Open Source Schematic and PCB Layout Editor

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

Intro:

kicad tutorial

This set of tutorials will cover some essentials to designing circuits and pcb layouts using kicad (link goes to author’s site + download), an open-source tool for circuit (board) design that’s free and has no restrictions on number of layers or size (like Eagle). We’ll focus more on the unintuitive things as well as tips & tricks rather than re-write the manual.

Contents:

KiCad Overview and Schematic Tutorial

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

The main KiCad project window:

The part of KiCad that may not be familiar to users of other CAD software is cvpcb. This assigns pcb footprints to components in the schematic. Unlike Eagle, where component libraries contain both schematic and footprint information, in KiCad the schematic version (symbols) of a component and its physical layout (“module”) are stored in completely different libraries, and must be mapped together with cvpcb. It’d be confusing, but you could map a resistor in the schematic to a capacitor’s footprint.

main kicad screen

The project file (.pro) contains preferences. For instance: component libraries that should be loaded with a project, trace width setting and drawing colors.

The main project window shows documentation files (like pdfs) as well as board and schematic files.

Making a Blinking LED with a 555 Timer:

Drawing the Schematic:

Open eeschema (the schematic editor) and click the tool that adds new parts.

add component in kicad eeschema

Click somewhere in the schematic to open the component selector.

kicad component selector

Now click “By Lib Browser” to see a list of all the libraries, their components and diagram previews. You can also type “*555*” (no quotes) and click “OK”, or type some keywords, like “audio” and click “Search KeyWords”. Not all components will have keywords, however.

kicad library browser

KiCad actually comes with a large set of pdf spec sheets that you can quickly access by clicking the documentation button.

 Click “Export to Schematic” to place the component.

Repeat the procedure to add a resistor, which is located in the “device” library and called “R”. You can also just type “R” in the “component selector” box.

kicad shift select copy

Make 2 copies of the resistor by holding down Shift and dragging a selection box over the resistor.

kicad rotate by pressing R

Now add a LED (also located in the device library), but before clicking to place it, hit “R” to rotate 90 degrees.

555 timer parts

Add a capacitor (C), polarized capacitor (CP) and Pot.

Finally, add power and ground connections by clicking the Add Power (“place the power”) button. add power connections You can also add power or ground connections using the Library Browser and normal Add Parts button–the Add Power button is a shortcut to the Power library.

add power in kicad add power in kicad add power in kicad

Add 9V and GND connectors.

Drawing Wires:

555 timer circuit in kicad

First, arrange the parts by hovering the mouse over them, and typing “M” or “R” to move or rotate.

Then select the Wire Drawing Tool. 

kicad connecting components

Note: you must start and end wires on the pins of components, it’s not enough that a wire visually connects with a component. For instance, if a wire is drawn between R1 and R3, R2 will not be connected.

erasing wires in kicad

Tip: To erase part of a wire, draw back over it.

connecting nets with labels

You can also connect nets and components by applying labels to wires. Just right click on a wire. Labels can be helpful for identifying traces when designing the pcb later on.

Where are the power and ground pins for the 555 chip?

show pins kicad

Clock “Show Pins” to see the hidden power pins.

hidden power pins kicad

Now you can see pin 1 and 8. Because they are marked as being power pins in the component library, KiCad automatically connects these pins to wires that have power pins labeled VCC and GND. Note: If your select a different power pin, say 9V+, the implied connection won’t work. You would have to unhide the hidden power pins and manually connect them.

Annotating Components (numbering… R? –> R1, R2, C1, U1, etc.):

annotating schematics in kicad

You need to number the components before moving on to the pcb layout. Click the Annotate Tool,  set the params, and kicad automatically numbers all the components.

annotating schematics in kicadannotating schematics in kicad

Adding values to components (10k, .01uF, etc.):

Just double click on the component to change its value.

 

 

<-Back                                                                                       Next->

Going from Schematic to PCB Layout in KiCad (using Cvpcb)

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

This section will explain the process of going from the schematic to pcb layout in KiCad. The process is a little bit more involved than in Eagle, and requires 4 steps:

  • First, make sure all components are annotated (numbered).
  • Generate a netlist that contains all the components and their connections.
  • Use cvpcb to assign pcb footprints to all the components (not necessary if new components have not been added.)
  • Load the netlist in pcbnew.

Netlist Generation:

generating a netlist in kicad

Assuming your schematic is already annotated (numbered), click the “Netlist Generation” button.

generating a netlist in kicad

Just click the “Netlist” button unless you want to generate one for a different layout program or circuit simulator.


Assigning PCB Footprints to Components using Cvpcb:

run cvpcb in kicad

Now run Cvpcb.

cvpcb in kicadfiltered component list in cvpcb

Click the filter button to only show capacitor footprints.

assigning a module or footprint to a component

Double click on the footprint (module) to assign it to the schematic component.

Inspecting Footprints:

 previewing modules in kicad's cvpcb

We’d like to use a cylindrical upright electrolytic cap for C2, but clicking the preview button reveals that none of the choices in the filtered list look right.

After clicking “display footprints list documentation”, we can look through all of the built-in footprints and pick a better choice. Turn off the filtered list and choose C1V8.

Continue mapping the components, and then click Save to store the mappings in the netlist.

But wait, if it’s saving with the same name (.net) that was used when eeschema made a netlist, won’t it overwrite the original file?

When either eeschema or cvpcb saves a netlist, it doesn’t overwrite a pre-existing netlist, but rather adds or changes info inside one.

before and after cvpcb saves a netlist

The above picture shows the netlist (.net) file before and after cvpcb maps the modules. There are “noname” placeholders that get filled in by footprints after cvpcb runs.


Loading components in Pcbnew:

run pcbnew to begin making the pcb layout

Now that modules have been assigned to the components, run Pcbnew to begin designing the circuit board.

read netlist in pcbnew

First, click the “read netlist” button.

click the read net list button to load components

Click the read netlist button to load components.

You’ll do this same procedure when you make changes to the schematic:

  • annotate
  • write netlist (from eeschema)
  • run cvpcb (if new components were added)
  • read netlist (from pcbnew)

It’s a little tedious, that’s how the system works (to the best of my knowledge–add a comment if wrong!)

 

Some of the options when reading in a netlist can be dangerous. I’d recommend backing up your .brd layout file before reading from any netlists, as there’s no undo in pcbnew yet.

Say, for instance, you’ve added screw holes that aren’t in your schematic or netlist. If you check “Remove Extra Footprints” it will delete those screw holes when you read in the new list.

 

components loaded into pcbnew from netlist all on top of each other

 

 

<-Back                                                                                       Next->

Designing PCBs in Kicad and PcbNew:

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

Contents:

Arrange Components:

Grid First!

adjust the grid size in kicad adjust the grid size in kicad

You’ll probably want to adjust the grid size before moving anything. The pull down contains the user grid size as well as several sizes listed in mils (thousandths of an inch).

Group Move:

move a group of components by selecting

When you first read a net-list, all the components will come in on top of each other.

Start off by moving the whole pile of components by drawing a selection rectangle around them and then click in the middle of the sheet.

Auto Un-Piling

turn on auto-move moderight click and select move all to unpile the components

Pcbnew will automatically unpile the components. First, enable the automatic mover by clicking the “Mode Module” button in the top toolbar. Then right click and select “Move All Modules”. Pcbnew also has an “auto placer,” which is different in that it tries to minimize the length of the connections between the modules (the ratsnest). You can fix components to prevent them from being moved by either command.

General Moving and Rotating–use keyboard shortcuts:

move components by pressing m or r

Continue moving components around by hovering the mouse pointer over them, and then pressing “m” or “r” to move or rotate.

Rats Nest (show rubber bands where all connections should be):

show the rats nest

<-Back                                                                                       Next->

Designing PCBs in Kicad and PcbNew: Drawing the Board Outline

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

Drawing the Board Outline:

edges.gif

drawing a board outline with the polyline tool

First select the edges layer, and then draw an outline using the line tool. Double click to finish the poly-line.

Tip: Drawing set lengths and measuring:

measure by hitting space bar to zero the relative position readout.

Hit space bar at the start of a line to zero out the relative coordinates at the bottom of the screen. The coordinates will then measure from that point.

 

<-Back                                                                                       Next->

designing PCBs in Kicad and PcbNew: Drawing Traces

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

Drawing Traces:

Selecting and switching between layers:

picking the copper layer in kicad

Pick either the copper or component layer to draw traces on (unless you’re making a board with more than 2 layers). The copper layer is traditionally the “bottom,” whereas the component layer is the “top,” or the side with the components.

Pressing the “v” key switches between these two layers. So if you start out on the wrong layer, press Esc, and then “v” and start again. “v” also creates a via if you’re in the middle of drawing a traces.

Drawing Traces:

select the trace tool click to set bend points when drawing traces in kicad

Select the pads and trace tool to begin drawing traces. Click a pad to begin, and then click to make bend points and double click to end a trace.

Clicking at B fixes node A, and also sets the slope of segment AB. Hitting backspace undoes node points one at a time.

If you get an error along the lines of “near track end” or “too close to via,” some part of the trace you’re trying to draw is intersecting with another trace from a different net. Or the clearance is not being maintained.

Deleting tracks:

deleting tracks in kicad

To delete tracks, first make sure the trace and pad tool is selected select the trace tool , then hover over a trace and hit “backspace” to delete one segment or “delete” to remove a complete track between two pads.

Vias:

press v to make a via in kicad

Press the “v” key to make a via during a draw operation, and also to switch layers when not drawing.

Changing Track Widths:

changing track sizes in kicad changing track sizes in kicad

Most pcb manufactures won’t go smaller than .007 (7 mils) inches trace width and clearance without charging extra. It’s a good idea to make power and ground traces as think as possible.

7 mil trace in kicad track clearance markings while drawingchanging track width

To change an existing track’s width, first change the overall program’s track width using the dialog as before or the pull-down menu, and then right click on the trace. Via sizes are changed the same way.

Notice that I did not use the “Select Track Width” in the first level of the right-click menu. That applies to the global setting, and will not change a track that you just clicked on. If you right-click and lock some traces, you can use this global setting to change a large group of traces without affecting the power traces, for instance.

Don’t delete, just redraw:

redo traces by drawing somewhere else

If you re-draw a trace somewhere else, KiCad automatically deletes the connection that you replaced, so there’s no need to first delete it.

Changing Track /Trace Layers:

As far as I know, the only way to change a trace’s layer is to re-draw it.

Dragging Traces:

Just right click on a trace or node and select Drag Segment, Drag Node or Drag Segment keeping Slopes, which keeps the angle the same on the two adjoining trace.

Highlighting Nets:

highlighting nets

It can be helpful to highlight all the traces and pads that should be connected together (a net).

 

<-Back                                                                                      Next->

designing PCBs in Kicad and PcbNew: Undo and Adding Screw Holes

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

UnDo… not yet, but there is an UnDelete:

undelete in kicad's pcbnew

It’s pretty easy to accidentally delete an entire track, so this is actually very helpful. Unfortunately, there is no general purpose undo that I know about.

Adding Screw Holes:

One of the quirks of KiCad is that you can’t just drill a hole, you need to make a one-pad component that has the right sized hole for your screw. The module called “1PIN” is the right size for a 4-40 screw.

adding new modules inside pcbnew

Click the “Add Modules” button.

type in the module name for 1PIN

Type in 1PIN and click OK or click “List All” to browse by library.

place the screw hole and repeat for the other 3 corners

Place the screw hole and repeat for the other 3 corners.

 

<-Back                                                                                       Next->

Designing PCBs in Kicad and PcbNew: Changing Parts

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

Changing Parts:

If you want to delete, add or functionally change a component, it’s best to change the schematic and repeat the entire process again:

  • Make changes in eeschema, re-annotating the components if necessary (putting numbers in for R?, C?, etc.)
  • Save netlist in eeschema (schematic editor)
  • Run Cvpcb and assign a footprints / modules to the new components
  • Read the netlist again in Pcbnew (backup the .brd first!)

If you’re just changing the footprint of a module, for instance, going from a 1/4W resistor to a larger 1/2W, you can make the changes just in Pcbnew (explained below).

Deleting, Adding or Making other Major Changes:

As just stated above, make the changes in the schematic using eeschema. We’ll add a 2-pin header for power, and replace the pot with a fixed resistor.

adding a 2 pin connector in kicad / eeschema2 new parts in kicad

Add the 2-pin connector, wire it up, delete the pot and re-wire a resistor in its place.

generating a netlist in kicad

Again, save the netlist, and then open Cvpcb.

cvpcb kicad

The new netlist should have two blanks in it now. Assign the module SIL-2 to the CONN_2 connector and another R4 to the resistor. Save the netlist again.

read netlist in pcbnew

Open Pcbnew and click the “Read netlist” button.

click the read net list button to load componentsclick the read net list button to load new components

If you just click “Read Current Netlist” in the dialog without changing any options, it adds the two new components, but doesn’t delete the old ones and their stale tracks.

click the read net list button to load new components 

Selecting “Change” and “Delete” under “Exchange Module” and “Bad Tracks Deletion” gets rid of some of the bad traces, but still doesn’t delete module RV1. Had RV1 been labeled R4 before, it would have indeed deleted the module and replaced it with the new R4.

But since RV1 has a different name, the only way to get rid of it is to manually delete it or select “Remove Extra Footprints” under “options.” We can’t select that option, however, because that would delete any modules that are not in the netlist (or the .cmp file), which includes our screw holes.

555 timer circuit

Changing Just a Module, and Not the Circuit:

This can be done solely in Pcbnew without going back into Cvpcb or Eeschema.

You can either swap out a module for a different one from the library, or actually edit the silk screen and pin layout.

First, right click on a component and edit the footprint.

Then click “Change Module”.

Type in “R5” or Browse to find a new module, then click “Change Module”.

A new, longer resistor footprint should be in place. Although the netlist didn’t change, another file also used to keep track of modules has: the .cmp file. Next time you run Cvpcb, it will already show a new R5 module mapped to R4. The naming convention is extremely confusing here–R4 is a component label, and R5 is actually a foot print name.

By clicking “Edit Module” in the above Module Properties dialog, you could open up the module editor and actually change the shape and pin arrangement of the footprint. The resulting module would be saved in the .brd file, and not a library (I think).

 

<-Back                                                                                       Next->

Designing PCBs in Kicad and PcbNew: Adding Copper Fills/Zones

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

Adding Copper Fills / Zones:

In KiCad, filling an area with copper does not create any connections, so the first step is to finish drawing all the traces as normal.

Use the highlight tool to highlight the net for which you will be creating a zone(GND in our case).

 

Select the zone tool and click somewhere to start the outline (this will bring up the zone dialog).

Select the NET, layer and pad options, which is how the zone will connect to pads that are part of the net. If you choose “include pads,” the copper fill will completely connect to the pad, which will make it very hard to solder as a large amount of heat will be drawn away. The “thermal” connection option makes several fingers that connect the pad to the fill area, thus reducing the thermal connection so it’s easier to bring the pad up to temperature during soldering.

Also, the zones are filled with individual trace lines, so choosing a grid that’s big will create large gaps, and choosing a grid that’s too small will create extremely large files. The KiCad author recommends .01″

Draw the Zone:

Adding Cutouts:

Right click with the zone tool on an existing zone outline.

Filling the Zone:

Just right click in the boundary and select fill.

 

<-Back                                                                                       Next->

Designing PCBs in Kicad and PcbNew: Making Gerbers (files needed by the manufacturer)

NOTE: This tutorial was written in 1847, and kicad has changed a lot since then!

Making Gerbers (files needed by the manufacturer):

making gerber with plot from the file menu

For a 2 layer board, you would commonly want files that represent the metal on the top and bottom (component and copper, respectively), top and bottom solder mask (the green stuff), the top silk screen, the board outline (edges), and a drill file (click “Create Drill File” in addition to “Plot”).

<-Back                                                                                       Next->

About

CuriousInventor launched in late 2006 (pre-arduino era!) as a place to enable hobbyists, students, and musicians to create their own technology. We sold open-source kits and tools, and offered numerous guides & videos on things like soldering, metal working, screws, electronics, and more. 

The store is now mostly empty, but we’ve kept the product pages and guides up since they have useful information. Many of our guides and videos still rank on the first page of google searches and have been seen millions of times. Content on this site and the CuriousInventor YouTube channel produced by Scott Driscoll.

Top Videos