KiCad - Schematic Capture #
Introduction #
In this tutorial and the next, we will take a simple design and turn it into a PCB. We will not concern ourselves with any of the electronics analysis or simulation, but instead focus on how to use the tools.
At a high level, the process of designing a PCB looks like making a schematic of the design, then importing the netlist from the schematic into a PCB editor. The free and open source KiCad is an excellent tool that works well. We will make use of it in this tutorial series.
Design #
We must, of course, know what we want to design before we can design anything and for this tutorial we are going to make a small negative resistor module that can plug into a breadboard easily. Negative resistors are useful in filter design and for building chaotic oscillators so building a small module for breadboarding serves many future projects.
The design is quite simple (we will not concern ourselves with how it works here). The figure below shows the schematic, ports and a rough sketch of what the design should look like.

Below are a few specifications that generally should be known before designing a PCB. I consider these the bare minimum specifications. Any more complicated design will certainly require more.
- Power:
- Supply Voltages: +/-15V
- Current: less than 10mA
- Power will be supplied from lab bench power supply
- Bandwidth: less than 100kHz
- Size: ~1x1.5in
- Ports:
- Gnd
- Vdd: +15V
- Vss: -15V
- Vin
- Enclosure: not applicable.
- Connectors: 4x1 right angle bread board header pins
- Materials: all obtained.
- Rough test plan: validate in lab by measuring IV curve.
Now with the design in mind, we can start working on schematic capture.
Starting KiCad #
Install KiCad V9.0.7 #
Install KiCad from the official website: https://www.kicad.org/.
KiCad is actively developed and probably by the time you read this tutorial, there will be a new version of KiCad release. For reference, this tutorial was created with KiCad V9.0.7. Please let me know if it becomes out of date and I will correct it.
KiCad Overview #
Opening KiCad will show the following window.

Kicad is composed of a couple smaller applications that are all very useful.
- Schematic Editor: is used to create schematics and also run Ngspice simulations.
- Symbol Editor: is used to create schematic symbols. You will often use this when importing non-generic components.
- PCB Editor: is used to design the PCB from the schematic.
- Footprint Editor: is used to create the physical model of each component in the design.
- Gerber Viewer: is a useful tool to check the gerber files created by the PCB Editor before sending them to the fab.
- Image Converter: isn’t used too often, but this tool lets one make special shapes in the layout (such as for RF transmission lines).
- Calculator Tools: Trace width, trace spacing, resistances, power capacity. All useful.
- Drawing Sheet Editor: is only used if you need custom branding or formatting for schematics.
- Plugin and Content Manager: lets you install any third party plugins.
Schematic Capture #
Starting Schematic Capture #
Click on the “New Project” button and create a project called, “negative_resistor”. Ensure that the “Create a new folder for the project” box is selected.

Now a small project structure will be created. Double click on the schematic to open it.

If this is the first time running KiCad, you will be prompted to select how to configure the global symbol library. Select “Copy default global symbol library table (recommended)” and continue.

This will present you with the schematic editor.

Configuring Schematic Format #
First, we need to configure the schematic format. Select “Page Settings…” in the top bar.

In the “Page Settings” dialog, fill any helpful identifying information and select the paper size for the schematic. I will select “USLetter 8.5x11in” for easy printing here in the US. Close the dialog box when finished.

Adding Components #
In the schematic window, press the “a” key to open the “Choose Symbol” dialog window. Search and select “R_small”. Then click “Ok”. Now, you will be able to place a resistor in the schematic window.

Repeat the process for the following components and arrange the components nicely in the schematic. See the Appendix for hotkeys to rotate and mirror symbols.
| Component | Qty |
|---|---|
| TL081 | 1 |
| R_Small | 2 |
| R_Potentiomeeter_Small | 1 |
| C_small | 4 |
| Conn_01x04_Pin | 1 |
| GND | 5 |
Now, your schematic should look something like the picture below.

Wiring #
Drawing Wires #
With our components in the schematic, we can now wire them together. First, let’s wire the bottom pin of C4 to GND. Hover over the bottom node and press the “w” key to start drawing a wire. Move the mouse to the top node of GND and click on the top node. This will end the wire. Press ESC to end a wire without saving.

Repeat the wiring process until the schematic looks like the following.

Adding Labels #
When we draw wires in KiCad between pins, we are connecting pins to “nets”. A net is a collection of pins that are all wired together (we will discuss this more later). Often it is inconvenient to draw wires to all the pins that need connecting. In such cases, we uses labels to connect pins. We have actually, already used a special label that is tied to a symbol: GND. Everywhere the GND symbol is connected, is actually a label to the GND net.
There are two types of labels in KiCad
- Global Labels: are labels that are scoped to all schematic sheets of a design (many designs will have multiple pages of schematics). These are useful for power nets that will be present on all parts of the design.
- Hierarchical Labels: are labels that are scoped only to the sheet they are on. These are good for local signal nets.
In this example, since the design is so simple and there is only one schematic sheet, there is no functional difference between Hierarchical and Global labels. However, for the sake of the exercise, we will use Global Labels for power and Hierarchical for signal.
Press “Cmd-L”/“Ctrl-L” to open the Global Label dialog. Create a label called “Vdd” that is “Passive”.

Place and wire the label into the positive power supply of TL081, C1, C2 and Pin 2 of J1 as shown in the schematic.

Next, create a Vss label and wire it into the negative power supply of the TL081, C3, C4 and Pin 3 of J1. The schematic should look like below.

As mentioned before the GND symbol is actually just a special Global Label. The Global Label dialog box shows all of the available Global Labels and one of them is GND. We can add a GND label and it will wire the net into all of the GND symbols. Let’s do so for the J1 pins.

With all of the power wired, we can now add the signal label. Press “h” to open the Hierarchical Label dialog and create a label called “Vin” with the bidirectional shape (the shape doesn’t really matter).

Wire Vin into the positive terminal of the TL081 and Pin 4 of J1 to give the following schematic.

Adding No Connects #
There are two terminals on the TL081 that are unconnected. We will not need to use them, but KiCad doesn’t know that so we must notate to KiCad these open terminals are not a mistake. Hover over pin 1 of the TL081 and press the “q” to place a no-connect symbol. Repeat for pin 5. The schematic should look like the following.

Configuring Components #
With all of our components in place and wired, we can now set all of their parameters. Select C1 and press “e” to open the symbol properties dialog. This is where you can set the value of the capacitor, the associated footprint (we will do this in a later step), the spice simulation model (not covered here) and many other parameters. For now, just set the value to 1u and click Ok.

Repeat the process for the other passive components for the values shown in the figure below.

Bill of Materials (BOM) #
At this point it is a good idea to create a bill of materials. This is especially important if you will be outsourcing the design assembly. There are a lot of good practices and tools within KiCad for creating a BOM which are beyond the scope of this tutorial. We will simply assume that all the components are already owned and we will be performing our own assembly.
Assigning Footprints #
The next step is to assign footprints to each of the components. A footprint is the physical structure required to solder the component to the board. The easiest way to set footprints is to open the “Assign Footprints” dialog by clicking the button in the top bar.

The Assign Footprints dialog has three columns. The left column is the footprint collection, the middle shows a list of all of the components in the design and their assigned foot prints and the right most column shows the foot prints in the selected footprint library. Here is where you will need to look at the data sheet for your components and figure out which footprint is the correct one. If KiCad doesn’t natively have the required footprint you can also make your own with the Footprint Editor (not covered here).
Select C1 in the middle column. Then select “Capacitor_THT” in the left column. Scroll down in the right column to C_Disk_D5.0mmW2.5mm_W2.5mm_P2.5mm and double click it. This will assign the footprint to C1. Repeat the process for the rest of the components as notated in the table below.
| Component | Footprint |
|---|---|
| C1 | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_W2.5mm_P2.5mm |
| C2 | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_W2.5mm_P2.5mm |
| C3 | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_W2.5mm_P2.5mm |
| C4 | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_W2.5mm_P2.5mm |
| J1 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Horizontal |
| R1 | Resistor_THT:R_Axial_DIN207_L6.3mm_D2.5mm_P10.16mm_Horizontal |
| RV1 | Potentiometer_THT:Potentiometer_Bourns_3296P_Horizontal |
| U1 | Package_DIP:DIP-8_W7.62mm |
When all the footprints are assigned, the table should look like the following picture.

Now, we have completed making the schematic.
Summary #
We have completed making the schematic and in the next tutorial we will design the PCB from the schematic. However, just because we have made the schematic, doesn’t mean the design will work. While not covered here, analysis and simulations are all required to give confidence in the design.
Appendix: Condensed KiCad Schematic Capture Hotkeys #
All hotkeys (key maps, shortcuts) can be found in listed (and editable) Preferences under Hotkeys. However, for convenience, below is a table of a few of the most useful default hotkeys.
| Key | Operation | Note |
|---|---|---|
| Ctrl-s | save schematic | |
| a | add symbol | |
| m | move selected symbol | |
| r | rotate selected symbol | |
| x | mirror selected symbol horizontally | |
| y | mirror selected symbol virtically | |
| w | wire tool | ESC to exit wire tool |
| Ctrl-L | create global label | |
| h | create hierarchical label | |
| q | add no-connect symbol | |
| e | edit symbol properties |