Annotation without numbering

I have been using Altium Designer and Circuit Studio in the past 20 years and trying to use KiCad now. So far I am impressed except for some minor things I think should be easy to implement:

  1. If you name a component e.g. connector just IN and OUT to make it clear for the user all steps thruout the design process (ERC in schematic, transfer to PCB, …) complain about the schematic not being fully annotated even if all reference designators are unique. Adding a number just clutters the schematic, the BOM and the PCB print with extra numbers. Customers might even think there might be more IN or OUT connectors if they find a number appended.

I’ve seen there have been discussions about that topic in the past, but the solutions presented there are not really satisfying. I think it should be easy just to make the ERC to complain about not fully annoated schematics only if there still are question marks in the reference designator or duplicate ones (which are already flagged in the current ERC).

  1. Annotating schematics in a hierarchical sheet might get some improvements as well. While there are options to use “sheet number x 100” or “sheet number x 1000” I would like to see “sheet number x 10” please to keep the text shorter.

  2. In best case I would like to have numbering like in Altium products, where the pre- and postfix could be inherented from the hierarchy. This would be much more complex to implement. So R1 in Block/Channel A for example could get RA1 or R1A. Altium also keep the instances of a schematic sheet consistent, so R1 in each instance of the sheet will always be the same position of the schematic without the need to re-annotate each sheet for yourself (making it much easier manually stuffing or testing boards).

It would be great if 1 and 2 of this suggestions will be put into the features to be implemented.

There are problems with your proposals.

Re 3. Prefix from hierarchy: RA1 could be an instance of a part type RA whatever that could be. Which means the RAs will group separately from the Rs in the BOM. Postfix from hierarchy: U1A is the A unit from part U1. So this wouldn’t work with KiCad’s reference syntax which is letters numbers optional-letter.

Re 1. You should not be assigning a reference of IN or OUT. They are probably of type connector so would start with J. You can create another field to annotate them, KiCad allows additional fields, there’s no need to overload the reference field. You can then hide Jn in the schematic and/or board and show the other field.

2 Likes

What’s the basic problem as long as the designators are unique? I know at the moment KiCad does not accept.

Ad 3) Prefix: From my idea (as Altium does) grouping in the BOM should be from value and footprint. But that’s another story.
Postfix: Unless you have one component U1 with more units AND a second component U1 which gets A postfix from the hierarchy this should not be a problem as well. But in that case the problem already is naming two components as U1 at all.
In a design with e.g. 32 instances of a subcircuit it is pretty much work to keep all the namings in the individual sheets consistent after applying a change to the schematic. And if you do not go thru all sheets and reannotate each of them there is a good chance to have R100 of one instance at a completely different place of the second instance. This makes manal testing of boards complicated.

Ad 1) There have been several discussions about that in the past already listing the problems caused by not accepting reference designators without sequencing numbers. And from the posts I have read it looks like there are more users out which would find that useful, as it is also possible in other programs.
Sorry to say, but for me this looks like the developers of KiCad simply say that’s our way and we won’t change that independent of users will find this useful and being an restriction which is not required.

Nevertheless I will go on testing KiCad. For general use the thing I miss most is a way to import Altium Designer and Circuit Studio (Altium as well) PCBs, as in my business there is a good chance to have a redesign of a board after several years you don’t like to start from scratch or just importing the gerber files. The import of the schematics work well except for the incompatibility caused not accepting the designator namings.

I’m not a developer so I do not speak for them but it sounds like you have not used KiCad much to date.

You are right, I’m new to KiCad and evaluating it as an alterate program to Altium products I have been using >25 years now. So I like to flag things shown as useful but not accepted by KiCad.

you don’t have to do this manually. go to the annotation tool, select reset annotation, annotate and you are done. If you have several instances of the same circuit then the reference designators are always the same for all components except the prefix you selected.

the restriction is at the moment very much required for KiCad to get the connection between schematic and layout and a change probably would mean a lot of restructuring for little benefits.

And what if you want to have control about naming in a circuit but want to have a consistent naming across instances because otherwise you will have to rewrite all documentation and testing instructions for a board if existing reference designators change? → You will have to step thru all the individual instances and annotate the new parts without “reset annotation” checked and “this sheet only” or doing that manual.

It might be true that some of the changes requested would change a lot how relation from the schematic to the PCB is handled in KiCad at the time. Maybe that’s why Altium products assign a unique ID to each symbol added in the schematic which won’t change in future design steps. This unique ID is used for tracking the design changes between schematic and PCB independent of other features like reference designator, footprint, value, … The default is to match more strange changes per reference designators, but is fully under manual control if you like.

you don’t have to. kicad does not mix up the sheet IDs every time you do something in the schematics so usually the same IDs are the base for the prefixes and so the numbers don’t change if you do a reannotation.

I know this is not 100% reliable and I am in favor of adding some kind of option to not change IDs of existing sheets to fix this.

The unique ID approach certainly has it’s advantages but kicads approach also has some: you can always change simply reference designators in the layout to reflect changes without having to change the layout or schematic itself. this also helps if you want to duplicate certain parts of a layout for multiple circuits. there you only have to change the references to reconnect them with the schematic.

It is worth opening a feature request on GitLab for this and seeing how popular it is. None of the technical challenges here are impossible to overcome, it’s just a matter of cost vs benefit.

you don’t have to. kicad does not mix up the sheet IDs every time you do something in the schematics so usually the same IDs are the base for the prefixes and so the numbers don’t change if you do a reannotation.

If you have to rearrange components in the sheet because of design changes there is a good chance reannotation will change most reference designators if using “reset annotation” as you initially suggested.

The unique ID approach certainly has it’s advantages but kicads approach also has some: you can always change simply reference designators in the layout to reflect changes without having to change the layout or schematic itself. this also helps if you want to duplicate certain parts of a layout for multiple circuits. there you only have to change the references to reconnect them with the schematic.

Of course workflow is somewhat different with every program you use.

I tried that copy/paste now and noticed there is an option to relink the symbols and footprints based on the reference designators. This definitely is a useful tool. It also reassignes any attached copper to the new nets (otherwise it will end up in a mess).

A quick idea I have at that time: It would be a perfect option if you could select a block on the PCB and have a tool to update all reference designators in the selected components at a time, for example specifying “add 100”.

Just to mention: In Altium products this is possible with the unique ID’s as well. There is a checkbox “match based on reference designators” when updating component links. So it’s not a decision of Altium or KiCad style of handling that (of course some programming to implement all that options).

I agree with the annotation thing.
The “official” stance is that annotation is just for numbering parts, and not for labeling stuff for users. Hiding annotations and adding other text to the PCB is certainly doable but why should it be needed?

As I see it, annotations are nice to have, and useful for humans, such as PCB rework and repair and documentation, but they should not be used by the PC for identifying “parts” at all. All items (even wire segments (don’t ask me why)) already have UUID’s in KiCad and in an ideal world those should be used for referencing parts internally in KiCad. If in that case for example ERC is run, then it’s ok with me if ERC is run without annotation, then it would just report that “R?” has some problem. And when ERC is run again after annotation, then the user also knows which resistor has that problem.

Implementing this is probably quite a lot of work, and not very urgent (the current system works reasonably well). But I do think that implementing this will help KiCad feel “more professional” and wider acceptance. But I also see there are much more important issues to be solved, and then I get lost.

1 Like