kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #13700
Other ideas for layer types
...for the people doing the proposal document. This could give missed
good ideas or simply not-useful stuff or too esoteric one.
Got a demo from a (rich) colleague of mine using Allegro. He's rich but
not too much, so it's some year behind... maintenance license is way to
expensive, it seems. That thing is so big that the menubar itself needs
1280px :P also lots and lots of buttons. Opengl is supported but
optional (since on some cards is glitchy i.e. eats tooltips), the only
thing it does as a plus is alpha blending (but then is an old version)
However, interesting things about how it handles layers. Allegro splits
the issue in two areas, proper layers (stackup) and 'classes'. Classes
are then subclassable by the user. Proper layers are in face
subclasses; so are pcbnew layers and 'render items' (for example, they
have a subclass for refdes and a subclass for value; we handle them as
items).
Copper layers are of class etch, that's easy (but pins are in another
class, so they can have another color). There is the concept of
'plane' layer, while other stackup layers are dielectric (implicit in
pcbnew), coatings and esoteric stuff like bond wires and whatever. The
new gerbers talks about silver/gold/carbon platings layers and so on,
I suppose these are handled as coatings. I don't know the exact
technology behind them (except thick film deposition) but probably we
can handle them with pads.
Layers in stackup have a material too, since they do fancy controlled
impedance routing/simulation. Maybe some simple attribute is enough?
Stuff not in stackup is controlled by class only. From the help file it
says that by default there are 110 subclasses (if you paid the full
license of course:P) however many of them are duplicated or specific to
manufacturing (for board houses). Obviously like in pcbnew some
(sub)classes are 'magic' i.e. with specific behaviour. BTW (sub)class
names are simple no-spaces strings (like ASSEMBLY_DETAIL); probably the
same rules as DXF apply (no spaces, all uppercase, only ASCII). In the
manual there is almost only a list for them, you are supposed to do
(expensive) training for learning all.
Subclassing is free-form in boards and libraries. I don't know what
happens on mismatch (he never added a custom class), probably it merges?
Layer pairing (i.e. top and bottom) is done by name. So if you have
a SOMETHING_TOP it's paired with SOMETHING_BOTTOM. No flags, just
a naming convention like ours.
The thing with classes subclasses drives the display, too. The color
dialog is *bigger* than Altium's one, really. I'm impressed :D
As for the predefined stuff:
- Copper layers have different subclasses for vias, tracks, pads and
antipads (we do that with renderitems but don't handle 'internal pads'
or antipads); Antipads are mostly for power planes and I could survive
without having an option to set the via color for each different
layer:P
- Lots of 'drawing' layers: assembly notes/details, tooling, dimensioning,
page border/title block/revision block have separate subclasses and so
on;
- The usual board stuff: outline, silkscreen, solder mask; since there
are a lot of subclasses the final plot is done merging them: for
example the silkscreen is done with the silkscreen proper, the refdes
layer, another layer with generated silkscreen... the idea between
layer groups, I think
- Manufacturing oriented layers: plating equipment attachment bars,
other tooling stuff, gerber film box, probing points (D356 stuff),
drill map and so on
- Miscellaneous CAD stuff: DRC markers, indicator, thingies (no idea of
what many of these are for)
- Components have refdef, value, device type, tolerances and user values
(all of these available on silk, assembly and display only... here's
how they did 110 subclasses for start... now thing about how many
colors you can change in a component:D). Instead of the courtyard
they handle the package (little more than a name change, it seems).
And of course the center position (our anchor)
- Areas: for each area you have only one 'keepin', defined at board
level and one ore more keepout defined at board level or in a symbol
(makes sense). Areas are simply polygons so you take the keepin (or
the whole board) and subtract the keepouts one by one to have the
resulting surface. They seem to have tought of *anything* so you have
areas for: component placement (common), route placement (common),
wire keepout (can contains vias but not routes, useful for plane
bonding), vias keepout (routes but not vias:P) areas of different
preferred routing orientation (i.e. horizontal where the rest of the
layer is vertical), areas with different 'glossing' (route cleanup,
seems the same as in Altium) and even areas where the grid is
different (like a metric board with imperial I/O areas).
Another cute thing I have seen: some rudimental 'styling' of text; you
have 16 styles for text in a table where you specify the metrics. Then
on the text you choose the style instead of having to type
height/width/tickness every time if not the default.
All in all, for the layers, nothing really particular popped up (routing
is another thing, he had some serious amount of my drool on the desk at
the end:P). The only thing I've never seen before is the grid-depending
on the zone. Of course I'll live without it for a very looong time.
Hope it has given some good ideas
Keep on the good work,
--
Lorenzo Marcantonio
Logos Srl