User Tools

Site Tools


geda:pcb_layers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
geda:pcb_layers [2011/03/18 16:20]
magon
geda:pcb_layers [2012/02/20 15:14] (current)
Line 1: Line 1:
 +===== Improvements not contained in the new concept =====
  
 +"New layout"​ templates and wizards. (instead of defaulting to 4x4 8-layer)
 +
 +Ability to hook into layer exporters (i.e. thindraw as a HID)
 +
 +Also, trim polygons against "​outline"​ layer. ​ Fix polygons in general.
 +
 +====== New concept proposal ======
 +===== Old concept =====
 +
 +There are "Layer groups"​ which contain "​conductive layers"​. One "Layer group" is actually one "​physical layer"​.
 +There is max 10 layer groups. Number of layers is 16 + 2 silk screen layers. Layers have no "​type"​.
 +
 +''​Layer group:\\
 +Number\\
 +Numbers of layers contained\\
 +\\
 +Layer:\\
 +Name\\
 +Contained lines, arcs, polygons,​...\\
 +Rtree of contained ^^^^\\
 +Visibility flag\\
 +Color\\
 +Selected color\\
 +Attributes\\
 +''​
 +===== New concept =====
 +In the next part terms "​physical layer" and "​layer"​ are used. It can be changed to better names. Having just "​layer"​ for
 +"​physical layer" and something else for "​layer"​ will be great. Would "​surface"​ go? Layer for one layer on PCB and surface for
 +one drawing surface.
 +
 +Layers are contained in a linked list, so there is no bounds on the number of them. "​Physical layers"​ should probably be also
 +in a linked list.
 +
 +The Z-order of "​physical layers"​ and "​layers"​ is determined by the order in linked list and in layout file.
 +
 +Active "​layer"​ of each type is represented as pointer in "​physical layer"​. There is
 +an array of size "​number of layer types",​ pointer on right place is the active layer.
 +There is no need to have an active layer of each type.
 +
 +One "​physical layer" can be marked as "​top"​ and one as "​bottom",​ so new footprints have some default layers assignment.
 +This marks are useful just for footprint importing, there is no other use for them.
 +
 +When adding anything (components,​ lines, polygons), all parts goes to the active layer of the right type for current "​physical layer"​.
 +So line is added to active "​conductive layer",​ its mask to active "mask layer",​.... If there is no such layer, nothing happens.
 +If the current layer is not conductive, something else can happen. Like adding polygon to "mask layer" will just mask/unmask that part....
 +
 +There are two types of colors. The ones defined in application preferences and the ones defined in layout file.
 +User can select to see any of the sets.
 +
 +Colors in preferences are assigned to layer names, not layer numbers.
 +
 +There is no concept of "layer number"​ everything is referred by name or pointer.
 +
 +Each "​physical layer" has Dimension property and can also have an Outline layer.
 +The difference is, that NOTHING can be drawn out of dimension. The Outline is just
 +hint how to manufactor the board. The Dimension is just one rectangle, Outline can have any
 +shape. This Dimension property should replace the "Board dimension"​ currently defined in preferences.
 +
 +Gerber output names will contain "​physical layer" name.
 +
 +The "Show Pin/​Pads/​Vias"​ flags in "​Physical layer" is just inspecting and printing use.
 +It doesn'​t hurt to have and can aid documentation generation.
 +
 +''​Physical layer:\\
 +Name <- this will be used in gerber export\\
 +Dimentions <- layer doesn'​t have to be across whole board\\
 +Attributes <- we can come up with a list of "​expected attributes"​ like "​permittivity,​ thickness,​.."​\\
 +Flags <- some "​physical layer" wide flags\\
 +Layers <- linked list of layers in this "​physical layer"​\\
 +Pointer to layers <- linked list of all layers in this physical layer\\
 +Array of pointers to "​active layers"​\\
 +\\
 +Layer:\\
 +Name\\
 +Placement list <- Contained lines, arcs, polygons,​...\\
 +Rtree of contained ^^^^\\
 +Flag <- flags described below\\
 +Type <- type list below\\
 +Color\\
 +Attributes\\
 +Pointer for linked list of "​layers"​\\
 +Pointer for linked list contained in "​physical layer"​\\
 +\\
 +Layer types:\\
 +Conductive <- the only conductive layer\\
 +Mechanical <- some additional non-conductive stuff\\
 +Outline <- outline of board\\
 +Silk <- Texts, component oulines,​...\\
 +Mask <- mask on the board\\
 +Paste <- solder paste definition\\
 +Countryard <- component spacing definition\\
 +Rat\\
 +\\
 +Physical layer flags:\\
 +Show Pin/​Via/​Pads <- Show/Hide Pin/​Via/​Pads,​ 3 separate flags -- NOT SAVED, the one in "​Layer"​ is saved\\
 +\\
 +Layer flags:\\
 +Visible <- Show/Hide this layer -- just temporal use, NOT SAVED\\
 +Show Pin/​Via/​Pads <- 3 separate flags, On some layers for special purpose it make sense to not include Via/​Pin/​Pads\\
 +Negativness <- Layer is negative layer\\
 +''​
 +===== Object & Placements =====
 +Each object is composed of 2 parts. One is '​description of the object'​. This is specific for the type of the object.
 +
 +The other is '​placement of the object'​. This is common to all object.
 +
 +It is possible to have more than one placement of single object.
 +
 +There are '​shared copy' and 'copy on write' possibilities.
 +
 +''​
 +Placement object:\\
 +Coordinates\\
 +Layer\\
 +Flags\\
 +ReferenceCounter\\
 +Pointer to the object\\
 +Pointer to composite <- when I am at some composite\\
 +Pointer to next object <- next object in the composite\\
 +\\
 +Placement flags:\\
 +Orientation\\
 +CopyOnWrite\\
 +''​
 +===== Composite objects =====
 +Composite is an object composed of multiple other object. Composite can be an element of another composite.
 +
 +Footprints, sub-layouts and vias are just composite objects.
 +
 +All elements of composite object has placement relative to the origin of the composite.
 +
 +''​
 +Composite object:\\
 +Type <- type list below\\
 +Attributes\\
 +Linked list of placement objects\\
 +\\
 +Composite types:\\
 +Footprint\\
 +Via\\
 +SubCircut\\
 +Other\\
 +''​
 +
 +==== Via ====
 +Via is a composite object of type '​via'​.
 +
 +There is a copper object around the hole on each '​physical layer' it intersects.
 +
 +The hole is represented as an object on '​outline'​ layer on each '​physical layer' it intersects.
 +
 +==== Footprint ====
 +Footprint is a composite object of type '​footprint'​.
 +
 +It has attributes Name and Sourcefile.
 +
 +Expected properties:
 +  - Footprint contains layers with predefined names: Conductive, Silkscreen, Paste, Mask, Countryard
 +  - Footprint can contain more conductive layers, each grouped with Paste and Mask layers <- useful for 2 sides mounting connectors
 +  - Any connected element on conductive layer can be marked as Pin/Pad
 +  - Footprint can contain Outline layer
 +
 +===== Named attributes =====
 +This is just my personal "To look at" section. -- Martin Kupec\\
 +Refdefs should be distinguishable from the rest of Silk
 +so they can be put on different Silk Layer.
geda/pcb_layers.txt ยท Last modified: 2012/02/20 15:14 (external edit)