Reverse Engineering with KiCad 8 - Help Needed

Hi everyone,

I’m a KiCad user who has already created several schematics and tested various features. My usual workflow involves creating a schematic first, then using the “Update PCB from Schematic” function to display the components on the PCB. Finally, I arrange and route the components.

However, I now want to try reverse engineering. To do this, I would like to start by drawing the components (footprints) on the PCB and then create a schematic from the PCB. My goal is to have the schematic symbols connected to each other and to be able to arrange them on the schematic for better clarity.

Is this possible with KiCad 8? If so, what are some important things to keep in mind?

Thank you very much in advance for your help!

Best regards,

Sven

The “reverse” workflow is not really supported (yet) in KiCad, and your best option is to stay as close to the normal “forward” flow as you can.

That is:

  1. Identify (some) parts on the PCB and put them in the schematic.
  2. Assign footprints to those schematic symbols.
  3. Use the normal Schematic editor / Tools / Update PCB from Schematic [F8] to put those footprints on the PCB.
  4. PCB Editor / Place / Add Reference Image to add one (or more) photographs of the PCB to the project. You may wish to do some processing in a graphics program first. Correction for barrel distortion, mirroring, contrast enhancement, resolution adjustment and such things.
  5. Draw the outline of the PCB (using physical measurements of the real PCB)
  6. Use the PCB outline to scale the image (ether stretch with the mouse or enter a numerical scale factor).
  7. Place footprints and draw tracks.
  8. Go back to the schematic, and re-create a part of the schematic.
  9. (Re-) Iterate over this process until done. (This will involve a lot of switching between the Schematic and PCB Editors).
  10. Analyze the schematic to see if it makes sense.
  11. Make use of ERC and DRC to double check yourself.
  12. Let it sit for a few days, and check it again.

There is also a “Wire it Plugin” (Not in the plugin manager) that can help with re-creating the netlist in the PCB editor without a schematic. But if you use it, you will still have to recreate the schematic (and thus create the netlist that way too). It’s tempting to try to adhere to the “reverse” workflow when reverse engineering a PCB, but because KiCad does not support it well, it results in doing some things twice, and this is not very efficient.

2 Likes

Hi Paulvdh,

Thank you so much for your detailed description. I will give it a try.

I just noticed yesterday that KiCad 8 has a menu item called “Update Schematic from PCB”. Maybe I could have used this for my work. But I’ll play it safe and do it the way you described it.

Thanks again!

Best regards,
Sven
Screenshot 2024-03-09 085840

This requires an existing schematic which already corresponds to the PCB. Then you can make certain kinds of small changes in the PCB and update the schematic.

1 Like

With Update Schematics from PCB you can indeed port some information (such as footprint assignment) back to the schematic, but as eelik mentioned. the schematic already has to be in the project. This function can also only update footprint information if there is already a valid link between schematic symbols and footprints. And these links get created with the “forward” workflow. And that is a part of the reason I suggested to keep as close as possible to the normal / forward workflow. It works quite well, the main hindrance is that you switch quite often between the Schematic and PCB editors. It helps a lot here if you either have a dual monitor setup, or a big monitor (Mine is 4k, 107cm diagonal) and can have both the schematic and PCB editors open at the same time.

1 Like

Hello, you mean this plugin?

1 Like

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