Unexpected duplication of connectors

5.1.5-3
In the attached layout, if I import the netlist, it duplicates the HDx connectors already present. I have played around a lot with this and am missing something. Anyone able to explain this?

Thanks
Fritz

main_board_rev2.zip (259.9 KB)

Interesting project, at least it crashed KiCad. I have to give a closer look.

First:
I just opened and viewed the project.
During startup KiCad did complain a few times about missing libraries from dropbox.

Eeschema / Preferences / Manage Symbol Libraries … / Project Specific Libraries

has 4 different “resque” libraries.
Normally “resque” libraries should not be touched by users, and not added to projects.

I removed the [V] checkmark by active, saved the project, exit KiCad & restart KiCad. Now I get no errors anymore while opening the project.
The first time I opened it, your project also had to be “resqued” and KiCad made resque and cache libraries.

Then I read the netlist in the “old fashioned” way, by first exporting a netlist of your board (and named it Rev2, instead of Rev1)

When importing that new netlist in PcbNew, it complains about missing footprints:

It seems KiCad can not find the library files forthe PinHeaders. This may be some library difference between my and your KiCad installation.
However, If I tell KiCad to use the existing Footprints in the pcb file by:

(*) Re-associate footprints by reference

then all errors turn green:

This is probably the item you missed, so I have not looked further into any discrepancies.

First-thanks to both of you for taking a look.

OK–I am not sure what is going on with the libraries but it has added a confusing dimension to the problem. So-I have regenerated a simplified duplicate of the problem using the generic components and footprints in the KiCad libs. Hopefully the dropbox issues will vanish.
I also used “ocams razor” to pare down the problem to a simple case as follows:
1-I generate a schematic consisting of only two connectors, connected to one another, pin by pin.
2-I create and empty PCB and place 2 footprints manually for the connectors defined in the schematic.
3-I name these connectors same as in the schematic and LOCK them.

This is the basis of the problem I am having with my actual board design. Now-here is what happens:
when I read the netlist from pcbnew it generates two duplicate connectors of the ones already placed. This is of course and invalid situation. I would expect pcbnew to ignore already placed connectors.

I have attached the zip for this simplified version.

Thanks again
Fritz
problem1.zip (10.2 KB)

I think the misunderstanding is on a very basic level somwhere, which is sometimes difficult to communicate between humans, becase it gets to easily overlooked.

Your step 2 seems to be wrong.
In the normal workflow you do not place footprints manually on the PCB.
Normal workflow is to import the components from the schematic.

Therefore I did:
1). Exit KiCad.
2). Delete files: “problem1.kicad_pcb” and “problem1.kicad_pcb-bak”
3). Start KiCad’s project manager. (double click on project file).
4). Open Eeschema with the schematic.
5). [F8] to open Pcbnew and import the components and netlist.

The first time it complains about the PCB not existing (Duh, I just deleted it), and then creates a new PCB file, with the right associations.

[F8] is the normal way to synchronise the schematic with the PCB. Manual generation of netlists, and syncronisation such as I did in my previous posts are only used for repairing broken stuff or other “out of normal” workflows.

Using separate netlists was the normal flow in old KiCad versions (V4?).
It is still usefull for ecample when using scripts to generate netlists, or as interface for other schematics programs. With the direct import with [F8] netlist files are no longer needed. My advise is to simply delete generated netlist files. This prevents any accidentily read old netlist files, and when you need a netlist file you can always generate a new one.

The synchronization between schematic symbols and their footprints by default happens via a unique identifier (the timestamp) not by reference. This is done to allow users to reannotate their schematic without getting problems.

If one adds the footprints directly to the pcb instead of using the normal kicad tools then these footprints have no knowledge which timestamp their respective symbol has. Which is why you need to import by reference.

Paul
it is a common practice to place various aggregates of footprints and traces manually first. In this case (actually more complex than my example) the connectors are laboriously set for precise dimensions in order to receive an SBC board. In this case the automatic placement if of no value and a prior layout for that board is copied into the current working layout using the “append board” command.
thanks
fritz

It may not have become clear, but you can achieve what you want. Read again the message of paulvdh and check the last screenshot and last paragraph. Rene also said “Which is why you need to import by reference.”

Thanks Rene- I selected the “footprints by reference” option of the load netlist and the results were what I would have expected. I am still trying to digest the difference between this and “keep existing”. Syntactically speaking I would have thought that it was the latter that I would need. I have to re-read the doc on this.

Fritz

Instead of using apend board one can also work with templates that allow to define both a schematic and layout as a starting point.

eelik
I see now that the “update by reference” suggested by rene and paul is required and am still trying to understand what the "keep existing"option does.
More curious to me is Paul’s comment regarding no longer using the netlists (I am on version 5x). F8 does not work in my case (I am win10) but I am assuming that this hotkey is associated with the “update PCB from schematic” button. I was never clear to me how this action differs from loading the netlist.
Bottom line is that most of the time I want to import newly added components on the schematic but preserves those already extant. I think this worked using the “reference” option.

thanks
fritz

After some vivid conversation the UI texts were completely changed for 5.99. I’m not sure they are even there as clear as they could be, but at least the tooltips are correct compared to 5.1 where we still have a completely wrong tooltip - it says the opposite what it actually is, in two ways. (EDIT: it’s wrong in 3 ways, not 2.)

I’m working with KiCad “Version: 5.1.5+dfsg1-2~bpo10+1, release build” on my Linux box at the moment and the section about netlists in the Eeschema manual is getting quite stale and is not of much use. (file:///usr/share/doc/kicad/help/en/eeschema.html#create-a-netlist)

[F8] is indeed routed to “Update PCB from Schematic”

Pcbnew / Help / Pcbnew Manual

has a bit more usefull information in chapter 4.4:

file:///usr/share/doc/kicad/help/en/pcbnew.html#_procedure_for_updating_a_printed_circuit_board

Euhm… This is a required step only if your schematic and PCB somehow get out of sync, for example by creating new components in Pcbnew. If you have annotated and assigned correct footprints in Eeschema, then you should be able to just import all components and the netlist into Pcbnew.

And they are out of sync if some footprints have been added manually to pcb but are meant to be linked with symbols in the schematic.

OK eelik—looks like 5.99 has improved some of the description. How does one move to 5.99? Looks like the downloads are still for 5.1x.

Paul-I guess the phrase “in sync” is key here. I don’t quite understand why my manually added components would not sync with the schematic as long as the footprint designators are all there and there is a 1-to-1 correspondence between parts. I suppose there is an uncertainty if one of the footprints has changed in the footprint editor. But replacing all of the parts in the pcb of course wipes out those with a locked, precise placement as is usually the case for connectors.

fritz

Rene
I tried to look at templates when I first started with KiCad but stopped - I seem to recall due to a lack of documentation. Can you tell me where they are documented?
thanks
fritz

Normally the synchronisation is kept up to date by the “timestamp” value, as Rene posted earlier, and not by the Refdes.
The “Re-Associate by reference” radio button changes the synchronisation from the timestamp to the Reference names.

Better UI texts are not a reason to move to 5.99. That’s the unstable development version. Use it only if you want to help development by testing and reporting bugs.

2 Likes

That’s the key. KiCad tracks the symbol/footprint connections between schematic and board through one kind of internal symbol ID’s which are added to the board footprints. This can be bypassed by the second radio button option which ignores the old ID’s and uses explicit reference designators to update the ID’s. Normally the connections aren’t tracked throught the reference designators.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.