Missing airwire in pcbnew - something strange happened! - cannot ignore part number suffixes

Due to mysterious ERC errors of the type “Electronics Rules Check Error Pin connected to some others pins but no pin to drive it.”,
I followed Sprig’s tutorial at


by adding two PWR_FLAG’s, one for VCC and one for GND, to my schematic.

Then I ran ERC and got no error, no warning. Mission accomplished!

Thank you, sprig, for posting this tutorial!

Then I Generated netlist and did Tools…Update PCB from Schematic.
pcbnew opened and gave me a Update PCB from Schematic dialog box saying,

Add net VCC.
Reconnect symbol Q1 pin 1 from net Net-(J1-Pad1) to net VCC.
Reconnect symbol R3 pin 1 from net Net-(R3-Pad1) to net GND.
Reconnect symbol J1 pin 1 from net Net-(J1-Pad1) to net VCC.
Error: Component U1 pad 6 not found in footprint Package_TO_SOT_THT:TO-92
Error: Component U1 pad 7 not found in footprint Package_TO_SOT_THT:TO-92
Error: Component U1 pad 4 not found in footprint Package_TO_SOT_THT:TO-92

Total warnings: 0, errors: 3.
Error: Errors occurred during the netlist update. Unless you fix them,
your board will not be consistent with the schematics.

Device U1 is a through-hole device in a TO-92-3 package–no pads! Device U1 only has three leads!

What did I do wrong? Did I somehow choose the wrong TO-92 package ? Which
one should I have used?

This message did NOT look correct at all. It perplexed me.
So I took my advice to shut down the project, completely closing kicad and then restarted it. I did so, saving the file inside pcbnew first.

When I restarted, I reran ERC without error and then generated a netlist again in eeschema.
Then I ran Update PCB from Schematic…Update PCB
The Update PCB from Schematic dialog box popped up once again, saying
Total warnings: 0, errors: 0.
Netlist update successful!

MORAL: If something doesn’t look right, sound right, or make any sense, first shut down every instance of kicad and restart the project again with a new instance of kicad.

UPDATE:
When I started laying out this PCB in pcbnew, unfortunately, one of my resistors only has one airwire! No ERC errors. I recreated the netlist a couple times, and afterwards, “Run Pcbnew to layout printed circuit board” button. Same error each time,
though–one airwire on the resistor.

When I added the power flag, I used two copies of the same PWR_FLAG flag, one for DC power and one for DC ground.
What should I do to fix this?

1 Like

Check your schematic, and verify that there truly is a connection to that resistor terminal. In EESchema, sometimes a connection line may appear to be connected to a component terminal but in fact it is NOT connected. (This typically happens when you change the grid pitch from the recommended value.)

In PCBNew, a missing “airwire” (A.K.A. “ratsnest line”) is sometimes a consequence of the graphics rendering. The connection is there, but it’s concealed because KiCAD places it in a location where some other graphic element (e.g., a trace, an edge cut, silkscreen line, etc) is already present. Try moving the resistor footprint to a slightly different location and see if the ratsnest line appears.

Dale

Do you still have this problem or it was sorted out with “close and open” kicad?

What version of KiCad?

Try using the menu option “Tools/Update PCB from schematic…” instead of the Netlist option.

kicad 5.0.1
In eeschema, I completely removed the nets on the side of resistor R1 connected to U1 (a 3-pin THT LM334) This was the side w/ the missing airwire in the layout.

I deleted the .kicad-pcb file from the command line.
Then I went back to eeschema, ran ERC w/ no errors, re-generated the Netlist and recreated the PCB.
I created an edge-cuts rectangle for the board layout, moved all the components inside it, and noticed R1 still only has one airwire! So I closed both pcbnew and eeschema, saving everything, and restarted kicad.

When I reopened pcbnew, everything was exactly as I had left it. Still only one airwire on R1.
So I rebooted my computer.

Upon reopening pcbnew, Same missing airwire on the same resistor in pcbnew.

I just retried the last thing sprig suggested.
Total warnings: 0, errors: 0.
Netlist update successful!

Upon pressing the Update PCB button, a dialog box popped up, saying,

Error: Component U1 pad 4 not found in footprint Package_TO_SOT_THT:TO-92
Error: Component U1 pad 6 not found in footprint Package_TO_SOT_THT:TO-92
Error: Component U1 pad 7 not found in footprint Package_TO_SOT_THT:TO-92

Total warnings: 0, errors: 3.
Error: Errors occurred during the netlist update. Unless you fix them, your board will not be consistent with the schematics.

Okay, what is wrong? U1 is a three-pin device in a TO-92 package.
Thiese are through-hole parts only. There are no pads.

Make sure your symbol really only has the 3 pins you expect it to have. It might be that you have a symbol with hidden pins.

Well, I tried the next easiest thing – I removed the offending resistor R1 in eeschema, then added a new one in its place, renamed it and reset its value, and moved it back to where R1 was.
After using the menu option “Tools/Update PCB from schematic…” instead of the Netlist option, as sprig suggested, the dialog box said,

Error: No footprint defined for symbol “R1”.

Total warnings: 0, errors: 0.
Netlist update successful!

I did it sprig’s way and a dialog box popped up, saying
Change symbol R1 footprint from Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal to Resistor_THT:R_Axial_DIN0414_L11.9mm_D4.5mm_P15.24mm_Horizontal.

Total warnings: 0, errors: 0.
Netlist update successful!

Good so far.

I clicked Update PCB button, and the dialog box’s text changed to
Change symbol R1 footprint from Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal to Resistor_THT:R_Axial_DIN0414_L11.9mm_D4.5mm_P15.24mm_Horizontal.
Error: Component U1 pad 4 not found in footprint Package_TO_SOT_THT:TO-92
Error: Component U1 pad 6 not found in footprint Package_TO_SOT_THT:TO-92
Error: Component U1 pad 7 not found in footprint Package_TO_SOT_THT:TO-92

Total warnings: 0, errors: 3.
Error: Errors occurred during the netlist update. Unless you fix them, your board will not be consistent with the schematics.

When I redid “Read netlist” in pcbnew, a dialog box popped up, saying
Info: Reading netlist file “/home/russ/kicad5/LED_dimmer/LED_dimmer.net”.
Info: Using references to match components and footprints.
Info: Checking netlist symbol footprint “J1:/5BECAAF2:Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical”.
Info: Checking netlist symbol footprint “J2:/5BECAB9F:Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical”.
Info: Checking netlist symbol footprint “Q1:/5BEB872B:Package_TO_SOT_THT:TO-92_Inline”.
Info: Checking netlist symbol footprint “R1:/5BEB847F:Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal”.
Info: Changing component path “R1:/5BF3138B” to “/5BEB847F”.
Info: Checking netlist symbol footprint “R2:/5BEB824B:Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal”.
Info: Checking netlist symbol footprint “R3:/5BEF33D6:Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal”.
Info: Checking netlist symbol footprint “R4:/5BEF33FA:Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal”.
Info: Checking netlist symbol footprint “U1:/5BEB80DB:Package_TO_SOT_THT:TO-92”.
Warning: Footprint of symbol “R1” changed: board footprint “Resistor_THT:R_Axial_DIN0414_L11.9mm_D4.5mm_P15.24mm_Horizontal”, netlist footprint “Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal”
Error: Component “U1” pad “4” not found in footprint “Package_TO_SOT_THT:TO-92”
Error: Component “U1” pad “6” not found in footprint “Package_TO_SOT_THT:TO-92”
Error: Component “U1” pad “7” not found in footprint “Package_TO_SOT_THT:TO-92”

No longer so good.

So I clicked the “Rebuild Board Connectivity” button.
Then I clicked the “Test Footprints” button. A “Check footprints” dialog box popped up, saying
No duplicate

No missing footprint

No extra footprint

There’s one PNP transistor. I found two of its leads tied together w/ an airwire BAD! This netlist is hopelessly mangled.
So it appears to me.

You are getting confused that “pads” are SMT only features. THT pins go through pads. The difference between a SMT pad and a THT pad are the layer stack-up and THT has a drill.

Your symbol (schematic part) for U1 appears to have pins 4, 6, and 7. The TO-92 footprint (pcb part) doesn’t have pads 4, 6, or 7 (as it shouldn’t). Check your schematic symbol to make sure it isn’t a variant of the symbol that is specifically made to support a higher pin-count package footprint. The symbol may have hidden pins (open it in the symbol editor or turn on show hidden pins in eeschema).

Often for SMT parts like transistors, there can be duplication of a “logical pin” (for example the collector on a BJT) across multiple package pins to allow for more current capacity.

1 Like

Thank you for informing me, SemazuruCDE, that through-hole parts also have pads.

In eeschema I could find no hidden pins on U1’s schematic symbol. I verified this by right-clicking on its icon and going to the Properties…Edit Properties dialog box. Is that wrong?

Went back into Assign Footprints part of eeschema. Verified that yes, U1 is a 3-lead TO-92.

The symbol properties dialog does not really tell you anything about what pins a symbol has. (Unless you mean a different dialog than i think you do. A screenshot would make it a bit clearer for us what you mean.)

Open the symbol in the symbol editor to check what pins it has. To do that either right click on it and in the context menu open the properties sub menu and select edit in symbol editor (or use the shortcut crtl+e)

You can than use the pin table to see what pins there are. (The pin table is found under the symbol menu or as a button in the top toolbar.)

Make a screenshot of that symbol (or the pin table) if you yourself are not sure about it.

Well, I am sure that it is wrong.


6 pins, not 3 like the actual part !
Fot this 3-lead TO-92 package, I used the footprint named
8044 Package_TO_SOT_THT:TO-92
Was I wrong?
Still don’t know where I went wrong.

You selected the LM334M symbol. That symbol is for a part that comes in an SOIC-8 package. (It even has the SOIC-8 footprint assigned inside the library.)

You need to select the correct symbol for your part. In this case the LM334Z symbol might be the right one. But make sure the pin numbering actually fit the part you plan to order. (We can not check that as you never stated what the order number of your part is.)

The LM334 is available in either a TO-92 package (LM334Z et al) and an 8-pin SOIC package (LM334M et al). Make sure you have selected the correct version for your schematic symbol.

Dale

P.S. - Oops! I see other folks beat me to it while I was consulting the inferior decorator about color schemes for my pretty picture.

2 Likes

Look carefully at the pin order. This is a major PITA for to-92 transistors, where the “1”, “2”, and “3” on the footprint corresponds to “E”, “B”, and “C” on some package pinouts and “C”, “B”, and “E” on other packages (not to mention the parts that are “E”, “C”, “B”). Compare, e.g., a 2N3904 to a BC550.

Dale

OOPS! I was completely wrong! I cannot always ignore the suffix.
What a fool was I!
Thank you for pointing out the two different packages with two different numbers of pins based on suffix, Rene_Poschl and Dale.

For this part it is even worse. Even the 8 pin package version comes in two different pin assignments. And the only difference is an added “S” to the part number suffix.

@Russ was lucky to select a wrong symbol that resulted in an error message.

Since this is an 8-pin SOIC that I incorrectly placed, on which menu do its hidden pins show up? Or does it even have any hidden leads?

In the left toolbar of eeschema there is a button “show hidden pins”

In the symbol editor hidden pins are always shown (as gray)


In addition the pre assigned footprint, the footprint filter and the description of the symbol all contain the information about the correct package.