KiCad as alternative to Altium and other paid software

That was exactly what I asked in 2015 at the dev mailing list… the reply was very cold … so I improved my kicad StepUp tools to implement the integration/collaboration between KiCAD and FreeCAD… both the eCAD and MCAD are open source and then the collaboration cannot be stopped by commercial decisions :smiley:

2 Likes

There are lots of new developers since 2015 :slight_smile:

2 Likes

StepUp handles some custom pads… particularly you can find some sample on Demo menu

2 Likes

I design some simple PCBs at work and used Altium before now i use KiCAD. Here are my 2 cents

Bill of material
Due to the missing information in the KiCad library symbol (see above) the the generated BOMs are very limited that require a lot of reverse engineering.

Fabrication Outputs
It looks really good and I couldn’t see any obvious missing.
Altium have super advance batch work configuration to automatically create production files but most of the time it’s really not needed.

I use a python script to generate my BOMs, a BOM for every version, when there are different ways to assembly a board, of a PCB. I also use python+bash to create my other required output files, automatically. This is more powerful than in my Altium version (2015) where a click by hand was needed for every output every time something changed. It needed some time to made the scripts but once they where made i was faster with KiCad than i was with Altium.

When you compare Altium to KiCad to think about which one to use you should also look at the things KiCad has but Altium does not have.
Yes Altium has some advantages. But it is not a good idea for professional work, in my opinion. Simple because the generated files are binary blobs that are hard to read with any other tools and Altium is a closed source software. When Altium will ever go bankrupt or something else, you are stuck with the software you already have without a possibility to fix incompatibilities with newer hardware, OS’es and file formats yet to come. We have some older PCs at work with Windows 7, XP and even 98 to run software and hardware that is not supported by newer versions of Windows. This is annoying at best and less problematic when you have the source code and no DRM.

When evaluating new software, prefer open source software that uses text files and runs on multiple platforms over closed source software that uses binary files and only runs on one platform.

4 Likes

I’ve used KiCad a bit for hobby projects and my current job provides me with Altium so I have a bit of recent experience with both. I think KiCad is brilliant as open source software. I only wish I had the software skills to help move it forward because I think it’s really interesting - alas, I am only really a hardware guy. There’s only really a few small niggles I have since getting back into KiCad after a long spell on Altium:

  • I’d like to be able to edit properties en mass. For example, it would be convenient in the footprint editor to be able to drag a box over a load of lines and edit their thickness all at once like you can in Altium.

  • Some way of easily duplicating layouts. For example, if I have a schematic sheet entitled “Gate Driver”, in Altium you can use a repeat command to repeat it in the master schematic then you just need to layout one on the PCB and copy the layout across. As I understand it, there are possible workarounds in KiCad for this though.

I haven’t yet explored the PCB design rules in any great depth yet, but it will be interesting to see how it compares. Altium’s design rules I found had a very steep learning curve but allow you to do quite complicated clearance rules and connection rules for polygons too. I’m hoping KiCad is a bit easier to get started with for that.

Coming in V7

On the roadmap (maybe for V7)

The new rules engine in V6 will help a lot, although it still won’t have everything Altium has. In particular, KiCad is still missing many of the signal integrity and DFM/DFT checks that Altium has. I encourage you to make sure there are open issues on the bug tracker for any type of design rule you find you can’t do in KiCad as you get deeper into it.

2 Likes

I’m leaving my current job soon so I’ll be saying bye bye to my Altium licence. I just reinstalled KiCAD yesterday for my hobby projects so I’m looking forward to getting stuck in. The symbol and footprint library management seems much easier than it used to be. I have to say it’s been quite refreshing playing with KiCad for a few days as I’d forgetten how insanely complicated Altium makes some things!

I do quite a lot of power electronics stuff, up to 800V, so I’ll be taking quite a keen interest in the clearance rules. Like I said, I only wish I had the software knowledge to help with the project but I really only know a bit of embedded C for control. I’ll maybe try and contribute some libraries for the Texas Instruments C2000 series controllers that I use a lot.

2 Likes

A was using KiCad
Version: (5.99.0-8185-g86be755c83), release build
during my evaluation and I updated the original post for clarity.

1 Like

Yes, I think it looks promising. Generating your outputs automatically is my goal. Many people are not very comfortable with programming though. Are there any good examples if you want to start with these python scripts you talking about?

Yes very convenient in Altium. You have a ton of ways to select things in Altium. And then you do the operation on all these features in one operation.
There is a raw method in Altium to. You can get up all parameters in the database and edit them in a spreadsheet like manner. Its very useful when you work with a 650 pin BGA for example.

1 Like

I looked at this. KiCad is much harder to start with. You have to enter the design rules manually as text. In Altium you have powerful helper builders that create the rule as text. Then you can enter it manually when you see and know the syntax.
The bad. I have used super advanced design rules in Altium. And its very easy to get lost when you come back to a project after a couple of months. Al of sudden you can not put the obvious track where you want because the software are not responsive. Later finding you set design rule before that reject that track. Altium is super slow when you have advanced design rule check on. Sometimes so slow so you have to turn of desing rules when you route.
The basic routing functionality in KiCad is better than Altium 20 ver.
The classic basic design rule method originated from Specctra Router and adopted in Altium a couple of years ago is very easy to work with. The matrix.

The problem is that method really does not scale. A similar structure exists in Mentor Xpedition. If you are dealing with a complex card but essentially one reference then this is manageable and it was for high-speed applications that this type of thing originated.

Imagine a 3 level converter (so 12 independent high voltage switches) each with their own local trace to via but then trace to other trace, trace to other via… then the main control and all the high speed concerns and maybe some isolated main psu…

The last 2 level converter I did in Mentor ended up with 15 unique ground references and for every constraint rule you have for one area it needs to exist in the others so you can then ensure there is 3.5mm creepage (to support the working voltage). The resultant matrix was huge and unworkable AND still this matrix did not cover everything and it was visual inspection for segregation that helped.

The textual approach that kicad has taken is far more powerful as you can have fewer instances to perform the same role - if you could add nets to multiple groups it would be even more powerful!

Yes it is cumbersome but I wouldn’t be surprised if someone wraps a UI around it… either as a plugin or as part of V7+ because the concise formatting for the rules should be easily generated by some input

This is precisely the sort of thing I’m working on. Even if you’re working on two level converter, you’ve got a high and low side section and three half-bridges, so six different areas to deal with. If you’ve got snubbers comprising series/parallel RC elements, resistors and diodes in your gate drive trace and floating power supplies to drive the gates, you end up with an awful lot of nets which need to be added to a design rule to keep them away from the others.

I haven’t yet tried to set all this up in KiCad but it will be interesting to see how it goes.

I have not worked with clearance rules, they seem a bit complicated to me and not really useful for the simple PCB’s I make.

I did have a very simple idea of “drawing clearances”. For KiCad it would be the same as drawing copper tracks for some net (so they can be put in a net class, shoved by the interactive router, etc) but there is just no copper in them, so just the clearance remains. It’s very intuitive simple, flexible and effective.

These clearance nets do have some subtle differences with copper nets. For example they do not end in pads, so the global “cleanup tracks and via’s” should leave them alone when cleaning up stubs, and they should be visually different from copper tracks. Maybe hatched and in a different (light) color.

Exactly, then chuck in the EMI filter where you need segragation not only from the power coming in but then across the CM and DM chokes (obviously not the full potential but still some). Then to manage the design not resulting in a huge footprint, intermediate nodes clearances associated with the CM caps. Then lightning strike protection where you can afford the creepage to be lower (as the working voltage is lower) but it then needs to not flash over…

The matrix approach does not scale. I believe this does but it has the opportunity to be really frustrating to create

Actions plugin: replicate layout

I also used this to replicate the layout of 6 gatedrive circuits (four current sensing etc) and it is a real lifesaver for OCD and timesaving. It would be great if this got baked into KiCad as default but for now this is on the short-list of must-have plugins (teardrop, interactive BOM and FreeCAD stepup)

https://gitlab.com/kicad/code/kicad/-/issues/1998

Meanwhile the Replicate Layout plugin does it, and it’s one of the most interesting plugins for KiCad.

EDIT: Now I don’t like Naib at all, he’s just too quick… :smile:

I don’t know Altium, but I am still using its predecessor - Protel 3. There I work normally with binary files. But as it don’t allows me to use small chars in element values when I need to add 10uF capacitor to library I add 10UF then save library as ASCII then using text editor replace 10UF with 10uF and then open ASCII library and save as binary. That is the only situation I switch to ASCII but I think all files you can change to be ASCII and work with them don’t using binary format.
Do that possibility was lost when Protel changed to Altium?

May be during the time they made them so powerful that learning get difficulty. In Protel 3 it seems for me very simple. You can define your own classes of components or nets and add to each class elements or nets from your PCB. Then when adding clearance rule you specify from what to what that clearance is to be assured. Each of them (from or to) can be Net, Net Class, Component, Component Class, Object Kind, Layer, Whole Board. When adding rule specifying pad to zone connection style (width, angle, how many connections) you specify to what that rule applies (Region, Pad, Net, Net Class, Component, Component Class, Whole Board). There are other things (like From-To classes) but I have never used so don’t know. Writing this here I noticed that I have never used Region and don’t know how I will have to specify it (may be I have to define and name some regions before). When I selected that I wont my rule to be applied to Region I got 4 edit boxes to write x1,x2,y1,y2 there and everything got clear :slight_smile:

It is the way that you will have to curry about it during routing - you will have to route that clearances in addition to routing your tracks. Not having it you do something close to it - you know where the bigger clearance you need and left it there.
The task is to let program control you during routing (and may be placement) like it controls you for example to not connect to pad not at the same net.