Just yesterday I did
Gimp / Tools / Transform Tools / Perspective for preparing to reverse engineering a PCB. With it you can grab any corner and drag it around and it works "instantly". ( 10 t0 30 fps or so, it's too quick to notice. I don't know why your algorithm is so extremely slow, but it's nice to have it for KiCad. My Gimp skills are very near zero.
In KiCad, I notice I'm switching between selecting an background image and unselecting it a lot. Especially when you are further in the process. an "unselcted image" get covered by tracks a lot, while when you select it, it's pulled to the foreground. It's clear, but you can't see the tracks. Alfa channel would help here.
Also, when the background image for the front is selected and you go to the back with [PgDn], it would be nice if this switches to selecting the background image for the back layer.
In KiCad you can draw tracks between uncommitted footprins (I.e. footprint pads not in the netlist from the schematic) but normally KiCad prevents you from connecting to pads that are not in the netlist. That is good of course, but during reverse engineering you want a quick method to override it.
Because that is not available in KiCad, I turned my method around. I first drew all symbols on the schematic. Added footprints and ported them to the PCB. Then I placed the footprints, but I also placed the symbols in the schematic same order as the footprints on the PCB. This makes it easy to sort out what belongs where. This works quite good.
And then you recognize circuit sections. A voltage regulator, an H-bridge, standard application note around an IC and such. So then I grabbed such an IC, put it in some empty area (usually outside the paper boundary, that is just a (very minor) nuisance. And then I start building up the schematic first (which is needed anyway to get a neat schematic. Doing the PCB first, pushing labels back is not easier). Once I have a schematic section, laying the tracks in the PCB is easy, and it's an extra verification step. With this method, I did not have much need for pushing netlist connections from the PCB back to the schematic.
Rontgen view to look under IC's would be nice, but I guess you can't do that in software. Also this still does not help to look under aluminimum heatsinks. Maybe with a selective frequency, you could make aluminum transparent, but not copper. But that probably remains a wishlist item.
I had to make a few custom footprints. One for a weird fuse holder, and one for a transformer. You can also add a reference image in the footprint editor, but you have to calibrate it again. It would be nice if the calibrated image could also be imported in the footprint editor.
Now I had the footprint and PCB editors open at the same time. I guessed pad locations in the footprint editor, saved it and updated the footprint on the PCB. It works, but could be improved.
Writing this, I remember:
PCB Editor / Preferences / Preferences / PCB Editor / Editing Options / Allow free pads I never understood the use of this, but now I suddenly realize you can:
- Create a footprint with the right amount of pads.
- Put it on the PCB
- Drag the pads around to put them on the image.
- Load this modified footprint into the footprint editor
- Do further cleanup, silkscreen, courtyard etc.
- Overwrite the old library footprint.
- Update the PCB with the new footprint to keep it all in sync.
I also discovered just now that it's already possible to change pad properties (hole, shape, etc) directly in the PCB editor. (KiCad is improving faster than I can keep up with, each new mayor version has around 50 new features). I guess that in due time, saving a modified footprint from the PCB directly to a library will be implemented. For now, you have to use the footprint editor as an intermediary step.
It would be nice if the
Allow free pads is a footprint property instead of a global setting. Limiting it's scope prevents unintended changes to other footprints. This would also be nice for wire bridges, which can have a different size. This may be worth a feature request on gitlab.
Some people completely depopulate a PCB, sand off the solder mask to get a high contrast (and even mill of the PCB in thin layers to expose inner layers). Bitmap to vector conversion to automatically create PCB tracks would be very nice here.
In the default libraries many RefDes's are outside of the footprint courtyard. If you have for example a row of resistors, it's easy to mistake a RefDes with the wrong resistor (the guide line appears when it's selected). A quick way to move all RefDes's to the center of the footprint may be a good idea. It's not where you want it finally, (as they would be obscured by the footprints themselves), but normally you have to move them all anyway, so the initial position does not matter much.
Overall, the project I did yesterday (for around 80%) went quite smoothly. There is still one problem section. It's obscured by an overhanging heatsink. Nothing can be seen on the front photo. Back still has pads and tracks. Some BJT's (13003) look off. the circuit does not make sense with the datasheet pin ordering. I was also getting tired and too confused so I stopped.