Altium Designer Backwards Annotation Hell

I’m tired of searching for reference designators on circuit boards, so I decided to start annotating schematics from the PCB locations. That way all of the designators in sequence are nearby (at least in theory). For example, R1 would be near R2 and R3. The process of reannotating the reference designators on the circuit board and importing the changes back into the schematic is called backwards annotation.

I looked at Altium’s functionality and decided to try it on my last board. It seemed easy enough. Just reannotate the designators in the PCB file and then import the changes back to the schematic. So I did it and it worked. The only weird thing was that all of the schematic designators didn’t change. Instead they had the correct PCB designator in parenthesis next to the schematic designator. This was my first time at it so I figured this was normal. Especially when the generated BOMs and PDFs had all the correct PCB designators without the parenthesis business.

Last week I needed to update the board with some extra circuitry and change some nets. I annotated the schematic for the new components and updated the PCB as normal. Most of the new parts disappeared and the nets were all messed up. The schematic annotation had assigned some of the new parts the same designator as existing PCB components after the reannotation. In the process of updating the PCB it has decided to merge the component with the same reference designators together. I pretty sure that Altium asked me a question about it during the update, but who knows. It asks way too many questions and I simply don’t have the patience to read and consider every message it tells me.

As an experiment I tried a new project and I could reproduce the behaviour. After an afternoon of playing around I discovered how to make it work: After you update the schematic from the PCB, you have to specifically backwards annotate the schematic using the generated ECO file (Tools -> Annotate Schematic -> Back Annotate). That changes all of the schematic reference designators to match the PCB without parenthesis. Then you have to re-update the PCB since all the net names have changed (don’t get me started on this one). Now everything should work as advertised.

The only problem was how to fix my existing project. I didn’t want to redo all the changes and I was tired to messing with annotating the schematic. So here’s what I did to fix it:

  1. Change all the new components to ? designators (ie R?, C? etc).
  2. Manually change all the existing schematic designators to match the the PCB. All 200 of them.
  3. Annotate the schematics for the new parts.
  4. Update the PCB. Don’t try to match nets since the net names have changed (I learned this the hard way).
  5. Manually check each PCB error after importing. Fortunately this board didn’t have extensive changes and was quite small.