Support for nonstandard reference designators

I’m using KiCad to redraw some early 1980s arcade game PCBs. These PCBs used a row/column system to designate components, for example a 74LS107 is at location 3A on the PCB, and that’s its designation. Because I’m drawing the schematic to aid my understanding of the board, and want to use the resulting drawing as an aid when troubleshooting them, it’s important that the references in the drawing match the ones on the board.

KiCad strongly disagrees with this system. If I annotate the schematic, it changes all the refdes so they’re wrong. If I don’t annotate the schematic, the rules checker complains.

I understand that the grid system has issues with ambiguous components (is C2 an IC at position C2, or a capacitor?), but that ship sailed decades ago for these particular boards.

Is there some way to make KiCad

  • Never change any refdes — only report if there are duplicates or ones with ? still in them?
  • Consider duplicate refdes per part type? This would let ERC pass a board with C1 (cap) and C1 (IC).

I don’t think that works, KiCad refdes has to be a specific format and duplicates aren’t allowed.

In that case, I would add an additional field to the components (like oldref) which you can make visible if desired.

1 Like

Agree with @Jonathan_Haas

In Symbol properties, hide the existing Ref. and create a new Field called Your Ref.

1 Like

Hmmm. I gave this a shot, and it’s not quite what I need. The actual refs are still there, and still wrong, but it’s hidden. This has downsides:

  • ERC results are difficult to follow, since they use completely random refs like U1.
  • ERC won’t tell me if I have a missing oldref, or two oldrefs that conflict.
  • The wrong refdes end up in the netlist, which I need to use as well.

I think this is worse than prefixing a U to all the ICs, so they’re U3A etc.

Either approach is fiddly and way more work than KiCad actually supporting this.

Edit: I went ahead and filed a feature request, though I have little hope it’ll get implemented.

The other alternative I could think of is mapping the old refdes to a number and use that in the KiCad system.

Like 3A could map to 0301 (as A is the first letter of the alphabet) and then you could use U0301 for that component. Or a resistor at 2C could be R0203.

Your feature request is a bit incorrect. You state that IC’s would have to start with an U, but that is not true. As far as I know the only thing that is mandatory for KiCad is that a RefDes has to end in a number. (And I do agree this is a quite silly and somtimes a nuisance.)

A program I used long ago also worked with question marks, and only question marks got replaced with numbers during annotation. (This would need careful consideration during un-doing or re-doing annotation.

As a workaround, you can add a dash (or any other character) to your own RefDes. Then KiCad would change the “A3-” into an “A3-1” during it’s own annotation. This may also help if your grid is too coarse and there are multiple symbols at the same “grid location”.
I just tried a simple test for this and it seems to work.

I actually find the whole RefDes set up wrong. Quite some years ago KiCad added “timestamps”, and later renamed to “UUID’s” to match schematic symbols to footprints. This means that every schematic symbol always has a unique identifier, and this means that the RefDes system is (or at least should be) completely redundant. It is easier for humans, and it can be useful to repair damaged projects, or copy parts between projects, and it has a “history”. But in my opinion the RefDes should only be used for “human interaction”, and KiCad should never ever block on “missing RefDes” and “needing annotation”. It should only give a mild warning when different parts have the same RefDes.

1 Like

This may be useful (but, maybe Not…)

Considering you appear to want:
• Custom Ref’s that don 't change unless you change them
• ERC without errors
• Ability to set Custom Ref’s to schematic sheets Alpha/Numerical coordinate
• Ability to avoid Duplicates if desired

Thus, I dug-up some of my earlier BOM tweaking and related files - I created half-dozen in v5 and they still work in v6.11. I did NOT spend time fussing with making their output’s pretty… but, you’ll get the idea…

So, here’s the scoop by Example:
• I created dumb schematic (not a real circuit - just wanted some parts on it)
• I set the Ref/etc to Hiden
• I Added a Field for each part (called ‘myRef’ ) and set some values
that indicate Schematic Grid-Location (I should have spread them out but, you’ll get the idea)
• Ran DRC check (no problems, no warnings)
• I generated a Netlist
• I generated a BOM (CSV and HTML) I used my custom CSV/HTML but the default should also work)
• I opened the CSV in LibreOffice (spreadsheet) and set desired items
• I opened the HTML in Firefox

ADDED: Snippet of Netlist

Summary: Easy enough to get something useful if willing to invest a few minutes to learn how to tweak the .py files and use them…

Screenshots show various aspects… (Axx crudely refers to Location on schematic)
Schematic, Symbol-Field-Table and Firefox with HTML-Bom

CSV loaded into Libre’s Spreadsheet

Snippet of Netlist

You can give this gitlab issue an upvote:

KiCad developers do use the voting system to decide what functions to work on and improve for the next KiCad version.

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