This shows you the differences between two versions of the page.
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. |