X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=VFtQ34OyNh1D7hLilkNZQyb7Z5ioD1vpM8LEwVFh9M0=; b=qPiDM1oyH+Eym2bOkJ9ML1n751hEYX/jH63FDxEndd1eud3KE/S//m4QtoY+sdWBty Zw/Uh/8cI/f14SD+HkoCpW0yqb1P47v7hYxmZQI0r6Ah6U600Z9B+BQAUOOJYOYcEksX GFWDaw0Sxyoo720cGPzk3K1Sw48PZb3YvAe01tJGW9X4o0snEQH+XhMCxFxAi4+uhI7E EDQgeNQ5HMRkHu79qV9gTrXdGKmSDVSB0qM6eL80VjZf9vlgsxjonA9LO06DIzfoXxRm vpIsSr9WVf5xfDBqAdAJxGTDVCP9UmyKce7zi8VAWWJsXZkMrluv97dOdj/B27pcGxM+ bK/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=VFtQ34OyNh1D7hLilkNZQyb7Z5ioD1vpM8LEwVFh9M0=; b=fx767Bpmj9Z6uQQ1KR3Jn6jsTBXIgqZIRRDuImqz0rV+ZfHiOGCi4B9lqQuT4vBkcV INzPFU+fR1igETiCtSOOeivP1x9iDThg5yi5AxziQqu0VqBqgCVVyI1fA72YHfr4sFCP zBfmyieKMRP7K7CCMWnMBg8/39Yb64ZvSKtUBpiJ6NAzMsNZ1xCNxaQEAqt0iGXBDMjo /0iSy3Kf0oq92bCieXinHYPv3PtlnSKMGSRrlA8cVF1TpNQ0eaTUP97rBiV+gkx95lUv 363HrPiJs0rHyCXoxDNUNu+SmdaqVROfbo8yTLLiJwaucw87D+DIU2Tz/MRuvnv3UOIq 12gg== X-Gm-Message-State: AG10YOT/NnY9BIUgMO8wHYYcdbRv5waITBtp9LqiAXq7QbrGMwUq599ipsHGrDOg2VFFFv8VPoSXmZvIAl9rlQ== MIME-Version: 1.0 X-Received: by 10.107.165.71 with SMTP id o68mr3886209ioe.94.1453989578381; Thu, 28 Jan 2016 05:59:38 -0800 (PST) In-Reply-To: <20160128124020.8f2f33210481f637a696f5d0@gmail.com> References: <201601261804 DOT u0QI4KEQ009550 AT envy DOT delorie DOT com> <20160126233332 DOT dec2f06f5c74354a3841989c AT gmail DOT com> <20160127091746 DOT 1c7a976c2752f913921688ac AT gmail DOT com> <20160127141334 DOT c738feb9dbeb54a7dec3dff8 AT gmail DOT com> <56A8F74B DOT 8080304 AT ecosensory DOT com> <56A961BC DOT 3040405 AT ecosensory DOT com> <56A9E416 DOT 8080500 AT ecosensory DOT com> <20160128124020 DOT 8f2f33210481f637a696f5d0 AT gmail DOT com> Date: Thu, 28 Jan 2016 08:59:38 -0500 Message-ID: Subject: Re: [geda-user] The nature of gEDA layers From: "Chad Parker (parker DOT charles AT gmail DOT com) [via geda-user AT delorie DOT com]" To: geda-user AT delorie DOT com Content-Type: multipart/alternative; boundary=001a1141d0e2539e11052a655435 Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --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
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.

> = So, if one generic container of data holds a 2D conductor on insulator patt= ern, 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 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.

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.
=C2=A0=
A layer is a flat surface made of particular material for example: c= opper foil, solder mask, insulating board.

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.

A Group is a collection of properties, attributes and objects on
multible layers.

=C2=A0 Librecad used the term "Block"
=C2=A0 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/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...

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.

I don't think there should be a "buried-via" property.= =C2=A0 I don't think
those should be attached to the pads.

I agree. A buried via is just a collection of objects on par= ticular layers and a hit on a particular drill layer.

We export a plated-drill file.=C2=A0=C2=A0

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.

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

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.=C2=A0
<= /div>
--Chad
=
--001a1141d0e2539e11052a655435--