Enterprise class requirements for PCB tools that KiCAD lacks

I just wanted to share some info on why KiCAD was rejected as a potential tool at the large enterprise where I work, in hopes that this might be of interest to developers.

  1. Database integration: Enterprise class schematic and layout needs to be able to take attributes and parts lists from a database connector.

  2. Schematic parts need to be able to be bound (with a set of attributes) to a part number. Assigning footprints to parts when you go to layout allows human error during every design, rather than letting you build a library of vetted (released) components with known good footprints.

  3. Gerber files are not going to cut it for much longer. During our review of enterprise-ready software to replace our current toolchain, IPC-2581 support was deemed to be a hard requirement. Gerbers require too much additional data to be communicated, usually in a human-intervention-required format, once again introducing error. Thatā€™s not acceptable when you have a complicated 16-layer stackup with impedance control requirements.

3 Likes

Nice to see KiCAD made it into the que to at least be consideredā€¦ quite an achievement in itā€™s own right.

to 1)
What does that mean, please? What do I have to imagine when I read that?
Iā€™m an amateur, never had to deal with ā€˜enterpriseā€™ solutions for ECAD, so Iā€™d like to smarten up on this.

to 2)
The symbols have a field (F2) that allows you to bind a footprint to a symbol, without the need to assign them by hand during layout - itā€™s built into the libraries.
To get part numbers one has to add custom fields to a schematic symbol - KiCAD does have the ability.
Looks like this in the appropriate .lib file then when geared for KiCost by @devbisme (line with F2, F4 & F5):

#
# ATMEGA328P_AU
#
DEF ATMEGA328P_AU U 0 20 Y Y 1 F N
F0 ā€œUā€ 1175 -1575 50 H V C CNN
F1 ā€œATMEGA328P_AUā€ -925 -1575 50 H V C CNN
F2 ā€œxQFP:xQFP_32_0.8ā€ 0 0 5 H I C CNN
F3 ā€œE:\Datasheets\Electronics\IntegratedCircuits\8bit_MCU\ATmega328P.pdfā€ 0 0 5 H I C CNN
F4 ā€œATMEGA328P-AUā€ 0 0 10 H I C CNN "Manf#"
F5 ā€œAtmelā€ 0 0 5 H I C CNN "Manf"
ā€¦

  1. considering that KiCAD is open source and has just a small team of developers chugging away at it, mostly in their free timeā€¦ did your enterprise ever consider to put in some manpower/money behind their enterprise demands to nudge KiCAD into the desired direction?
    Even enterprise chump-change would be good enough to do wonders hereā€¦

I strongly suggest you get in contact with the lead developer over at https://launchpad.net/~stambaughw and see if you can help a bit.
They really appreciate it.
Thanks - from all of us mere amateurs, in case you get something going!

1 Like

I use kicad at work. Weā€™re 6 people though, and Iā€™m the only hardware designer. My boss has no clue either, but sometimes I feel like telling him heā€™s lucky not having to pay for those enterprise minded packages. One of the benefits of working in small companies is that youā€™re not forced upon a different package than you already know, besides when working on legacy design before my time there.

Of course this was only remotely related to the topic.

1 Like

Item (1) Presumably means an ODBC connector. In the open source world this would mean interfacing to Postgresql, Compiere ERP or one of its derivatives. In business SAP or similar heavyweights

Item (2) others above have explained that KiCad already meets
Item (3) IP-2581 is downloadable here http://webstds.ipc.org/2581/documents/IPC-2581witham1pub.pdf

There is some helpful explanation here https://www.ucamco.com/files/downloads/file/22/Kick_Starting_a_Revolution_IPC-2581_Meets_Gerber.pdf?1dfa3cdbaa8c6162009a05c458f5a3f4

You should look at Kicost, it is a pretty slick BOM tool for Kicad.

Also just FYI you can add as many part fields you want to your parts to create manufacturer part number fields etc. Here is a good link that shows how to do that.

Number 2 is the most serious and obvious and mostā€¦

I just cannot understand why this tool had no proper part concept.

No one ever looked at other tools before hacking away?

Also, libraries should stand by themselves and being tied into projects.

Schematic pages standaline entities, possible to copy paste between projects.

Proper ways to copy complete projects.

It just doesnā€™t cut it.

It doesnā€™t build a bullet proof atomic part.

Also you cannot use arbitrary symbols, but need to use units within same symbol/part.

You canā€™t copy paste between units even.

Itā€™s just wrong.

No checks are done for over/under run pins.
Not a proven part comes out of the process beacuse the part concept is absent.

Professional people wonā€™t take it as pointed out by OP.

It does - I have atomic parts that are defined via the symbol with:

  • a unique value so it can be found (for my library collection)
  • a link to a footprint (that can, but must not be modified later)
  • a link to a datasheet
  • a manufacturer part number
  • a manufacturer name

You could also go down @Andy_P 's path and instead of:

  • a manufacturer part number
  • a manufacturer name

You would just have an internal part number that links this part together with the value field via other 3rd party tools (I think some python scripts) to a list with manufacturer part numbers.

I really donā€™t see what your problem is, just set up symbols as parts and restrain yourself from clicking anything in cvpcb and itā€™s bulletproof.

Explain, as afaik the libs are stand alone. Each project creates a cache lib of the parts used in that project to make it transportable without the need to send the libs with it.
If anything changes KiCAD will ask you what version of symbols/parts you want (either cached ones or the ones from the local libs).

Just navigate to a projects folderā€¦ copy the .sch file from it to another one and voila, you got your standalone entities.

KiCAD main windowā€¦ 5th button from the left (clamp with orange block depicted on it).
Zip up the whole project with all thatā€™s needed to run it on another machine and save it where you want to?
OK, itā€™s missing the 3d filesā€¦

Explain please.

EEschema will be refurbished down the roadā€¦ copy&paste between schematics/projects/etc should come with that. Itā€™s been wanted for years, the developers know thatā€¦

2 Likes

Symbols loose from the part.

Top level 1: Part
Level 2, symbols and footprint.
Level 3; padstack, library of pad shapes (optional and not very useful)

Loose symbols / units:
Can be copied around with all normal mechanisms.

Not possible to edit once tied up to a part.
Beacuse that would break part integrity.
Can edit only cosmetics, not change pins, but can move around pins, change loose texts etc.

Do away with the rescue concept in eeschema.
It doesnā€™t work properly even.
Very often minor changes just jumps right in, unoticed by eeschema.

You should be able to update your parts in eeschema same way as you update footprints in pcbnew.
Only on your own initiative.
No confusing automatic rescue part thing.

I really donā€™t understand why it is so important to defend the anomalies of kicad instead of just quickly fixing them into a professional grade tool and get into the game with the big boys.

This way kicad will be stuck.
Itā€™s quite an old tool by now and needs to move on.

OK, so you want to have symbols that represent a part, but that can be modified from one incarnation to anotherā€¦ even in the same schematic?
I can see that this would be useful for connectors sometimes, splitting up pins all over the place to not have wires need to go there - people just use labels - but besides that?
What is the use case for that?

If one doesnā€™t understand the purpose of something itā€™s pretty hard to convince them why they should do the leg work to get the feature in.
Imagine that most of the developers arenā€™t enterprise level layout-ers and do this in their freetime and mostly like to work on features THEY are interested in and need and not what an enterprise tool needs - you get the idea.

Thatā€™s why I wrote this in my first post in this very thread:

if you have a 2000 pin bga as mentioned before

you need 15-20 symbols

gnd symbol, you may have so many gnd that you will need 3.4 of those, 300 pin gnd maybe
power symbol
nc pin symbol

and all possible functional pin symbols

yes you want to avoid global pins buses etc

schema is a logical representation of the physical world

its whole purpose is to be logical and create abstraction and be easy to read understand and maintain.

its the absolute key to success in deign.

drawing a big qfp100, square and everything right up the middle in the schematics just as it look in reality is the oposite of making use of schematics as a logical tool
it all end up in what we say a ā€œcar schematicā€ if you remember those 1 page ā€œschematicsā€ that came with your old car or motorcycle.

a true ratsnest of wires impossible to trace and totally illogical.

texas instruments beagle-board schematic is an example of this, not partioned well at all, the sitara MPU just sits like a huge fat chunk.

if you have an lcd port on a chip or an Ethernet port on a chip, you make loose symbols for this things and put the Ethernet part in the Ethernet schematic,
the lcd symbol in the lcd schematic.
the jtag symbol in the jtach schematic page ans so on.

all symbols with visible arbitrary names (SYMBOL NAME attribute)
like:
Z80_DATA
Z80_ADDR
Z80_MISC

Z80 just an example :slight_smile:

refdes shall not change in schematic to U5A, U5B etc ut will just remain U5 for all U5 symbols.

you need the constraints editor

no way to do professional jobs without it.

proper diff-pair routing.

trace length matching by algoritms

with this comes the need for proper stack-up definition within the tool

material specification of prepreg, expoxy and copper.

need to speficy all dimensions for all classes of traces.
trace width
via to via
via to pad
trace to trace
trace to pad.
trace to via

need to be able to strip all unconnected via rings from inner layers.
need to be able to specify pads for via, not only outer layer pad diameter but also inner layer pad diameter.
(maybe you can)

2 Likes

Thatā€™s the only thing thatā€™s not possible at the moment (as far as I know) from the whole feature set you describe above.

So to make you happy and get a foot into the enterprise door the developers would need to allow user definable IDs besides the standard multi-part labeling of {REF}x (x=A,B,C,Dā€¦).
Good chance they might be able to do that when they refurbish EEschemaā€¦ just talk with them and convince them.
Link is above, chance is yours.

PS: I also use logically sorted symbols onlyā€¦ donā€™t had to deal with more than 64 pins yet, so multiparts are not my bread&butter (probably never will), but I know how they work and what I can use them for.
Iā€™d suggest some discussion with @Andy_P and probably @devbisme as they seem to do things like that and have more knowledge of how the KiCAD developers think about this.

PPS: usually in open source stuff only getā€™s done by somebody if they need it or are convinced that they need it. Your task is to convince the people who do the work that they need it and or chipping in and helping them by getting involved (on a friendly basis).

1 Like

OK, that one is a class above what KiCAD currently deliversā€¦
Pretty sure the developers would like stuff like this too, but the manpower needed to implement that will be twice as high as whatā€™s currently there.

Again, if youā€™re an enterprise and need those features get involved with the developers and see where you can help and how to make this real.

1 Like

there is no check today that your pins match the footprint at all

it not atomic

because you can edit the symbol/footprint anytime, and symbols slips trough the rescue check
its not bullet proof because you can break it however you want.
you wont even ever get into a proven confirmed part state because the footprint is not tied together, its just a suggestion of a possible or multiple possible footprints., no one checks your ā€œpartā€ because there is no part.
So there is nothing to break.

humans make errors computers dont , we need to use them.
make a part, check the pins, enforce integrity.

you keep saying, kicad can do this.
yes it can make design its proven, but it could be more useful

imagine how many human errors kicad has ā€œhelpedā€ to slip into production
imagine the frustration, time and cost for that.

I would even say its even more important that the tool enforce a check for people who are less used to EDA tools.

yes it is optional with constraints, that true.

but part concept is not optional

it would be a bliss for everyone, even those who cannot see it today will love it tomorrow-

Eh, you can link KiCAD to libs/repos that are read onlyā€¦ the whole github thing is organized that way.

KiCAD will allow you to change footprint links in cvpcb and doesnā€™t force you to do anything if you have these settings from the symbols, but then the compulsive problem sits in front of the computer.

As for DRC check of symbol pins vs footprint pins - pretty sure itā€™s doable by some python script and canā€™t be that hard. Get involved with the development of KiCAD and make itā€¦

you cannot defend the way things are done in kicad just because thats the way they are done in kicad

you cannot love kicad some much that you kill it.

could we agree on one single easy to do feature ?

do not change anything keep symbol/units data-structures embedded with part data structure as it is today.

no change

add only a verify button that verifies your .symbols toward the list of footprints you have in the part.

its only a check-

will not alter any state no nothing, just inform you for example:

you have 2 pins A3 in unit(s)
unit A pin XYZ is not to be found in footprint X
pins a,b,c in footprint is not in any unit(s)

just an information nothing else.

i admit my errors earlier in the thread, to many to number just now.

Hey we two can agree on anything, no problem.
Iā€™m just not a dev, not even on the dev listā€¦ Iā€™m just a user with a little bit too much enthusiasm and time that helps out on the support forums to the best of his abilities.
:flushed: :heart_eyes:

Iā€™m pretty sure Iā€™d be able to do the feature somehow in phyton inside/outside of KiCAD, given enough time and motivationā€¦ problem is, I donā€™t have that time (besides stalking the forums) and Iā€™m not in desperate need of those features, but they surely would be nice to have.
I got like 10-20 projects on my hands already, I wonā€™t be adding one more thatā€™s called ā€˜software development for KiCADā€™, Iā€™m sorry.
Maybe when I retire in 20-30 yearsā€¦
:blush:

1 Like