← Back to team overview

kicad-developers team mailing list archive

layer based constraints

 

Hi all,

first of all, please let me tell you that this is the first time I try to contribute to an open-source project, so please excuse if I don’t get the “workflow” right.

As some PCB manufacturers (i.e. seeedstudio) have different clearance- an width constraints for outer- and inner layer, I had the idea to teach Kicad to manage “layer based” constraints.

It took me zwo weeks to manage to build Kicad (until I found out that cmake doesn’t like it if the sources are on another partition than cmake itself :-) ) and then another two evenings to implement a basic version (I was really surprised about how easy it was, a.e. how well “cleaned up” the whole project is).

My idea is as follows:
The classical net-based constraints stay just the same. But I enhanced the layer stack dialog as can be seen in the attachment (can I attach pictures on a newsgroup?). So, for each layer, you can enter a width constraint and a clearance constraint. The initial value for both is zero. Then, I enhanced the BOARD_CONNECTED_ITEM::GetClearance() method to return the maximum of the own net based clearance, the other’s net based clearance (if not NULL) and – this is new – the layer based constraint. This seems to work fine so far. Width constraint handling is not yet implemented, but I don’t think, this is going to be hard.

So, if you leave all entries at zero, nothing changes. And, for example, if you have a four layer print with 6mils outer layer clearance and 8mils inner layer clearance, you 
- either create a global constraint with 6mil, set the inner layer’s constraits to 8 mils, and leave the outers’ at zero
- or set the outer layer’s to 6, and the inner’s to 8.
- or, of course, any combination. All that counts for a track is the maximum of the constraints based on it’s net or the one based on it’s layer.

I thought quite a bit about in which dialog to put these additional constraints. But I think, the layer stack dialog is fine for it, although we’re talking about constraints and there is an own dialog for it.
The reasons for this decision are:

- The settings are logically strongly connected to the layers. There should only be two sets for a two layer print, and 16 for a 16 layer print. Implementing this in an own dialog would be complicated to implement as well as to use afterwards. This way it’s very intuitive.
- The constraints are also “physicallly” conncted to the layer stack, as they refer to manufacturing issues (may also be the case for a global constraint, but certainly not for a net constraint)
- after all, the layer stack dialog is located in the ‘constraint’ menu 

Now, there is one thing that gives me a bit of a headake: The board file. I’ve seen that you guys have just created a new version of it. And of course, another version would be needed to save these additional constraints.

Ok, for the moment, I chatted enough. What do you think about it?

BR Simon

PNG image

Attachment: LayerDialog.png
Description: PNG image


Follow ups