KiCad video series: from concept to manufacture

Many electronics hackers have habit of using Eagle to design their PCBs. You’ll find plenty of support for this software as well as a lot of parts libraries, the free version of Eagle software comes with limitations (board area is limited to 4×3.2 inches, only two signal layers and the schematics editor can only create one sheet). You might want to check out if there are any good open source alternatives without restrictions?

KiCad is an intereresting open source EDA software for Windows, OSX and Linux. Create PCB circuits for free with the most advanced features. With the schematic editor you can create your design without limit; there are no paywalls to unlock features. An official library for schematic symbols and a built-in schematic symbol editor help you get started quickly with your designs. It can make professional PCB layouts with up to 32 copper layers. KiCad also includes a 3D viewer which you can use to inspect your design in an interactive canvas. You can rotate and pan around to inspect details that are difficult to inspect on a 2D view.

EEVblog #253 – KiCAD Install & Schematic – First Impressions video is a continuous 45min screen cast of Dave installing and running KiCAD for the first time, along with his first impressions and rants about things he finds along the way, mainly with the schematic editor portion of the program. How easy and intuitive is it to use the schematic editor for the first time?

For more advanced introduction check out  KiCad video series: from concept to manufacture. It shows people how to design and build their very first PCB using this software

Here is some more information links related to KiCad:

CERN Shows Off New KiCad Module Editor CERN, the people that run a rather large particle collider, have just announced their most recent contributions to the KiCad project. This work focused on adding new features to the module editor, which is used to create footprints for parts. The update includes support for DXF files, which will make it easy to import part drawings, or use external tools for more complex designs. CERN has already implemented a new graphics engine for KiCad, and demonstrated a new push and shove routing tool. Check out the CERN KiCad Developers Team on Launchpad.

A Simple (and Dirty) Bill of Materials and Stock Management Utility introduces you to a simple bill of materials generation too “For a better BOM in Excel“, which can also do simple stock management.

If you need to export to other tools, check out KiCad Script Hack for Better Mechanical CAD Export article for ideas.


  1. Tomi Engdahl says:

    Nick Bild came up with a script that analyzes your physical breadboard to automatically generate a KiCAD schematic.

    A breadboard is, at its core, a series of connectors. This script’s purpose is to identify every connection and associate it with the corresponding pin on a component. It is able to do that using a special breadboard that has every row of pins connected to an Arduino Due board I/O pin. A Python script running on a connected PC then checks every row for continuity. The user then inputs the component located at connection, and the script will draw a KiCAD schematic with wires between every component’s pins.

    This script does have some serious limitations.

    To overcome that, the user must insert jumpers in place of some components. The user must also enter the component associated with each connection, because the script has no way of identifying components — it only checks for continuity.

    Schematic-o-matic automatically creates KiCAD schematics from your breadboard

    Breadboards are the first tool you break out in any prototyping journey and almost every project will utilize a breadboard at some point. Those breadboards often turn into a rats’ nest of overlapping wires that are difficult to trace, which makes it difficult to create an accurate schematic when it is time to design your PCB. To make your life easier, Nick Bild came up with a script that analyzes your physical breadboard to automatically generate a KiCAD schematic.

    Automatically draw a KiCad schematic for a circuit prototyped on a breadboard.

  2. Tomi Engdahl says:

    KiCad 6.0.0 Brings a New Look, New Features, and a Much Improved 3D Viewer for Your PCB Designs

    Now celebrating 30 years, the KiCad EDA project makes a move to improve accessibility for newcomers to the software.

    KiCad, the open source electronic design automation package created by Jean-Pierre Charras in 1992, has hit a major milestone: the launch of KiCad 6.0.0, 30 years after the software’s first release.

    “There have been many important changes that make this release a substantial improvement over the 5.x series and a worthwhile upgrade for users on all platforms,” the development team wrote of KiCad 6.0.0, launch on Christmas Day as a present for anyone designing electronic devices. “There are hundreds of new features and improvements, as well as hundreds of bugs that have been fixed.”

  3. Tomi Engdahl says:

    Kicad V6 First Impressions | Voltlog 399

    1:16 File format changes
    2:14 UI selection behavior
    3:28 Copy & Paste
    4:43 General UI refresh
    5:06 Plugin and content manager
    6:15 3D viewer
    6:32 PCB editor layer visibility
    7:02 Drawing rectangles
    7:50 Rounded corner tracks

  4. Tomi Engdahl says:

    Using an Arduino Due, this setup automatically generates a KiCad schematic for a circuit prototyped on a breadboard.


    Automatically draw a KiCad schematic for a circuit prototyped on a breadboard.

  5. Tomi Engdahl says:

    KiCad 6.0 open-source EDA software for schematic capture and PCB layout adds hundreds of new features, enhancements, and bug fixes.
    Read the full article:
    #EDN #EDA #PCB

  6. Tomi Engdahl says:

    Scripting Coils For PCB Motors

    PCB inductors are a subject that has appeared here at Hackaday many times, perhaps most notably in the electromagnetic exploits of [Carl Bugeja]. But there is still much to be learned in the creation of the inductors themselves, and [atomic14] has recently been investigating their automatic creation through scripting.

    A simple spiral trace is easy enough to create, but when for example creating a circular array of coils for an electric motor there’s a need for more complex shapes. Drawing a trapezoidal spiral is a surprisingly difficult task for a script, and we’re treated to a variety of algorithms in the path to achieving a usable design.

    Having perfected the algorithm, how to bring it into KiCAD? The PCB CAD package has its own Python environment built-in, but it’s not the most flexible in which to develop. The solution is to write a simple JSON interpreter in KiCAD, and leave the spiral generation to an external script that passes a JSON. This also leaves the possibility of using the same code in other PCB packages.

  7. Tomi Engdahl says:

    KiCanvas Helps Teach And Share KiCad Projects In Browsers

    KiCad is undeniably the hacker favourite when it comes to PCB design, and we’ve built a large amount of infrastructure around it – plugins, integrations, exporters, viewers, and much more. Now, [Stargirl Flowers] is working on what we could call a web viewer for KiCad files – though calling the KiCanvas project a “KiCad viewer” would be an understatement, given everything it aims to let you do. It will help you do exciting things like copy-pasting circuits between KiCad and browser windows, embed circuits into your blog and show component properties/part numbers interactively, and of course, it will work as a standalone online viewer for KiCad files!


    Hi there! Thanks for dropping by. I’m Thea and I’m creating an open source, interactive web viewer for KiCAD’s files and I’m looking for folks to financially sponsor my work on this. There’s no hard sell here- I’ll tell you what I’m trying to accomplish and what I’ve done so far and you can decide if you’d like to financially contribute so I can spend more time on this.

  8. Tomi Engdahl says:

    Create Your RTL Simulations With KiCAD

    Bob Alexander] is in the process of designing a homebrew discrete TTL CPU, and wanted a way to enter schematics for digital simulations via a Verilog RTL flow. Since KiCAD is pretty good at handling hierarchical schematics, why not use that? [Bob] created a KiCAD plugin, KiCadVerilog allowing one to instantiate and wire up the circuits under consideration, and then throw the resulting Verilog file at your logic simulator of choice.

    KiCadVerilog doesn’t do all the hard work though, as it only provides the structure and the wiring of the circuit.

  9. Tomi Engdahl says:

    PCIe For Hackers: The Diffpair Prelude

    PCIe, also known as PCI-Express, is a highly powerful interface. So let’s see what it takes to hack on something that powerful. PCIe is be a bit intimidating at first, however it is reasonably simple to start building PCIe stuff, and the interface is quite resilient for hobbyist-level technology. There will come a time when we want to use a PCIe chip in our designs, or perhaps, make use of the PCIe connection available on a certain Compute Module, and it’s good to make sure that we’re ready for that.

    PCIe is everywhere now. Every modern computer has a bunch of PCIe devices performing crucial functions, and even iPhones use PCIe internally to connect the CPU with the flash and WiFi chips. You can get all kinds of PCIe devices: Ethernet controllers, high-throughput WiFi cards, graphics, and all the cheap NVMe drives that gladly provide you with heaps of storage when connected over PCIe.

    PCIe is a point-to-point bus that connect two devices together – as opposed to PCI, an older bus, that could connect a chain of devices on your mainboard. One side of a PCIe link is a device, and another is a host. For instance, in a laptop, your CPU will have multiple PCIe ports – some used to connect the GPU, some used to connect a WiFi card, some used for Ethernet, and some used for a NVMe drive.

    Each PCIe link consists of at least three differential pairs – one is a 100 MHz clock, REFCLK, that is (almost) always required for a link, and two pairs that form a PCIe lane – one for transmit and another for receive. This is an x link – you can also have 2x, 4x, 8x and 16x links, with four, eight sixteen and thirty-two differential pairs respectively, plus, again, REFCLK. The wider the link, the higher its throughput!

    Treating Your Diffpairs With Respect

    First off, you want to keep both of the pair’s signals close to each other throughout their length. The closer the two signals are, the better external interference cancellation works, and the less noise they radiate – given that often, multiple diffpairs run next to each other, this will help signal integrity of other pairs as well. Speaking of running separate diffpairs next to each other, you’ll want to keep them away from each other and other things – be it ground fills on the same layer, high-frequency signals. A great rule of thumb is the 5W rule, which says you need to have at least five trace width’s worth of clearance between a diffpair’s trace center and other signals. You don’t always have this much space, but it’s good to adhere to this as much as possible.

    You will also want to make sure that there is an uninterrupted ground path right under these signals, alongside the entire pair – having a ground fill is ideal.

    Then, there’s the little-talked-about matter – impedance matching. If you’re getting a differential pair from point A to B, you will want to make sure that you get the impedance right, and the basics of it are simpler than you might think.

    Now, this means that you have to make sure the impedance for your PCIe link is good along its entire path – which, in practice, means picking suitable connectors and tuning your PCB trace widths and spacings. PCIe hardware is mostly built with 85 Ω impedance in mind. Things like receivers, transmitters, and PCIe-intended connectors are outside your control, and to get the impedance of the entire path is reasonably uniform, you have to adjust the parts under your control to the same value. For a start, if you have to use connectors for your PCIe link, pick ones that don’t have too significant of an impedance mismatch. A good bet is using high-speed connectors or connectors built with PCIe-like signals in mind – full-size PCIe, M.2, mPCIe, USB3, USB-C, and a lot of high-speed connector families from various manufacturers.

    Now to tuning the impedance of your diffpair’s PCB traces. Differential pair impedance depends on a lot of variables in reality, but if you’re a hacker starting out, there are simplified calculators that get you most of the way there – this one is my favourite. Scroll down to “Edge-Coupled Surface Microstrip”, leave track height at 35 for routing diffpairs on 1 oz copper layers, leave dielectric constant at 4.3 unless your PCB fab gives you a different value.

    Now, if you have ever tinkered with PCIe, you might have stumbled upon some forbidden knowledge: in practice, you don’t really-really have to do all of the above.

    You might have heard that PCIe runs over wet string – the first known reference to this is in a 2016 presentation on console hacking at 33C3.

    nd, unsurprisingly, there’s a big grain of truth – PCIe will still work in suboptimal conditions, and there’s an example after example of it in hacker and consumer worlds! Perhaps the most widely available example of PCIe abuse is passing an 1x PCIe link using USB3 cabling, something the “mining” PCIe risers do – which means that you can just go to your computer accessories store and buy a product that is only possible thanks to some PCIe abuse.

    Something else that you might’ve seen and forgotten like a bad dream, is [TobleMiner] putting a x8 PCIe link through, shudder, prototyping wires – for the sake of testing out an adapter idea for cheap high-speed networking cards from HP servers, not compatible with regular PCIe slots both pinout-wise and mechanically.

    PCIe is quite a bit more forgiving than quite a few other interfaces, say, USB3. There are link training mechanisms – when a PCIe connection is established, the receiver and transmitter play around with their internal parameters, adjusting them until they reach the fastest speed possible while keeping error rate low, using these parameters for the entire connection afterwards. There are also retransmissions for packets that failed to be received. PCIe has exceptional stability in practice.

    It’s clear that PCIe link training has some unique parts to it – for instance, to help you make your layout better, PCIe also lets you invert any differential pair, except REFCLK, by swapping the negative and positive signals, and this will be detected and flawlessly compensated for during link training. Other technologies like USB3, HDMI, or DisplayPort don’t support such quality-of-engineer-life features. Other interfaces often require that multiple lanes should be the same length – making sure that data on one set of pairs doesn’t arrive faster than on the other. PCIe, however, is fine with across-pair mismatches as well, also detecting and compensating for these during link training. These two aren’t meant to be resilience features as much as they’re ease-of-layout features meant to help you design PCBs faster and better, but it sure helps that they’re there.

    Try Your Best, No Matter What

    Does this resillience help hackers? Yes, absolutely – these two ease-of-layout features are used in basically any professional PCIe design, and if you’re in less sterile conditions, you can push PCIe further at your own risk. On the other hand, don’t just skirt every rule because you’ve seen someone do that – put some good-faith effort into following these five guidelines, even if you’re limited to a two-layer PCB and might never get the perfect impedance value. Following these rules will not only teach you some diffpair discipline for later projects, it will make your PCIe signals all that more resillient and error-free, and your PCIe devices more happy. It might feel good to dismiss all or some of these guidelines, since sometimes it might just work out, but the extra half hour calculating proper impedance on your board will help you ensure that your PCB doesn’t need a second revision and stays loyal to your interests throughout its entire life.

    So, here’s a guideline: treat your PCIe differential pairs with respect. If you’re using a two-layer PCB and you’re doing a prototype on the cheap and you want quick turnaround time, don’t just give up on impedance because the traces would need to be way too wide to reach 85 ohms – open the calculator and see just how much you can get the impedance down anyway. Lowering isolation height lowers impedance, so consider going for 0.8mm PCB if your project’s mechanical aspects let you. Move your components around if that helps your PCIe tracks follow a better path, with less noise along the way. Perhaps link training will knock an imperfect link down a generation or two, but that’s better than not reaching a stable link at all. Put your best effort following these guidelines with what you’re given, and the differential pairs will respect your intentions in return.

    For instance, if you’re using KiCad, here’s a simple demonstration on how to get a PCIe 1x link from one point to another, routing differential pairs while taking care of impedance, clearances, and via stitching.

    PCIe x1 link diffpair routing example (KiCad 7)

  10. Tomi Engdahl says:

    And finally, if you’re looking for a quick way to get up to speed on KiCad 7, you could do worse than this 13-minute introductory video. It’s not exactly for EDA beginners, but if you’re coming over from Eagle or some other platform and have the basic vocabulary, these five steps will get you going. Sadly, though, you still won’t know for sure how to pronounce “KiCad” after the video.

  11. Tomi Engdahl says:

    KiCad 6 STM32 PCB Design Full Tutorial – Phil’s Lab #65

    Complete step-by-step PCB design process going through the schematic, layout, and routing of a ‘black-pill’ STM32-based PCB including USB in the new KiCAD 6. All the way from schematic creation, through to two-layer PCB layout and routing, as well as sending it off for manufacture and assembly via JLCPCB.


    00:00 Introduction

    01:26 What You’ll Learn

    03:54 STM32 Microcontroller, Decoupling
    15:01 STM32 Configuration Pins
    21:15 Pin-Out and STM32CubeIDE
    26:59 Crystal Circuitry
    30:49 USB
    33:57 Power Supply and Connectors
    42:54 Electrical Rules Check (ERC), Annotation
    49:25 Footprint Assignment

    52:11 PCB Set-Up
    57:03 MCU, Decoupling Caps, Crystal Layout
    01:03:15 USB and SWD Layout
    01:06:37 Changing Footprints, Adding 3D Models
    01:09:38 Switch and Connector Placement
    01:12:11 Power Supply Layout
    01:14:50 Mounting Holes, Board Outline

    01:19:54 Decoupling, Crystal Routing
    01:24:10 Signal Routing
    01:27:26 Power Routing
    01:32:45 Finishing Touches, Design Rule Check (DRC)

    01:35:21 Producing Manufacturing Files (BOM, CPL, Gerber, Drill)

    01:39:44 Outro

  12. Tomi Engdahl says:

    Importing EAGLE Projects Into KiCad 7, And How To Fix Them


    Migrating a PCB design from one CAD software package to another is no one’s favorite task. It almost never works cleanly. Often there are missing schematic symbols, scrambled PCB footprints, and plenty of other problems. Thankfully [shabaz] shows how to import EAGLE projects into KiCad 7 and fix the most common problems one is likely to encounter in the process. Frankly, the information couldn’t come at a better time.

    This is very timely now that EAGLE has gone the way of the dodo. CadSoft EAGLE used to be a big shot when it came to PCB design for small organizations or individual designers, but six years after being purchased by Autodesk they are no more. KiCad 7 is a staggeringly capable open-source software package containing some fantastic features for beginner and advanced designers alike.

    Working with KiCad 7: Importing EAGLE Projects

  13. Tomi Engdahl says:

    Chip Shortage Engineering: Misusing DIP Packages

    After years of seeing people showing off and trading their badge Simple Add-Ons (SAOs) at Supercon, this year I finally decided to make one myself. Now for a first attempt, it would have been enough to come up with some cool PCB art and stick a few LEDs on it. But naturally I started with a concept that was far more ambitious than necessary, and before long, had convinced myself that the only way to do the thing justice was to have an onboard microcontroller.

    My first thought was to go with the venerable ATtiny85

    I quickly found that none of the major players actually had the SMD version of the chip in stock. Both DigiKey and Mouser said they didn’t expect to get more in until early 2024

    The whole thing was made all the more frustrating by the pile of DIP8 ATtiny85s sitting on the bench, mocking me. Under normal circumstances, using them in an SAO wouldn’t really be a problem, but eight hand-soldered leads popping through the front artwork would screw up the look I had in mind.

    In Case of Shortage, Bend Pins

    The idea was simple enough; I’d program the ATtiny85, carefully bend its legs outward, and then push the chip down firmly onto an ESD mat to get it as flat as possible. From there, I could snip the legs off with a side cutter, but I thought limiting the interaction between the chip and metal tools was probably for the best. As such, the result is a chip that’s flat to the PCB like an SMD component, but with leads that extend much farther out than any traditional package.

    Obviously, the body of a DIP chip is still much larger than its SOIC counterpart. But it’s not like I’m trying to build a smartphone here, a small bump on the back of the SAO is unlikely to bother anyone so long as it doesn’t physically collide with the badge it’s getting plugged into.

    A Word on Footprints

    If you only ever used jellybean components in your PCB designs, you could probably go for quite some time before having to design your own footprint. But eventually, it’s going to catch up with you. As the complexity of your projects increases, you’ll inevitably run into a part that doesn’t have a digital representation in your electronic design automation (EDA) tool of choice.

    With that in mind, creating custom footprints is a good thing to become familiar with ahead of time

    Under normal circumstances, the first step in making a footprint would be to consult the datasheet for the part in question.

    In this case though, our footprint doesn’t correspond with any proper package. With no handy diagram to follow, we’ll need to take some manual measurements before all is said and done. But it did start as a normal package, so the ATtiny85’s datasheet still provides some valuable clues.

    Putting Your Foot Down

    The KiCad Foorprint Editor tool works more or less the same as the PCB Editor, and shares many of the same tools and icons. So if you’ve already got a couple custom PCBs under your belt, wrangling the interface shouldn’t provide much of a challenge.

    Once you’ve created a custom library (which can be per-project, or global for all of your projects) and named your new footprint, you’re given a blank canvas on which to drop your pads using the appropriately named “Add a Pad” tool. After placing the first pad you can edit its parameters to give it the desired dimensions, and from then on, any new pads you place will have the same size and shape. The pad number will also automatically increment, though its up to you to make sure they match the part’s actual numbering scheme.

    Simple Add-ons (SAO)
    A gateway to making your own Badge Add-ons

    Simple Add-ons (SAOs) is a standard that enables anyone to make a PCB that can be attached to and powered by a SAO Capable device. SAO Capable devices take care of the power requirements so all you have to worry about is making your Add-on work and look cool!

    Device makers, mainly Electronic badges made for conferences, can encourage others to attach Add-ons to their devices by adding the SAO port which is a simple 2×3 0.1″ (2.54mm) header.

    Simple Add-on is a fork / rebranding of the “Shitty Add-on” standard with the intention to make SAOs more accessible to a wider audience and provide a clear description of their purpose. As such, unless stated otherwise, documentation for the “Shitty Add-on” standard, specifically SAO169bis is still applicable to “Simple Add-ons”. Pin out, foot prints, and parts necessary will remain fundamentally the same with a new name.

    Simple Add-on v2′s specs are identical to SAOv169bis. The first pin is VCC, power, and it is expected to be 3.3 Volts. Second pin is Ground / Earth, third pin is SDA, fourth SCL, and the last two pins are for GPIO.

  14. Tomi Engdahl says:

    KiCad 7 ESP32 PCB Design Full Tutorial – made by morten laboratories iot-thing

    Complete step-by-step PCB design process going through the schematic, layout, and routing of a ESP32-based PCB including USB in the new KiCAD 7. All the way from schematic creation, through to four-layer PCB layout and routing, as well as sending it off for manufacture.

  15. Tomi Engdahl says:

    KiCad 7 ESP32 PCB Design Full Tutorial
    Complete step-by-step PCB design process going through the schematic, layout, and routing of a ESP32-based PCB including USB in the new KiCAD 7. All the way from schematic creation, through to four-layer PCB layout and routing, as well as sending it off for manufacture.


Leave a Comment

Your email address will not be published. Required fields are marked *