← Back to team overview

kicad-developers team mailing list archive

Re: CERN work package 4 (Extend number of layers)

 

Le 04/06/2014 12:13, Tomasz Wlostowski a écrit :
> On 04.06.2014 08:51, jp charras wrote:
>> Le 03/06/2014 19:27, Vesa Solonen a écrit :
>>> While working on the footprint library convention, the lack of extended
>>> mechanical and production aid layers got in the way. Why, how and
>>> revealing pictures in [1].
>>>
>>> We would like to get extended layers part sorted in our draft and the
>>> final document. To make it available for production it would need some
>>> kind of an impelementation. The implementation is planned as one of the
>>> CERN work packages [2] and it seems an usable implementation is already
>>> in Lorenzo's branch [3].
>>>
>>> The question is how to shape [3] so that it satisfies CERN work package
>>> contents (or a part of it) and gets included in the mainline.
>>>
>>> Best regards,
>>> -Vesa
>>>
>>>
>>> [1] https://lists.launchpad.net/kicad-lib-committers/msg00155.html
>>> [2] http://www.ohwr.org/projects/cern-kicad/wiki/WorkPackages
>>> [3] https://code.launchpad.net/~l-marcantonio/kicad/isofont-stuff
>>>
>>
>> What kind of not yet existing layers is actually needed ?
> 
> Hi Jean-Pierre,
> 
> I've been hesitating to answer, fearing that it will end up - as usual -
> with a long thread of people arguing with each other and no constructive
> conclusion. Anyway, let's give a try...

I see what you mean ...

> 
> These are the mechanical/assembly layers that CERN Drawing Office uses
> for standard PCB designs:
> - board outline
> - mounting/mechanical assembly holes
> - mechanical component assembly outlines
> - one or more dedicated layers for mechanical dimensions
> - PCB corners for manual cutout
> - peel-off masks for wave soldering of THT components (2x)
> - panelization drawing
> - component courtyards (x2)
> - component body drawing (2x, for hand/semi-automatic assembly)
> 
> ... 12 in total.
> 
> They are professionals and we fully trust them regarding the quality of
> PCB documentation. A sample PCB made by them can be found in [1].
> 
> 
>> If you are talking about assembly layers, they exists, and they are
>> called (for historical reasons) adhesive layers.
>> They are paired layers like silkscreen layers.
> 
> I thought adhesive layers are for SMD glue dispenser machine. The person
> doing manual assembly may need another technical layer (and silkscreen
> is often useless for densely packed components).
> 
> 
>>
>> If you are talking about courtyard, it can be seen like a DRC
>> constraint, not necessary a board layer.
> 
> How is the DRC checker going to know the area taken by a component? Use
> its bounding box? We need something more sophisticated (for mechanical
> components, optical transceivers, heatsinks, power supply modules,
> etc.). These additional constraints would have to be saved in the PCB
> files too. IMHO drawing the courtyard using standard graphics primitives
> on a dedicated layer is the least disruptive way of achieving above.
> 
> 
>> Which is very different from a copper layer or a technical layer.
>> It could be a new feature, which does not imply a new layer, at least in
>> board and footprint files.
> 
> What would be the issue to add them to the sexpr file formats, that are
> meant to be extensible?

First of all, my response was related to the current work on footprint
libraries refactor.

It is not related to the CERN work package 4, which is an other thing.

I agree the number of layers (both copper layers and non copper layers)
must be increased.

But, for now, this is not mandatory for the work on footprint libraries
refactor.
With the current layers, one cannot add a courtyard info (a new layer +
courtyard data) without breaking the compatibility with current Pcbnew
version (including stable version).
But one can easily have both a silkscreen layer and an assembly layer
with a full compatibility with current version, if we use the the
adhesive layer as assembly layer.
just changing the word adhesive to assembly in docs and dialogs is enough.

I am just saying:
You need a new paired layer for assembly/fab layer.
There is currently a paired layer which is never used.
Use it as assembly layer.

Note also adding a basic dedicated courtyard layer can be done now
without a lot of code, because the current code can manage 32 layers
(they are all in use in Gerbview).

The main work is to add the code in modedit to add/edit polygons in
footprints (they are supported currently, because they are used to
create logos by bitmap2component, but there is no tool to edit them).
this is certainly 90% of the work.

The DRC code to test courtyards intersection is very basic and is made
in zone management.

Managing the 3D in courtyards (i.e. define for the 3D shape defined by
the polygon the bottom and the top of the 3D basic shape on the Z axis)
should also be easy.

However adding 2 or 3 layers to the current list will break the
compatibility with previous version of Pcbnew, which cannot manage items
on these new layers.

> 
>>
>> I want to know *exactly* what do you want to put on silkscreen layer, on
>> assembly layer, and what do you expect from a courtyard layer.
>>
>>
>> The mails about the footprint library convention are *not* clear about
>> that.
> IMHO it's up to the designer and the tools should not enforce anything.
> We need to develop a convention to be used in the official Kicad
> libraries, though.
>>
>>
>> Currently, which very few changes in code, 3 layers can be added.
>> (There are 29 layers, and the current limit is 32)
>>
>> Adding much more layers is not only a matter of changes in code relative
>> to layers id.
>> This is also a lot of work to redesign the layer manager, and print and
>> plot dialogs.
>> For instance adding layer groups ( with a layer group editor ...),
>> because you cannot manage 64 layers and more like 30 layers.
>> You need a tool to group and filter these layers, and combine them at
>> print/plot time.
>>
> 
> How about splitting the task into several steps to avoid disrupting
> pcbnew too much:
> - write a type safe flag container (based on std::bitset, I guess),
> - refactor the current layer set to use it,
> - add a possibility to rename any layer (without changing its purpose),
> - add new layers,
> - add show/hide options and layer grouping in the layer manager.
> 
> Regards,
> Tom

Yes, good idea, I fully agree.
Note: for layers renaming, this is currently possible for copper layers.
for non copper layers this was possible, but due to many issues we had
due to this renaming, it was removed.


> 
> [1]. https://edms.cern.ch/nav/EDA-02267-V6-0
> 


-- 
Jean-Pierre CHARRAS


Follow ups

References