KiCad 6: Just published my BIG *preview* review

Hi all,

I have just published my comprehensive (almost 7000 words!) review of KiCad 6 (or “version 5.99” available through the nightly builds), to document and present its most important new features, and contrast it with KiCad 5.

My information came from hands-on experiments with the nightly builds (up to a couple of days ago, when I published the article), as well as reading through forum posts, the Kicad Gitlab wiki and repository, and lots of Googling.

I hope I have captured what is important and didn’t make any big mistakes.

I wanted to publish an authoritative and (as much as possible) complete document of what to expect in KiCad 6. One page that contains everything worth-knowing about KiCad 6.

Did I succeed? you’ll be the judge of that :slight_smile:

I welcome any feedback you have, especially suggestions for improvement.

For example:

  • Did I miss a new important feature?
  • Did I make a mistake?
  • Is there something else you’d like me to cover?

Here’s the article URL: https://techexplorations.com/blog/kicad/kicad-6-review-new-and-improved-features/

Enjoy!

Peter

16 Likes

You mentioned the new file format for Eeschema.
In the new format, the schematic symbols are embedded in the file (that is one reason the files are bigger) but it also means the empty question mark symbols [??] because of faulty library links will soon become a thing of the past.

6 Likes

Netlist hasn’t been needed for v5, “Update PCB from Schematic” has been the recommended workflow for ages. External netlist generation has just been demoted to File -> Export menu in v6.

This has been a common misunderstanding especially for those who have come from v4 to v5. They have continued using the old external netlist while it hasn’t been necessary.

4 Likes

“Keepout zones” are now called Rule areas (because named areas can be used in DRC rules for other than just keepout).

Named filled zones can be used similarly in DRC rules.

(You didn’t tell why naming zones or rule areas would be useful.)

2 Likes

Text variables are much more powerful than you describe, although the simplest use case with project-global variables may be the most common.

Symbol fields can be used in the layout.

Hierarchical sheets can be customized:

The fields can be used as text replacement variables for example in symbol values (“parameterized sheets”). That makes real channels possible (otherwise identical hierarchical sheet instances but with different component values).


Enhanced bus handling isn’t mentioned.

You didn’t even mention (or did you?) the new editing paradigm in eeschema (being able to actually select items and act upon the selection) although it’s one of the biggest and most important changes. The old paradigm has been one thing which many new users have considered weird to say the least.

You mention Pcbnew -> Eeschema backannotation. It’s not completely clear but actually Tools -> Update Schematic from PCB is “backannotation” - the word means propagating annotations from layout to shcematic. With Geographical Reannotation the reference designators can be annotated in the order they appear in the layout; the result can then be backannotated.

It’s possible to create nets in Pcbnew (Inspect -> Net inspector). This makes schematicless designs possible without WireIt plugin (although attempts at schematiclessness by novices raise heated discussions in the forum because using schematic is usually better).

The graphic shape Rectangle is new in Pcbnew. Rectangle, circle and polygon can be filled or unfilled; in v5 they were always unfilled (although there was a hack to fill them).

The symbol editor has been changed as much as eeschema (especially the editing paradigm). Aliases have been replaced by “derivation”. Old v5 libraries can be only read and must be migrated to the new format to be used (just like the old schematics). Migration happens in Preferences -> Manage Symbol Libraries.

In the footprint editor the Pad Properties dialog has been redesigned, and there are new pad shapes. Custom shape pad editing has been changed. Rule areas (keepouts) can be added to footprints. Edge.Cuts layer can be used freely. Pads can be edited WYSIWYG as rectangles/circles.

3D models of footprints can be semi-transparent or hidden/shown. The 3D viewer has more options; raytracing has lighting options.

Just to mention a few… :smile:


We are still waiting for curves in polygons which is promised for v6. Also the content manager for plugin etc. installation which is in the list of v6 features not landed in yet is very important.


Copypaste works now even between program instances. Copying from one eeschema window to another wasn’t supported in v5. This is seemingly a small feature but may be important for some workflows.

On of the pet peeves amongst some new users (or those who have tried but not continued using KiCad because they don’t like it) is the coordinate system. It’s now possible to change it in Pcbnew to behave as most would expect.

5 Likes

Hi @paulvdh, thank you for this.

I had not realised the symbols are now embedded.

This is a biggie.

I’ll update the article with your info.

I’d like to acknowledge you if that’s ok, should I link to your profile page or somewhere else?

Hi @eelik,

I’m one of those people that can’t forget old tricks easily.

Thank you for pointing this out. I’ll update the article.

With your permission, I’d like to acknowledge your contribution (you have made a lot of excellent comments in this thread). Can I link to your profile, or somewhere else?

1 Like

Hi @eelik,

Aha!

I did spent a bit of time to figure out where I can use a named zone.

As per your comment, they can be used to identify issues in the DRC.

I’ll update the article.

Hello @eelik,

  • Text variables: got it.
  • I did not mention the bus enhancements, will do.
  • Pcbnew -> Eeschema backannotation: got it, there a change in the UI that confused me.
  • curves in polygons, maybe in KiCad 6.5?
  • coordinate system, I admit I never had trouble with this. I did notice some related changes but did not look closer. Will do.
  • I will take a closer look at:
    • New editing paradigm in eeschema
    • schematicless designs. This is very interesting. I can see how heated discussions can arise from this, but it seems like a power user capability.
    • symbol editor and footprint editor: I did not drill into the secondary tools, will do so.
    • 3D viewer
    • Copypaste, I had not even thought of that. I’ll try it and include it in the article.

I have the feeling you are just starting :slight_smile:

Thank you, I’ll be busy next week.

Feel free to do that. I don’t have any good website or anything else, so the profile is OK.

One of the most prominent uses will probably be local area rules, for example narrow track width/clearance near a BGA. In the Syntax Help in Board Setup -> Custom Rules x.insideCourtyard('refdes') is used, but it can be a rule area and x.insideArea('rule_area_name').

No, it’s in the “ff-exception” list, scheduled for 6.0. For the exception lists see https://gitlab.com/kicad/code/kicad/-/merge_requests?label_name[]=ff-exception and https://gitlab.com/kicad/code/kicad/-/issues?scope=all&utf8=✓&state=opened&label_name[]=ff-exception. (Ff stands for feature freeze.)

Nah, I think the most important are here, except the Altium import. You have to start eeschema and pcbnew in standalone mode to use it because it doesn’t import projects, only files.

I may still add some smaller ones.

1 Like

It got easier to work without schematics, “drawing” PCB has been requested many times before.

2 Likes

OK, still some new features…

  • In pcbnew items can be grouped together, context menu -> Group. Then they can be moved only as a group.
  • Locking different kinds of items works now. In v5 even track locking didn’t work properly, and graphics couldn’t be locked at all. (Locking means locking the placement and existence.)
  • You can see some board statistics from Tools.

The very long thread Post-v5 new features and development news is still worth reading through (if you haven’t done so already), although the information about each feature may be outdated (announced when the initial version of the feature was introduced). It has links to further discussions. If you can take time to go through it, it can work as a checklist. All important features are at least mentioned there and also many small ones.

https://kicad.org/blog/categories/Development-Highlight/ has also some highlights (as the tag name implies).

The new settings system is something I forgot. It’s a major change under the hood. Important for those who are curious enough to try the development version along with the stable one: 5.99 has its own configuration folder and doesn’t interfere with v5. On Windows the nightly installer was recently changed so that 5.99 installation is completely separated from v5 installation. When post-v5 development was started it required hacking. Now it should be safe to recommend trying v5.99 without hassle as long as the projects opened with it are copies, not originals.

Here’s still one list, fulfilled feature requests for v6:

https://gitlab.com/kicad/code/kicad/-/issues?label_name[]=feature-request&milestone_title=6.0+Feature+Freeze&scope=all&sort=weight_desc&state=closed&utf8=✓

That’s ordered by weight and has old requests inherited from the old launchpad tracker on top. Ordered by thumbs up it has mostly new requests on top:

https://gitlab.com/kicad/code/kicad/-/issues?label_name[]=feature-request&milestone_title=6.0+Feature+Freeze&scope=all&sort=popularity&state=closed&utf8=✓

Both orders show what users have felt important.

4 Likes

Necessary and very nicely done.

1 Like

The infobar! People don’t like messages dialogs which interrupt the workflow, so some of them have been replaced by an infobar message and some situations which would have been cryptic without any information are now noticed. See an example in Library is not writeable (custom) SOLVED.

Or choose a read-only layer color theme for pcbnew and try to edit layer colors:

2 Likes

I believe this article can be an useful summary. I’ve just started reading it and I’ve seen you mention a few times:

KiCad 6.0 is expected to arrive in the second quarter of 2021

Don’t know if it’s a typo or too much optimism, hehe!

My impression after reading Yet another release date 6.x question is that it could be closer to the end of the year. Anyway, there’s no guarantee and it will be ready when it’s ready.

2 Likes

At the moment I would guess the third quarter, seeing the pace of development. Again: please, everyone, test and report the issues. It will make it quicker.


https://www.eevblog.com/forum/kicad/kicad-6-is-coming!/ (which is about this article).


In the project view there’s Save As for project. Many users, including me, have thought it should have been there already in earlier versions.

KiCad developers have been very busy and delivered an impressive number of improvements since last major release, including some internal reworking, but all that new code will take a while to polish.

An effect I recently noticed is that when a new release seems imminent, users take the opportunity to try it out and give feedback, so the rate of new issues goes up several notches. Most of these are as-designed, duplicate, wish list, but a significant few reveal bugs or UI improvements.

Looking at the burn-down charts (which I don’t think are public), they are headed in the right direction but probably not as quickly some hope (ie. situation normal :)). There is also the pandemic which is messing up a lot of plans. I think “sometime this year” is still in the ball park.

3 Likes

That’s true, and that’s why I’m going to repeat every now and then: please test and report (early).

`x.insideCourtyard('refdes')` is used

Is the 'x' here a coordinate or some other object? Thanks to both of you, @peter-dalmaris and @eelik, for your enlightening conversation!

1 Like

X means any item which is tested against the rule. It’s just a random name. In one rule all X (or A or foobar or item…) are the same. If I want to set minimum clearance between any via and any track (of different nets) I would write

(condition "A.Type=='via' && B.Type == 'track'")

Here we have two different items, a via and a track. Inside one condition every A is the same, so

(condition "A.Type=='via' || A.Type == 'track'")

would mean that the item is either a via or a track.

The UI has Syntax Help link in the Board Settings -> Custom Rules page. You can also try to learn something from Need some guinea pigs for a rule-based DRC <<PROTOTYPE>>. Unfortuntately older posts aren’t up to date, it shows the changing situation with syntax and features.

1 Like