← Back to team overview

kicad-developers team mailing list archive

PCB Layer Stackup UI


The last board I did had all the components on the back, and the ground plane on the front. It was a daughter board card and the front of the board is sometimes exposed in the end product to the user.

Imagine how awkward the PCBNEW layer stack up terminology was which wanted to call the back of the board the copper layer, and the front of the board the component layer. My components were on the back and my copper was on the front, making the PCBNEW layer naming terminology quite unhelpful.

A second justification for a change is this:

The Specctra DSN format specifies a layer stack up description which starts at the front of the board and works its way down to the back of the board. See <layer_descriptor> on page 51. Also, components are specified according to which side they are to reside on, and Specctra uses the terms 'front' and 'back' to specify these sides. See <side> on page 119. This specification is known to most all EDA software companies and to many PCB designers within the industry, so the chosen terminology is no way obscure or odd ball.

These were the justifications for the changes I made recently in the terminology of layers within PCBNEW.

The new layer setup dialog window shows an implied layer stackup sequence. Speaking for a moment only about the copper layers, the new UI presentation shows the copper layer stackup in the same order as what a user familiar with the specctra <layer_descriptor> would expect. First comes Front layer, then first interior layer nearest the front of the board, then 2nd down interior layer, .... until the back of the board which is last.

I like this UI, and think that moving forward all UI presentations should remain consistent with this board model. It is intuitive and superior to the combobox which you see at the top of PCBNEW.

OK, having said that, now to the little man behind the curtain:

(But remember the UI is golden in my view, and should not be compromised to satisfy an implementation difficulty.)

The difficulty I have on the table at the moment is backwards compatibility with existing boards. In an ideal scenario I would like to swap the layer mask for BACK with FRONT. This would be easiest, but it breaks old boards. In the layer setup dialog, I have shown a layer stack up which is not true. And need to work out how I can make it true without breaking existing boards.

Jean-Pierre let me know your thoughts on this. After this dialog is fully implemented I will then move on to a layer selection/visibility control which will replace the color setup dialog which I expect we can remove.

One idea to put on the table is an actual layer stack up sequence, which would be a modifiable data structure which defines the order of layers within a board. The current notion of layer mask would stay, it's just that a person could not assume that a layer with a mask of (1<<0) is next to a layer with a mask of (1<<1) unless the layer stackup sequence says it is.


Follow ups