KiCAD for serious hardware development

Let me share with you some of the best tips and tricks I believe you can benefit from in no time.
I have written about them for about 5 years on my LinkedIn profile and here will be reposted the best ones.

1 Like

Exempt from courtyard requirement

๐—ช๐—ต๐—ฎ๐˜ ๐——๐—ผ๐—ฒ๐˜€ ๐—ง๐—ต๐—ถ๐˜€ ๐—ข๐—ฝ๐˜๐—ถ๐—ผ๐—ป ๐——๐—ผ?: It switches off the courtyard-checks for the particular footprint.

๐—ช๐—ต๐—ฒ๐—ป ๐˜๐—ผ ๐—จ๐˜€๐—ฒ ๐—ถ๐˜?: Whenever there is an incorrect or missing courtyard definition in the footprint you need to prevent error messages.


:sweat_drops::sweat_drops::sweat_drops: ๐‘๐ž๐š๐ ๐ญ๐ก๐ข๐ฌ ๐›๐ž๐Ÿ๐จ๐ซ๐ž ๐ฎ๐ฌ๐ž ๐“๐ž๐š๐ซ๐๐ซ๐จ๐ฉ๐ฌ ๐ข๐ง ๐Š๐ข๐‚๐€๐ƒ

Geometric transitions in PCBs are no jokeโ€”whether itโ€™s between traces and vias or traces and footprint pads. Teardrops offer smoother transitions, improving both the mechanical strength and reliability of your design. But like all good things, they come with their own set of challenges.

What sets KiCAD#kโ€™s Teardrops feature apart is its design as regular polygons, maintained by the kicad core. Itโ€™s a small but critical detail that has been expertly implemented. However, itโ€™s crucial to exercise caution when employing this feature. Why?

๐—•๐—ฒ๐—ฐ๐—ฎ๐˜‚๐˜€๐—ฒ ๐˜๐—ต๐—ฒ๐˜€๐—ฒ ๐˜๐—ฒ๐—ฎ๐—ฟ๐—ฑ๐—ฟ๐—ผ๐—ฝ๐˜€ ๐—ฐ๐—ฎ๐—ป ๐—ฎ๐—ณ๐—ณ๐—ฒ๐—ฐ๐˜ ๐—ฐ๐—น๐—ฒ๐—ฎ๐—ฟ๐—ฎ๐—ป๐—ฐ๐—ฒ๐˜€ ๐—ถ๐—ป ๐˜‚๐—ป๐—ถ๐—ป๐˜๐—ฒ๐—ป๐—ฑ๐—ฒ๐—ฑ ๐˜„๐—ฎ๐˜†๐˜€.

Before you pat yourself on the back for using Teardrops and send your design off for production, remember to run the Design Rule Checks (DRC). Skipping this step can lead to unintended consequences, from violations of clearance rules to potentially compromising the integrity of your design.

Always ensure that DRC tests are part of your workflow, especially after implementing such geometric modifications. In doing so, youโ€™re not just creating a robust design but also setting yourself up for fewer headaches down the line.

Change symbolsโ€ฆ

:yellow_square: :arrow_right: :yellow_circle: ๐‚๐ก๐š๐ง๐ ๐ž ๐’๐ฒ๐ฆ๐›๐จ๐ฅ๐ฌโ€ฆ ๐ข๐ง kicad ๐ข๐ฌ ๐š ๐ ๐š๐ฆ๐ž ๐œ๐ก๐š๐ง๐ ๐ž๐ซ

What is the โ€˜๐—–๐—ต๐—ฎ๐—ป๐—ด๐—ฒ ๐—ฆ๐˜†๐—บ๐—ฏ๐—ผ๐—น๐˜€โ€™ Tool?: Beyond its self-explanatory name, this tool is a paradigm shift in schematic editing. It streamlines the symbol change process, ensuring accuracy while saving invaluable time.

๐—ฆ๐—ถ๐—ป๐—ด๐—น๐—ฒ ๐—ฆ๐˜†๐—บ๐—ฏ๐—ผ๐—น ๐˜ƒ๐˜€. ๐—š๐—ฟ๐—ผ๐˜‚๐—ฝ ๐—–๐—ต๐—ฎ๐—ป๐—ด๐—ฒ: The magic lies in the details, and understanding the nuances between these two can elevate your KiCAD experience:

๐—ฆ๐—ถ๐—ป๐—ด๐—น๐—ฒ ๐—ฆ๐˜†๐—บ๐—ฏ๐—ผ๐—น ๐—–๐—ต๐—ฎ๐—ป๐—ด๐—ฒ: When you need to alter just one symbol, head to the Properties window. Here, the tool to modify that singular symbol awaits, giving you granular control over your schematic.

๐—š๐—ฟ๐—ผ๐˜‚๐—ฝ ๐—ฆ๐˜†๐—บ๐—ฏ๐—ผ๐—น ๐—–๐—ต๐—ฎ๐—ป๐—ด๐—ฒ: At times, broad strokes are necessary. For those moments when an entire group of symbols needs modification, you have to look for the Change Symbolโ€ฆ tool in the Schematic editor contextual. Just a right-click, and you can transform a group, ensuring consistency across your design.

๐—ช๐—ต๐˜† ๐——๐—ผ๐—ฒ๐˜€ ๐—œ๐˜ ๐— ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ?: In the vast landscape of schematic capture, efficiency is king. Letโ€™s say you need to change some 100k 0603 resistors in the schematic to 0402. Only some, not all of them. You can go one by one but you will burn time. I recommend select all symbols to be changed and use the Change Symbolsโ€ฆ tool.

Pack and Move Footprints

:package::package::package: ๐๐š๐œ๐ค '๐ž๐ฆ ๐š๐ฅ๐ฅ!

When placing components onto an empty PCB area, thereโ€™s a common challenge: after selecting all the related components in the schematic editor of kicad, I jump to the layout editor only to find them scattered all over.

But worry not! KiCAD has a nifty tool thatโ€™s been an absolute lifesaver for me.
Enter the โ€œ๐—ฃ๐—ฎ๐—ฐ๐—ธ ๐—ฎ๐—ป๐—ฑ ๐— ๐—ผ๐˜ƒ๐—ฒ ๐—ณ๐—ผ๐—ผ๐˜๐—ฝ๐—ฟ๐—ถ๐—ป๐˜๐˜€โ€ tool. :star2:

Once Iโ€™ve highlighted my desired components, this tool brings them together in a tight, compact pack. No more dragging footprints one by one or trying to manually cluster them close. With just a couple of clicks, my layout becomes more organized, making the subsequent steps of routing and refining so much smoother.

For anyone who hasnโ€™t tried this feature in KiCAD, I urge you to dive in. Itโ€™s one of those simple tools that dramatically enhances workflow efficiency.
Keep designing smart, and always embrace tools that make life just a tad bit easier!

Interactive BOM

:bookmark_tabs::bookmark_tabs::bookmark_tabs: ๐Š๐ข๐‚๐€๐ƒ ๐ฉ๐ฅ๐ฎ๐ ๐ข๐ง๐ฌ ๐ฌ๐ž๐ซ๐ข๐ž๐ฌ, ๐ž๐ฉ๐ข๐ฌ๐จ๐๐ž ๐Ÿ

One of the best features of kicad is the open policy and number of Action plugins.

I started with a plugin that completely revolutionized my workflow: ๐—œ๐—ป๐˜๐—ฒ๐—ฟ๐—ฎ๐—ฐ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—•๐—ข๐—  ๐—ผ๐—ฟ ๐—ถ๐—•๐—ข๐—  ๐—ณ๐—ผ๐—ฟ ๐˜€๐—ต๐—ผ๐—ฟ๐˜.

As a freelancing engineer, Iโ€™ve had my share of tools and plugins, but iBOM is my absolute favourite.

Why? Because it transforms the conventional BOM into an interactive bill of material spreadsheet tailored for web browsers. Here are some features that make it indispensable to my design process:

:one: ๐—–๐—ผ๐—บ๐—ฝ๐—ผ๐—ป๐—ฒ๐—ป๐˜ ๐—›๐—ถ๐—ด๐—ต๐—น๐—ถ๐—ด๐—ต๐˜๐—ถ๐—ป๐—ด: With iBOM, when I select a component, itโ€™s immediately highlighted in the assembly page frame, making identification a breeze.
:two: ๐—›๐—ผ๐˜ƒ๐—ฒ๐—ฟ-๐—ข๐˜ƒ๐—ฒ๐—ฟ ๐—œ๐—ป๐˜๐—ฒ๐—น๐—น๐—ถ๐—ด๐—ฒ๐—ป๐—ฐ๐—ฒ: Move the cursor over a component in the assembly page frame, and its corresponding line in the spreadsheet lights up. Itโ€™s the little things that make a difference!
:three: ๐—ฆ๐—ผ๐˜‚๐—ฟ๐—ฐ๐—ฒ๐—ฑ & ๐—ฃ๐—น๐—ฎ๐—ฐ๐—ฒ๐—ฑ ๐—–๐—ผ๐—น๐˜‚๐—บ๐—ป๐˜€: These two columns are life-savers during the manual component placement phase. They streamline the process, ensuring I know exactly where each component needs to go.

Truly, I cannot express enough how much I adore iBOM.

1 Like


:bookmark_tabs::bookmark_tabs::bookmark_tabs: ๐Š๐ข๐‚๐€๐ƒ ๐ฉ๐ฅ๐ฎ๐ ๐ข๐ง๐ฌ ๐ฌ๐ž๐ซ๐ข๐ž๐ฌ, ๐ž๐ฉ๐ข๐ฌ๐จ๐๐ž 2

One of the best features of kicad is the open policy and number of Action plugins.

The third Action plugin I want you to know is ๐—ž๐—ถ๐—•๐˜‚๐˜‡๐˜‡๐—ฎ๐—ฟ๐—ฑ ๐—ฝ๐—น๐˜‚๐—ด๐—ถ๐—ป.

๐—ž๐—ถ๐—•๐˜‚๐˜‡๐˜‡๐—ฎ๐—ฟ๐—ฑโ€™s primary feature is creating sleek and visually appealing labels, which might seem simplistic, but the impact on the final board design is undeniable.

A well-labelled board not only aids in the understanding of its function but also provides a professional touch that elevates the entire project.

While ๐—ž๐—ถ๐—•๐˜‚๐˜‡๐˜‡๐—ฎ๐—ฟ๐—ฑ has been a tremendous asset, thereโ€™s a small quirk to be aware of: it generates a somewhat hidden footprint, leading the DRC tool to red flag it regularly. This is a minor hiccup, and with experience, it becomes easy to navigate.

The variety of label styles offered by ๐—ž๐—ถ๐—•๐˜‚๐˜‡๐˜‡๐—ฎ๐—ฟ๐—ฑ is commendable. Since integrating it into my workflow, Iโ€™ve noticed a marked improvement in the overall look of my boards. If youโ€™re seeking that additional flair in your PCB designs, Iโ€™d highly recommend giving ๐—ž๐—ถ๐—•๐˜‚๐˜‡๐˜‡๐—ฎ๐—ฟ๐—ฑ a try.

Itโ€™s one of those subtle enhancements that make a big difference.

Speed wiring

:tophat::tophat::tophat: ๐’๐ฉ๐ž๐ž๐ ๐ฐ๐ข๐ซ๐ข๐ง๐  ๐ข๐ง ๐Š๐ข๐‚๐€๐ƒ

When working in kicad schematic editor, many might be in the habit of carefully routing wires to each componentโ€™s connection nodes. However, I want to present a handy approach that can significantly cut down on the time you spend wiring: ๐’๐ฉ๐ž๐ž๐ ๐ฐ๐ข๐ซ๐ข๐ง๐ .

Instead of tiringly leading wires to individual nodes, you can efficiently route them through the components themselves. It might speed up your design process considerably. So next time youโ€™re in the schematic editor, could you try this method and see the difference for yourself?

Remember, every second counts in design, and little tricks like these can accumulate into big-time savings.

Happy designing! :bulb:

KiCAD wiring

Enter group

:tophat::tophat::tophat: ๐‡๐จ๐ฐ ๐ญ๐จ ๐„๐๐ข๐ญ ๐š ๐ ๐ซ๐จ๐ฎ๐ฉ ๐ฆ๐ž๐ฆ๐›๐ž๐ซ ๐ฉ๐ซ๐จ๐ฉ๐ž๐ซ๐ญ๐ข๐ž๐ฌ ๐ข๐ง ๐Š๐ข๐‚๐€๐ƒ

Have you ever struggled with accessing and editing properties of individual elements within a group in kicad? Enter the โ€œEnter Groupโ€ tool from the contextual menu of the particular group.

Hereโ€™s how to use it:

:one: Select the group you wish to edit.
:two: Choose โ€œEnter Groupโ€ from the contextual menu.
:three: Youโ€™re now inside the group, free to select and modify individual elements.
:four: Once youโ€™ve made the desired changes, click outside the group to exit.

Happy designing!

Global changes

:tophat::tophat::tophat: ๐•๐ข๐š ๐ฌ๐ข๐ณ๐ž ๐ ๐ฅ๐จ๐›๐š๐ฅ ๐œ๐ก๐š๐ง๐ ๐ž ๐ข๐ง ๐Š๐ข๐‚๐€๐ƒ

Do you know what the probably best-hidden feature of all kicad symbols, footprints, schematics and boards is?

:rocket: All those objects are text-based :rocket:


:green_circle: Do you want to rename particular labels in the entire schematic?
:green_circle: Do you want to make a global VIA size change in the existing PCB?
:green_circle: Do you want to annotate part of the schematic manually?

I can continue with examples for a long time.

The common solution is simple as that:

:point_right: ๐—ข๐—ฝ๐—ฒ๐—ป ๐˜๐—ต๐—ฒ ๐—ณ๐—ถ๐—น๐—ฒ ๐—ผ๐—ฟ ๐—ฒ๐˜ƒ๐—ฒ๐—ป ๐—ฝ๐—ฎ๐˜€๐˜๐—ฒ ๐˜๐—ต๐—ฒ ๐—ฐ๐—ผ๐—ฝ๐—ถ๐—ฒ๐—ฑ ๐—ฏ๐—น๐—ผ๐—ฐ๐—ธ ๐˜๐—ผ ๐˜๐—ต๐—ฒ ๐˜๐—ฒ๐˜…๐˜ ๐—ฒ๐—ฑ๐—ถ๐˜๐—ผ๐—ฟ ๐—ฎ๐—ป๐—ฑ ๐—ฐ๐—ต๐—ฎ๐—ป๐—ด๐—ฒ ๐˜„๐—ต๐—ฎ๐˜ ๐˜†๐—ผ๐˜‚ ๐˜„๐—ฎ๐—ป๐˜. ๐—ฆ๐—ฎ๐˜ƒ๐—ฒ ๐—ถ๐˜, ๐—ฝ๐—ฎ๐˜€๐˜๐—ฒ ๐—ถ๐˜. ๐—ฌ๐—ผ๐˜‚ ๐—ฎ๐—ฟ๐—ฒ ๐—ฑ๐—ผ๐—ป๐—ฒ.

1 Like

Align to Grid

:tophat::tophat::tophat: Remove off-grid issues in kicad

Sometimes you can save time by using the Align Elements to Grid tool instead of manually aligning the elements. It is not a killer feature like Repeat the last action tool butโ€ฆwellโ€ฆit can save a while too.

Why to save time? Thatโ€™s the question indeed.

Thatโ€™s great I had no idea. How do you access the text/code part to make the changes?

1 Like

All KiCAD project files are textualโ€“you can open them and edit them as you want.

Here follows a snippet from the very beginning of a regular .kicad_sch file:

(kicad_sch (version 20230121) (generator eeschema)

  (uuid ca552d8e-651a-4cbe-8d5f-815faf92d144)

  (paper "A4")

    (symbol "!loga:LOGO_4LAYER" (pin_names (offset 1.016)) (in_bom no) (on_board yes)
      (property "Reference" "U" (at -2.54 3.81 0)
        (effects (font (size 1.27 1.27)) hide)
      (property "Value" "LOGO_4LAYER" (at 1.27 -3.81 0)
        (effects (font (size 1.27 1.27)) hide)
1 Like

Is it possible to create a constraint region or room in KiCAD ? and then set a particular set of rules for that region?

Hi Petr,

Generally professional tools allows you to set rules of different trace widths and spacing on different copper layers for a particular impedance trace for single ended as well as differential pairs. Since as per stackup maintaining a particular impedance of a trace travelling through various layers of PCB requires different trace widths and spacing. Is it possible to set such rule in kicad such that the trace automatically changes its width or spacing when we switch between layers ? and does it get checked during the DRC check ?

Hello dilip.

unfortunately not. Rules and contraints are always connected with nets. You cannot set a room with different rules. The only way would be naming each net and assigning a netclass to it with specific rules.

Hello abhishek,

Thank you for the question. I would love to have such KiCAD features! Unfortunately, it is not possible. All rules and constraints can be assigned to entire nets. The via does not divide any net in two so that remains one with only a single setup.

Thank you, I tried setting such rule using the custom rules feature of Kicad latest version but wasnโ€™t successful.

I am sorry. I did not use the Custom rule feature for that. I will check it.

I said I was not successful, it did not work.