KiCad 9.x: Basic Tutorial#
- Created: `2026/02/26
- Environments
- macOS Ventura 13.3
- KiCad Version 9.0.7
KiCad is an open source software suite for Electronic Design Automation (EDA). The programs handle Schematic and PCB design. In this tutorial, we will explain how to design a simple breakout board for the XIAO.

1. install#
Download KiCad, install and launch it.
2. Create a project#
Push the ” new project” icon, or File > New Project. Enter a project name. It will create .kicad_sch(for a schematic) and .kicad_pcb(for a board design) files.

3. Add the fab library#
Add the KiCad component library based on the the Fab Inventory.
Follow the Gitlab instruction.
4. Schematic Design#
Schemac Design Flow:#
-
Add Components Select the required components from the component library and place them in the schematic. Rotate and move the placed components to arrange them neatly. (They do not need to match the physical placement on the PCB.)
-
Wiring
Connect the components using wires. Rotate or move components if necessary to improve readability. -
Set Component Values Assign or edit the component values (e.g., resistance, capacitance, part name).
-
ERC (Electrical Rule Check) Check the schematic for electrical connection errors.
4.1 Add components#
Open .sch file. In adding symbols, it is a quite useful to use hotkeys. If you press Command + F1 key, hotkey list will show up. You don’t learn by heart all of them soon, but here is some often-used hotkeys.
To exit the current tool or mode, press the ESC key to return to the default selection mode.
To select a component, switch to selection mode and either drag a selection box around the component or click near the center of the component symbol.
| hotkeys | description |
|---|---|
| A | Add a new symbol to the sheet |
| R | Rotate |
| M | Move (wires will be disconnected) |
| G | Grab and move a symbol while keeping wires connected |
| L | add a Label |
| W | Start drawing a Wire |
| V | edit Value |
| E | PropErties |
Tips:
By convention, schematic components are arranged to clearly show the signal flow. Inputs are placed on the left and outputs on the right. Power nets (e.g., VCC, 5V, 3V3) are typically placed at the top, and GND at the bottom.
Parts list:
- XIAO Socket x1
- LED x2
- Resistor x2
- Diade x1
- Tactile switch x1
- Pin header 7pin x 1, 6pin x 1, 3pin x 1
4.1.2 XIAO socket#
Press A or click
.
Search xiao, then select socket. Press OK and place it (click) on your schematic sheet.
4.1.3 Pinheaders#
Select necessary pin headers or sockets in the fab library.
4.1.4 Tactile Switch#
Select tactile switch in the fab library.
4.1.5 LED#
Select 1206 size LED in the fab library.
4.1.6 Resistor#
Select 1206 size resistor.
4.1.7 Diode#
Select shotkey diode. Currently there is the diode in the Fablab Kamakura inventory. So select the “SOD123”.
4.1.8 Power Flag#
Power Flag is a KiCad-specific symbol and does not represent a physical component.
It is used to indicate that a power net is actively driven, allowing ERC to recognize the net as properly powered and preventing false error warnings.
Add one Power Flag to each power net. In this example, we use three Power Flags for 5V, 3V3, and GND.
4.1.9 GND#
Select GND symbol.
4.1.9 Check all Symbols#
Now you’ve added all symbols. Well done!
4.2 Wiring#
Circuit Design Concept#
-
To create a generic breakout board for the XIAO, all pins are routed to pin headers.
-
Multiple power and GND pins are provided for flexibility and easier external connections.
-
The 5V pin on the XIAO is VBUS, which can be used as either an input or output. It is routed to two separate header pins: one for input and one for output. A Schottky diode is added on the input side to prevent reverse current. A power indicator LED is connected in parallel to the 5V input line. A large resistor value is used to limit the current so that it does not affect the main circuit.
-
To meet the assignment requirements, a tactile switch is connected to D9. The pin is intended to use the internal pull-up resistor in the code, so no external resistor is added. D9 is also routed to a pin header in parallel. If the switch is not used, the pin remains open and can be used for other purposes.
-
D10 is directly connected to a pin header for general-purpose use. By shorting (joining) it to the adjacent LED header pin, D10 can also be used for LED control.
Wiring Methods#

-
Direct Connection
Move the cursor near a component pin (the small circle). KiCad will automatically enter wiring mode. Alternatively, press W or select the Wiring tool from the toolbar.
Click on the pin to start a wire, then draw the wire to the target pin and click to connect it.
You can click in the middle of the wire to create bends.

-
Connecting with Net Labels
For components that are far apart, you do not need to draw a long wire across the schematic. Instead, you can connect them using net labels.
Place the same net label on multiple wires, and KiCad will treat them as electrically connected, even if no physical wire is drawn between them.
This keeps the schematic clean and easier to read.
To place a net label, press L or select the Net Label tool from the toolbar, then type the label name and place it on the wire.
In a single-sheet schematic, a Net Label is sufficient.
Global Labels
are typically used for multi-sheet designs.
Both will work without errors, but they serve different purposes.
Handling Unused Pins
Any intentionally unconnected pin must be marked with an “X” (No Connect flag).
This indicates that the pin is deliberately left unconnected and prevents ERC warnings.
In this circuit, J3 is a 5-pin header. However, since a 5-pin footprint with a 1.4 mm drill diameter was not available in the library, a 6-pin footprint was used instead. Therefore, pin 6 must be marked with an “X” to indicate that it is unused.
Example Wiring Result#
This is one example of how the components can be connected.

4.3 Set Component Value#
Assign values to the resistors. Select a resistor and press V to open the Edit Value Field dialog.
Set the LED on D10 to 470 Ω, and the LED on 5V IN to 2.2 kΩ. The 2.2 kΩ resistor value is based on the power LED resistor shown in the publicly available XIAO schematic.

4.4 Electrical Rule Check(ERC)#
Run ERC to check the continuity in your schematics. Click a icon to open Electrical Rules Checker.

The example shows an error and an warning. The wire from the tactile switch is currently open.
After connecting it to GND and running ERC again, there are no warnings or errors.

5. PCB Design#
PCB Design Flow (Single-Layer Board)#
-
Open PCB Editor & Update from Schematic Import schematic data to PCB editor.
-
Component Placement Arrange the components logically within the board area.
-
Routing Route all tracks on one copper layer.
-
Define Board Outline Draw the board outline on the Edge.Cuts layer.
-
DRC (Design Rule Check) Run DRC to ensure there are no unconnected nets or clearance violations.
-
Generate Fabrication Files Plot the required files for PCB milling.
5.1. Open PCB Editor & Update from Schematic#
In the Schematic Editor, click the PCB Editor icon to open the PCB Editor.

Then click the Update PCB icon
to transfer the components and connections.
The components will appear in the PCB Editor with ratsnest lines showing the electrical connections. If the components appear outside the board outline, select all components and drag them into the board area.

5.2. Component Placement#
Arrange the components logically within the board area. Consider routing simplicity and mechanical constraints.
| hotkeys | description |
|---|---|
| R | Rotate |
| M | Move (wires will be disconnected) |
| G | Grab and move a symbol while keeping wires connected |
| X | Route |
Click the 3D viewer icon
from the toolbar.

5.3. Routing#
Routing is the process of connecting components on the PCB according to the schematic. Each ratsnest line must be replaced with a copper trace. Good routing ensures reliable electrical connections and clean board layout.
5.3.1 Set Design Rules#
Before starting the routing process, design rules such as trace width and clearance must be defined. They ensure that:
- The board can be manufactured correctly.
- Electrical connections are reliable.
- Tracks can handle the required current.
- Clearance between copper features is safe.
Without proper design rules, the PCB may fail during fabrication or operation.
-
Select”Edit Pre-defined Sizes” from the top tool bar.
-
Select “Constraints”, then set clearance and minimum track width.
-
Select “Net Classes”.
Net Classes are used to control routing rules for different types of signals.
-
Adjust the Default value.
-
Add a “POWER” class and set wider trace widths.
Wider traces reduce resistance and allow higher current flow. -
Check the net names in the Nets tab on the right. Assign the power-related nets to the Power class in Netclass Assignments. Once assigned, the defined rules (such as trace width) will be automatically applied during routing.
-
AdvancedTips
You can register custom trace widths in Predefined Sizes in the routing settings.
This allows you to route traces with widths different from those defined in the Net Classes.
However, you cannot set a trace width smaller than the minimum value defined in Constraints.
To use a different trace width, select the desired width from the Width menu in the top-left corner of the screen, then start routing. After finishing, switch back to Track: use netclass width.
5.3.2 Routing#
Routing Tips:
-
Keep traces as short as possible
-
Use Wider Traces for Power
-
You Can Route Under Components
-
Use 0Ω Resistors as Jumpers
About PCB Layers
A PCB is made of multiple physical layers, each serving a different purpose. By selecting the correct layer before drawing, we ensure that each element is placed in the proper physical layer of the board.
This time, we use following layers:
-
F.Cu (Front Copper)
The top copper layer where traces are routed on the front side of the board. -
B.Cu (Back Copper)
Normally, B.Cu is used for routing traces on the back side of a double-layer PCB. However, in this single-layer project, B.Cu is not used for electrical routing.Instead, it is temporarily used as a reference layer to extract the circular pad shapes of through-hole components (e.g., pin headers). These circular copper pads are exported and then processed in Inkscape to create center holes for mechanical drilling.
This is a fabrication-specific workflow and not a standard electrical use of the B.Cu layer.
-
Edge.Cuts
Defines the outline and final shape of the PCB. This layer determines where the board will be cut during fabrication.
Routing at F.Cu layer
Click on a pad to start routing. Then click on the destination pad indicated by the ratsnest.
KiCad will automatically generate a routing path between the two pads. The red line represents the copper trace. The gray area on both sides indicates the clearance.
The trace width and clearance are determined by the design rules defined in the Net Classes. If you want to control the route manually, click at intermediate points to guide the trace and create bends where needed.
Text
Add text labels on the F.Cu layer to mark pin names and board information.
These copper labels remain on the PCB after milling and help identify connections during assembly and debugging.
The following is an example of routing.
5.4. Define Board Outline#
Draw the board outline on the Edge.Cuts layer.
This defines the final shape of the PCB for milling.
Select the Rectangle tool and draw a rectangle around the entire circuit.
To fillet a corner of the board outline, right-click on the line segment and select Fillet.
Select the Draw Filled Zones tool.
Click around the corner of the outline.

The Properties window will pop up. Close it by clicking OK without changing the settings.

As you click along the outline, the zone area will be highlighted in white.

Return to the starting point and close the shape.
The area inside the outline will then appear hatched.
Then on the hatched line, select “Zones > Fill All Zones”.
The area will be filled with white color.

5.5. DRC (Design Rule Check) i36#
Click the DRC tool
, then run DRC to ensure there are no unconnected nets or clearance violations.
The example below shows a case with 0 errors and 4 warnings. The warnings indicate that some silkscreen reference labels are overlapping. Since we are not printing component reference names on this board, these warnings can be ignored.
If errors are reported, they must be corrected. Sometimes traces may look connected visually, but DRC may still detect a connection error. In that case, reroute the trace or adjust the connection, then run DRC again. Continue fixing issues until the number of errors becomes zero.
5.6. Generate Fabrication Files (SVG)#
Generate and export fabrication files.
F.Cu and Edge.Cuts files#
- Select “File > Plot”.
- Select “SVG” for Plot format
- Select F.Cu and Edge.Cuts layers. And set parameters.
- Press “Prot”.

5. The SVG files will be saved in the output directory.

B.Cu file#
In this case, drill holes are created to secure the pin headers.
B.Cu is normally used for routing traces on the back side of a double-layer PCB. However, in this single-layer milling workflow, it is used only to extract pad shapes for drilling.
This is a fabrication-specific workaround and not a standard electrical use of the B.Cu layer.
The workflow is similar to that used for F.Cu. The difference is that drill marks are included, which simplifies the post-processing step.

6. Post-processing for milling#
The following example shows how to process an SVG file in Inkscape and export it as a PNG for milling. The procedure may vary slightly depending on the operating system and software version.
6.1 F.Cu File#
The F.Cu SVG file is converted to PNG for use in mods. In some environments, SVG files can be imported directly.
When exporting the PNG, make sure to set the correct DPI and use a white background instead of a transparent one.
- Open the SVG file using inkscape.
- Select the Export tab, then change the DPI to 1000.
-
Click the Background Color.
-
Change the alpha value to 100c
-
Export as ping file.
6.2 Edge.Cuts File#
-
Open the SVG file using inkscape.
-
Select the outer lines
-
Select the Fill and Stroke tab > Stroke paint. Then change the stroke color to white.
-
Select the Fill and Stroke tab > Stroke style. Change the Stroke width to 1.5mm.
-
Select the Export tab. Then change the DPI to 1000.
-
Click the Background Color. Change the alpha value to 100.
-
Export as ping file.
6.3 B.Cu File#
- Open the SVG file using inkscape.
- Select Export tab, then change the DPI to 1000.
-
Click the Background Color. Change the color to black, alpha value to 100.
-
Export as ping file.
7. mods#
Although this tutorial does not cover mods in detail, a screenshot is provided for reference.