[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: General Layers questions



> > Except gerbers have special cases for thermals and pads, for example.
> 
> So there need to be attributes on shapes.

No, the exporters really need to have access to the whole collection
of shapes that means "pin" so they can do pin-specific things.  If the
exporter doesn't need that high-level access, then the default action
breaks it down into shapes and exports them individually.

The gerber exporter needs to be given a whole "pin" because it has a
command that means "put pin here, with this aperture and thermal
settings".  If you wait until the core descends to "circle, arc,
line", it's too late to look at the attributes and figure out what's
happening.  CAM tools know about this, and can adjust thermals and
pins as needed, but in PCB's case they can't do it because we break
pins down into raw shapes.

> > and containing other layers as sub-layouts.  I have never disagreed
> > with this!
> 
> Oh.  My understanding of composites is different.  I assume a composite
> contains shapes that go on a global set of layers.

This is part of the communication problem we're having, yes ;-)

Consider these:

* A footprint is a global resource, but an instance of a footprint (an
  element) must be mapped to the physical layout.  When do you manage
  the footprint as an element (indivisible) and when do you access its
  parts (changing pad size)?

* A sub-circuit that's replicated N times on a board.

* A flex cable that has 4 layers at each end, but only 2 layers in the
  middle.  The extra layers on the end are on opposite sides of the
  cable.

* buried vias are limited to certain pairs of layers because of the
  way the fab is assembling the board.

* 400 instances of a standard via, but the user needs to modify the
  pad stack on just one of them, and only for one layer.

These are all examples of a need for both a semantic and data
heirarchy, where parts of your design are grouped together and treated
as a single object, sometimes replicated, sometimes customized.  What
we call them is not important.

> Well, yes, it can, except that a via is not sufficiently special to
> justify the distiction.  What would we have in a composite, the layout
> being the top-level composite?
> 
>   Vias
>   Elements
>   Composits that are not Vias or Elements
>   Lines
>   Shapes outside of composits that are not Lines

Consider: you can move a via, but for lines, you can move either the
line or its endpoints.  For a polygon you can move its corners.  Ah,
but a via can include polygons and lines - but when it's a via, you
*don't* move their endpoints and corners, unless you specifically edit
the via.  A pin is just like a via, except you *don't* move it - you
move the element it's in.

Now consider a differential pair.  It's a line but you *don't* move
the *line* endpoints, you move the *pair* control points.

So yes, a via is special.  Many other composite objects will be
special too, because the tools need to know what the appropriate way
of interacting with them are.  PCB layout is *not* a paint program,
it's a design tool.  It *must* understand "the design" if it's to be
the most useful to the user.

> When an how to map generic element layers to layout layers is
> another good question.

Yup.

> Global layers can be mapped at load time.  Local layers inside
> composits must be mapped a runtime, don't they?

The mapping can be computed at load time, and just stored.  I suspect
there'll be lots of "recurse through the data heirarchy" code.


_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user