3
\$\begingroup\$

I'm just starting with KiCad, using version 7.0.0. This test circuit:

enter image description here

fails ERC with these errors:

enter image description here

It seems that two +3.3V labels do not refer to the same connection. How do I fix it?

\$\endgroup\$

2 Answers 2

5
\$\begingroup\$

Well, they probably do already connect. However, Kicad has a wonky way of dealing with power nets. You probably need to add a "PWR_FLAG" directive for both your 3.3V and GND nets (any power nets, really).

Like so:

circuit modified to add PWR_FLAG symbol on power nets

Note you only need to do this once per power net. In the picture above, I've used a built-in symbol for this, and made the "PWR_FLAG" text visible just for this image. I normally leave the text hidden.

Yes this, and the way power symbols are utilized, are a known and accepted uncomfortable fact for all Kicad users. Let's hope it evolves into a saner solution.

\$\endgroup\$
5
\$\begingroup\$

(Answer adapted from one I wrote here: Beginner KiCad question)

KiCad does its electrical rules check (ERC) by checking if each pin on a device is connected to valid pin types on other devices. Electrical rules are designed to catch errors involving two incompatible pins being connected, e.g. you should not have two output pins connected to the same net -- or they might short VDD to ground.

KiCad 5 allowed you to manually set the severity of each pin connection type, but I only recently switched to KiCad 7 and I'm not sure if this menu is still present. Here's what it looked like in 5:

KiCad 5.0 default electrical rules set.

Note that some pins are labeled as Power Input and some are labeled as Power Output. Power input pins require a power supply; power output pins provide that power.

The ERC is configured to inform you if your design has power input pins that are not connected to any power output pins, because that would mean you don't have anything powering them. So, for example, if you have a switched-mode power supply IC or a linear regulator in your design, that device will have a Power Output pin because it is meant to supply power. Connect it to your IC's power input, and all is well.

But if you're getting power from an external power supply, you probably just have some type of connector on your board, and that connector will be most likely labeled with Passive pins instead. You have power input pins, but no power output pins, so the design rule is triggered and you get the warning.

The solution is the PWR_FLAG symbol. You can find it under Choose Power Symbol, the same dialog with all the VDD and GND symbols. A PWR_FLAG is a special single-pin symbol, and that one pin is labeled as a power output. This tells KiCad's ERC that "yes, there will be power on this net."

You can attach the PWR_FLAG to any point on a net, if you know that net is powered from somewhere outside your circuit. Personally, I prefer to put PWR_FLAGs beside the actual connection that power comes in from the outside world; this just makes the schematic a little bit more readable. I often see a PWR_FLAG just connected directly to a +3V3 net off in the corner somewhere, which still works for ERC but isn't as clear to the reader.

You might also get this error if you run your power through a filter. Even if the IC has a power output pin, the series inductor is a passive after all. You just have to throw down another power flag. Like this SMPS output circuit, in which pin 2 is power output, but 5VA still needs a power flag:

schematic of power IC with inductive filter

To first-time users, it definitely feels a little clunky. It's not an intentional design choice, but a workaround as a consequence of how KiCad does ERC. I'm sure the KiCad team would love a better solution, but for now, this is just how KiCad handles power. Whether from an from external connection or when transferred through another component, it's just giving you a heads up: "hey, are you sure you actually powered this thing?"

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Typically you'd place the PWR_FLG next to the connector where power comes in. The correct approach would be to change the connector symbol so the pin type becomes power_out, but that wasn't easily possible with older versions, so the PWR_FLG convention stuck. \$\endgroup\$ Commented Feb 28, 2023 at 9:49
  • \$\begingroup\$ @SimonRichter is that easily done on new versions? I switched off 5 last week so there's still a lot of new features I'm unfamiliar with. \$\endgroup\$
    – Matt S
    Commented Feb 28, 2023 at 10:10
  • 1
    \$\begingroup\$ you can now edit symbol instances in the sheet, so you can change the pin type, but that is reverted if you update the symbol from the library later. \$\endgroup\$ Commented Feb 28, 2023 at 11:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.