How to tell the PCB DRC that the connector is in fact a wire?

Observe the following (simplified!) use case in KiCad 8. One PCB with a led, button and resistor, the other with the battery. In order to produce it in one go (cheaper) it is designed as one PCB that is to be manually separated after production. To that end i used a keep out zone. There are two (hierarchical) sheets and a PCB:


So far, so good, the ERC produces no errors (it does not notice that i reversed the led :joy:). But we see that two “wires” are failing. This is because we make use of the power symbols GND and +3V which are global symbols of course. Running the DRC also reports these are errors:

** Found 2 unconnected pads **
[unconnected_items]: Missing connection between items
    Local override; error
    @(115.9750 mm, 68.6300 mm): Track [GND] on B.Cu, length 2.8355 mm
    @(116.0000 mm, 48.7300 mm): Track [GND] on B.Cu, length 22.5050 mm
[unconnected_items]: Missing connection between items
    Local override; error
    @(125.8300 mm, 71.1700 mm): Track [+3V] on B.Cu, length 1.6546 mm
    @(164.6500 mm, 57.3750 mm): Track [+3V] on B.Cu, length 42.5450 mm

But the PCB’s are meant to be stacked on top of each other, so there is in fact no real problem. The question is, how do i tell the board design program this? So far i thought of:

  1. Ignoring the errors, but this is not pleasant for in the real situation these connectors are much larger with many power rails and multiple stacked PCB’s.
  2. Remove the power symbols and use local labels with the names GND, +3V etc on each sheet instead. But this reduces the power of the ERC somewhat, and it feels like a hack.

What i would really like is define a component with the multiple footprints over the different PCB’s that does this connection for me. Or, if that is not possible, draw some “invisible” wire on the PCB.

But it could be that i am missing something very obvious here. Thank you for any tips.

Make two new nets - +3V_in, and GND_in.

ETA:
Better yet, get rid of the power and ground symbols. They are superfluous.

2 Likes

The short / simple answer is that this is (still) simply not supported. KiCad (officially) just supports one PCB per project. As a result, any solution will be some kind of workaround.

In one of my projects, I have a backplane with 40 pin connectors that connects other separate projects. For those I have made a custom schematic symbol for the connector, that has all the power and signal names and pins, and I use that connector symbol in all other projects. It’s an easy way to prevent making connection mistakes such as your reversed LED to such a connector. So in your case, you can create (modify) a connector symbol, and name the pins of the connector “GND” and “3V”. Note these are not wire labels, just pin names.

Thank you @3Dogs and @paulvdh for your answers. If i “get rid of the power/ground” symbols i must use local labels which was in principle my second option, for visually wiring all these together is certainly not an option. But i think “the conclusion that it is not supported” seems the correct one. Too bad, i really hoped i had overlooked something.

Anyway, i think the option to connect two pads (placed manually or as part of an existing footprint) by a virtual wire on the PCB would be a great addition (maybe in the form of an user-signal layer). It helps in my use case, but also in the case where it turns out the routing becomes impossible, and you decide and external wire will be added later to the PCB to bridge that last path you could not cross.

I support the addition of a “virtual wire layer” as I too have had situations where adding a link wire to a design removed the need for an entire layer.
Admittedly this was in the days when PCBs were expensive, and my design was single layer. Quantity was low. Components were all through-hole. Manual assembly. A link wire saved the day.
It is less of an issue today when multi-layer PCBs can be had for a few dollars from China (I think the price of single-layer boards might even be higher at some places?).

But KiCAD is used by hobbyists as well as professionals, and making a one-off with a few link wires is no issue for a hobbyist!

PS: Adding a specific layer for this purpose may be mute, as an ‘extra’ layer pair can just be added to the design but left out of the gerber pack (it does make creation of a ‘gerber pack’ a lot more difficult and prone to error though).
However, if we’re talking gerbers and manufacturers we are starting to creep out of the ‘hobbyist’ realm.

1 Like

I was thinking 10 minutes and I can’t get what ‘difficulties’ in creating gerbers you have in mind. When 15 years ago I had to add at 2 layer PCB 3 wire connections I just changed design into 4 layers and draw 3 tracks at one of extra layers.
Then when generating gerbers I just didn’t checked internal layers to be generated. Done.
But not checking 2 layers can’t be said to “make creation of a ‘gerber pack’ a lot more difficult and prone to error” so I wonder what you can have in mind.

You overlooked that you can add extra layers and make there connections just to silence DRC.

Typically there are no imposed by the manufacturer rule that your PCB have to be rectangle. You can have any PCB shape. To make separation easier modify Edge.Cuts to have most of work be done by PCB manufacturer.
Here I showed the example of KiCad 5 made PCB I ordered 4 years ago:

Hmm, I guess there is a hack to solve any problem, but adding layers to make a connection that is later to be done by a physical wire or connector is just not the ‘royal way’. An other problem with this approach is that my PCB manufacturer accepts native KiCad files as production input. The last thing I want is confusion about the number of copper layers that must actually be produced.

True, and thanks for the tip. :+1: Separation is not a problem for me. The PCB i showed was just quickly made to show an example. My actual use case is much more complex, and has all the cuts and mouse bites required.

For me it was the very good solution.

  • I didn’t had to design footprint being these wires taking into account the length of each connection,
  • I could draw wires as I do with standard tracks,
  • I used that layer to make separate documentation of connections that had to be made by wires.

Around 1990 when our devices (GAL & Serial EEPROM programmer) were sold in electronics stores we had feedback from one store that a customer was saying that shortly he will do the copy of our product. Later it happened that other customer persuaded the seller to lend him the programmer to check. He returned it, but when the next customer bought it it turned out that it didn’t work. After opening the device the seller stated that the entire interior had been stolen. Only the zif socket and the LEDs were left.
We then decided that no one should know about our devices nothing more than he only needs. For example to PCB manufacturer we send only gerbers, and contract manufacturer don’t get our products schematics.
Because of this I didn’t even thought that someone can send them the whole design.

There were interest in copying this programmer because all new versions of PC software controlling it we provided for free. And device someone bought in 1990 could work with software I provided 20 years later supporting many more elements than initially. In the times when there were no flash and upgrades we did it using 8051 internal 128 bytes RAM to store each device programming program (send each time from PC), data to be programmed, program variables and microcontroller stack. Yes 128 bytes (not kilobytes).

@Piotr
You are exactly right - you can in fact turn individual layers on/off for export to gerber. My bad - turn that into a downvote, KiCAD can already do it.

And in relation to persons stealing the GALs etc, and them returning it - that is really low. One would think they’d buy it and keep it… then no-one would ever know they stripped it down. But the way they did it! Stupid in my opinion. Now it is known what they did (even if bought with “cash” and they were untraceable). Now you take precautions.

I don’t send my PCB file to anyone. On occasion I deliberately get the PCB made without reference designators: are those pads for an R, or a C, L, diode… To make reversing even more difficult, add some extra layers and put all the traces on the inside, with some ground layers to prevent light from revealing where those buried tracks go… is making someones life difficult worth the cost difference between 4 and 6 layers? A good many PCB fabs do via-in-pad now too. A pad with no tracks??? WTF???

Won’t stop someone determined, but will make it a lot harder (and hopefully un-economic).

Search “VIPPO” (Via In Pad Plated Over) if you’re curious.

Actually that last comment of mine “A pad with no tracks” is how a person (admittedly, one with minimal experience) would view a circuit board that used via-in-pad (VIPPO) technology… how can a component work with nothing connected to it (excluding antennas of course :wink: )
Sorry for the confusion!

Easy. When they ask you what you want done with User Layer 9¾, say “nothing”.

1 Like

I know I’m going out of KiCad subject. Trying to be as concise as possible. Sorry.
He found he is not able to copy it so decided to stole. Before you judge his decision as stupid you have to consider the abnormal economic situation here those time. Working as academic teacher I earned $13 per month (not a mistake), and 8751 alone (with EPROM integrated) costed probably around $5 so all BOM may be $10. Adding PCB, assembling, programming, metal case (hand made individually for us by other manufacturer) and some for development costs the end price could be about $40. It could be his 4 month income so after stopping eating for 4 months …

Til 2017 our PCBs had no silk at all (in Protel we used silk layer for our documentation needs). Assembling machine need not it.
Since I moved to KiCad I use silk but having only PCB name and footprint rectangles.

I have read that getting out the flash contents (by grinding) is getting cheaper and cheaper.

You should do a feature request of this

1 Like

earned $13 per month

Ouch!

Doing some smart things in design (no silkscreen, buried tracks, making sure ‘readout’ is disabled for FPGA/microcontroller) costs little to nothing. Others cost a little (grinding off part numbers, opting for buried vias). Some a little more (potting in hard black goop). But nothing will stop someone with a big enough budget - and it may be cheaper for an adversary to perform a little industrial espionage rather than go the hard way…
But that is all off topic.

@joojala What do yo mean “You should do a feature request of this” ?
Edit: Sorry, just realised it was in response to my “support the addition”, but I believe KiCAD already has the ability to ‘hack’ a solution by adding layers that never get manufactured.

Well, that’s a hack suffering the problem that you cannot send in the whole KiCad file if i understood it correctly. So i’dd rather have it native.

On the other hand, i see that there are 659 open feature requests at the moment, so it will probably not be implemented before KiCad v19 or so :joy:.

Can anyone (with a gitlab account) make a feature request or does it require special clearance?

Well there is already a DNP property on parts so it’s not too outrageous to suggest a Do Not Manufacture property on layers. Of course this also increases the chances of inadvertently switching it off, but people do forget to plot some Gerber layers too.

So GitLab away.

I think there is nothing stopping you from creating an account there.

1 Like

Yes anyone with a gitlab account can make a feature request (or a bug report).

1 Like

This is the request: Allow for external wiring to be added in the PCB editor. (#18833) ¡ Issues ¡ KiCad / KiCad Source Code / kicad ¡ GitLab