Elements represent the components on a board. Elements are loaded from ASCII coded files in a similar manner to the layout file itself, or from the library selector window. An element is composed of lines and arcs on the silk-screen layer (used to define the package outline), pins (or pads for SMD) and three labels that define the description, the element's layout-name (which also appears on the silk-screen layer) and its value. You can choose which of the names are displayed on the screen with the Screen menu; however, the silk screen in the printout will always show the layout-name. Element pins are contained on the first logical level and so reside on all layers, but the pads of surface-mount elements reside on only the component or solder layers. An element can have a mixture of pins, pads (on one or both sides), and mounting holes.
A mark is used to position the element with respect to the cross hair during pasting. The mark will lie on a grid point when the element is positioned. The mark is drawn as a small diamond shape, but is only visible when both the silk and pins/pads layers are visible. All parts of an element are treated as one unit, except for the name. It is not possible to delete a single pin or move only part of an element on the layout. You can resize separate pieces of an element, but doing so is usually a bad idea. You can move/rotate the element name independently of the element it belongs to. When you move an element name, a line is draw from the cursor to the element mark so it is easy to tell which element the name belongs to.
Each pin and pad has two string identifiers, one is the "name" which is a functional description of the pin (e.g. "clock in") and the other is the "number" of the pin which is used to identify it in a netlist. The "number" is usually an integer, but it can be any string. You can edit the "name" of each pin of an element, but the "number" is embedded in the element definition and is determined when the new element is first created. Pads are similar to lines on a layer but they must be oriented either vertically or horizontally. Pads can have either rounded or square ends. Pins can be round, square, or octagonal.
Elements are supported by several special layers: silk, pins/pads and far-side. The silk layer shows the package outline and also holds legend text and element names. The pins/pads layer is used to toggle whether the element's pins and pads are displayed. The far-side layer controls visibility of objects (silkscreen and pads) that are on the far (i.e. not currently viewed) side of the board.
The “oldlib” style of footprint libraries distributed with Pcb rely upon the M4 macro processor. M4 is typically installed under the name m4 on most unix-like operating systems. It is recommended that you use the GNU version of M4 to avoid limitations found in some vendor implementations. See the m4 man page on your system for more information. Every element file is preprocessed by a user-defined command when the file is read. For details see ‘elementCommand’, Resources. m4, the default value of ‘elementCommand’, allows you to create libraries for package definitions that are shared by all elements. The old element libraries distributed with Pcb expect m4 or an equivalent to be the elementCommand. The new library scheme simply has each element stored in a self-contained file, so there is no need to learn m4 to add to the libraries.
Pcb can create a list of all connections from one (or all) elements to the others or a list of unconnected pins. It can also verify the layout connections against a netlist file. The element's ‘layout-name’ is the name used to identify the element in a netlist file (see Netlist File).
The old libraries, or very old (pre-1.6) layout files may have incorrect pin numbering since there was no concept of pin numbers when they were created. Pcb uses the order of appearance of the pin definitions in the layout or library file if it uses the old format, but there is no guarantee that it will be correct for these old objects.
Be aware that a few of the old library parts may still be incorrectly implemented regarding pin-numbering. All of the DIL (Dual- Inline-Pins) parts are correct and most of the others are too, but you should verify the pin numbering of any non-DIL part before using an old library part. (use the ‘generate object report’ in the Info menu to see what Pcb thinks a pin's number is) All of the old library names begin with a ~, so you can easily identify them. The old libraries also may contain other sorts of errors, including incorrect pin spacing, silkscreen overlapping solder areas, etc. Check carefully any element in the old library before using it! As the new library grows, the old library will be pared down to at least remove all of the elements with errors, but this will take time.
You can make your own element definitions graphically now. Simply draw vias for the pins, lines on the solder and/or component layers for surface-mount pads (they must be either horizontal or vertical), and lines and arcs on the silkscreen layer for the silkscreen outline. You should name (N key) each via and copper line with the pin number. Once you are happy with the geometry, select everything that is to become part of the element, then choose ‘convert selection to element’ from the Select menu. Afterwords you can make pin (or pad) one square if you like, and give the element its various names. You can also give the pins and pads their functional names. Note that the element mark corresponds to the position you click after choosing the conversion from the menu, so decide where the mark goes and make sure it falls on a grid point before you request the conversion. If the vias/lines are not named, then the pin numbering will correspond to the order in which they were placed.
When you create a new element, remember that silkscreen lines should never overlap the copper part of the pins or pads, as this can interfere with soldering. The silkscreen should identify the maximum extent of the element package so it is easy to see how close elements can be placed together.
If you want to make an element similar to an existing one, you can break an element into constituent pieces from the Buffer menu. Paste the pieces to the layout, make the necessary changes, then convert it back into an element. If the pin numbers haven't changed, there is no need to name each via/line as they are pre-named when the element was broken apart. When you create a new element, you can save it to a file in order to have easy access to it the next time you run Pcb.