Mail Archives: geda-user/2016/01/28/09:00:06
--001a1141d0e2539e11052a655435
Content-Type: text/plain; charset=UTF-8
This discussion is in no small part strengthening my suggestion that the
layer data structure be agnostic to how it is ultimately realized. "Layer"
clearly means different things to different people.
> So, if one generic container of data holds a 2D conductor on insulator
> pattern, and one holds
> > solder mask and one holds top-to-bottom-via connectivity they don't all
> get talked about as layers or it
> > is confusing.
>
I wouldn't include inter-layer connectivity as a layer. I think that's a
fundamentally different idea. I would suggest implementing connectivity
within a footprint/pattern/group as something like a netlist. pcb
implements connectivity awareness for other reasons, so you might as well
reuse the idea here. But I think that is a discussion for a different
thread.
Otherwise, yes, I do think you call a solder mask pattern a layer, I do
think you call a copper pattern a layer, I do think you call a drill
drawing a layer, I do think you call assembly data a layer.
> A layer is a flat surface made of particular material for example: copper
> foil, solder mask, insulating board.
My suggestion is that you modify your statement slightly and replace "A
layer is a flat surface..." with "A layer -represents- a flat surface". To
the software, a layer is really just a collection of primitives that can be
operated on and are frequently exported together.
A Group is a collection of properties, attributes and objects on
> multible layers.
>
> Librecad used the term "Block"
> Inkscape uses the term "Group"
>
Let me point out that Inkscape also has the concept of layers. The Inkscape
concept of a group is more like what pcb would call a footprint/pattern,
with the exception that Inkscape groups are restricted to a single layer.
Creating an Inkscape group brings all of the grouped objects into the same
layer. I've actually found that to be really annoying on multiple
occasions. Believe it or not, I've actually laid out a board with
Inkscape...
I think that perhaps one sticking point may be that in the concept of layer
that I have presented, an individual primitive can be in multiple
containers. A circular piece of copper could be in a group/pattern
container (e.g. a component footprint) and also in a layer container. You
would be able to access the primitive from either container.
I don't think there should be a "buried-via" property. I don't think
>
those should be attached to the pads.
>
I agree. A buried via is just a collection of objects on particular layers
and a hit on a particular drill layer.
We export a plated-drill file.
In other software packages, I have always exported just a drill file, and
the board house determines if it should be plated based on the presence of
copper pads around it.
We should have a layer that corresponds
> to the geometry exported in that file. And we be able draw on them (in
> expert mode).
>
Yes, I completely agree. You could even have multiple drill layers if you
wanted to. For example, a drill layer for the top side, a drill layer for
the bottom side, and drill layers for any or all inner layers. This could
be useful in implementing blind/buried vias.
The drill-layers are marked as such with a property that is hardwired to
> the code that handled connectivity.
>
I would try to keep connectivity and geometry separate if possible.
Geometry and connectivity needs to be hardwired in the core data
> structures. That is the core of what is needed to be efficient while
> drawing.
>
Ultimately a layout tool is a connectivity aware drawing package, although
some would argue that the connectivity awareness is optional. You certainly
-can- layout a board without net lines, but I think many if not most board
designers find them quite useful.
The via editor will help the user to define all required via layers
>
and apply designrules that test for manufacturability.
>
I would just say footprint/pattern editor. A via is really no different
from a footprint/pattern when it comes down to it.
--Chad
--001a1141d0e2539e11052a655435
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>This discussion is in no small part strengthening my =
suggestion that the layer data structure be agnostic to how it is ultimatel=
y realized. "Layer" clearly means different things to different p=
eople.<br></div><div><div><div><div class=3D"gmail_extra"><br><div class=3D=
"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span>> =
So, if one generic container of data holds a 2D conductor on insulator patt=
ern, and one holds<br>
> solder mask and one holds top-to-bottom-via connectivity they don'=
t all get talked about as layers or it<br>
> is confusing.<br></span></blockquote><div><br></div><div>I wouldn'=
t include inter-layer connectivity as a layer. I think that's a fundame=
ntally different idea. I would suggest implementing connectivity within a f=
ootprint/pattern/group as something like a netlist. pcb implements connec=
tivity awareness for other reasons, so you might as well reuse the idea her=
e. But I think that is a discussion for a different thread.<br><br></div><d=
iv>Otherwise, yes, I do think you call a solder mask pattern a layer, I do =
think you call a copper pattern a layer, I do think you call a drill drawin=
g a layer, I do think you call assembly data a layer. <br></div><div>=C2=A0=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex"><span>
</span>A layer is a flat surface made of particular material for example: c=
opper foil, solder mask, insulating board. </blockquote><div><br>My suggest=
ion is that you modify your statement slightly and replace "A layer is=
a flat surface..." with "A layer -represents- a flat surface&quo=
t;. To the software, a layer is really just a collection of primitives that=
can be operated on and are frequently exported together. <span><br><br></s=
pan><blockquote style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb=
(204,204,204);padding-left:1ex" class=3D"gmail_quote"><span>
</span>A Group is a collection of properties, attributes and objects on<br>
multible layers.<br>
<br>
=C2=A0 Librecad used the term "Block"<br>
=C2=A0 Inkscape uses the term "Group"<br></blockquote><div><br></=
div><div>Let me point out that Inkscape also has the concept of layers. The=
Inkscape concept of a group is more like what pcb would call a footprint/p=
attern, with the exception that Inkscape groups are restricted to a single =
layer. Creating an Inkscape group brings all of the grouped objects into th=
e same layer. I've actually found that to be really annoying on multipl=
e occasions. Believe it or not, I've actually laid out a board with Ink=
scape...<br></div><div><br></div><div>I think that perhaps one sticking poi=
nt may be that in the concept of layer that I have presented, an individual=
primitive can be in multiple containers. A circular piece of copper could =
be in a group/pattern container (e.g. a component footprint) and also in a =
layer container. You would be able to access the primitive from either cont=
ainer.<br></div><div></div><div><span><br></span><blockquote style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
" class=3D"gmail_quote"><span>
</span>I don't think there should be a "buried-via" property.=
=C2=A0 I don't think<br></blockquote><blockquote style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class=
=3D"gmail_quote">
those should be attached to the pads.<br></blockquote>
<br></div><div>I agree. A buried via is just a collection of objects on par=
ticular layers and a hit on a particular drill layer.<br></div><div><br><bl=
ockquote style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,204);padding-left:1ex" class=3D"gmail_quote">
We export a plated-drill file.=C2=A0=C2=A0</blockquote></div><div><br></div=
><div>In other software packages, I have always exported just a drill file,=
and the board house determines if it should be plated based on the presenc=
e of copper pads around it.<br><br><blockquote style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class=3D"gma=
il_quote"> We should have a layer that corresponds<br>
to the geometry exported in that file. And we be able draw on them (in<br>
expert mode).<br></blockquote></div><div>
<br></div><div>Yes, I completely agree. You could even have multiple drill =
layers if you wanted to. For example, a drill layer for the top side, a dri=
ll layer for the bottom side, and drill layers for any or all inner layers.=
This could be useful in implementing blind/buried vias. <br></div><div><br=
><blockquote style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex" class=3D"gmail_quote">
The drill-layers are marked as such with a property that is hardwired to<br=
>
the code that handled connectivity.<br></blockquote><br></div><div>I would =
try to keep connectivity and geometry separate if possible.<br></div><div><=
br><blockquote style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(=
204,204,204);padding-left:1ex" class=3D"gmail_quote">
Geometry and connectivity needs to be hardwired in the core data<br>
structures. That is the core of what is needed to be efficient while<br>
drawing.<br></blockquote>
<br></div><div>Ultimately a layout tool is a connectivity aware drawing pac=
kage, although some would argue that the connectivity awareness is optional=
. You certainly -can- layout a board without net lines, but I think many if=
not most board designers find them quite useful.<br></div><div><br><blockq=
uote style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,20=
4);padding-left:1ex" class=3D"gmail_quote">
The via editor will help the user to define all required via layers<br></bl=
ockquote><blockquote style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex" class=3D"gmail_quote">
and apply designrules that test for manufacturability.<br></blockquote><div=
><br></div><div>I would just say footprint/pattern editor. A via is really =
no different from a footprint/pattern when it comes down to it.=C2=A0 <br><=
/div>
<span></span><br></div><div>--Chad<br> </div></div></div></div></div></div>=
</div></div>
--001a1141d0e2539e11052a655435--
- Raw text -