Even with a rich set of resources providing ready-made PCB components (such as the Manufacturer Part Search panel), it is likely that at some point in your career you will need to create a custom PCB component. PCB component footprints are created in the PCB footprint editor using the same set of primitive objects available in the PCB editor. In addition to footprints, company logos, fabrication definitions, and other objects required during board design can also be saved as PCB components.
Footprints are always built on the top side, regardless of which final side of the board they are placed, using the same set of tools and design objects available in the PCB editor. Layer-specific attributes, such as surface mount pads and solder mask definitions, are automatically transferred to appropriate bottom-side layers when you flip the footprint to the other side of the board during component placement.
Design objects can be placed on any layer, however, the outline is normally created on the Top Overlay (silkscreen) layer and the pads on the multi-layer (for thru-hole component pins) or the top signal layer (for surface mount component pins). When you place the footprint on a PCB, all objects that make up the footprint will be assigned to their defined layers.
Preparing the Design Space
The default is to display the grids using dots. If you prefer, grids can be displayed using lines. This is configured in the Grid Editor dialog, accessed by clicking the Properties button in the Properties panel as shown in the image below. Alternatively, press the Ctrl+G shortcut to open the dialog.
In the image, the fine grid is displayed as dots, and the coarse grid is displayed as lines.
When editing a footprint in the PCB footprint editor and when no design object is currently selected in the design space, the Properties panel presents the Library Options. The following collapsible sections contain information about the options and controls available.
The options in this section of the panel determine which PCB library objects may be selected in the design space.
- All Objects button – select remove object filtering so that all types of objects may be selected.
- Object buttons – toggle each object button to enable/disable the ability to select that object type.
- Grids – used to toggle whether the cursor will snap to the active design space grid. When this option is enabled the cursor will pull, or snap, to the nearest snap grid location. The active snap grid is displayed on the Status bar, and in the PCB editor Heads Up display (Shift+H shortcut to toggle on/off).
- Guides – used to toggle whether the cursor will snap to manually placed linear or point Snap Guides. A Snap Guide will override the Snap Grid.
- Axes – used to toggle whether the cursor will axially align (in either the X or Y direction) to the enabled Objects for snapping. The Axis Snap Range defines the distance within which X or Y axial alignment will occur. A dynamic alignment guideline is displayed when alignment is achieved from the current cursor location to the axially-aligned object snap point (hotspot).
- Snapping – select directly or use the Shift+E shortcut to select whether you want to snap to objects on:
- All Layers – enable this option to allow the cursor to snap to any electrical object on any visible layer.
- Current Layer – enable this option to allow the cursor to only recognize and snap to objects placed on the currently selected layer.
- Off – enable this option to turn off snapping to hotspots.
- Objects for snapping
- On/Off – check to enable snapping for the desired objects.
- Objects – a list of the available objects.
- Snap Distance – when the cursor is within this distance from an enabled object snap point (and snapping is enabled for the active layer), the cursor will snap to that point.
- Axis Snap Range – when the cursor is axially aligned and within this distance from an enabled object snap point (and the Axes button is enabled), a dynamic guideline will display to indicate that alignment has been achieved.
- Units – use to select the default measurement units for the current PCB Library document. Default units are used to display any distance-related information on screen or in reports. The default units are always used if a unit's suffix (mm or mil) is not entered when specifying any distance-related information.
- Route Tool Path – use the drop-down to choose the mechanical layer (from all those currently enabled for use in the design) on which to define the route tool path for the board.
When a design object is selected, the panel will present options specific to that object type. The following table lists the object types available for placement within the library design space – click a link to access the properties page for that object.
2D and 3D views of a footprint for a joystick component. The 3D image shows the imported STEP model for the component. Note that the pads and component overlay can be seen below the STEP model.
The typical sequence for manually creating a component footprint is:
- Footprints should be built around the design space reference point at the center of the PCBLIB editor. Use the J, R shortcut keys to jump directly to the reference point. If you have forgotten to move to the reference point before beginning to build your footprint, you can bring the reference pad to your footprint using the Edit » Set Reference sub-menu commands.
Place the pads (Place » Pad) according to the component requirements. After running the Place Pad command but prior to placing the first pad, press the Tab key to open the Properties panel to define all the pad properties, including the pad Designator, Size and Shape, Layer, and Hole Size (for a thru-hole pad). The Designator automatically increments for subsequent pad placements. For a surface mount pad, set the Layer to Top Layer. For a thru-hole pad, set the Layer to Multi-Layer.
- To ensure accurate placement of the pads, consider setting up a grid specifically for the task. Use the Ctrl+G shortcut keys to open the Cartesian Grid Editor dialog and the Q key to toggle the grid from Imperial to Metric.
- To accurately place a pad while moving it with the mouse, use the keyboard arrow keys to move the cursor in current grid increments. Additionally, holding Shift will move in steps of 10 times the grid. The current X, Y location is displayed on the Status bar and also in the Heads Up display. The Heads Up Display contains both the location and the delta from the last click location to the current cursor location. Use the Shift+H shortcut to toggle the Heads Up display on and off. Alternatively, double-click to edit a placed pad and enter the required X and Y locations in the Properties panel.
- To check a distance between two points in the design space, use the Reports » Measure Distance (shortcut Ctrl+M). Follow the prompts on the Status bar.
- Pad-specific attributes, such as solder mask and paste mask, are automatically calculated based on the pad dimensions and applicable mask design rules. While mask settings can be defined manually for each pad, doing so makes it difficult to modify these settings later during the board design process. Typically this is done only when it is not possible to target the pads by design rules. Note that rules are defined in the PCB editor during board design.
- Use tracks, arcs and other primitive objects to define the component outline that appears on the PCB silkscreen on the Top Overlay layer. If the component is flipped to the bottom of the board during placement, the overlay is automatically transferred to the Bottom Overlay layer.
- Place tracks and other primitive objects on a mechanical layer to define extra mechanical detail, such as a placement courtyard. Mechanical layers are general-purpose layers. You should allocate the function of these layers and use them consistently across their footprints.
- Place 3D Body objects to define the three-dimensional shape of the component that fits on the footprint.
The Designator and Comment strings are automatically added to the footprint’s Overlay layer during placement into the main PCB workspace. Additional Designator and Comment strings can be included by placing the
.Comment special strings on a mechanical layer.
- Rename the completed footprint by selecting the Tools » Footprint Properties from the main menus to open the PCB Library Footprint dialog. Enter the desired name; names can be up to 255 characters.
The IPC Compliant Footprint Wizard creates IPC-compliant component footprints. Rather than requiring you to enter the properties of the pads and tracks that are used to define the footprint, the IPC® Compliant Footprint Wizard takes the actual component dimensions as its inputs. Based on the formulae developed for the IPC-7351 standard, the Wizard generates the footprint using standard Altium NEXUS objects, such as pads and tracks.
One of the supported packages in the IPC Compliant Footprint Wizard is the DPAK (Transistor Outline).
- Select Tools » IPC Compliant Footprint Wizard to run the IPC Compliant Footprint Wizard.
- The wizard can create the following footprint type: BGA, BQFP, CAPAE, CFP, CHIP Array, DFN, CHIP, CQFP, DPAK, LCC, LGA, MELF, MOLDED, PLCC, PQFN, PQFP, PSON, QFN, QFN-2ROW, SODFL, SOIC, SOJ, SON, SOP/TSOP, SOT143/343, SOT223, SOT23, SOT89, SOTFL, and WIRE WOUND.
- The IPC Compliant Footprint Wizard uses dimensional information from the component itself in accordance with the standards released by the IPC.
Some of the IPC Compliant Footprint Wizard features include:
- Overall packaging dimensions, pin information, heel spacing, solder fillets, and tolerances can be entered and immediately viewed.
- Mechanical dimensions, such as Courtyard, Assembly, and Component (3D) Body Information, can be entered.
- The Wizard is re-entrant and allows reviewing and making adjustments easy. Previews of the footprint are shown at every stage.
- The finish button can be pressed at any stage to generate the currently previewed footprint.
The PCB footprint editor includes a Footprint Wizard. This Wizard allows you to select from various package types and fill in appropriate information and it will then build the component footprint for you. Note that in the Footprint Wizard you enter the sizes required for the pads and component overlay.
To launch the Footprint Wizard, select Tools » Footprint Wizard from the main menus.
Solder and Paste Mask Expansions
Displaying Solder/Paste Masks
To check that solder and/or paste masks have been correctly defined in the PCB footprint editor, open the View Configuration panel and enable the show option () option for each mask layer.
The ring that appears around the edge of each pad in the color of the Top Solder Mask layer represents the edge of the solder mask shape protruding by the expansion amount from under the multi-layer pad because multi-layer is at the top of the layer drawing order; it is drawn on top. The Layer Drawing Order is set on the PCB Editor - Display page of the Preferences dialog).
The image below shows a PCB footprint with a purple (color of the Top Solder Mask layer) border that appears around the edge of each pad.
To quickly walk through layers, use the Single Layer Mode (Shift+S) in combination with Ctrl+Shift+Wheel roll.
Handling Special Solder Mask Requirements
The footprint shown below is the contact set for a push button switch implemented directly in the copper on the surface layer of the PCB.
Printed push button footprint designed by placing pads, lines and arcs.
A rubber switchpad overlay is placed on the PCB, with a small captive carbon button that contacts both sets of fingers in the footprint when the button is pressed to create the electrical connectivity. For this to happen, both sets of fingers must not be covered by the solder mask.
The circular solder mask opening has been achieved by placing an arc whose width is equal to or greater than the arc radius, resulting in the solid purple circle shown behind the two sets of fingers. Each set of copper fingers has been defined by an arc, horizontal lines, and a pad (selected in the image to make them visible). The pads are required to define the points of connectivity. Manually placed top solder mask definitions are automatically be transferred to the bottom side solder mask layer if the component is placed on the bottom side of the board.
Creating a Free-Form Solder Paste Stencil
A common approach to defining custom shapes on the mask layers is to build up the shape on the Solder Mask or Paste Mask layer from standard objects. These objects can include pads, which designers sometimes choose to achieve a rounded rectangle shape they require on the solder paste layer. However, if the designer is intending to perform Pin/Part Swapping this will not function correctly, because a component with these additional pads in the solder paste layer will not synchronize correctly to the component pins on the schematic.
In this situation, the required shape can be created from a Region object. Rather than drawing the region object, it can sometimes be simpler to define the outline of the shape from line and arc objects, and then convert that shape to a region object, as demonstrated below.
The required rounded rectangle shape is created by tracing a pad with lines and arcs, and then converting the shape formed by the lines and arcs, to a region object.
Parameters applied to objects in Altium NEXUS provide a powerful and flexible means of adding additional information to a PCB design. Applied as properties of the parent object, parameters can be applied at a range of levels, including projects, documents, templates, and individual objects within a design document.
Parameters that become available in the PCB space can be used to filter Queries, Design Rules, Scripts, and Variants, and can be applied in PCB component libraries for invoking custom strings in placed Footprints.
Parameters via an Engineering Change Order
The PCB parameter capabilities are based on functionality included in the ECO mechanism and PCB document, which allow user-defined component parameters to be transferred to and retained in the PCB space. This is a one-way transfer and the passed parameters are read-only in the PCB domain.
The parameter transfer is done by creating an ECO from the schematic to PCB with the Design » Update PCB Document menu command.
When the ECO is executed (by using the Execute Changes button), any new user-defined schematic component parameters will be transferred to the corresponding footprint reference in the PCB design.
To view the transferred parameters in the PCB editor, double-click a component to open the Properties panel then choose the Parameters tab. The tab will list the current user parameters that have been assigned to the selected component footprint. Parameters for a selected component footprint also are available in the Components panel.
Information Reference Links
The PCB domain automatically accepts the predefined
ComponentLink parameters from the schematic. These are defined as parameter pairs (Description and link URL) that normally establish data reference links to specific files or internet locations – typically a manufacturer web site or datasheet URL.
In both the schematic and PCB design space, the links are accessed from the right-click context menu when hovering over a component (under the References sub-menu options). The specialized parameters are added in the Properties panel, and when transferred to the PCB space, they appear as a component footprint parameter.
Parameters passed to the PCB can be used for providing additional board production or functional information via component footprints. By adding special parameter strings to footprints at the source library level, the custom strings will be interpreted on the target mechanical layer or overlay.
A special string representing a user-defined parameter can be added to the source component footprint using the special strings button and drop-down () in the Properties panel.
In the below library footprint, the special string
.Designator has been placed on the Mechanical 2 layer.
A special string representing a user parameter can be added to the component footprint.
When that custom parameter has also been applied to schematic components and the parameter data has been transferred to the PCB, the interpreted footprint strings will appear on both the board view and generated output files. In this case the special parameter string contains a custom component part identifier to aid assembly.
The application of the user parameters to component footprints as special strings can serve a range of other custom PCB requirements, including function labels for switches and connectors, where a 'function' parameter string might be placed on the Top Overlay in footprints for those component types.
Parameter strings in the PCB domain are also accessible through the Altium NEXUS query language, and therefore, are available for object filtering functions, including the Find Similar Objects feature.
To perform a similar objects selection, right-click on a component then select Find Similar Objects from the context menu to open the Find Similar Objects dialog.
The Find Similar Objects dialog includes a Parameters section where the filtering options can be selected as required.
The PCB Filter panel can apply parameter-specific query words as filter criteria, and can be used for creating Design Rules based on PCB parameters.
Several query words are available for working with PCB footprint parameters, including specific function words for converting string values to numbers (such as StrToNumber). The string Value conversions are unit-aware (V, mA, mV, kOhm etc.,) and allow the query result to be determined by the numerical processing of a parameter value string.
The supported Unit Types that can be nominated in the queries are:
- % – Percent
- A – Current
- C – Temperature
- dB – Decibels
- F – Capacitance
- G – Conductance
- H – Inductance
- Hz – Frequency
- Kg – Mass
- m – Length
- Ohm – Resistance
- Q – Charge
- s – Time
- V – Voltage
- W – Power
- Z – Impedance
Several Parameter query words are available for working with PCB component footprint parameters.
The example shown in the Query Helper dialog above processes the Voltage Rating parameter for each component (using the string-to-number conversion –
StrToNumber(Unit Value, Unit Type)) to determine if its value is greater than 50V. When applied in the PCB Filter panel, the example board layout exposes a single high-voltage component,
(which has a Voltage Rating value of 3kV).
Rules and Scripts
PCB parameter queries can also be applied to Altium NEXUS Scripts and Design Rules. The latter might perform layout validation checks, such as detecting footprint parameters in order to assess component placement or layer assignment. Note that the functions listed in the Query Helper dialog above are available to the Scripting language.
The below example shows the capacitor voltage rating query (see the filter query above) applied to a component placement rule, which, when run, checks for specific clearance values for components detected as high voltage (
Design rules defined by specific footprint parameters, as transferred from the schematic space, can be used for detecting custom layout conditions.
Similarly, custom PCB parameters can be used to check component layer compatibility, for example, where a component does not support wave soldering and therefore placement of the Bottom Layer. Here, an object matching query that processes a custom ‘WaveSoldering’ parameter (
Yes/No) might be applied to the Permitted Layers Rule.
The (batch) Rule will subsequently check the value of that component parameter and create a violation if a component is not compatible with placement on the Bottom Layer.
Parameters transferred to the PCB that are included in variations of the design (Design Variants) are processed with Variant selection.
In practice, a varied component parameter in the PCB space will be dynamically detected by a query string, or, for example, displayed on a board layer through a special string.
When a footprint is placed on a board, it is given a Designator and Comment based on information extracted from the schematic view of the design. Placeholders for the Designator and Comment strings do not need to be manually defined since they are added automatically when the footprint is placed on a board. The locations of these strings are determined by the Designator and Comment string Autoposition option in the Properties panel in Parameter mode when the designator or comment string is selected in the design space. The default position and size of Designator and Comment strings are configured in the respective Primitive on the PCB Editor - Defaults page of the Preferences dialog.
There may be situations when you would like additional copies of the designator or comment strings. As an example, your assembly house wants a detailed assembly drawing with the designator shown within each component outline, while your company requires the designator to be located just above the component on the component overlay on the final PCB. This requirement for an additional designator can be achieved by including the
.Designator special string in the footprint. A
.Comment special string also is available for stipulating the location of the comment string on alternate layers or locations.
To cater for the assembly house's requirements, the
.Designator string would be placed on a mechanical layer in the library editor and printouts that included this layer could then be generated as part of the design assembly instructions.
Handling Special Layer-specific Requirements
There are a number of special requirements a PCB component can have, such as needing a glue dot or a peel-able solder mask definition. Many of these special requirements will be tied to the side of the board on which the component is mounted and must flip to the other side of the board when the component is flipped.
Rather than including a large number of special-purpose layers that may rarely be used, Altium NEXUS's PCB editor supports this requirement through a feature called layer pairs. A layer pair is two mechanical layers that have been defined as a pair. Whenever a component is flipped from one side of the board to the other, any objects on a paired mechanical layer are flipped to the other mechanical layer in that pair. Using this approach, you select a suitable mechanical layer to include the glue dot (or other special requirements) and define its shape using the available objects. When you place that footprint onto a board, you must set up the layer pairing. This instructs the software on which layer it must transfer objects to when this component is flipped to the other side of the board. You cannot define layer pairs in the PCB footprint editor; this is done in the PCB editor.
The Names of Mechanical Layers can be edited directly from the View Configurations panel by right-clicking then selecting Edit Layer.
A common approach to managing mechanical layer usage is to assign a dedicated layer number for each required mechanical layer function. This approach requires all designers to adhere to the same layer assignment and numbering scheme. It can also create difficulties when components are obtained from other sources that do not follow the same assignment and numbering scheme. If a different scheme has been used, the design objects must be moved from their current mechanical layer to the mechanical layer assigned for that function.
This issue is resolved with the introduction of the Layer Type property. When a component is placed from a library into the PCB editor, or copied from one library to another, or created by the IPC Footprint Wizard, existing Layer Type assignments are automatically matched, regardless of the mechanical layer number(s) assigned to those Layer Types. The objects are relocated on the correct layer(s) according to their Layer Type. If the software is unable to match by Layer Type, it will fall back to matching by Layer Number.
For both individual mechanical layers and Component Layer Pairs, you can select a Layer Type from a pre-defined list of types. You may access the dialogs shown below by right-clicking on an individual layer, then selecting the Edit Layer or Add Component Layer command from the menu.
At the simplest level of 3D representation, height information can be added to a PCB Component. To do this, double-click on a footprint in the Footprints list in the PCB Library panel to open the PCB Library Footprint dialog. Enter the recommended height for the component in the Height field.
Height design rules can be defined during board design (click Design » Rules in the PCB Editor), typically testing for maximum component height in a class of components or within a room definition.
A better option for defining height information would be to attach 3D Bodies to the PCB footprint.
Managing Components With Routing Primitives
When a design is transferred, the footprint specified in each component is extracted from the available libraries and placed on the board. Then each pad in the footprint has its net property set to the name of the net connected to that component pin in the schematic. All objects touching a pad connect to the same net as the pad.
The PCB editor includes a comprehensive net management tool. To launch it select Design » Netlist » Configure Physical Nets from the main menus to open the Configure Physical Nets dialog. Click the Menu button for a menu of options. Click the New Net Name header drop-down to select the net to assign to the unassigned primitives.
The footprint shown below, a SOT223 transistor, has multiple pads that are connected to the same logical schematic component pin - Pin 2. To make this connection, two pads have been added with the same designator - '2'. When the Design » Update PCB command is used in the Schematic Editor to transfer design information to the PCB, the resulting synchronization will show the connection lines going to both pads in the PCB editor, i.e. they are on the same net. Both of these can be routed.
SOT223 footprint showing two pads with a designator of 2.
Working with Jumper Components
Jumpers, also referred to as wire links, allow you to replace routing with a Jumper component, which is often an essential ingredient to successfully designing a single-sided board.
Early printed circuit boards were all single sided. To successfully implement all of the connections, jumpers or wire links were often used to create another layer of connectivity, which could pass across the printed routing. The image below shows an example of Jumpers being used to implement the routing on one side of the board.
Note the representation of a Jumper, with a curved connection line between the two pads. In the image, the jumper connection lines are shown in different colors because they inherit the color assigned to the net.
What Defines a Jumper?
To act as a jumper, you need:
How Jumpers are Used
After placing a Jumper in the workspace you will need to set the Net attribute of one of the pads manually in the Properties panel since there is no automatic net inheritance. Note that if the component is defined as a Jumper, then the other pad will automatically inherit the same Net name.
Controlling the Display of Jumpers
The View menu includes a Jumpers sub-menu that allows control over the display of Jumper components.
There are also Jumper sub-menus in the Netlist popup menu (N shortcut).
The query keyword
IsJumperComponent is available for filtering and rule definition.
Jumpers and the Bill of Materials
Jumpers are typically pieces of tinned copper wire that are bent to the correct length, meaning they need to be in the BOM. To support this, Jumpers also can be included on the schematic so that they are included in the Bill of Materials. The Synchronizer and the Report engine have the following behavior for synchronizing Jumpers:
- The component itself is synchronized.
- Net properties of Jumper pins are not synchronized.
- The Jumper is included in the BOM.
Suggested Workflow for Working with Jumpers
The following description is one approach to working with Jumper components. This workflow starts at the schematic, but you can also start by placing the Jumper footprints directly onto the PCB. The main reason for starting on the schematic is that when the design is transferred to the PCB workspace, the footprints will have the correct component Type of Jumper. If you place them directly from the PCB library into the PCB workspace, the component Type will default to
Standard, so you will need to manually set it.
Create a footprint for each length jumper that will be used. Typically jumpers are designed in pre-defined lengths, for example, in increments of 0.1 inch (100 mils).
As mentioned above, there are two conditions that make a Jumper a Jumper:
- Both pads in the Jumper must have their Jumper value set to the same, non-zero value in the Properties panel. Note that it does not matter if the pads in all Jumper footprints used on a board design have the same Jumper value.
- The Jumper Component must have its Type set to
Jumper in the Properties panel. Note that this can only be set once the footprint has been placed into the PCB workspace; it cannot be set in the PCB Library editor.
The image below shows a typical Jumper in the PCB Library editor. Both pads have the Jumper value of
Create the Schematic Jumper Component
On the schematic side, you can either:
- Create a single Jumper component, then add to it all of the different length Jumper footprints that you need.
- Create an individual Jumper component for each different length Jumper footprint that will be used.
Once the symbol has been created:
- Set the default Designator.
- Set the Component Type to
- Add the various Jumper footprints to the Models list.
- Define the other component properties you need, such as the Description and any required component Parameters on the Parameters tab.
Placing Jumpers onto the Schematic
Once the Jumper has been designed, you can place a number of them onto the schematic. At this stage, you probably do not know how many you will need, however, extras can easily be deleted. Keep in mind they are on the schematic to ensure they go into the BOM; they do not need to be wired into the circuit at each location that they end up being used. For that reason, it makes sense to place them all on the same schematic sheet, perhaps with other BOM-only hardware, such as screws.
When a Design » Update PCB Document command is performed, all of the jumpers will be placed into the PCB workspace using the default footprint to the right of the board shape.
Position and Routing the Jumpers on the PCB
The image below shows the PCB, almost completely routed. Note the remaining connection lines showing where the routes are not complete. There are also a number of un-placed Jumper components to the right of the board.
The routing for each of these connections cannot be completed because there is no route path available on this single-sided design. To complete them, the Jumper components will be used.
To complete a connection with a Jumper:
- Drag a jumper component into position on the board. If it is not long enough, either press Tab while moving the Jumper or double-click once it is placed to open the Component mode of the Properties panel.
- In the Footprint region of the Properties panel, enter the Footprint Name, or click the to open the Browse Libraries dialog to select a footprint.
To make it easier to include the Jumper in the BOM, enter a suitable identifying string in the Comment field. In the image below, the footprint name has been copied and pasted into the Comment field since it describes how long the jumper is.
- Position the Jumper in the required location.
Double-click to edit one of the pads then select the required net name from the Net drop-down list in the Properties region of the Properties panel. The other pad in the Jumper will automatically be assigned the same net name.
- Once all Jumpers have been placed, delete any unused Jumpers from the board.
- Run the Design » Update Schematics command to push the footprint and comment changes back to the schematic.
- The last step is to remove any unused Jumper components from the schematic. These can be identified by switching to one of the schematic sheets and running the Design » Update PCB Document command. The Engineering Change Order dialog will open and list any extra components on the schematic; note their designators then close the ECO dialog and delete those excess Jumpers from the schematic.