Hi folks,
This post is about handling ERC warnings when tying unused inputs high or low - specifically whether unused inputs may warrant their own pin type. Hopefully the lead-in to this question will also serve as a good reference for newer folks just stumbling onto the issue.
Below is an ERC output for a board I’m working on. The warnings are coming from IC’s with bidirectional digital pins which the datasheet says to tie low or high if unused (I tied them low).
For the purpose of producing a working board, these warnings can be ignored. They don’t represent true problems and the board will function just fine despite them. They occur simply because Kicad has been instructed - by way of its Pin Conflict Map - to generate a warning if pins of type “Bidirectional” are connected to pins of type “Power Output” (see below).
I’ve read several good posts from the forum on this topic. The advice for dealing with these warnings generally falls into one of following approaches:
1. Turn off individual ERC warnings. Right click on a warning and select ‘Exclude this violation’. Presumably you will do this for each warning, and only after you’ve given thought to it & decided it’s not a problem. This is a safe, methodical approach, but it requires you to keep a list of exclusions - which for some may get long. Also, to my knowledge there’s no rationale field for exclusions, so it’s up to you to remember why any given exclusion has been OK’d. So a long list is even more problematic. I try to keep my exclusions list as short as possible.
2. Tell the Pin Conflicts map to allow these specific conflicts. Go to File → Schematic setup → Electrical rules → Pin Conflicts Map. Click on the appropriate connection & change it to a green box. Beware: you are basically declaring that a situation which formerly generated a warning will now be allowed. You run the risk of missing true problems.
3. Turn off pin-conflict checks altogether. This can be accomplished a couple of ways. One is to go to File → Schematic setup →Electrical rules → Violation severity. Then change “Conflict problem between pins” to “Ignore”. A second way is to right click on one of the individual warnings in the ERC pop-up & select “Ignore all ‘Conflict problem between pins’ violations”. In either case, it changes the state of pin-conflict checking to ‘ignore’ (see screenshot below), and it will now show up in your ERC window’s ‘Ignored Tests’ tab.
If you use either of these two approaches, the warnings will go away but you once again risk missing true problems - this time because the check is no longer performed. Thus, use this approach at your own risk.
4. Stop running all ERC checks. Yeah, you could do this, but the fact that you’re reading this post says you already see value in running ERC checks because they do catch valid problems. So not really an option.
5. Change the schematic-level symbol so the pin types are “correct”. To explain this I need to digress for a moment. Realize that each symbol you see on a schematic has two versions: the library version and the version specific to that particular schematic. The two versions don’t have to be the same - nor do you always want them to be. Often you’ll place the library version of a symbol (i.e. the “master copy”) on the schematic and then tweak it for a particular project - without changing the library version.
OK, back to the main topic: ERC warnings. Yet another solution is to change the pin types on the schematic version of your symbol so that they stop generating warnings. To do this, right click on the schematic symbol → Properties → Edit symbol (do not select “Edit Library Symbol” or you’ll be editing the library version). Change the pin type of each problematic pin so that it no longer generates warnings. You do this by right clicking on the pin in the symbol editor → Properties, and then using the drop-down to change the pin’s electrical type. These changes only affect the symbol in that particular schematic. The library symbol is unchanged. (The downside is that you’ll still get a warning for each symbol whose pin types were changed because the library symbol no longer matches the schematic symbol. But it probably results in fewer overall warnings.)
In my case, I have pins of type “bidirectional” connected to pins of type “power output” and I’m getting ERC warnings. if I changed my unused pins from “bidirectional” to “passive”, they would stop generating warnings because the Pin Conflict Map shows a green box where “passive” and “power output” connect.
6. Create a library-version symbol for every different possibility. In theory you could create several library versions of a symbol - each with different unused pins. Then you could load whichever one was appropriate for the project. But this seems like a crazy amount of bookkeeping. I mention it here only because it IS possible.
So, I’m planning to use approach #5. There’s a minor problem, however: if I ever decide to use one of my unused pins, I have to remember to change the pin type. It’s declared “passive” and will give almost no warnings. That’s because the Pin Conflict Map shows that a passive pin can be connected to almost anything & still get a green light.
This made me wonder whether a new pin type would be useful. It could be called “Unused” or something similar. It would generate no warnings when tied to a power output, but the moment you tied it to anything else (e.g. an input, output, bidirectional, etc.), it would give a warning. This would force the designer to change the pin type if they ever decided to use that pin. Plus it would be a very intentional way of handling what I’m guessing is a common problem.
That said, wish lists are always long and I certainly don’t think this is a critical need. Many thanks to the Kicad developers for accomplishing what they’ve already done - it’s a great tool!
Curious to know what others think - and thanks!
Steve