kicad-developers team mailing list archive
Mailing list archive
Re: Proposal for the courtyard/assembly layer issue
On Fri, 10 Sep 2010, Lorenzo Marcantonio wrote:
Here's what I have done (am in the process of doing):
I defined the new layers in my previous note. I added new layers to
module editor in the module m_Masque_Layer in the bits between copper
top and bottom (where the inner copper layers were in the old mask) so
that one can draw or flash pads on any of the new layers. I left Eco,
Comment and Drawing layers untouched.
One can draw component outlines for on the "Component Front" and
"Component Back" layers for component outlines for assembly drawings.
(Silkscreen used to double for this.) When plotting assembly drawings,
the "Component", "Edges", "Probe", and text from the "SilkScreen" layers
are merged. (The "Probe" layer is largely a pad-master.)
Components on the "Component" layer also have a mounted height and and
vertical extrusion attributes for mechanical conflicts: primarily
heatsinks. What would be nice is a way of creating the component
outline (including vertical extrusion and placement height)
automagically from the 3D image information for a module. This would
permit existing 3D models to be used to create component outlines for
One can draw closed contours (I added open and closed polycurves and
zones to modules too) on the "Courtyard Front" or "Courtyard Back"
layers for component courtyards.
I too have been attempting proper plot-and-go legend handling now that
it is split from assembly drawings and placement courtyards. Yes I know
that board fabricators keep saying that silk is unnecessary, but I don't
want to debug a prototype without one: too much chance for error when
moving my eyes from the assembly drawing to the unlabelled board.
The silkscreen process has the following parameters: Registration,
minimum line width, minimum space between lines (to avoid bleeding),
minimum character height (subjective).
Legend must be kept off exposed pads, contacts, traces (bad), also
laminate (does not adhere well to dielectric), and the edges of holes
(holes only partially tented with primary mask). Silkscreen has a
vertical dimension: it must be kept out from under components mounted
flush to the board to avoid drawbridging. Fabricators want to clip the
legend to the primary mask so none of these overlaps happen (and have
the assembler point the finger at them). Handling these overlaps
requires knowledge about primary mask registration and clearance.
Some fabricators take the approach of expanding the soldermask plot by
the legend registration and using it as a clear overlay on the legend.
This is not totally satisfactory as lines can be clipped in the middle,
so soldermask must be expanded by the legend registration and the
minimum line thickness. That's the easy way, and we could do that when
generating Gerbers for silkscreen.
However, most of the gauge of the quality of the result is subjective:
that is, whether the resulting white goop on board is legible. Some
characters might be clipped and still decypherable by a human being;
some might not. It is not a mathematical calculation. Therefore, I
considered making it part of the editting process:
I am thinking of placing three tiles (radio tools) on the toolbar as
Full text and drawings: The icon can be a filled cyan `T'. In this
mode, drawings and text as always displayed filled regardless of
whether they span a mask opening or untented hole. This is the
existing behavior for silk layers. When editting and DRC is on,
drawings and text that is created or dragged will resist soldermask
openings and untented holes. This is useful for keeping the legend
out of the way in the first place.
Sketched text and drawings: The icon can be an unfilled `T'. In this
mode, drawings and text are displayed sketched regardless of whether
they span a mask opening or untented hole. This is the existing
sketched behavior. With DRC on or off, drawings and text will not
resist being dragged over mask openings or untented holes.
Clipped text and drawings: The icon can be a partially filled and
partially unfilled `T'. In this mode, drawings and text are
displayed filled where they do not invade a mask opening or untented
hole. When segments of drawings or the little segments making up a
text character invade a mask opening or untented hole, they are
displayed unfilled (sketched). When dragging a drawing or text
object, the segment (or a number of the little segments making up a
character) will change from filled to sketched when it invades a
mask opening or untented hole. In this way, the designer can see
the results of clipping of legend.
To handing the third dimension, it might be an idea to clip the legend
also as it passes under flush-mounted components.
For the actual clipping there are two approaches: simply clear overlay
an expanded soldermask layer, or remove actual segments or portions of
segments. The first one is easier. I have code for that.
More display options. I know that there is a patch for applying minimum
width and size character attributes to a board, but I want to add a
General Option to enforce character minimums or not. When checked, text
would be displayed with the character width and height minimums
enforced. That is, when text is narrower and taller than the minimums,
the it would simply be displayed with the minimum. Unchecking the box
would display the actual values from the module. (The same would be
true for PCB text on silk.)
Two checkbox options will be added to the plot (post-processing) menus:
Mask silk: when checked, the simple approach of using an expanded mask
layer as a clear overlay of the silk layer would be plotted. This
can be used independent of the "Clip silk" option below.
Clip silk: when checked, the same treatment is given to the plots: the
segments that invade soldermask openings, untented holes or flush
mounted components would simply not be plotted.
Enforce width and height: when check, the same treatment as display is
given to plots, characters are plotted with a minimum thickness and
height. Line segments are plotted with a minimum thickness.
I have already generated code for the masking. I have not generated
code for segment or character clipping. There is a need to slice long
line segments that intersect mask openings into smaller segments so that
the unclipped portion can remain.
I think that the masking (which I have already done) is easier and
probably sufficient. Also, it is what the fabricator does anyway.
Well, you get the idea.
What do you think of that?
Brian F. G. Bidulock ¦ The reasonable man adapts himself to the ¦
bidulock@xxxxxxxxxxx ¦ world; the unreasonable one persists in ¦
http://www.openss7.org/ ¦ trying to adapt the world to himself. ¦
¦ Therefore all progress depends on the ¦
¦ unreasonable man. -- George Bernard Shaw ¦