I want to place components (not footprints) on the PCB, then update the schematic from that. Is this possible?

I’d like to document/reverse engineer an existing PCB.

I would like to do this:

  1. place components on the kicad PCB like they are on the real PCB, give them the correct name (like R45 or Q3). This is impossible, I see only place→footprint in pcbnew

  2. Draw traces on the kicad PCB like they are on the real PCB. This works, I can do route→route single track in pcbnew

  3. Give the traces names like GND or 5V, or J3Pin4Input. In pcbnew I can double click on a new trace, and assign it to a net. I would like to create a new net for the trace I just drawn in step 2, but I can’t find where I can do that.

  4. Create/update a schematic from the pcb. This doesn’t work, as the PCB doesn’t have the information what components are present on the board, it only knows the footprint. So I get the message: “Warning: Footprint ‘REF**’ has no assigned symbol.“, and the schematic stays empty.

The “name” is Reference, i.e. reference designator, by default it’s REF**. Just change it in the Properties of the placed footprint.

The nets can be managed in View → Panels → Net Inspector. On that, context menu → Add Net.

Updating the schematic from the PCB works if you already have the schematic and the symbols in it, and updating is limited in certain ways. KiCad can’t read your mind to know what symbol each footprint needs. In the normal workflow you add symbols first and define the footprints for them in the symbol properties. Then KiCad knows what footprints must be added to the board for each symbol. The same doesn’t work in the other way: you can’t add a symbol to a footprint.

So, you have two possibilities:

  1. After doing the PCB, add the corresponding symbols to the schematic and give them the correct reference designators. Then update the schematic from the PCB, using the option to use the reference designators:

Or
2. Because you are going to have the schematic anyway, why not to start with the schematic? You know all the components and what they are, so add the symbols to the schematic, choose the footprints for them in each symbol’s Properties and update the PCB normally from the schematic. If it’s easier to reverse engineer the connections in the PCB, continue by adding the nets and tracks in the PCB, then do the backannotation to the schematic, but without using the reference designators:

In any case KiCad can’t automatically draw wires in the schematic, but with backannotation you should be able to add the labels to symbols.


Here’s a very simple example where I added a symbol to the schematic, changed its reference designator (C1) according to the PCB where I had put the footprint with Reference C1, added a net and changed the net of both pins. After KiCad has updated the schematic there are the net labels in the pins. Now you can move the symbols (with the labels) and wire the schematic.

Probably the most important piece of knowledge you have missed is how the symbols and footprints are connected in KiCad, and you have also to understand that the pins must match between the symbol and the footprint. KiCad doesn’t have “parts” as some other EDAs have, it has loosely connected symbols and footprints.

Please see (Start Here) Frequently Asked Questions if the KiCad’s library system, i.e. connecting symbols with footprints, is still unclear to you.

If I were you, I would follow these steps (up to a two-layer board).

  1. Take photos of the front and back of the board.

  2. Write a list of the manufacturer and model numbers of the components in a text editor or similar.

  3. Paste the photo (1) into the schematic editor.

  4. Place the components (2) in the schematic editor. (If the board is large, use a hierarchical structure.)

  5. Wire the components together based on the photo (1) in the schematic editor.

  6. Once you’ve finished, assign footprints to each component.

  7. Paste the photo (1) into the PCB editor.

  8. Place the components from the schematic editor into the PCB editor.

  9. In the PCB editor, move the components while referring to the photo (1).

  10. Once all the components are placed, connect the wiring routes according to the photo.

    The advantage of this process is that you will need to look up manufacturer names and data sheets and draw circuit diagrams while working, so you will be able to understand why the circuit is the way it is. It is a good idea to follow the work flow of the person who designed the printed circuit board in the first place. If you make notes of anything you notice while working, you will not forget it later and it will not be a problem.

I don’t think the Ref. Name (like R45 or Q3). is important. What’s important is the part manufacturer’s name, the part’s model number and data sheet, and the connection status of the physical board you want to copy.

When reverse engineering an PCB in KiCad I would still use a forward workflow, or at least partially, similar to what tama wrote.

First add the symbols to the schematic, assign footprints in the “usual way” and then put them on the PCB. Making photographs of the PCB, and loading them into the PCB editor also helps. Usually the picture of the bottom is mirrored to keep up with the “top view” of the whole PCB. It also helps to put some effort into making good pictures, and to reduce (barrel and other) types of distortions. Working with a telephoto lens and then at max zoom factor helps. Distortions can also be reduced in a graphic program such as Gimp.

Whether to draw connections first in the schematic, or on the PCB, I’m not sure. I suggest you try both ways. The netlist can be ported backwards, but only in the form of labels, and naming nets inside the PCB editor is a bit cumbersome.

1 Like