Automatic wiki import (Sat Mar 8 21:51:23 UTC 2014)
[geda-gaf.git] / docs / wiki / geda-pcb_layers.html
blob70b82ee30afe1486e709748de68312a86adfc04c
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html>
4 <head>
5 <title></title>
6 <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
7 <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
8 <link rel="stylesheet" media="print" type="text/css" href="./print.css" />
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 </head>
12 <body>
15 <h2 class="sectionedit1510"><a name="improvements_not_contained_in_the_new_concept" id="improvements_not_contained_in_the_new_concept">Improvements not contained in the new concept</a></h2>
16 <div class="level2">
18 <p>
19 “New layout” templates and wizards. (instead of defaulting to 4&times;4 8-layer)
20 </p>
22 <p>
23 Ability to hook into layer exporters (i.e. thindraw as a HID)
24 </p>
26 <p>
27 Also, trim polygons against “outline” layer. Fix polygons in general.
28 </p>
30 </div>
31 <!-- EDIT1510 SECTION "Improvements not contained in the new concept" [1-270] -->
32 <h1 class="sectionedit1511"><a name="new_concept_proposal" id="new_concept_proposal">New concept proposal</a></h1>
33 <div class="level1">
35 </div>
36 <!-- EDIT1511 SECTION "New concept proposal" [271-305] -->
37 <h2 class="sectionedit1512"><a name="old_concept" id="old_concept">Old concept</a></h2>
38 <div class="level2">
40 <p>
41 There are “Layer groups” which contain “conductive layers”. One “Layer group” is actually one “physical layer”.
42 There is max 10 layer groups. Number of layers is 16 + 2 silk screen layers. Layers have no “type”.
43 </p>
45 <p>
46 <code>Layer group:<br/>
48 Number<br/>
50 Numbers of layers contained<br/>
52 <br/>
54 Layer:<br/>
56 Name<br/>
58 Contained lines, arcs, polygons,…<br/>
60 Rtree of contained ^^^^<br/>
62 Visibility flag<br/>
64 Color<br/>
66 Selected color<br/>
68 Attributes<br/>
70 </code>
71 </p>
73 </div>
74 <!-- EDIT1512 SECTION "Old concept" [306-741] -->
75 <h2 class="sectionedit1513"><a name="new_concept" id="new_concept">New concept</a></h2>
76 <div class="level2">
78 <p>
79 In the next part terms “physical layer” and “layer” are used. It can be changed to better names. Having just “layer” for
80 “physical layer” and something else for “layer” will be great. Would “surface” go? Layer for one layer on PCB and surface for
81 one drawing surface.
82 </p>
84 <p>
85 Layers are contained in a linked list, so there is no bounds on the number of them. “Physical layers” should probably be also
86 in a linked list.
87 </p>
89 <p>
90 The Z-order of “physical layers” and “layers” is determined by the order in linked list and in layout file.
91 </p>
93 <p>
94 Active “layer” of each type is represented as pointer in “physical layer”. There is
95 an array of size “number of layer types”, pointer on right place is the active layer.
96 There is no need to have an active layer of each type.
97 </p>
99 <p>
100 One “physical layer” can be marked as “top” and one as “bottom”, so new footprints have some default layers assignment.
101 This marks are useful just for footprint importing, there is no other use for them.
102 </p>
105 When adding anything (components, lines, polygons), all parts goes to the active layer of the right type for current “physical layer”.
106 So line is added to active “conductive layer”, its mask to active “mask layer”,…. If there is no such layer, nothing happens.
107 If the current layer is not conductive, something else can happen. Like adding polygon to “mask layer” will just mask/unmask that part….
108 </p>
111 There are two types of colors. The ones defined in application preferences and the ones defined in layout file.
112 User can select to see any of the sets.
113 </p>
116 Colors in preferences are assigned to layer names, not layer numbers.
117 </p>
120 There is no concept of “layer number” everything is referred by name or pointer.
121 </p>
124 Each “physical layer” has Dimension property and can also have an Outline layer.
125 The difference is, that NOTHING can be drawn out of dimension. The Outline is just
126 hint how to manufactor the board. The Dimension is just one rectangle, Outline can have any
127 shape. This Dimension property should replace the “Board dimension” currently defined in preferences.
128 </p>
131 Gerber output names will contain “physical layer” name.
132 </p>
135 The “Show Pin/Pads/Vias” flags in “Physical layer” is just inspecting and printing use.
136 It doesn&#039;t hurt to have and can aid documentation generation.
137 </p>
140 <code>Physical layer:<br/>
142 Name ← this will be used in gerber export<br/>
144 Dimentions ← layer doesn&#039;t have to be across whole board<br/>
146 Attributes ← we can come up with a list of “expected attributes” like “permittivity, thickness,..”<br/>
148 Flags ← some “physical layer” wide flags<br/>
150 Layers ← linked list of layers in this “physical layer”<br/>
152 Pointer to layers ← linked list of all layers in this physical layer<br/>
154 Array of pointers to “active layers”<br/>
156 <br/>
158 Layer:<br/>
160 Name<br/>
162 Placement list ← Contained lines, arcs, polygons,…<br/>
164 Rtree of contained ^^^^<br/>
166 Flag ← flags described below<br/>
168 Type ← type list below<br/>
170 Color<br/>
172 Attributes<br/>
174 Pointer for linked list of “layers”<br/>
176 Pointer for linked list contained in “physical layer”<br/>
178 <br/>
180 Layer types:<br/>
182 Conductive ← the only conductive layer<br/>
184 Mechanical ← some additional non-conductive stuff<br/>
186 Outline ← outline of board<br/>
188 Silk ← Texts, component oulines,…<br/>
190 Mask ← mask on the board<br/>
192 Paste ← solder paste definition<br/>
194 Countryard ← component spacing definition<br/>
196 Rat<br/>
198 <br/>
200 Physical layer flags:<br/>
202 Show Pin/Via/Pads ← Show/Hide Pin/Via/Pads, 3 separate flags – NOT SAVED, the one in “Layer” is saved<br/>
204 <br/>
206 Layer flags:<br/>
208 Visible ← Show/Hide this layer – just temporal use, NOT SAVED<br/>
210 Show Pin/Via/Pads ← 3 separate flags, On some layers for special purpose it make sense to not include Via/Pin/Pads<br/>
212 Negativness ← Layer is negative layer<br/>
214 </code>
215 </p>
217 </div>
218 <!-- EDIT1513 SECTION "New concept" [742-4385] -->
219 <h2 class="sectionedit1514"><a name="object_placements" id="object_placements">Object &amp; Placements</a></h2>
220 <div class="level2">
223 Each object is composed of 2 parts. One is &#039;description of the object&#039;. This is specific for the type of the object.
224 </p>
227 The other is &#039;placement of the object&#039;. This is common to all object.
228 </p>
231 It is possible to have more than one placement of single object.
232 </p>
235 There are &#039;shared copy&#039; and &#039;copy on write&#039; possibilities.
236 </p>
239 <code>
240 Placement object:<br/>
242 Coordinates<br/>
244 Layer<br/>
246 Flags<br/>
248 ReferenceCounter<br/>
250 Pointer to the object<br/>
252 Pointer to composite ← when I am at some composite<br/>
254 Pointer to next object ← next object in the composite<br/>
256 <br/>
258 Placement flags:<br/>
260 Orientation<br/>
262 CopyOnWrite<br/>
264 </code>
265 </p>
267 </div>
268 <!-- EDIT1514 SECTION "Object & Placements" [4386-4992] -->
269 <h2 class="sectionedit1515"><a name="composite_objects" id="composite_objects">Composite objects</a></h2>
270 <div class="level2">
273 Composite is an object composed of multiple other object. Composite can be an element of another composite.
274 </p>
277 Footprints, sub-layouts and vias are just composite objects.
278 </p>
281 All elements of composite object has placement relative to the origin of the composite.
282 </p>
285 <code>
286 Composite object:<br/>
288 Type ← type list below<br/>
290 Attributes<br/>
292 Linked list of placement objects<br/>
294 <br/>
296 Composite types:<br/>
298 Footprint<br/>
300 Via<br/>
302 SubCircut<br/>
304 Other<br/>
306 </code>
307 </p>
309 </div>
310 <!-- EDIT1515 SECTION "Composite objects" [4993-5443] -->
311 <h3 class="sectionedit1516"><a name="via" id="via">Via</a></h3>
312 <div class="level3">
315 Via is a composite object of type &#039;via&#039;.
316 </p>
319 There is a copper object around the hole on each &#039;physical layer&#039; it intersects.
320 </p>
323 The hole is represented as an object on &#039;outline&#039; layer on each &#039;physical layer&#039; it intersects.
324 </p>
326 </div>
327 <!-- EDIT1516 SECTION "Via" [5444-5678] -->
328 <h3 class="sectionedit1517"><a name="footprint" id="footprint">Footprint</a></h3>
329 <div class="level3">
332 Footprint is a composite object of type &#039;footprint&#039;.
333 </p>
336 It has attributes Name and Sourcefile.
337 </p>
340 Expected properties:
341 </p>
342 <ol>
343 <li class="level1"><div class="li"> Footprint contains layers with predefined names: Conductive, Silkscreen, Paste, Mask, Countryard</div>
344 </li>
345 <li class="level1"><div class="li"> Footprint can contain more conductive layers, each grouped with Paste and Mask layers ← useful for 2 sides mounting connectors</div>
346 </li>
347 <li class="level1"><div class="li"> Any connected element on conductive layer can be marked as Pin/Pad</div>
348 </li>
349 <li class="level1"><div class="li"> Footprint can contain Outline layer</div>
350 </li>
351 </ol>
353 </div>
354 <!-- EDIT1517 SECTION "Footprint" [5679-6158] -->
355 <h2 class="sectionedit1518"><a name="named_attributes" id="named_attributes">Named attributes</a></h2>
356 <div class="level2">
359 This is just my personal “To look at” section. – Martin Kupec<br/>
361 Refdefs should be distinguishable from the rest of Silk
362 so they can be put on different Silk Layer.
363 </p>
365 </div>
366 <!-- EDIT1518 SECTION "Named attributes" [6159-] --></body>
367 </html>