[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: General Layers questions
This message makes me think that COW should remember what master it was copied from and an edited flag.
On Mar 18, 2011, at 5:16 PM, Stephan Boettcher <boettcher@xxxxxxxxxxxxxxxxxx> wrote:
> DJ Delorie <dj@xxxxxxxxxxx> writes:
>
>>>> 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.
>
> I do not understand this. The gerber exporter exports each layer
> separately, no? On some layer it finds a circle with a thermal
> attribute surounded by a polygon. What else does in need?
>
>>>> 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)?
>
> Is the footprint still part of the layout? Wouldn't it's genereic
> layers (top,inner,bottom) be mapped to the layout layers
> (oben,innen1,innen2,unten) when imported?
>
>> * A sub-circuit that's replicated N times on a board.
>
> composites instances are objects inside other composites, next to
> shapes. You can do most operations to composites, that you do to shapes
> (move, rotate, mirror, delete, ...). Vias and elements are special in
> the memory representation, as there are methods, or callback hooks that
> allow access to some internals without explicitly decending into the
> composit. It should be possible to flag any composit as Element or vise
> versa, to turn on and off this special access. If you exlicitly decend
> into an element, you can move its pins and pads. But pads size, text
> positions e.t.c. are still directly accessible for elements. Maybe it
> is not even necessary to have any special treatment and treat all
> composites the same.
>
>> * 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.
>
> You want to describe the rigid ends as outlines of a composite? That
> attaches high-level semantics to a low level concept in an inapropriate
> way.
>
> Here you need outline layers with attributes that tell the autorouters
> not to cross the lines on certain layers.
>
>> * buried vias are limited to certain pairs of layers because of the
>> way the fab is assembling the board.
>
> A DRC problem. With hole layers, the GUI tool to add/manipulate these
> hole layers can provide a view on the layer stack that represents the
> stacking and drilling order, just like you once proposed as an
> underlying data structure. The tool would refuse to configure holes
> layers that cannot be drilled, unless you say "please".
>
>> * 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.
>
> Vias may be COW by default, like they are now. But you can decend in
> non-copy mode into the composite, so they all change. That composit is
> also the master copy in the Via menu, so that future vias of that type
> are affected by the edit. When you edit the via definition in the Via
> menu, you may need to answer a question if you want all existing
> instances to change, of only new vias.
>
>> 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.
>
> shapes (lines and polys) in the current composite can be editied as
> before, moved, endpoints moved, size, pcb:endcap attributes changed ...
>
> Some internals of composites may be accessible, like clearances and
> sizes, just as before. A composite attribute may define it its COW or it
> all instances are changed. Vias and Elemets are COW by default if past
> behavious shall be kept.
>
> When you want to change something inaccessibe inside a composite, you
> can decend into it, either in copy mode or non-copy mode. Everything
> higher up than the edited instances may be grayed out on screen now. You
> can also choose to only see the instance you are editing. Now you can
> manipulate, autoroute, ... the content of the composit. There is your
> footprint/via editor.
>
>> Now consider a differential pair. It's a line but you *don't* move
>> the *line* endpoints, you move the *pair* control points.
>
> That is a hard one. You could define a composit of type "morphable" The
> endpoints of shapes inside such a composite become pointable/selectable,
> and a plugin can register callbacks to be called when such an endpoint
> is manipulated. The plugin would check to see if a "diffpair" attribute
> is set, and decline the callback if not, so that the "magic_poly" plugin
> has a chance.
>
>> 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.
>
>
>
> ... 21 new messages in my inbox
>
> --
> Stephan
>
>
> _______________________________________________
> geda-user mailing list
> geda-user@xxxxxxxxxxxxxx
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user