kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #13537
Re: CERN work package 4 (Extend number of layers)
On 6/4/2014 4:48 PM, Tomasz Wlostowski wrote:
> On 04.06.2014 21:35, Wayne Stambaugh wrote:
>> On 6/4/2014 2:33 PM, Lorenzo Marcantonio wrote:
>>> On Wed, Jun 04, 2014 at 02:20:12PM -0400, Wayne Stambaugh wrote:
>>>> user confusion. Where would you save them in the old kicad_pcb file
>>>> format after you made changes? If Pcbnew where a read only
>>>> application,
>>>> then this would be less of an issue.
>>>
>>> That's why I questioned if it would be desiderable...
>>>
>>> The only thing I think would be possible to keep *backward*
>>> compatibility is using optional forms, so if you don't use that feature
>>> the file remain compatible (no strange layers and the file still loads).
>>> I changed the quotation rules for the sexp in a backward compatible way
>>> and now they are both LISP and kicad compatible.
>>
>> Backwards compatibility is not optional. We should always be able read
>> older board and footprint file formats. That was one of the things that
>> drove the design of the current layer parsing of legacy boards and the
>> design of the new layer sexpr format.
> Hi Wayne.
>
> I understood Jean-Pierre's statement as "old version must be able to
> read files written by a newer version". Given that the current parser
> drops errors on unrecognized entities, it gives little space for file
> format enhancement...
Only for users running old versions of Pcbnew. There is a version
number in the kicad_pcb file header that can be used to tell the user
that the version of Pcbnew they are using is too old. I don't see this
as being a big issue as this has always been the case, even with the
legacy file format.
>
>
>> I think we should steer the discussion towards defining what
>> improvements we need to make to the board and footprint file formats to
>> support the changes we have been discussing. Once that is defined, we
>> can discuss the code changes required to handle the new layer
>> definitions. Everything else depends on getting this correct. Here is
>> a sample layer definition:
>
> Sure.
>
>>
>> (layers
>> (15 F.Cu signal)
>> (0 B.Cu signal)
>> (16 B.Adhes user)
>> (17 F.Adhes user)
>> (18 B.Paste user)
>> (19 F.Paste user)
>> (20 B.SilkS user)
>> (21 F.SilkS user)
>> (22 B.Mask user)
>> (23 F.Mask user)
>> (24 Dwgs.User user)
>> (25 Cmts.User user)
>> (26 Eco1.User user)
>> (27 Eco2.User user)
>> (28 Edge.Cuts user)
>> )
> If we assume layer IDs are subject to change, my suggestion would be:
>
> (layers
> ( define-layer
> # F.Cu, B.Cu, etc. Engraved in stone. Canonical names are the only
> allowed way to refer to a layer in a s-expr file.
> canonical-name
>
> # name displayed in the UI (and nowhere else)
> (display-name name)
>
> # new type: split plane
> (type signal/mixed/power/jumper/split/user)
>
> # generic attribute list (type-length-value). May be used to pass
> permittivity/dielectric thickness parameters
> (attributes ( ... ))
> # defines the layers paired with us. User layers can be also paired.
> (pairs-with canonical-name)
> )
The original layer definition ordering should be preserved so where []
== optional:
(LAYER_NUM CANONICAL_NAME TYPE
[(display_name NAME)]
[(pairs_with CANONICAL_NAME)]
[(attributes ATTR1 ATTR2 ... ATTRN)])
>
> #layer group definitions
>
> (layer-groups
> (group assembly-drawing-top
> (layers F.Cu Edge.Cuts F.Courtyard)
> )
Since this would be in the layer definition we could shorten it without
loss of readability to:
(groups
(GROUP_NAME CANONICAL_NAME1, CANONICAL_NAME2 ... CANONICAL_NAME_N)
)
> )
>
> )
>
>
> and use single format for saving layer sets, that is simply a list of
> canonical names:
>
> (layerset F.Cu B.Cu F.Mask B.Mask)
>
> Layer set entities could be automatically serialized from a flags object
> (if we decide to go for one instead of int/int64).
>
>
>>
>> From the discussion, it sounds like we would need to add an F.KeepOut
>> and B.KeepOut for courtyard areas.
> I wouldn't call them "Keep Out" - courtyard defines the perimeter of a
> component, while a keep out layer in most proprietary software defines
> an empty area (no traces, no components).
>
> Maybe add F.KeepOutZ and B.KeepOutZ
New canonical names are:
F.Courtyard
B.Courtyard
F.CourtyardZ
B.CourtyardZ
F.Keepout
B.Keepout
If inner layer keep outs are desired, add:
Inner#.Courtyard
>> for vertical keep out areas to prevent pick & place machine plunger
>> crashes on tall components.
>
> How about defining a height attribute for each component? In the future
> it could be used by DRC to define pick&place thresholds.
The footprint definition would be the appropriate place to add it with
something like:
(front_courtyard_z ENCLOSED_AREA_GEOMETRY_LIST (height HEIGHT_IN_MM))
where ENCLOSED_AREA_GEOMETRY_LIST is a list of drawing elements that
defined an enclosed area.
Am I missing anything else that was part of the discussion?
>
> It also sounds like folks are interested in
>> naming layers so we can optionally add a (name "My Layer Name") element
>> to the layer. This would allow users to define their own names for
>> display purposes. The only thing I'm not sure of is layer pairing that
>> was being discussed.I would need a example of how that could be used.
>> So that would give us something like:
>>
>> (layers
>> (15 F.Cu signal (name "Front copper layer"))
>> (0 B.Cu signal)
>> (16 B.Adhes user)
>> (17 F.Adhes user)
>> (18 B.Paste user)
>> (19 F.Paste user)
>> (20 B.SilkS user)
>> (21 F.SilkS user)
>> (22 B.Mask user)
>> (23 F.Mask user)
>> (24 Dwgs.User user)
>> (25 Cmts.User user (name "I put my comments here!"))
>> (26 Eco1.User user)
>> (27 Eco2.User user)
>> (28 Edge.Cuts user)
>> (33 F.KeepOut user) # This could be any number > 32
>> (34 B.KeepOut user) # This could be any number > 32
>> (35 F.KeepOutZ user) # This could be any number > 32
>> (36 B.KeepOutZ user) # This could be any number > 32
>> )
>>
>> You could use *.KeepOut and *.KeepOutZ for any module drawing element
>> (lines, arcs, circles, etc.) that are defined on both sides of a board.
>>
>> This should be a good start to get the discussion moving in the right
>> direction.
> Fully agree.
>
> Regards,
> Tom
>
Follow ups
References
-
CERN work package 4 (Extend number of layers)
From: Vesa Solonen, 2014-06-03
-
Re: CERN work package 4 (Extend number of layers)
From: jp charras, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: Tomasz Wlostowski, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: jp charras, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: Tomasz Wlostowski, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: Lorenzo Marcantonio, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: Wayne Stambaugh, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: Lorenzo Marcantonio, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: Wayne Stambaugh, 2014-06-04
-
Re: CERN work package 4 (Extend number of layers)
From: Tomasz Wlostowski, 2014-06-04