Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 4:07 PM, DJ Delorie wrote:

> And your kind of bottom-up design never gets done at all, because of
> impossible-to-meet requirements for unlimited flexibility.

"My kind" of bottom-up design is precisely what Ritchie did when he invented C. 
Contrast C with PL/I, the language it replaced (at least in my world). C is 
designed to economically reflect the capabilities of the hardware on which it 
is based. PL/I was designed from "use cases" derived from existing programs in 
Fortran, Algol, and Cobol.

The designers of PL/I were the world's leading experts on programming languages.

PL/I was a conceptual mess, loaded with "features" that seemed useful and 
plausible, but which in real programs caused (at best) miserable inefficiency, 
and (at worst) seriously unpredictable behavior. These "features" included many 
kinds of high level constructs like string manipulation, I/O, and multitasking.

In contrast, C represents the common features of the hardware in an open-ended 
way that allows programmers to extend the language by composition. So "PUT" is 
a language feature in PL/I, while printf() is a library function in C (itself 
written in C). That's good factoring, yielding unlimited flexibility. That good 
factoring also made C much easier to implement than PL/I.

Proper bottom-up design *never* results in "impossible-to-meet requirements" 
because it starts from capabilities. What can a layered description of tame 
plane geometries (no fractals ;-) actually represent? Not so hard.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> Still, I do not see a need for outline layers anywhere, except as an
>> attribute on a graphical layer that tells an exporter where to stop
>> drawing.
>
> Hmmm... so you think PCB should let the user place an element in a
> physically impossible location, because it doesn't care about the
> outlines?

currently it does, and I need that functionality.  When I import a new
batch of components from gsch2pcb, they get disperses in a big area
outside the outline, because inside there is half the layout already
done.

In the end, it's a DRC problem, so yes, the DRC may look for a layer
with an outline attributes.  That layer shall have a separate attribute
for the placement wizard plugin, although the message is almost the
same.


-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  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, 

gEDA-user: [gschem] netname refactor?

2011-03-18 Thread Levente Kovacs
hi,


Is there any way in gschem (or gattrib) to refactor netnames in a given set of
schematics?


Thnaks,
Levente

-- 
Levente Kovacs
http://levente.logonex.eu




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


Re: gEDA-user: Multi-Select with SHIFT, CTRL...

2011-03-18 Thread Stefan Salewski
On Sat, 2011-03-19 at 00:41 +0100, Stefan Salewski wrote:

> 
> LMBD + LMBU over hot pin end: start new net segment
> 

I mean:

LMBD + LMBU over hot pin end or existing net end: start new net segment

For starting a new net segment from void area we will have to activate
net mode.





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


Re: gEDA-user: Multi-Select with SHIFT, CTRL...

2011-03-18 Thread DJ Delorie

> Of course I will support selection with a rectangular bounding
> box. Does your "select-region" mean an arbitrary shaped area?

No, I mean select rectangle.


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


Re: gEDA-user: Multi-Select with SHIFT, CTRL...

2011-03-18 Thread Stefan Salewski
On Fri, 2011-03-18 at 19:47 -0400, DJ Delorie wrote:
> > > Don't forget about select-region, select-touching,
> > > select-touching-line, etc.
> > 
> > I guess that is not too common in schematics?
> 
> select-region is *very* common.
> 

Of course I will support selection with a rectangular bounding box. Does
your "select-region" mean an arbitrary shaped area?

> select-touching-line would be really handy to select a group of angled
> lines, without selecting the non-angled lines they're connected to.
> Basically, you draw a line with the select tool, and anything that
> line touches is selected.
> 

Sure, this is a MODE we can implement -- currently I consider the most
common actions, which should be accessible very easy, in best case only
with the mouse, or with mouse and a modifier key. My goal is to prevent
many mode switches.




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


Re: gEDA-user: Multi-Select with SHIFT, CTRL...

2011-03-18 Thread DJ Delorie

> > Don't forget about select-region, select-touching,
> > select-touching-line, etc.
> 
> I guess that is not too common in schematics?

select-region is *very* common.

select-touching-line would be really handy to select a group of angled
lines, without selecting the non-angled lines they're connected to.
Basically, you draw a line with the select tool, and anything that
line touches is selected.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
Hi all,

I appreciate the discussion.
There we nearly no objections to my layer concept, just to the
via/footprint/composite.

I have updated the page (http://geda.seul.org/wiki/geda:pcb_layers)
and I hope it not reflects the 'opinion of majority'.

So again. Coments are welcome, the discussion was a bit fast so I may
have missed something important again.

Thank you all for participating,
Martin Kupec




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 5:39 PM, DJ Delorie wrote:

> 
>> It is the exporter's job to understand drilling. For geometry
>> capture, all you need to know is the shape. Modules with no "need to
>> know" should not know.
> 
> The autorouter needs to know not to run traces across unplated
> holes...

Whether they are molded in, drilled, punched, ...

A hole is a hole. It's part of the geometry. A drill is a drill. It's part of 
the fabrication machinery. These are distinct things.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: Multi-Select with SHIFT, CTRL...

2011-03-18 Thread Stefan Salewski
On Fri, 2011-03-18 at 19:17 -0400, DJ Delorie wrote:
> > shift-leftclick on object
> 
> Don't forget about select-region, select-touching,
> select-touching-line, etc.
> 

I guess that is not too common in schematics?

Here is my current draft for my gschem clone:

Peted intended user interface behaviour -- first draft
--

LMBD: Left mouse button down (press) action
LMBU: Left mouse button up (release) action
MMBD: Middle mouse button down (press) action
MMBU: Middle mouse button up (release) action
RMBD: Right mouse button down (press) action


Our intention is to have a smart AUTO mode which will allow to do the
most common actions fast with minimal effort (beside traditional special modes 
like
"Move", "Net", "Erase", "Line", "Arc", "Text", ...) 


These action include: Select, move, copy, delete, rotate, start new net.

LMBD over element: Start moving element, LMBU will terminate action, element is 
unselected
LMBD + LMBU over element (no motion): select element, unselect all other
SHIFT + LMBD + LMBU over element: add element to selection
CTRL + LMBD + LMBU over element: toggle element, leave other unchanged
LMBD over unpopulated area: start selection rectangle
  No modilier: elements in rectangle will become selected, other unselected
  SHIFT modifier: add elements in rectangle to selection, other unchanged
  CTRL modifier: toggle state of elements in rectangle, other unchanged
MMBD: put a copy of selected element(s) to position of mouse pointer
  special case: MMBD over selected element: detete it
  if nothing is selected or SHIFT modifier is used: panning
RMBD: Context sensitive menu open

Scroll wheel: rotate selection or element under mouse pointer
  If nothing is selected and mouse pointer is over unpopulated area
  or SHIFT modifier is used: Zoom in/out

LMBD + LMBU over hot pin end: start new net segment

Missing: Zoom into rectangle

For element properties we will not use a popup window opened by double click, 
but a
separate area at the left or right of the main window. Properties of selected 
elements
are displayed in this area and can be modified. This area can be used for 
various other
purposes, i.e. symbol library preview, color selections, ...It should be 
possible to fully
shrink this area. 

At the bottom of the main window we may have an area for log messages.

We should try to allow multiple instances of our GUI window, showing different 
or the same
content. For the last case, we can display an overview in one window, while we 
work on details
in a different window, maybe both windows can reside on different monitors. Of 
course it should
be possible to use only one window, and switch between different content.

Have I forgotten common important actions?




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> It is the exporter's job to understand drilling. For geometry
> capture, all you need to know is the shape. Modules with no "need to
> know" should not know.

The autorouter needs to know not to run traces across unplated
holes...


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 5:25 PM, DJ Delorie wrote:

> You don't drill through ink.  You drill through what the ink is *on*.
> It's a semantic issue.  If you want a spot where ink is missing, you
> add an anti-circle there.  It's different than a physical hole.  It's
> still a circle that removes things, but since we're designing a pcb
> layout program, the semantic difference matters.

It is the exporter's job to understand drilling. For geometry capture, all you 
need to know is the shape. Modules with no "need to know" should not know.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> Still, I do not see a need for outline layers anywhere, except as an
> attribute on a graphical layer that tells an exporter where to stop
> drawing.

Hmmm... so you think PCB should let the user place an element in a
physically impossible location, because it doesn't care about the
outlines?


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> I do not like the concept of composit outlines.  Does each layer
>> have its outline?  How does it do partial vias?
>
> In the case of flex cables, each layer *does* have its own outline.
> The tool needs to know that vias go only across layers that actually
> exist at that spot.

I am the one who did flex cables with pcb, with six copper layes, three
different outlines, four surface layers.  It is going to fly to Mars
later this year.

  http://www.ieap.uni-kiel.de/et/people/stephan/msl/eda/TFlex/TFlex.pdf
  http://www.ieap.uni-kiel.de/et/msl/pictures/photos/rsh/FM/TFlex/index.html

To support such a beast in PCB you need multiple pairs of surface
layers.  Elements with pads on explicit layers is what fills this role,
so that the pads of the flex edge connectors get connected to their
(inner) copper layers.

The outlines are just any graphical layers that can be exported without
vias and pins.  But the boardhouse had no problems ignoring the holes in
the outline layers.


Still, I do not see a need for outline layers anywhere, except as an
attribute on a graphical layer that tells an exporter where to stop
drawing.

-- 
Stephan 


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> Would and an 'outline' layer do for you? We can rename it so 'assembly'
> layer or so.

"assembly" has a specific meaning in CAM - it's a reference drawing,
either to help the CAM engineer understand how your board is
assembled, or to help with assembling the components to it.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Sat, Mar 19, 2011 at 12:17:36AM +0100, Stephan Boettcher wrote:
> But that's why I argue for hole layers. A hole is a shape on a hole
> layer.  The layers attributes define what needs to be drilled.
> Actually, they only define to which layers they electrically conduct.
> That is all the tools needs to know until checkout.  DRC checks if all
> shapes are circles, unless the shape has a DRC overide attribute.

Would and an 'outline' layer do for you? We can rename it so 'assembly'
layer or so.

It will contain outline and holes, and via is just hole here(probably
marked conductive).

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> > As general as neccessary, but not as general as *possible*.
> 
> But we cannot know what is necessary.

Well, we start by asking people who do pcb layouts what they need :-)

"My point exactly.  Do customers *want* portable fire?"

> >> On top of that is a memory representation, that introduces the concepts
> >> of elements, vias, surface-layers (layer sets: copper, mask, silk,
> >> courtyard, keepout), connectivity,   
> >
> > This is the part I wish we were discussing.
> 
> As John said, bottom up works better in the long term :-)

WE ALL AGREE ON THE BOTTOM!  Gah!  This is so frustrating!  WE AGREE!
Can we move on to the next step PLEASE?

> Why not?  The tool can move it arount and not much else, like with all
> objects on a sliklayer.

You don't drill through ink.  You drill through what the ink is *on*.
It's a semantic issue.  If you want a spot where ink is missing, you
add an anti-circle there.  It's different than a physical hole.  It's
still a circle that removes things, but since we're designing a pcb
layout program, the semantic difference matters.

> I don't think that the concept of vias and elements shall be fully
> implemented in plugins, for efficiency,

> At least some callback hooks need to be specific to elements or
> vias, that a plugin can register. So that a plugin can intercept
> composite methods (e.g., move) for elements or vias.

*That* is my point.  "For efficiency" and "composite methods" means
that we need some semantic middle-layer to our internal data.  We
can't say "it's just shapes" because that's not how the user interacts
with the design.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 5:05 PM, DJ Delorie wrote:

> 
>> Yes, sadly gEDA is a high productivity toolkit for spaceflight
>> hardware, ASIC design, merging tabular design data with graphical
>> design data, symbolic circuit analysis, and even hydraulics.
> 
> No matter what I say, you'll find a way to disagree with me.

Eh? I've already agreed with you on a couple of occasions just today. I only 
disagree with you when you're wrong ;-)

> 
> I *meant* sadly, the results are THE ONES YOU NOTED - that each tool
> interprets the data differently, leading to all sorts of
> incompatibilities and assumptions about what the core data means.

And to a degree this is inevitable across such a wide range of applications. 
The important thing for the future is to avoid *forcing* a limited 
interpretation of the data in the core functions. The problem, for example, 
with slotting in layout and simulation is that the common assumption in the 
core doesn't fit all cases. It would be easy to make it work compatibly if that 
common code didn't exist. 

It's exactly the opposite of what you're expressing here: spice-gdb can't 
handle slotting because it *cannot* apply the correct assumptions about what 
the core data means in its context. The core code forces an interpretation 
that's only valid for layout, not simulation.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> > I expect the plugin mechanism to be the way to write *all* the core
>> > bits, though. 
>> 
>> The more important it is, that what is below the plugin mechanism is as
>> general as necessary, and since that is difficult to judge up front: as
>> general as possible, without compromising the final goals.
>
> As general as neccessary, but not as general as *possible*.

But we cannot know what is necessary.

>> On top of that is a memory representation, that introduces the concepts
>> of elements, vias, surface-layers (layer sets: copper, mask, silk,
>> courtyard, keepout), connectivity,   
>
> This is the part I wish we were discussing.

As John said, bottom up works better in the long term :-)

>> It provides basic operations on these concepts.  The implementation of
>> these concepts builds on the objects of the storage data layers.  It
>> must not be an error if a via has two holes, a polygon shaped hole or
>> silk in it.  DRC may flag such things, but it must not be an error.
>
> There must be *some* limits, however, or the tools cannot be written.
> Defining a "hole" in a silk layer is nonsensical, if you wish to
> support it, we cannot define what the tools would do with it.

Why not?  The tool can move it arount and not much else, like with all
objects on a sliklayer.

But that's why I argue for hole layers. A hole is a shape on a hole
layer.  The layers attributes define what needs to be drilled.
Actually, they only define to which layers they electrically conduct.
That is all the tools needs to know until checkout.  DRC checks if all
shapes are circles, unless the shape has a DRC overide attribute.

There would be one hole layer for each drill pattern, i.e., one, unless
there are partial vias.  John's insulating layers will be mentioned in
the attributes, so they get drilled too.

A via with variable hole size for different layers must be built as a
composit with multiple holes on as many hole layers. Inefficient but
appropriate for such an obscure case.

>> The attributes that this memory representation and it methods
>> understand shall be in namespace "pcb:" and unknown attributes in
>> that namespace shall emit warnings.
>
> You assume that attributes are the way to organize groups of things.
> Why?

So that everything is just shapes on layers. Very simple, very powerful.

>> Higher level parts of the concepts "element", "via", "surface layer"
>> may be implemented in plugins.
>
> How does a move tool plugin interact with an element plugin, then?

The memory core representation provides methods to move, rotate, mirror
shapes and composits.  (Element composits may have an attribute that
forbids mirroring.)  To bring an element to the other side od the board
is method of the Element plugin, relying on attributes of the relevant
layers how they map to the other side.

I don't think that the concept of vias and elements shall be fully
implemented in plugins, for efficiency, and since most other plugings
may need refer to these concepts.  At least some callback hooks need to
be specific to elements or vias, that a plugin can register. So that a
plugin can intercept composite methods (e.g., move) for elements or
vias.


-- 
Stephan


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


Re: gEDA-user: Multi-Select with SHIFT, CTRL...

2011-03-18 Thread DJ Delorie

> shift-leftclick on object

Don't forget about select-region, select-touching,
select-touching-line, etc.


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


Re: gEDA-user: Multi-Select with SHIFT, CTRL...

2011-03-18 Thread Kai-Martin Knaak
Stefan Salewski wrote:

> Is there a guide how multi-select should work for tools like PCB and
> gschem? I have done a short google search and some test with PCB and
> gschem, but I am not really sure that I fully grab it.
> 
> I think we should have these actions:
> Select

leftclick on object or left_mouse_lasso


> Add_To_Selection

shift-leftclick on object


> Subtract_From_Selection

leftclick on selected object


> Toggle
 
IMHO, not implemented in PCB.
In gschem it is control-left_mouse_lasso


---<)kaimartin(>---

-- 
Kai-Martin Knaak
Email: k...@familieknaak.de
Öffentlicher PGP-Schlüssel:
http://pool.sks-keyservers.net:11371/pks/lookup?search=0x6C0B9F53



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> Except that we'll argue forever if we can't agree on the words.

I don't care about the words.  I care about the ideas, the concepts,
the use-cases.  You throw "factored design" around like it's the
solution to everything, but it's a meaningless term without a specific
solution behind it.

Unfortunately, PCB layout is a much more complex task than schematic
layout, because the result *does* mean something in the physical world
*as well as* meaning something in the symbolic world.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 5:02 PM, DJ Delorie wrote:

> 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.

Yes. Factored design.

>  What
> we call them is not important.

Except that we'll argue forever if we can't agree on the words.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> I do not like the concept of composit outlines.  Does each layer
> have its outline?  How does it do partial vias?

In the case of flex cables, each layer *does* have its own outline.
The tool needs to know that vias go only across layers that actually
exist at that spot.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> Yes, sadly gEDA is a high productivity toolkit for spaceflight
> hardware, ASIC design, merging tabular design data with graphical
> design data, symbolic circuit analysis, and even hydraulics.

No matter what I say, you'll find a way to disagree with me.

I *meant* sadly, the results are THE ONES YOU NOTED - that each tool
interprets the data differently, leading to all sorts of
incompatibilities and assumptions about what the core data means.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> > 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@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: General Layers questions

2011-03-18 Thread bobo
On Friday 18 March 2011, John Doty wrote:
> Yes, sadly gEDA is a high productivity toolkit for
> spaceflight hardware, ASIC design, merging tabular design
> data with graphical design data, symbolic circuit analysis,
> and even hydraulics.

ROFLMAO


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
John Doty  writes:

> On Mar 18, 2011, at 3:31 PM, Stephan Boettcher wrote:
>
>> Except, I see no need to specify any insulating layers here.
>
> "I see no need" is exactly the kind of thinking that produces an
> inflexible, limited tool. I see *every* need to base the description
> on geometry, so that the tool's limits are defined by necessity and
> not by the limited imagination of any particular group of developers.

Nothing prevents that you define insulator layers, and include shapes on
these layers in your vias and elements.  But for simple layout work its
not needed.  I did not miss them, yet.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> As someone proposed, it is possible to have different hole size on
>> different layers. So I think the best would be to have special 'hole'
>> object on each layer. And that object will always be in composite
>> container, and all of them will be forcebly aligned to the same center.
>
> What I suggested before is that each composite itself have "outline"
> type layers, which contains any holes, cutouts, or physical outline
> shapes that need to be applied to all of the layers therein.

composit instance overlap with other composits and shapes.

I do not like the concept of composit outlines.  Does each layer have
its outline?  How does it do partial vias?

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 4:34 PM, DJ Delorie wrote:

>> 
>> In your sense, you have no idea what the "space of the possible" is
>> for the integers.
> 
> Of course I do.  It's aleph null, the set of counting numbers.

That's not the space of the possible, that's only the range of the abstraction. 
To know the space of the possible, in the sense you're arguing, you'd have to 
know every *application* of the integers. You can't know that. But still, you 
can represent the integers used in those applications as strings of digits. You 
don't need to understand the "space of the possible" *at all* to cover it!

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 01:18:16PM -0700, Steven Michalske wrote:
> Embedded resistor and capacitors are in holes in the separating layers.
> 
> Some separating layers are more like a solder mask and sprayed down
> rather than FR4 and prepreg.
> 
> Just because standard FR4 Fabs don't usually use any drawings on that
> layer, should not preclude it.
> 
> Now the exporter may barf if it finds something it can't cope with,
> like a line drawn on a separator layer.

As someone already proposed. We can fake it for now and do better when
it becomes more common.

You can define it as another 'physical layer' and have special
footprints for it with. With fake pads in copper layer for example.

I will try to take in mind that 'physical layer' can actually be a
separation layer. But I hope the concept is flexible enought so I can
add new typed layer easily later.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> > I expect the plugin mechanism to be the way to write *all* the core
> > bits, though. 
> 
> The more important it is, that what is below the plugin mechanism is as
> general as necessary, and since that is difficult to judge up front: as
> general as possible, without compromising the final goals.

As general as neccessary, but not as general as *possible*.

> On top of that is a memory representation, that introduces the concepts
> of elements, vias, surface-layers (layer sets: copper, mask, silk,
> courtyard, keepout), connectivity,   

This is the part I wish we were discussing.

> It provides basic operations on these concepts.  The implementation of
> these concepts builds on the objects of the storage data layers.  It
> must not be an error if a via has two holes, a polygon shaped hole or
> silk in it.  DRC may flag such things, but it must not be an error.

There must be *some* limits, however, or the tools cannot be written.
Defining a "hole" in a silk layer is nonsensical, if you wish to
support it, we cannot define what the tools would do with it.

> The attributes that this memory representation and it methods
> understand shall be in namespace "pcb:" and unknown attributes in
> that namespace shall emit warnings.

You assume that attributes are the way to organize groups of things.
Why?

> Higher level parts of the concepts "element", "via", "surface layer"
> may be implemented in plugins.

How does a move tool plugin interact with an element plugin, then?


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 4:34 PM, DJ Delorie wrote:

> The problem with geda is that the lower leves are *so* flexible, that
> there was no semantic consistency, no intrinsic model for the upper
> levels to follow.  The results were sadly predictable.

Yes, sadly gEDA is a high productivity toolkit for spaceflight hardware, ASIC 
design, merging tabular design data with graphical design data, symbolic 
circuit analysis, and even hydraulics.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> Hide all composites with attribute "type=via".  The GUI probably
>> maintains an extra list of those, as well as a list of elements, for
>> performance.
>
> Why the GUI?  Why can't the core maintain that list, since a lot of
> things will need it?  I care a lot about performance.

Sorry, yes, that's what I meant.  But it's not in the disk file.

>> Exporters can only export what they know about.  All layers can be
>> turned into gerbers.
>
> Except gerbers have special cases for thermals and pads, for example.
> If you use the special cases, other CAM tools empower their users to
> do more things (like auto-generate paste stencils when you forget the
> paste mask, which does NOT work with pcb's gerbers).  But for the
> exporters to offer these special cases, they need to know more about
> the data they're given than just "draw circle here".

So there need to be attributes on shapes.

>> At the bottom, a layout is a set of layers with attributes,
>> containing shapes, maybe with attributes.
>
> 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.

> What I disagree with is using this "at the bottom" information to
> re-produce the semantic information inherent in a "pcb layout".  I see
> no reason why there can't be a semantic heierarchy to the data, so at
> a high level we have a collection of "all vias" that's a child of
> "this layout", so that the tools can find them easier and deal with
> them as a group.

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

How the layers fit in here depends if they are global or local to a
composit.  I did not think about non-global layers yet.

The set of global layers is the union of layers referenced in the
hierachy of composits.  When an how to map generic element layers to
layout layers is another good question.  And how to treat conflicting
attributes of layers.  I'd flag those as errors.  Or define for each
attribute lookup if the precedence goes from outside to inside, or from
inside to outside starting at some shape.

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



>> The semantics of those attributes is what encapsulates the builtin
>> knowledge how to make PCBs, and the tool must fully exploit that
>> knowledge when presenting a layout to the user.
>
> Forcing tools to "fully exploit" data at too low a level makes it very
> difficult to create such tools in the first place.  The move tool
> needs to know the difference between an element, a via, and a trace,
> so it can function properly.  We need to consider these types of
> issues when designing the internal data structures, or it will be so
> difficult to write the software that it just won't get done.



-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> The right kind of flexibility is even more important
> to the developers than to the users.

Since you're not a pcb developer, how can you know what the right kind
of flexibility is?

> In your sense, you have no idea what the "space of the possible" is
> for the integers.

Of course I do.  It's aleph null, the set of counting numbers.
Possibly the set of whole numbers, if you don't count negation as a
separate operation.  Plus or minus zero.

> Yet all integers can be represented by strings of two digits. Not
> much of a developer burden.

It is if you're designing a watch.  Offering the user a string of ones
and zeros doesn't make a usable product.

> Ales did an incredible job of representing the "space of the
> possible" for schematics with a very clean bottom level. The
> troublesome issues in gEDA come from upper levels that fail to
> respect its generality. But there are far fewer issues there than
> there are with pcb.

The problem with geda is that the lower leves are *so* flexible, that
there was no semantic consistency, no intrinsic model for the upper
levels to follow.  The results were sadly predictable.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> If you mean 'physical layer' by 'composite', than yes. Each of those
> will have it's 'outline' layer.

I meant sub-assemblies.

This is hard to describe because of the near-impossible list of things
we want to support, but...

There are two types of sub-assemblies.  First, composite objects which
are mapped to the physical board, and second, the physical board
itself.

So, a footprint is a composite sub-assembly that includes some holes,
copper, cutouts, etc.  It needs to be mapped to the physical board
on-the-fly as we want to maintain it as "an object".  But the PCB
itself could have different numbers of layers at different locations,
such as flex cable assemblies, and you could describe the stackup
itself in terms of how the layers are put together (i.e. buried vias
are drilled through a subset of layers, that subset has its own
"holes" layer).

In both cases, there's information about holes that applies to some
subset of the layout.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> ... I think the tool we have is pretty good already. Very good.  Thanks!
>
> The tool we have already is nearly impossible to maintain, though.
>
>> Please do not expect that users write plugins.  The tool is already too
>> good as it is to make is worth the effort to learn how to do that.
>
> I expect the plugin mechanism to be the way to write *all* the core
> bits, though. 

The more important it is, that what is below the plugin mechanism is as
general as necessary, and since that is difficult to judge up front: as
general as possible, without compromising the final goals.

I'd propose a very basic, very general storage data representation.
Just layers, shapes, and arbitray levels of composites, the layout
implicitly being the top level composit. Everything with arbitrary
attributes.

On top of that is a memory representation, that introduces the concepts
of elements, vias, surface-layers (layer sets: copper, mask, silk,
courtyard, keepout), connectivity,   

It provides basic operations on these concepts.  The implementation of
these concepts builds on the objects of the storage data layers.  It
must not be an error if a via has two holes, a polygon shaped hole or
silk in it.  DRC may flag such things, but it must not be an error.
The attributes that this memory representation and it methods understand
shall be in namespace "pcb:" and unknown attributes in that namespace
shall emit warnings.

The plugins define their own attributes.  Attributes shall not be
overloaded.  If a plugin operates on attributes of the memory
representation, it shall do that via methods of that representation, if
possible.  

Higher level parts of the concepts "element", "via", "surface layer"
may be implemented in plugins.




I cannot keep up, there are 15 new messages in my inbox, lets see what
what new arguments come up :-)

I cannot make up my mind if I should continue to argue for hole layers,
or if holes shall be shapes with hole attribute on layers.

> The fact that the *user* can write them *also* is a side-effect :-)
>
>
> ___
> geda-user mailing list
> geda-user@moria.seul.org
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user

-- 
Stephan Böttcher FAX: +49-431-85660
Extraterrestrische PhysikTel: +49-431-880-2508
I.f.Exp.u.Angew.Physik   mailto:boettc...@physik.uni-kiel.de
Leibnizstr. 11, 24118 Kiel, Germany


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 4:07 PM, DJ Delorie wrote:

> 
>> That's the kind of "top down" design that produces a tool that meets
>> today's requirements in the minimum amount of time, but produces an
>> inflexible tool limited to those requirements.
> 
> And your kind of bottom-up design never gets done at all, because of
> impossible-to-meet requirements for unlimited flexibility.

Absolutely not. The right kind of flexibility is even more important to the 
developers than to the users.

> 
>> But if you start from a data representation that spans the space of
>> the possible, it drives you toward flexibility and extensibility in
>> the upper layers.
> 
> The problem is, "the space of the possible" is infinitely large, and
> we have a very small finite set of developers.  Unless we know how the
> tool is going to be used, we don't even know what "the space of the
> possible" *is*.

In your sense, you have no idea what the "space of the possible" is for the 
integers. Yet all integers can be represented by strings of two digits. Not 
much of a developer burden.

Ales did an incredible job of representing the "space of the possible" for 
schematics with a very clean bottom level. The troublesome issues in gEDA come 
from upper levels that fail to respect its generality. But there are far fewer 
issues there than there are with pcb.

Good, clean, simple, highly general foundations can *drastically reduce* the 
burden on the developer (been there). The most common cause of bad foundations, 
in my experience, is limited vision.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 05:58:29PM -0400, DJ Delorie wrote:
> 
> > As someone proposed, it is possible to have different hole size on
> > different layers. So I think the best would be to have special 'hole'
> > object on each layer. And that object will always be in composite
> > container, and all of them will be forcebly aligned to the same center.
> 
> What I suggested before is that each composite itself have "outline"
> type layers, which contains any holes, cutouts, or physical outline
> shapes that need to be applied to all of the layers therein.

If you mean 'physical layer' by 'composite', than yes. Each of those
will have it's 'outline' layer.

But I didn't wanted to have the 'hole' here, but now I don't see why.
We can probably do that.

The problem here is: How to recognice board 'outline' from cutouts?

I don't want to draw the actual 'outline' to all physical layers if it
is the same. So I cannot take 'the biggest one' as outline.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 10:40:02PM +0100, Stephan Boettcher wrote:
> Martin Kupec  writes:
> 
> > On Fri, Mar 18, 2011 at 05:11:01PM -0400, DJ Delorie wrote:
> >> 
> >> > But if I am doing that (just to extend this silly example too far), I
> >> > would want the DRC checker to ensure that it obeys both the rules for
> >> > copper _and_ for silk.
> >> 
> >> Hmmm... DRC is already fab-specific anyway.  Maybe DRC should be on
> >> the other side of the CAM job?  I.e. make DRC an exporter, so it gets
> >> the layer mappings you want, and can apply rules based on the *mapped*
> >> layers, not the *design* layers?
> >> 
> >> That also lets us code the DRC rules in the CAM job file, so different
> >> "jobs" check different rule sets.
> >
> > I am sorry, but I don't think this is a good idea.
> > The DRC should work on the hierarchy. While the exporters will receive
> > somewhat 'flattened' stackup.
> 
> Absolutely not. The DRC shall check the final flat result.  And yes, the
> DRC should be a separate tool examining the CAM output.
> 
> OTOH, some DRC functionality inside the layout tool is at least nice to
> have, if not required, for doing life checks when editing.  These will
> probably never reach the coverage that a final checkout DRC should
> provide.  But that is a problem to write such a tool in the first place.

The problem here is that it have to be possible to point out the
problematic parts. So I guess it have to be able to flatten the
hierarchy by itself and so I knows where the problem comes form.

But I want to talk about DRC later.. DRC lives on top of layers and
will need nearly no support from it.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> That's the kind of "top down" design that produces a tool that meets
> today's requirements in the minimum amount of time, but produces an
> inflexible tool limited to those requirements.

And your kind of bottom-up design never gets done at all, because of
impossible-to-meet requirements for unlimited flexibility.

> But if you start from a data representation that spans the space of
> the possible, it drives you toward flexibility and extensibility in
> the upper layers.

The problem is, "the space of the possible" is infinitely large, and
we have a very small finite set of developers.  Unless we know how the
tool is going to be used, we don't even know what "the space of the
possible" *is*.

So I can grant you your wish right now - delete your pcb tree and you
have the result of your design process.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 3:11 PM, DJ Delorie wrote:

> 
>> But if I am doing that (just to extend this silly example too far), I
>> would want the DRC checker to ensure that it obeys both the rules for
>> copper _and_ for silk.
> 
> Hmmm... DRC is already fab-specific anyway.  Maybe DRC should be on
> the other side of the CAM job?  I.e. make DRC an exporter, so it gets
> the layer mappings you want, and can apply rules based on the *mapped*
> layers, not the *design* layers?
> 
> That also lets us code the DRC rules in the CAM job file, so different
> "jobs" check different rule sets.

Now you're talking!

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 3:31 PM, Stephan Boettcher wrote:

> Except, I see no need to specify any insulating layers here.

"I see no need" is exactly the kind of thinking that produces an inflexible, 
limited tool. I see *every* need to base the description on geometry, so that 
the tool's limits   are defined by necessity and not by the limited imagination 
of any particular group of developers. 

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 3:09 PM, DJ Delorie wrote:

> I feel that the data layer is easiest to implement, but it seems to be
> what we're arguing about the most.  I say we should ignore that
> problem for now, until we have a better understanding of what we want
> at the other two layers.

That's the kind of "top down" design that produces a tool that meets today's 
requirements in the minimum amount of time, but produces an inflexible tool 
limited to those requirements.

But if you start from a data representation that spans the space of the 
possible, it drives you toward flexibility and extensibility in the upper 
layers.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> As someone proposed, it is possible to have different hole size on
> different layers. So I think the best would be to have special 'hole'
> object on each layer. And that object will always be in composite
> container, and all of them will be forcebly aligned to the same center.

What I suggested before is that each composite itself have "outline"
type layers, which contains any holes, cutouts, or physical outline
shapes that need to be applied to all of the layers therein.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> I do not agree with the term high level here.  I agree that there
> may be layers of different types, that require special treatment.
> These are low-level types, like "conductive" for layers that
> electrically connect things, or "holes" for connections between
> layers, and "other" for anything else.

We're talking about the same thing, but what you call "low level" I
call "high level", since I'm considering their place in the heirarchy
of categorization (conductor -> copper -> 1oz copper, or drawing ->
assembly -> courtyards), not the data structures they're implemented
with.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 09:23:20PM +0100, Stephan Boettcher wrote:
> Martin Kupec  writes:
> > Actually what I am trying to do, is to have concept so layers don't
> > interract with layers of different type. The composits are a bit
> > problem, because I would need to consider more layers when performing any
> > action, but I think that it can still be interaction with object on the
> > same layer.
> 
> I do not understand what problems you see with composits.  A layer
> consists of the union of all shapes on any level of the composits
> hierarchy.  Composits may be referenced at multiple positions, so those
> shapes appear multiple times.  When a shape is modified in a composit,
> it may affect all copies simultaniously, or the composit will be
> duplicated (copy on write), depneding on an attribute or explicit user
> action.
I don't see problems, just need for special care.

And I am glad that you mentioned the 'copy on write' and multiple
reference.
> 
> > So, i.e., If we would have 'hole' layer. I would have check, that holes
> > on hole layer are not intersecting. And also check the intersection of
> > attached shapes on each layer. But all what can happen is that some
> > layer will yell that something bad happend and I should cancel my
> > action.
> 
> Where do you want to attach holes. To layers, like John proposes?  To
> shapes on a layer?  Or as independent entities, like they are now?  

As someone proposed, it is possible to have different hole size on
different layers. So I think the best would be to have special 'hole'
object on each layer. And that object will always be in composite
container, and all of them will be forcebly aligned to the same center.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher

DJ Delorie  writes:

>> I don't want to end up with the current state that some 'specialy
>> named' layers receive special treatment.
>
>>From a practical standpoint, I think it makes sense to have a fast way
> to scan for layers of some high-level type, as well as further typing
> them by name.

I do not agree with the term high level here.  I agree that there may be
layers of different types, that require special treatment.  These are
low-level types, like "conductive" for layers that electrically connect
things, or "holes" for connections between layers, and "other" for
anything else.  What kind of high-performance processing is needed in
addition to that?  Well, when you figure out that there is something
else, it's a good justification to add anothe type.

At the storage data level they are still all layers with attributes.
When loading the layout, they are collected into separate lists, or get
a binary attribute attached, by enumerating known values of the
attribute "pcb:type="

> My original design had an enumerated type for each drawing layer, that
> was one of (for example) "copper, silk, soldermask, paste, outline,
> other" with flags for "normal, inverted" and an assignment to a
> physical layer (1..N).
>
> That way, when you're doing something compute-intensive like
> connectivity checks for "auto-enforce drc clearance" you aren't doing
> a bazillion string compares.
>
> Actions that are performed less often, like mapping a footprint to an
> element, can use a more open-ended string-attribute with more complex
> rules.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
Martin Kupec  writes:

> On Fri, Mar 18, 2011 at 05:11:01PM -0400, DJ Delorie wrote:
>> 
>> > But if I am doing that (just to extend this silly example too far), I
>> > would want the DRC checker to ensure that it obeys both the rules for
>> > copper _and_ for silk.
>> 
>> Hmmm... DRC is already fab-specific anyway.  Maybe DRC should be on
>> the other side of the CAM job?  I.e. make DRC an exporter, so it gets
>> the layer mappings you want, and can apply rules based on the *mapped*
>> layers, not the *design* layers?
>> 
>> That also lets us code the DRC rules in the CAM job file, so different
>> "jobs" check different rule sets.
>
> I am sorry, but I don't think this is a good idea.
> The DRC should work on the hierarchy. While the exporters will receive
> somewhat 'flattened' stackup.

Absolutely not. The DRC shall check the final flat result.  And yes, the
DRC should be a separate tool examining the CAM output.

OTOH, some DRC functionality inside the layout tool is at least nice to
have, if not required, for doing life checks when editing.  These will
probably never reach the coverage that a final checkout DRC should
provide.  But that is a problem to write such a tool in the first place.

> And I want represent the resulting layer mapping somewhat in the
> stackup, so the exporters will receive how are the layer ordered.
> This should brink some code from the exporters to the core => less code.

This kind of information shall be in the layer attributes.  Ben-mode
image export will need to know that.

-- 
Stephan



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> ... I think the tool we have is pretty good already. Very good.  Thanks!

The tool we have already is nearly impossible to maintain, though.

> Please do not expect that users write plugins.  The tool is already too
> good as it is to make is worth the effort to learn how to do that.

I expect the plugin mechanism to be the way to write *all* the core
bits, though.  The fact that the *user* can write them *also* is a
side-effect :-)


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> We are talking about different thinks, I guess.
>
> Probably.
>
>> The tool shall be very focussed on traces, elements, vias.
>
> To be this kind of focused, it needs to have some understanding of
> what a via is.  You wouldn't want to invoke the via editor on a trace,
> but you wouldn't want the "move" option on a trace to not be able to
> move either the endpoints or the whole trace.  Regardless of how the
> underlying data is stored, the tools need to organize the data in a
> way that helps them serve the user, and be aware of various levels of
> semantics that need to be applied to what would otherwise be
> meaningless groups of composites.
>
> For example:
>
> User level - a via is a connection between layers that I can add,
> remove, edit, and move around.
>
> Tool level - a via is an anonymous (i.e. not part of an element) hole
> between layers electrically connecting copper pads on each layer.
>
> Data layer - a via is a collection of N shapes on M conducting layers,
> with a collection of one or more shapes penetrating the insulators
> between those layers.

Except, I see no need to specify any insulating layers here.  The data
does not care.  It's the exporter that may care.  If, for some
technology, the data does care, there will be a very special layer of
type "other" to make it care.

> I feel that the data layer is easiest to implement, but it seems to be
> what we're arguing about the most.  

Yes.  because ...

> I say we should ignore that problem for now, until we have a better
> understanding of what we want at the other two layers.  The tool layer
> is going to be the hardest to design, 

... I think the tool we have is pretty good already. Very good.  Thanks!

> because that's where we blend flexibility with ease of use.  Picking
> the right tool-level design will give us both flexibility and ease of
> use ("use" includes both the user and the plugin writer).

Please do not expect that users write plugins.  The tool is already too
good as it is to make is worth the effort to learn how to do that.

It's good to know that is is possible when a real need arises, but that
will not be often the case.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> Hide all composites with attribute "type=via".  The GUI probably
> maintains an extra list of those, as well as a list of elements, for
> performance.

Why the GUI?  Why can't the core maintain that list, since a lot of
things will need it?  I care a lot about performance.

> Exporters can only export what they know about.  All layers can be
> turned into gerbers.

Except gerbers have special cases for thermals and pads, for example.
If you use the special cases, other CAM tools empower their users to
do more things (like auto-generate paste stencils when you forget the
paste mask, which does NOT work with pcb's gerbers).  But for the
exporters to offer these special cases, they need to know more about
the data they're given than just "draw circle here".

> At the bottom, a layout is a set of layers with attributes,
> containing shapes, maybe with attributes.

and containing other layers as sub-layouts.  I have never disagreed
with this!

What I disagree with is using this "at the bottom" information to
re-produce the semantic information inherent in a "pcb layout".  I see
no reason why there can't be a semantic heierarchy to the data, so at
a high level we have a collection of "all vias" that's a child of
"this layout", so that the tools can find them easier and deal with
them as a group.

> The semantics of those attributes is what encapsulates the builtin
> knowledge how to make PCBs, and the tool must fully exploit that
> knowledge when presenting a layout to the user.

Forcing tools to "fully exploit" data at too low a level makes it very
difficult to create such tools in the first place.  The move tool
needs to know the difference between an element, a via, and a trace,
so it can function properly.  We need to consider these types of
issues when designing the internal data structures, or it will be so
difficult to write the software that it just won't get done.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 05:09:09PM -0400, DJ Delorie wrote:
> User level - a via is a connection between layers that I can add,
> remove, edit, and move around.
> 
> Tool level - a via is an anonymous (i.e. not part of an element) hole
> between layers electrically connecting copper pads on each layer.
> 
> Data layer - a via is a collection of N shapes on M conducting layers,
> with a collection of one or more shapes penetrating the insulators
> between those layers.
> 
> 
> I feel that the data layer is easiest to implement, but it seems to be
> what we're arguing about the most.  I say we should ignore that
> problem for now, until we have a better understanding of what we want
> at the other two layers.  The tool layer is going to be the hardest to
> design, because that's where we blend flexibility with ease of use.
> Picking the right tool-level design will give us both flexibility and
> ease of use ("use" includes both the user and the plugin writer).

All I am right now trying to figure out is how to do the "Data level"
in the right way, so the "Tool level" has no obstructions in it.

And it seems that we got some kind of agreeament in that.
Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 05:19:10PM -0400, DJ Delorie wrote:
> 
> > I don't want to end up with the current state that some 'specialy
> > named' layers receive special treatment.
> 
> From a practical standpoint, I think it makes sense to have a fast way
> to scan for layers of some high-level type, as well as further typing
> them by name.
The types I am trying to introduce are quite 'high-level' ones. And
futher typing will be by attributes, and I can convert the most used
ones to some nice internal representation.
> 
> My original design had an enumerated type for each drawing layer, that
> was one of (for example) "copper, silk, soldermask, paste, outline,
> other" with flags for "normal, inverted" and an assignment to a
> physical layer (1..N).
> 
> That way, when you're doing something compute-intensive like
> connectivity checks for "auto-enforce drc clearance" you aren't doing
> a bazillion string compares.
I don't want to use the names (strings) internaly at all. Just at
import/export to file. Internaly it should all be pointer based
structures.
> 
> Actions that are performed less often, like mapping a footprint to an
> element, can use a more open-ended string-attribute with more complex
> rules.

This will have to use names, but that should be 'less often' as you say.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 05:11:01PM -0400, DJ Delorie wrote:
> 
> > But if I am doing that (just to extend this silly example too far), I
> > would want the DRC checker to ensure that it obeys both the rules for
> > copper _and_ for silk.
> 
> Hmmm... DRC is already fab-specific anyway.  Maybe DRC should be on
> the other side of the CAM job?  I.e. make DRC an exporter, so it gets
> the layer mappings you want, and can apply rules based on the *mapped*
> layers, not the *design* layers?
> 
> That also lets us code the DRC rules in the CAM job file, so different
> "jobs" check different rule sets.

I am sorry, but I don't think this is a good idea.
The DRC should work on the hierarchy. While the exporters will receive
somewhat 'flattened' stackup.

And I want represent the resulting layer mapping somewhat in the
stackup, so the exporters will receive how are the layer ordered.
This should brink some code from the exporters to the core => less code.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> I don't want to end up with the current state that some 'specialy
> named' layers receive special treatment.

>From a practical standpoint, I think it makes sense to have a fast way
to scan for layers of some high-level type, as well as further typing
them by name.

My original design had an enumerated type for each drawing layer, that
was one of (for example) "copper, silk, soldermask, paste, outline,
other" with flags for "normal, inverted" and an assignment to a
physical layer (1..N).

That way, when you're doing something compute-intensive like
connectivity checks for "auto-enforce drc clearance" you aren't doing
a bazillion string compares.

Actions that are performed less often, like mapping a footprint to an
element, can use a more open-ended string-attribute with more complex
rules.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> That is up to the HID to find the composits with attribute
>> "type=via", and present them in a via toll selector.
>
> I disagree with this.
>
> The HID is the Human Interaction Device - how the information is
> presented to the user.  GUI, printer, etc.
>
> The HID is the wrong place to be assigning *meaning* to the data.
> That is still in the core.  The fact that some composites are "vias"
> is something intrinsic to the pcb design, independent of what color
> you make it on the screen, and independend of how vias are implemented
> at the lowest internal levels.

Physical meaning is "here is a hole in the board", "here is a copper
circle on layer 1". Those meanings appear in elements, vias, whatever.
That a hole with concentric pads is a via has no meaning except for how
those came to be.  DRC does not care about vias.  It cares about hole
diameters and copper annulus. Connectivity also does not care about
vias.  Only the human in front of the screen cares about vias.

-- 
Stephan



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 01:52:38PM -0700, Jared Casper wrote:
> On Fri, Mar 18, 2011 at 1:44 PM, DJ Delorie  wrote:
> > At the design/edit level, that layer is a copper layer.  Note to John:
> 
> > And DRC freaks out because it has two separate incompatible sets of
> > rules to apply to it.
That is one of the things that causes me nightmares. I know that is
should cause nightmares just to the DRC, but I can imagin that the set
of rules will be even incompatible 'inside' the DRC checker.
Like: This type of element is not considered in this layer, so just drop
it. And add that same element to each of those elements because they are
just there and it is not needed to draw them.

This kind of thing can REALLY happen inside DRC checker.
> >
> 
> But if I am doing that (just to extend this silly example too far), I
> would want the DRC checker to ensure that it obeys both the rules for
> copper _and_ for silk.  If those are incompatible sets then I have to
> deal with the failed DRC for one of them because I am asking the tool
> to do something that doesn't agree with with the DRC rules I have
> asked it to check, but I would still like to know that is what I'm
> doing.

I can provide some 'copy on write' mechanism for copying one layer into
another. But I still don't want to have two types in one layer.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> But if I am doing that (just to extend this silly example too far), I
> would want the DRC checker to ensure that it obeys both the rules for
> copper _and_ for silk.

Hmmm... DRC is already fab-specific anyway.  Maybe DRC should be on
the other side of the CAM job?  I.e. make DRC an exporter, so it gets
the layer mappings you want, and can apply rules based on the *mapped*
layers, not the *design* layers?

That also lets us code the DRC rules in the CAM job file, so different
"jobs" check different rule sets.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> But at the core, they work all just the same.
>
> The "core" includes the autorouters, optimizers, DRC, exporters,
> reports, and even simple editing - we have a "hide vias" button.  How
> does that work if you no longer have "vias" as an inherent type?

Hide all composites with attribute "type=via".  The GUI probably
maintains an extra list of those, as well as a list of elements, for
performance.

The autorouter is told to route on all enable conductive layers, and
choose from a set of selected vias to go between those layers.

Exporters can only export what they know about.  All layers can be
turned into gerbers.  More complicated exports may need a technology
description, like an advanced concept of the current layer groups. An
exporter shall define a set of attibutes it expects to find on layers
and objects to do its special deeds, and those attribute shall not be
overloaded attributes that the core tool needs.

> PCB has a lot of tools that know a lot about how PCBs are designed.
> These tools are essential to making PCB a viable layout editor.  The
> input we need at this stage is from people who design a lot of PCBs,
> so we know what kinds of abstractions make sense to expose and what
> kinds need to be hidden behind other data structures.

At the bottom, a layout is a set of layers with attributes, containing
shapes, maybe with attributes.

The semantics of those attributes is what encapsulates the builtin
knowledge how to make PCBs, and the tool must fully exploit that
knowledge when presenting a layout to the user.

When we morph the current pcb towards such an abstract layer concept,
the user shall not see the difference unless she activates the new
features that become available with these concepts.

> Maybe to the rendering engines they all work the same, but saying
> "they all work the same" *in general* just isn't applicable here.
> They don't.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Steven Michalske





On Mar 18, 2011, at 1:32 PM, DJ Delorie  wrote:

> 
>> But at the core, they work all just the same.
> 
> The "core" includes the autorouters, optimizers, DRC, exporters,
> reports, and even simple editing - we have a "hide vias" button.  How
> does that work if you no longer have "vias" as an inherent type?
> 
Via the via tag attached to the generic composite that the via tool made.  
Sorry had to use the pun.

> PCB has a lot of tools that know a lot about how PCBs are designed.
> These tools are essential to making PCB a viable layout editor.  The
> input we need at this stage is from people who design a lot of PCBs,
> so we know what kinds of abstractions make sense to expose and what
> kinds need to be hidden behind other data structures.
> 
> Maybe to the rendering engines they all work the same, but saying
> "they all work the same" *in general* just isn't applicable here.
> They don't.
> 
> 
> ___
> geda-user mailing list
> geda-user@moria.seul.org
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> We are talking about different thinks, I guess.

Probably.

> The tool shall be very focussed on traces, elements, vias.

To be this kind of focused, it needs to have some understanding of
what a via is.  You wouldn't want to invoke the via editor on a trace,
but you wouldn't want the "move" option on a trace to not be able to
move either the endpoints or the whole trace.  Regardless of how the
underlying data is stored, the tools need to organize the data in a
way that helps them serve the user, and be aware of various levels of
semantics that need to be applied to what would otherwise be
meaningless groups of composites.

For example:

User level - a via is a connection between layers that I can add,
remove, edit, and move around.

Tool level - a via is an anonymous (i.e. not part of an element) hole
between layers electrically connecting copper pads on each layer.

Data layer - a via is a collection of N shapes on M conducting layers,
with a collection of one or more shapes penetrating the insulators
between those layers.


I feel that the data layer is easiest to implement, but it seems to be
what we're arguing about the most.  I say we should ignore that
problem for now, until we have a better understanding of what we want
at the other two layers.  The tool layer is going to be the hardest to
design, because that's where we blend flexibility with ease of use.
Picking the right tool-level design will give us both flexibility and
ease of use ("use" includes both the user and the plugin writer).


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 2:55 PM, Stephan Boettcher wrote:

> DJ Delorie  writes:
> 
>>> Inflexible wired-in behavior
>> 
>> ... is MANDATORY if you're going to produce a tool that's usable.
>> 
>> That's the difference between a pcb editor and, say, inkscape.
>> 
>> Inkscape gives you complete flexibility, and it's absolutely useless
>> as a pcb layout tool.
>> 
>> You seem to be totally blind to the theory that you can have
>> inflexible wired-in behavior *and* options for flexibility through
>> alternate mechanisms.  We need both - they are not mutually exclusive.
>> We need a tool that's easy to learn and use *and* has options for
>> power user.  Your maniacal lobbying for "factoring" and "abstraction"
>> would leave us with a tool that nobody would *want* to use.
> 
> We are talking about different thinks, I guess.  The tool shall be very
> focussed on traces, elements, vias.  But the engine at the bottom shall
> be flexible.  The user shall see this flexibility deep down in the
> advanded options section of the via editor, where he will be told to go
> when he asks for square via holes in this mailing list.

Yes!

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 09:49:08PM +0100, Stephan Boettcher wrote:
> Martin Kupec  writes:
> > Ok. We probably don't understand each other, so I will just state my fears.
> >
> > I would like to know about each drawing layer where it belongs to.
> >
> > So when I am performing DRC check, I will know, that it is conductive
> > layer and I should consider it. I can take care of special DRC rules for
> > some conductive layers later.
> 
> So we do need layer specific DRC rules.  Silk layers get the silk rules
> attached.  Copper layers get copper rules attached.
Yes. That is not a problem. And later we can easily add 'drc rules' as
layer attributes, so different layers of the same type will get
a bit different DRC treatment.

> > That is why I insist on 'typed' layers, not 'tagged' layer.
> 
> As long as the user can define arbitrary types, the type becomes an
> attribute.  If the user cannot define new types, then there shall be
> only very few very abstract types, connected to basic properies, e.g.,
> "conductive", "hole/via", "other".

Partly. User will not be able to define new types. Because each type
get's a different treatment in different parts of code.
But I want have 'close to zero'(TM) inter layer interaction, so I will
be easy to add new type.

What I want to allow the user to do, is some 'tweaks' of layer types.
Like 'silk:refdefs'. But this 'tweaks' will have to be coded in advance,
the user will add just 'parameters' so it will start working.
So 'silk:refdefs' is still commong 'silk' typed layer with special
attributed 'refdefs' causing that 'refdefs' will magicaly go here and
not to common 'silk'.

We cannot stick with just the 'basic' layers. As i.e. countryard layers
is basicaly non-conductive layers, but there are some special DRC check
added. And those needs to be coded. I don't want to end up with the
current state that some 'specialy named' layers receive special
treatment.

Internaly it will be probably just 'common' layer on most places and
will receive special treatment on special places like now. But it should
be a bit more 'obvious' what treatment and where it receives.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> Inflexible wired-in behavior
>
> ... is MANDATORY if you're going to produce a tool that's usable.
>
> That's the difference between a pcb editor and, say, inkscape.
>
> Inkscape gives you complete flexibility, and it's absolutely useless
> as a pcb layout tool.
>
> You seem to be totally blind to the theory that you can have
> inflexible wired-in behavior *and* options for flexibility through
> alternate mechanisms.  We need both - they are not mutually exclusive.
> We need a tool that's easy to learn and use *and* has options for
> power user.  Your maniacal lobbying for "factoring" and "abstraction"
> would leave us with a tool that nobody would *want* to use.

We are talking about different thinks, I guess.  The tool shall be very
focussed on traces, elements, vias.  But the engine at the bottom shall
be flexible.  The user shall see this flexibility deep down in the
advanded options section of the via editor, where he will be told to go
when he asks for square via holes in this mailing list.

-- 
Stephan



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Jared Casper
On Fri, Mar 18, 2011 at 1:44 PM, DJ Delorie  wrote:
>
>> But what if I want a silk layer to just be a copy of a copper layer?
>
> This is a different category of problem - the CAM job.  Typically,
> you'd have a file that describes how to map design layers to output
> layers.  In that file, you'd say "this copper layer should be output
> as a silk layer also".  Such a file could also say "copper objects
> with the also-paste attribute should be drawn on the paste layer" etc.
>

Okay, but you are just moving the layer/object tags out to a separate
file and process, the layers are still "tagged" so some extent
somewhere.  But I get your point.

> At the design/edit level, that layer is a copper layer.  Note to John:

> And DRC freaks out because it has two separate incompatible sets of
> rules to apply to it.
>

But if I am doing that (just to extend this silly example too far), I
would want the DRC checker to ensure that it obeys both the rules for
copper _and_ for silk.  If those are incompatible sets then I have to
deal with the failed DRC for one of them because I am asking the tool
to do something that doesn't agree with with the DRC rules I have
asked it to check, but I would still like to know that is what I'm
doing.

Jared


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> You can always tell the board house to use copper minus soldermask as
> silk.

That sounds like fun...

Now I want to make a pcb plugin that copies all copper to the silk
layer, but only where there's soldermask.  You get a picture of your
circuit in white-on-green, that actually works :-)


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
Jared Casper  writes:

> On Fri, Mar 18, 2011 at 1:23 PM, Martin Kupec  wrote:
>> If layers types would be defined by attributes, someone would be able to
>> declare one layer both as conductive and as silk for example. That could
>> cause me a nighmares. That is why I insist on 'typed' layers, not
>> 'tagged' layer.
>>
>> That example is probably silly, but someone would probably come up with
>> something more realistic, but still giving me nightmares.
>>
>
> But what if I want a silk layer to just be a copy of a copper layer?
> That may be just as silly, but I'm sure someone could come up with a
> use for it.  Why would such a layer cause nightmares?  When the code
> is worried about connectivity etc., it sees this layer is tagged as
> conductive and includes it in whatever its doing, ignoring the fact
> that it is also silk.  When the code is putting out the silkscreen, it
> notices this layer is tagged as silk and puts it out, ignoring that it
> is also a conductive layer.

You can always tell the board house to use copper minus soldermask as
silk.

>
> Jared

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
Martin Kupec  writes:

> On Fri, Mar 18, 2011 at 09:00:04PM +0100, Stephan Boettcher wrote:
>> Martin Kupec  writes:
>> 
>> > On Fri, Mar 18, 2011 at 07:18:52PM +0100, Stephan Boettcher wrote:
>> >> The file format need not know about these distictions.  Both are
>> >> graphical layers, with different attributes.  The one has attributes to
>> >> tell DRC to flag overlapping components, the other has attributes to
>> >> tell some autorouter not to put copper there, and attributes to tell DRC
>> >> to check for intruding copper.  Future plugins need more layers to tell
>> >> about different constraints.
>> >> 
>> >> Ideally, any layer type is fully defined via attributes.  The most
>> >> common attribute may be "net:conductive" for normal copper layers, so
>> >> that the HIDs know that the layer contributes to the implementation of
>> >> the netlist.  Copper layers need a second attribute "gbr:layer=inner5"
>> >> to tell the (gerber) exporter where to put it.  A third attribute
>> >> defines the DRC rules that apply "drc:rules=default", plus per layer
>> >> override "drc:minwidth=6mil".
>> >> 
>> >> "drc:courtyard=front"
>> >> "drc:keepout=front"
>> >> "route:keepout=front"
>> >
>> >
>> > That is a bit complicated. I need a clean definition of layer types, so
>> > one can pick the right layer when needed. But some attributes in
>> > addition to layer type are possible.
>> 
>> I do not understand that argument.
>
> Ok. We probably don't understand each other, so I will just state my fears.
>
> I would like to know about each drawing layer where it belongs to.
>
> So when I am performing DRC check, I will know, that it is conductive
> layer and I should consider it. I can take care of special DRC rules for
> some conductive layers later.

So we do need layer specific DRC rules.  Silk layers get the silk rules
attached.  Copper layers get copper rules attached.

> If layers types would be defined by attributes, someone would be able to
> declare one layer both as conductive and as silk for example. That could
> cause me a nighmares. 

Well, that would be a DRC violation :-) The DRC tool shall not suffer
from nightmares if it finds positives.

> That is why I insist on 'typed' layers, not 'tagged' layer.

As long as the user can define arbitrary types, the type becomes an
attribute.  If the user cannot define new types, then there shall be
only very few very abstract types, connected to basic properies, e.g.,
"conductive", "hole/via", "other".

> That example is probably silly, but someone would probably come up with
> something more realistic, but still giving me nightmares.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> But what if I want a silk layer to just be a copy of a copper layer?

This is a different category of problem - the CAM job.  Typically,
you'd have a file that describes how to map design layers to output
layers.  In that file, you'd say "this copper layer should be output
as a silk layer also".  Such a file could also say "copper objects
with the also-paste attribute should be drawn on the paste layer" etc.

At the design/edit level, that layer is a copper layer.  Note to John:
We just call them copper.  You can assume we mean "any conductive
substance" but people get the idea more reliably if you use terms
they're familiar with.

> When the code is worried about connectivity etc., it sees this layer
> is tagged as conductive and includes it in whatever its doing,
> ignoring the fact that it is also silk.  When the code is putting
> out the silkscreen, it notices this layer is tagged as silk and puts
> it out, ignoring that it is also a conductive layer.

And DRC freaks out because it has two separate incompatible sets of
rules to apply to it.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 09:29:04PM +0100, Stephan Boettcher wrote:
> Martin Kupec  writes:
> 
> > On Fri, Mar 18, 2011 at 01:52:24PM -0600, John Doty wrote:
> >> 
> >> On Mar 18, 2011, at 1:44 PM, Martin Kupec wrote:
> >> 
> >> > Generaly you are proposing that there should be a special type of
> >> > footpring called 'via' and it should receive extra care.
> >> 
> >> Why single out "via" and "footprint" when they are merely members of
> >> an open-ended list of possible composite objects?
> >
> > We need to single out 'via' so someone who want's simple board can find
> > 'via' tool as everywhere. And under word 'footprint' I mean any other
> > composite object.
> 
> That is up to the HID to find the composits with attribute
> "type=via", and present them in a via toll selector.
> 
> And to maintein an in memory list of composits of "type=element" and akt
> on those when the users asks for elements.

Yes. With 'special care' I just ment in the GUI. Inside it will be
a compsoite object like any other.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Jared Casper
On Fri, Mar 18, 2011 at 1:32 PM, DJ Delorie  wrote:
> The "core" includes the autorouters, optimizers, DRC, exporters,
> reports, and even simple editing - we have a "hide vias" button.  How
> does that work if you no longer have "vias" as an inherent type?
>

You go through and hide all the composites marked as a "via".  For pcb
to deal with vias differently doesn't mean that vias needs to be
something fundamentally different than a footprint.

On Fri, Mar 18, 2011 at 1:38 PM, DJ Delorie  wrote:
> The HID is the wrong place to be assigning *meaning* to the data.
> That is still in the core.  The fact that some composites are "vias"
> is something intrinsic to the pcb design, independent of what color
> you make it on the screen, and independend of how vias are implemented
> at the lowest internal levels.

>From my reading of this conversation there is a disconnect between
what people are talking about w.r.t. words like the "core".  Some are
talking about the "lowest internal levels" where a via can just be
another composite object.  Some are talking about everything in pcb
besides the gui, where do you need to distinguish a via from a
footprint.  While others seem to be using "gui" as everything but the
"lowest internal levels"

Jared


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
Steven Michalske  writes:

> On Fri, Mar 18, 2011 at 12:40 PM, Martin Kupec  wrote:
>> On Wed, Mar 16, 2011 at 10:36:24AM -0600, John Doty wrote:
>>>
>>> On Mar 16, 2011, at 4:24 AM, Stephan Boettcher wrote:
>>>
>>> >> Ok. So "via" should be a circle element on "hole" typed layer.
>>> >
>>> > No.  A Via is a composit, consisting of a circle on the hole layer, and
>>> > various circles on copper layers, and circles on mask layes, and
>>> > thermals.
>>>
>>> The "layer" concept should be physical, not a metaphysical abstraction. 
>>> Objects in a layer may contain holes, but a "hole layer" is nonsensical, a 
>>> toxic conceptual shortcut. An "outline" layer is similarly bad: the 
>>> insulating layers may all have the same shape sometimes, but not always.
>>
>> The outline layer will be part of 'physical' layer. So if you have 2
>> 'physical' layers with different shape, it will play nicely.
>>
>> What I am prosposing is 2 level concept. There will be 'physical'
>> layers, so you can add properties to them. And than there will be
>> 'drawing' surfaces. And 'outline' is just drawing suface telling the
>> 'physical' layer it's edges.
>>
>> But I am not convinced that we need special 'hole' typed layer. Maybe we
>> can things like 'holes' which are not part of any specific layer just
>> float in space. I thing that it would work.
>>>
>>> Trying to model things that aren't layers as if they were layers is one 
>>> common mistake in this kind of tool. Equally common is leaving out layers: 
>>> the insulating layers in a PCB are just as important as the copper, and 
>>> have their own properties (shape, thickness, material, etc.). They're a 
>>> critical part of the layer stack.
>>
>> The problem I see with the insulating layers is that there is nothing on
>> them...So you don't need them as 'drawing' layers. But I agree that
>> there should be a way how to add some attributes to them.
>
>
> Embedded resistor and capacitors are in holes in the separating layers.
>
> Some separating layers are more like a solder mask and sprayed down
> rather than FR4 and prepreg.
>
> Just because standard FR4 Fabs don't usually use any drawings on that
> layer, should not preclude it.
>
> Now the exporter may barf if it finds something it can't cope with,
> like a line drawn on a separator layer.

If you have a foundry that does such things, probably you send them a
gerber layer and tell them that those are the embedded resistors between
copper 2 and 3.  And that other layer are those between copper 5 and 6.

No special exporter required.  But you must keep the drawing layers a
bit more abstract, else you confuse the tools that have invalid
assumptions.

The embedded resitors will be elements in a process specific library.
Not top/inner/bottom layers, that get mapped to the layer present in the
layout, but footprints with explicit layers.  Including a shape on the
resistive layer, and pads on the adjacent copper layers.

The pcb layout tool will not need to know anything about those embedded
devices.  They just emerge and work.  All you need is layers that are
not marked conductive.

And if those strange embedded deviced become common, somebody needs to
add some DRC rules, which at that time are just a few boolean ops on some
layers in a config file.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 01:20:43PM -0700, Steven Michalske wrote:
> On Fri, Mar 18, 2011 at 1:11 PM, Stephan Boettcher
> > The GUI must present footprints, vias, and hierachical sublayouts, both
> > in copy on write and in truly hierachical fashion.  But at the core,
> > they work all just the same. Then there will be no more question if some
> > feature is supported in elements or not, or how convoluted a via may be.
> >
> 
> I have had some convoluted vias for high speed signals.  different
> diameters on different layers, with different clearances from the
> surrounding planes.  And we really could have udes a DRC that checked
> if the blind via ended on top of another signal trace.  High speed
> noise coupled on to that trace.

That is still ok, to consider it as 'composite object'.
There are just 2 problems.

1. The composite will really need different hole size on different layers.

2. There should be some clever DRC check added.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> That is up to the HID to find the composits with attribute
> "type=via", and present them in a via toll selector.

I disagree with this.

The HID is the Human Interaction Device - how the information is
presented to the user.  GUI, printer, etc.

The HID is the wrong place to be assigning *meaning* to the data.
That is still in the core.  The fact that some composites are "vias"
is something intrinsic to the pcb design, independent of what color
you make it on the screen, and independend of how vias are implemented
at the lowest internal levels.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Jared Casper
On Fri, Mar 18, 2011 at 1:23 PM, Martin Kupec  wrote:
> If layers types would be defined by attributes, someone would be able to
> declare one layer both as conductive and as silk for example. That could
> cause me a nighmares. That is why I insist on 'typed' layers, not
> 'tagged' layer.
>
> That example is probably silly, but someone would probably come up with
> something more realistic, but still giving me nightmares.
>

But what if I want a silk layer to just be a copy of a copper layer?
That may be just as silly, but I'm sure someone could come up with a
use for it.  Why would such a layer cause nightmares?  When the code
is worried about connectivity etc., it sees this layer is tagged as
conductive and includes it in whatever its doing, ignoring the fact
that it is also silk.  When the code is putting out the silkscreen, it
notices this layer is tagged as silk and puts it out, ignoring that it
is also a conductive layer.

Jared


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> But at the core, they work all just the same.

The "core" includes the autorouters, optimizers, DRC, exporters,
reports, and even simple editing - we have a "hide vias" button.  How
does that work if you no longer have "vias" as an inherent type?

PCB has a lot of tools that know a lot about how PCBs are designed.
These tools are essential to making PCB a viable layout editor.  The
input we need at this stage is from people who design a lot of PCBs,
so we know what kinds of abstractions make sense to expose and what
kinds need to be hidden behind other data structures.

Maybe to the rendering engines they all work the same, but saying
"they all work the same" *in general* just isn't applicable here.
They don't.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
Martin Kupec  writes:

> On Fri, Mar 18, 2011 at 01:52:24PM -0600, John Doty wrote:
>> 
>> On Mar 18, 2011, at 1:44 PM, Martin Kupec wrote:
>> 
>> > Generaly you are proposing that there should be a special type of
>> > footpring called 'via' and it should receive extra care.
>> 
>> Why single out "via" and "footprint" when they are merely members of
>> an open-ended list of possible composite objects?
>
> We need to single out 'via' so someone who want's simple board can find
> 'via' tool as everywhere. And under word 'footprint' I mean any other
> composite object.

That is up to the HID to find the composits with attribute
"type=via", and present them in a via toll selector.

And to maintein an in memory list of composits of "type=element" and akt
on those when the users asks for elements.

>> > I am ok with that, I just need to figure out how to handle mapping from
>> > footprint layers to layout layers. I don't want concept of 'top',
>> > 'inner', 'bottom' layer at all...that is too naive for me.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 09:00:04PM +0100, Stephan Boettcher wrote:
> Martin Kupec  writes:
> 
> > On Fri, Mar 18, 2011 at 07:18:52PM +0100, Stephan Boettcher wrote:
> >> The file format need not know about these distictions.  Both are
> >> graphical layers, with different attributes.  The one has attributes to
> >> tell DRC to flag overlapping components, the other has attributes to
> >> tell some autorouter not to put copper there, and attributes to tell DRC
> >> to check for intruding copper.  Future plugins need more layers to tell
> >> about different constraints.
> >> 
> >> Ideally, any layer type is fully defined via attributes.  The most
> >> common attribute may be "net:conductive" for normal copper layers, so
> >> that the HIDs know that the layer contributes to the implementation of
> >> the netlist.  Copper layers need a second attribute "gbr:layer=inner5"
> >> to tell the (gerber) exporter where to put it.  A third attribute
> >> defines the DRC rules that apply "drc:rules=default", plus per layer
> >> override "drc:minwidth=6mil".
> >> 
> >> "drc:courtyard=front"
> >> "drc:keepout=front"
> >> "route:keepout=front"
> >
> >
> > That is a bit complicated. I need a clean definition of layer types, so
> > one can pick the right layer when needed. But some attributes in
> > addition to layer type are possible.
> 
> I do not understand that argument.

Ok. We probably don't understand each other, so I will just state my fears.

I would like to know about each drawing layer where it belongs to.

So when I am performing DRC check, I will know, that it is conductive
layer and I should consider it. I can take care of special DRC rules for
some conductive layers later.

If layers types would be defined by attributes, someone would be able to
declare one layer both as conductive and as silk for example. That could
cause me a nighmares. That is why I insist on 'typed' layers, not
'tagged' layer.

That example is probably silly, but someone would probably come up with
something more realistic, but still giving me nightmares.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> Inflexible wired-in behavior

... is MANDATORY if you're going to produce a tool that's usable.

That's the difference between a pcb editor and, say, inkscape.

Inkscape gives you complete flexibility, and it's absolutely useless
as a pcb layout tool.

You seem to be totally blind to the theory that you can have
inflexible wired-in behavior *and* options for flexibility through
alternate mechanisms.  We need both - they are not mutually exclusive.
We need a tool that's easy to learn and use *and* has options for
power user.  Your maniacal lobbying for "factoring" and "abstraction"
would leave us with a tool that nobody would *want* to use.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
Martin Kupec  writes:

> On Fri, Mar 18, 2011 at 01:44:35PM -0600, John Doty wrote:
>> >> Trying to model things that aren't layers as if they were layers is
>> >> one common mistake in this kind of tool. Equally common is leaving out
>> >> layers: the insulating layers in a PCB are just as important as the
>> >> copper, and have their own properties (shape, thickness, material,
>> >> etc.). They're a critical part of the layer stack.
>> >> 
>> >> The description language needs to be able to express "feature p in
>> >> layer x is aligned with feature q in layer y" in order to build up
>> >> composites. This is the geometrically sensible way to describe the
>> >> result of drilling through several layers. But the geometric
>> >> description language should not be tied to any particular fabrication
>> >> procedure.
>> > 
>> > This is all too physikal for my taste.
>> 
>> I assert that if you do it any other way, you wind up with the
>> following catastrophe: the code for every layer type needs to
>> incorporate a specific definition of its interaction with the code
>> for every other layer type. A total collapse of factoring, poisoning
>> flexibility and maintainability. But if layers correspond to actual
>> geometric layers, this can be avoided, I believe.

What I like with PCB is that there is very little interaction.  Only
when special actions are called, the interactions are invoked.  E.g.,
when I hit the O key, the connectivity is evaluated.  For that I only
need to know which layers are conductive and what vias connect which
layers.

> Actually what I am trying to do, is to have concept so layers don't
> interract with layers of different type. The composits are a bit
> problem, because I would need to consider more layers when performing any
> action, but I think that it can still be interaction with object on the
> same layer.

I do not understand what problems you see with composits.  A layer
consists of the union of all shapes on any level of the composits
hierarchy.  Composits may be referenced at multiple positions, so those
shapes appear multiple times.  When a shape is modified in a composit,
it may affect all copies simultaniously, or the composit will be
duplicated (copy on write), depneding on an attribute or explicit user
action.

> So, i.e., If we would have 'hole' layer. I would have check, that holes
> on hole layer are not intersecting. And also check the intersection of
> attached shapes on each layer. But all what can happen is that some
> layer will yell that something bad happend and I should cancel my
> action.

Where do you want to attach holes. To layers, like John proposes?  To
shapes on a layer?  Or as independent entities, like they are now?  

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Steven Michalske
On Fri, Mar 18, 2011 at 1:11 PM, Stephan Boettcher
 wrote:
> DJ Delorie  writes:
>
>>> Why single out "via" and "footprint" when they are merely members of
>>> an open-ended list of possible composite objects?
>>
>> Because a tool that doesn't deal with real-world concepts in a
>> user-friendly way is unusable.
>
> Yes.  The real world concepts must exist, in a higher level.  In the
> attributes.  The HIDs must implement them in a user-friendly way.  At
> the lowest level, there shall be abstractions.
>
> The GUI must present footprints, vias, and hierachical sublayouts, both
> in copy on write and in truly hierachical fashion.  But at the core,
> they work all just the same. Then there will be no more question if some
> feature is supported in elements or not, or how convoluted a via may be.
>

I have had some convoluted vias for high speed signals.  different
diameters on different layers, with different clearances from the
surrounding planes.  And we really could have udes a DRC that checked
if the blind via ended on top of another signal trace.  High speed
noise coupled on to that trace.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Steven Michalske
On Fri, Mar 18, 2011 at 12:40 PM, Martin Kupec  wrote:
> On Wed, Mar 16, 2011 at 10:36:24AM -0600, John Doty wrote:
>>
>> On Mar 16, 2011, at 4:24 AM, Stephan Boettcher wrote:
>>
>> >> Ok. So "via" should be a circle element on "hole" typed layer.
>> >
>> > No.  A Via is a composit, consisting of a circle on the hole layer, and
>> > various circles on copper layers, and circles on mask layes, and
>> > thermals.
>>
>> The "layer" concept should be physical, not a metaphysical abstraction. 
>> Objects in a layer may contain holes, but a "hole layer" is nonsensical, a 
>> toxic conceptual shortcut. An "outline" layer is similarly bad: the 
>> insulating layers may all have the same shape sometimes, but not always.
>
> The outline layer will be part of 'physical' layer. So if you have 2
> 'physical' layers with different shape, it will play nicely.
>
> What I am prosposing is 2 level concept. There will be 'physical'
> layers, so you can add properties to them. And than there will be
> 'drawing' surfaces. And 'outline' is just drawing suface telling the
> 'physical' layer it's edges.
>
> But I am not convinced that we need special 'hole' typed layer. Maybe we
> can things like 'holes' which are not part of any specific layer just
> float in space. I thing that it would work.
>>
>> Trying to model things that aren't layers as if they were layers is one 
>> common mistake in this kind of tool. Equally common is leaving out layers: 
>> the insulating layers in a PCB are just as important as the copper, and have 
>> their own properties (shape, thickness, material, etc.). They're a critical 
>> part of the layer stack.
>
> The problem I see with the insulating layers is that there is nothing on
> them...So you don't need them as 'drawing' layers. But I agree that
> there should be a way how to add some attributes to them.


Embedded resistor and capacitors are in holes in the separating layers.

Some separating layers are more like a solder mask and sprayed down
rather than FR4 and prepreg.

Just because standard FR4 Fabs don't usually use any drawings on that
layer, should not preclude it.

Now the exporter may barf if it finds something it can't cope with,
like a line drawn on a separator layer.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Steven Michalske
On Fri, Mar 18, 2011 at 1:08 PM, DJ Delorie  wrote:
>
>> I agree here, that a via and a footprint are essentially the same
>> thing.
>
> Except the user doesn't interact with them the same way.
>
This is a UI representation, not a layer geometry issue.

A via tool that makes the proper composite object and stamps it at a
coordinate, is the via tool.  Even if the UI is a script interface, a
via macro in the layers file, or a GUI window and mouse pointer.

A footprint tool takes the composite from a library and stamps it down.


In the underpinnings the layers now has two composite objects, groups,
or what ever you want to call it at two locations on the layout.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
DJ Delorie  writes:

>> Why single out "via" and "footprint" when they are merely members of
>> an open-ended list of possible composite objects?
>
> Because a tool that doesn't deal with real-world concepts in a
> user-friendly way is unusable.

Yes.  The real world concepts must exist, in a higher level.  In the
attributes.  The HIDs must implement them in a user-friendly way.  At
the lowest level, there shall be abstractions. 

The GUI must present footprints, vias, and hierachical sublayouts, both
in copy on write and in truly hierachical fashion.  But at the core,
they work all just the same. Then there will be no more question if some
feature is supported in elements or not, or how convoluted a via may be.

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> I agree here, that a via and a footprint are essentially the same
> thing.

Except the user doesn't interact with them the same way.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Steven Michalske
On Fri, Mar 18, 2011 at 12:53 PM, DJ Delorie  wrote:
>
>> Why single out "via" and "footprint" when they are merely members of
>> an open-ended list of possible composite objects?
>
> Because a tool that doesn't deal with real-world concepts in a
> user-friendly way is unusable.
>

User friendly is a subjective qualifier.

IMHO:
free rotate buffer is not user friendly.
Where a group(collection) that has a specific rotation parameter is.

>
> ___
> geda-user mailing list
> geda-user@moria.seul.org
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
>


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 1:53 PM, DJ Delorie wrote:

> 
>> Why single out "via" and "footprint" when they are merely members of
>> an open-ended list of possible composite objects?
> 
> Because a tool that doesn't deal with real-world concepts in a
> user-friendly way is unusable.
> 

I completely agree. So that's why clean composition machinery is needed, 
because *your* needs don't correspond to anybody else's, when it comes down to 
details. Inflexible wired-in behavior makes a mess (as in gschem's slotting 
"feature", for example).

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Steven Michalske
On Fri, Mar 18, 2011 at 12:52 PM, John Doty  wrote:
>
> On Mar 18, 2011, at 1:44 PM, Martin Kupec wrote:
>
>> Generaly you are proposing that there should be a special type of
>> footpring called 'via' and it should receive extra care.
>
> Why single out "via" and "footprint" when they are merely members of an 
> open-ended list of possible composite objects?
>
>>
>> I am ok with that, I just need to figure out how to handle mapping from
>> footprint layers to layout layers. I don't want concept of 'top',
>> 'inner', 'bottom' layer at all...that is too naive for me.
>
> A general mechanism for describing composite objects is needed.
>

I agree here, that a via and a footprint are essentially the same thing.

A via is a hole through some layers of the board and some copper bits
on those layers,  also known as a pad stack in some board packages.

A footprint is traditionally a grouping of many pad stacks and
additional layers.

No real special treatment in the descriptions of the geometry.

A group that origin is at x,y,rotation,layer

Make a generic group (sub layout) concept and your good to go.

A round via should have a rotation,  it allows easy control of the
thermals orientation.

This is not to say that a special via macro could not be setup that
makes the simplest traditional via or blind/buried vias.

These groups should not be flattened into the layout until export,
thus we loose the free rotate issue that we have today (lossy
rotations).


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 01:52:24PM -0600, John Doty wrote:
> 
> On Mar 18, 2011, at 1:44 PM, Martin Kupec wrote:
> 
> > Generaly you are proposing that there should be a special type of
> > footpring called 'via' and it should receive extra care.
> 
> Why single out "via" and "footprint" when they are merely members of an 
> open-ended list of possible composite objects?

We need to single out 'via' so someone who want's simple board can find
'via' tool as everywhere. And under word 'footprint' I mean any other
composite object.

> 
> > 
> > I am ok with that, I just need to figure out how to handle mapping from
> > footprint layers to layout layers. I don't want concept of 'top',
> > 'inner', 'bottom' layer at all...that is too naive for me.
> 
> A general mechanism for describing composite objects is needed.
I agree. But we are trying to figure out how.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Stephan Boettcher
Martin Kupec  writes:

> On Fri, Mar 18, 2011 at 07:18:52PM +0100, Stephan Boettcher wrote:
>> The file format need not know about these distictions.  Both are
>> graphical layers, with different attributes.  The one has attributes to
>> tell DRC to flag overlapping components, the other has attributes to
>> tell some autorouter not to put copper there, and attributes to tell DRC
>> to check for intruding copper.  Future plugins need more layers to tell
>> about different constraints.
>> 
>> Ideally, any layer type is fully defined via attributes.  The most
>> common attribute may be "net:conductive" for normal copper layers, so
>> that the HIDs know that the layer contributes to the implementation of
>> the netlist.  Copper layers need a second attribute "gbr:layer=inner5"
>> to tell the (gerber) exporter where to put it.  A third attribute
>> defines the DRC rules that apply "drc:rules=default", plus per layer
>> override "drc:minwidth=6mil".
>> 
>> "drc:courtyard=front"
>> "drc:keepout=front"
>> "route:keepout=front"
>
>
> That is a bit complicated. I need a clean definition of layer types, so
> one can pick the right layer when needed. But some attributes in
> addition to layer type are possible.

I do not understand that argument.

> Each element has a clearance attribute, so definition of extra space
> around pads should be easy. But we can add 'keepout' layer in addition.
>
> Even when we would have more layer, it should be simplier to implement
> them than some arbitrary flags.
>
> Defining DRC rules per layer is a bit different story and I hope it will
> not be too closely related to changing of layer concept, as I don't want
> to touch DRC.
>
>   Martin Kupec
>
>
>
> ___
> geda-user mailing list
> geda-user@moria.seul.org
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user

-- 
Stephan


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 01:44:35PM -0600, John Doty wrote:
> >> Trying to model things that aren't layers as if they were layers is
> >> one common mistake in this kind of tool. Equally common is leaving out
> >> layers: the insulating layers in a PCB are just as important as the
> >> copper, and have their own properties (shape, thickness, material,
> >> etc.). They're a critical part of the layer stack.
> >> 
> >> The description language needs to be able to express "feature p in
> >> layer x is aligned with feature q in layer y" in order to build up
> >> composites. This is the geometrically sensible way to describe the
> >> result of drilling through several layers. But the geometric
> >> description language should not be tied to any particular fabrication
> >> procedure.
> > 
> > This is all too physikal for my taste.
> 
> I assert that if you do it any other way, you wind up with the following 
> catastrophe: the code for every layer type needs to incorporate a specific 
> definition of its interaction with the code for every other layer type. A 
> total collapse of factoring, poisoning flexibility and maintainability. But 
> if layers correspond to actual geometric layers, this can be avoided, I 
> believe.

Actually what I am trying to do, is to have concept so layers don't
interract with layers of different type. The composits are a bit
problem, because I would need to consider more layers when performing any
action, but I think that it can still be interaction with object on the
same layer.

So, i.e., If we would have 'hole' layer. I would have check, that holes
on hole layer are not intersecting. And also check the intersection of
attached shapes on each layer. But all what can happen is that some
layer will yell that something bad happend and I should cancel my
action.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread DJ Delorie

> Why single out "via" and "footprint" when they are merely members of
> an open-ended list of possible composite objects?

Because a tool that doesn't deal with real-world concepts in a
user-friendly way is unusable.


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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 18, 2011, at 1:44 PM, Martin Kupec wrote:

> Generaly you are proposing that there should be a special type of
> footpring called 'via' and it should receive extra care.

Why single out "via" and "footprint" when they are merely members of an 
open-ended list of possible composite objects?

> 
> I am ok with that, I just need to figure out how to handle mapping from
> footprint layers to layout layers. I don't want concept of 'top',
> 'inner', 'bottom' layer at all...that is too naive for me.

A general mechanism for describing composite objects is needed.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
Generaly you are proposing that there should be a special type of
footpring called 'via' and it should receive extra care.

I am ok with that, I just need to figure out how to handle mapping from
footprint layers to layout layers. I don't want concept of 'top',
'inner', 'bottom' layer at all...that is too naive for me.

Martin Kupec
On Wed, Mar 16, 2011 at 11:24:42AM +0100, Stephan Boettcher wrote:
> Martin Kupec  writes:
> 
> > On Wed, Mar 16, 2011 at 02:42:26AM +0100, Stephan Boettcher wrote:
> >> IMHO, .. holes are circles draw on just another layer.  People were
> >> asking for slots.  If they find a vendor to do them, they may just draw
> >> lines on that layer as well.  Else, DRC shall flag non-circles.
> >> 
> >> Each such hole layer shall have a spec (attribute) to which (copper)
> >> layers they electrically connect.  There will be at least one such layer
> >> for each type of blind, burried, and through via.
> >> 
> >> The GUI will happily stack vias according to the selected routing style
> >> into a composites and paste them on the layout, so for simple cases
> >> nothing changes from how we work now.
> >
> > Ok. So "via" should be a circle element on "hole" typed layer.
> 
> No.  A Via is a composit, consisting of a circle on the hole layer, and
> various circles on copper layers, and circles on mask layes, and
> thermals.
> 
> A library (routing style) Via would have top, inner, (outer?), bottom
> copper layers, which would be mapped to physical copper layers of the
> layout according to some mapping, exactly as for footprints.
> 
> In addition, some projects would have their own sets of Vias in a
> library, where those circles are expressed explicitly for the physical
> hole/coper layers of that board, for burried and blind vias, or special
> annular ring config on certain inner layers. That library shall be
> linked to some Via GUI to efficiently choose from.
> 
> > That object will have some description to which "layers" of type cooper it
> > belongs to. 
> 
> The hole _layer_ should have that description.  The default connects to
> all copper.  Blind and burried vias require extra hole type layers, one
> for each set of drill stacks.  This information is needed for
> connectivity checks mostly.  Some DRC check may verify if the drilling
> of the stacks is feasible.
> 
> I think this is simpler and more flexible that DJs proposal: to
> hierachically group (copper) layers into drill stacks.  That would be a
> John D violation, since it originates from a narrow view on how PCBs are
> manufactured.  It in no problem to reflect such a narrow view in a DRC
> rule, but it is a mistake to cast it into the core data structure.  A
> HID may present the layers in such an arangement to the user. Said HID
> may then proceed to add the required hole layers and Via types
> automatically, after the user pushed the copper layers around as
> required for the project.
> 
> > And how would you describe the cooper around via on each layer?
> > Someone wanted different cooper size/shape on different layers.
> 
> 
> > Martin Kupec
> 
> -- 
> Stephan
> 
> 
> 
> ___
> geda-user mailing list
> geda-user@moria.seul.org
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread John Doty

On Mar 16, 2011, at 11:09 AM, Stephan Boettcher wrote:

> John Doty  writes:
>> 
>> The "layer" concept should be physical, not a metaphysical
>> abstraction. Objects in a layer may contain holes, but a "hole layer"
>> is nonsensical, a toxic conceptual shortcut. An "outline" layer is
>> similarly bad: the insulating layers may all have the same shape
>> sometimes, but not always.
> 
> So, a via needs a separate hole in each copper and insulating layer?  And
> each layer needs its own discription of it's shape?

Just as a program needs to know that every object in an array of integers is an 
integer. The composition machinery is responsible for keeping track: you don't 
need to declare each array element separately.

> 
>> Trying to model things that aren't layers as if they were layers is
>> one common mistake in this kind of tool. Equally common is leaving out
>> layers: the insulating layers in a PCB are just as important as the
>> copper, and have their own properties (shape, thickness, material,
>> etc.). They're a critical part of the layer stack.
>> 
>> The description language needs to be able to express "feature p in
>> layer x is aligned with feature q in layer y" in order to build up
>> composites. This is the geometrically sensible way to describe the
>> result of drilling through several layers. But the geometric
>> description language should not be tied to any particular fabrication
>> procedure.
> 
> This is all too physikal for my taste.

I assert that if you do it any other way, you wind up with the following 
catastrophe: the code for every layer type needs to incorporate a specific 
definition of its interaction with the code for every other layer type. A total 
collapse of factoring, poisoning flexibility and maintainability. But if layers 
correspond to actual geometric layers, this can be avoided, I believe.

> 
> Why are you so attached to the concept of drilling?

I'm not. Indeed, I would urge our developers to purge the idea that a hole 
implies a drill from their minds when considering geometry. Export to 
instructions for a specific fabrication technology is a different problem from 
geometry capture, and in well factored software these will be kept separate.

>  For the design of a
> layout, all that matters is that there are conductive connections
> between layers. 

At the netlist level, that's all that matters. But at the layout level, it's 
geometry that matters.

John Doty  Noqsi Aerospace, Ltd.
http://www.noqsi.com/
j...@noqsi.com




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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Wed, Mar 16, 2011 at 06:09:25PM +0100, Stephan Boettcher wrote:
> For me, a layer is something that the designer puts shapes on.  Shapes
> with atributes, if required.  The semantics of these shapes on a given
> layer shall all be the same.  Some of these are required for netlisting,
> some are steering the physical checkout.

I agree with this one. We are just describing drawing surfaces and the
meaning of elements on that sufrace are defined by type of that sufrace.

Martin Kupec



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Wed, Mar 16, 2011 at 10:36:24AM -0600, John Doty wrote:
> 
> On Mar 16, 2011, at 4:24 AM, Stephan Boettcher wrote:
> 
> >> Ok. So "via" should be a circle element on "hole" typed layer.
> > 
> > No.  A Via is a composit, consisting of a circle on the hole layer, and
> > various circles on copper layers, and circles on mask layes, and
> > thermals.
> 
> The "layer" concept should be physical, not a metaphysical abstraction. 
> Objects in a layer may contain holes, but a "hole layer" is nonsensical, a 
> toxic conceptual shortcut. An "outline" layer is similarly bad: the 
> insulating layers may all have the same shape sometimes, but not always.

The outline layer will be part of 'physical' layer. So if you have 2
'physical' layers with different shape, it will play nicely.

What I am prosposing is 2 level concept. There will be 'physical'
layers, so you can add properties to them. And than there will be
'drawing' surfaces. And 'outline' is just drawing suface telling the
'physical' layer it's edges.

But I am not convinced that we need special 'hole' typed layer. Maybe we
can things like 'holes' which are not part of any specific layer just
float in space. I thing that it would work.
> 
> Trying to model things that aren't layers as if they were layers is one 
> common mistake in this kind of tool. Equally common is leaving out layers: 
> the insulating layers in a PCB are just as important as the copper, and have 
> their own properties (shape, thickness, material, etc.). They're a critical 
> part of the layer stack.

The problem I see with the insulating layers is that there is nothing on
them...So you don't need them as 'drawing' layers. But I agree that
there should be a way how to add some attributes to them.
> 
> The description language needs to be able to express "feature p in layer x is 
> aligned with feature q in layer y" in order to build up composites. This is 
> the geometrically sensible way to describe the result of drilling through 
> several layers. But the geometric description language should not be tied to 
> any particular fabrication procedure.

I agree with this one.



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


Re: gEDA-user: General Layers questions

2011-03-18 Thread Martin Kupec
On Fri, Mar 18, 2011 at 07:18:52PM +0100, Stephan Boettcher wrote:
> The file format need not know about these distictions.  Both are
> graphical layers, with different attributes.  The one has attributes to
> tell DRC to flag overlapping components, the other has attributes to
> tell some autorouter not to put copper there, and attributes to tell DRC
> to check for intruding copper.  Future plugins need more layers to tell
> about different constraints.
> 
> Ideally, any layer type is fully defined via attributes.  The most
> common attribute may be "net:conductive" for normal copper layers, so
> that the HIDs know that the layer contributes to the implementation of
> the netlist.  Copper layers need a second attribute "gbr:layer=inner5"
> to tell the (gerber) exporter where to put it.  A third attribute
> defines the DRC rules that apply "drc:rules=default", plus per layer
> override "drc:minwidth=6mil".
> 
> "drc:courtyard=front"
> "drc:keepout=front"
> "route:keepout=front"


That is a bit complicated. I need a clean definition of layer types, so
one can pick the right layer when needed. But some attributes in
addition to layer type are possible.

Each element has a clearance attribute, so definition of extra space
around pads should be easy. But we can add 'keepout' layer in addition.

Even when we would have more layer, it should be simplier to implement
them than some arbitrary flags.

Defining DRC rules per layer is a bit different story and I hope it will
not be too closely related to changing of layer concept, as I don't want
to touch DRC.

Martin Kupec



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


  1   2   >