Reflection Friday :: The agony of upgrading software

CEO Additude Innovation

If Technology doesn’t fix the problem … we need more technology!

After a long period of silence I am back writing. It has been a hectic year, but it seams I will have some more time with writing these small stories and observations. It will still be on the passionate, or as some what have it "nerdy side". I have also together with the others at Additude been involve in building our new lab. That is something we will get back on though.

Anyway ... this time about the agony of upgrading software.

A few weeks ago Altium released version 20 of their software for PCB design. Although I am a closed beta tester there is always something you miss. Since version 18 Altium has made changes to the UI of the tool. In addition to going "dark theme", which seams to be something you must do. They have changed quite a lot of the basic UI and how you work with it.

I will already here say that this is quite welcome and for most parts they do a good job. Slowly, they have have been removing old and confusing methods of work. Sometimes they mess up, sometimes it seams that they messed up until later revisions, and sometimes they get it right from the start.

This time they have ...

  • Changed the properties panels and made them interactive. I like it, but they also removed useful information from the bottom status bar. For us with the key-commands in the spinal cord, we now see and empty status bar. We need to look at the status in the panels. Which can be docked anywhere or not open. Confusing!
  • Speed up on the schematic routing. Very nice. Thanks you.
  • Added any angle routing so we can make those 2100 pin fan-outs look like you dropped a perfectly aligned fan-out and it hit the floor and ended up messy and almost nightmarish. No PCB designer will ever use it. It will surely find its place, but not there.
  • Voltage creepage rule. That was unexpected but very welcome.
  • Return path checking. Not unexpected, but welcome.
  • Sliding. The router handles sliding of traces much more intelligently. Fewer rats-nests, which always ends up in remove-redo. The other day it really surprised me by suddenly doing almost exactly what I envisioned. Hand clap for that. Twice.
  • A super annoying error with snapping that was introduced in 19, seams to almost have been eradicated.

When you do all these changes things are broken. To be honest often you just need time to adjust.


In the vacation around Christmas (which never ends up as vacation of course) I installed version 20. I run it in a virtual environment with VM Ware Workstation 15. The host computer is a DELL XPS 15 with Core i9, 32G RAM and 1T SSD. It was the ordinary next-next-(next)-finish ordeal. I did some quick run through and tested that everything worked OK. Run post processing on my test boards and compared Gerbers.

Wednesday I woke a bit early after the festivities and though I would test it out on a not-so-critical board. Concept electronics in a DIN module. I spent the better half of that day designing, doing components, schematics and layout. In the evening I sent it to a Chinese supplier for manufacturing. A manufacturer that charges me 2 USD for 5 boards (An insanely low price) and delivers back to Sweden in 4 days. So If I submit on Saturday, I have the boards on Wednesday. For two-point-zero-zero-dollars.

However. The next morning I was got with this mail.



What! ... No solder mask openings on any of the pads. That was an error I had not experienced since "The big Gerber Crash" in 1997 at Ericsson. What was this?

Another board I sent of the same day had passed with flying colors, as it use to be.

However, first a bit background reading ...

Tented Vias

When doing a PCB design you can either have the vias tented or not. In Altium this is its own parameter. Most other design tools either have it in the stack or don't care at all.

A via is either covered by solder mask (tented) or open. The coverage with solder mask can be complete or partial. This depends on manufacturer, material and geometries.

Why cover them?

Tented vias will be more resistant to physical damage and electrical shorts.

If you use vias close to/or in pads, you will hinder solder from flowing through to the back side and form a ball. This firstly drains the pad from solder, but also the ball could interfere with a second side re-flow. The stencil for the second side could ride on the solder balls. This is often the case with BGA dogbones for instance.

Also, in prototypes they make fine testpoints and start/end of patching.

Why not?

The small hole can provide a way for corrosive flux, moisture, and other chemicals to enter the via being trapped. This can enable the possibility of a failure of the via due to corrosion eating the copper via. This is less of an issue due to the popularity of no clean flux for SMT assembly but corrosive water clean flux is still prevalent in through hole assembly.

And in Altium this is ...

So how does this tented vias has anything to do with no solder mask on soldering pads. Good question!

In version 19.x the tenting of vias was done as a parameter to the via. The expansion, i.e. how much larger the solder mask opening was compared to the copper of the via, is done in two ways. A) Manually for each via or B) by a global rule. However, the tenting is done via by via. In reality you select all vias and tick the boxes for tenting of both outer layers.

However. In the version 20. The tenting is part of the solder mask expansion rule.

So here if we choose rule-based for this via, we can not change the tenting. That is done in the solder mask expansion rule. This looks like ...

Now. The day after new years eve you might be fooled to think that the above tick boxes for "Tented" applies to vias. After all the figurative picture is clearly a via. After all why would you tent pads?

Note: Nevermind the "Query IsPad". That is my fix for the problem.

But you would be mistaken. This is a generic rule that applies to ALL solder mask expansions. You could, rightfully ask, again, why in the world would you tent a thru hole pad or SMD pad. It makes no sense ... but apparently Altium thinks it is needed.

So. When I thought I tented all vias by this new and handy rule based tenting, I tented all pads and vias. Thankfully the Chinese manufacturer noticed and sent me a note. I uploaded, free of charge, replacement files.

I have now changed my solder mask expansion rules to have two entries. One for vias and one for pads.

If this really is needed, or you want a generic handling of things, there is a solution. You could think that Altium would re-use the code they did for how planes are connected to pads, SMD pads or vias. They simply have the three choices. Actually it is quite mind-boggling that they didn't ...