Skip to content
tonyluken edited this page Jun 12, 2023 · 13 revisions

A panel is a physical entity consisting of multiple boards and/or subpanels that are physically connected as a single unit for convenience and economy of fabrication and assembly. Once all the boards making up the panel have been assembled, they are physically separated from one another by cutting, snapping, or some other means.

OpenPnP permits any number of different board designs to be part of a single panel design and they can be arranged in any arbitrary manner. However, due to the nature of the PCB fabrication process, all boards of a panel must use the same layer stack-up. Check with the PCB fabricator for any additional restrictions.

Panel Definitions

In OpenPnP, panels are defined on the Panels tab. See the Panels section of the User Manual for more details. Each panel definition includes width and length settings to define its physical extent. In addition, each panel definition has two lists: The first is a list of boards and/or subpanels (the panel's "children") that provide the coordinates and orientation of each member of the panel. And the second is a list of fiducials that can be used for "fine tuning" the panel's location and rotation when it is used in a job. Note, as shown in the following figure, all coordinates are defined when viewing the panel from its top side. This includes coordinates of panel fiducials located on the bottom side of the panel, i.e., their coordinates are measured by looking through the panel from its top side. Also note that panels can include a mix of boards oriented with either their top or bottom side towards the panel's top side. The coordinates and rotation angles of the boards within a panel are fully consistent with how the coordinates and rotation angles of boards within a job are defined - the only difference is that they are measured with respect to the panel's coordinate system rather than the machine's coordinate system.

panelDefinition 

Design Considerations

Since panels are almost always rectangular in shape, it is recommended that the origin of the panel's coordinate system be placed at the lower-left corner of the panel (when viewed from its top side) with the positive X-axis increasing to the right along the lower edge and the positive Y-axis increasing upwards along the left edge of the panel as shown in the above figure. In addition, set the width of the panel to its X extent and the length to its Y extent. While this isn't an absolute necessity, it does permit panels with placements on both sides to be flipped over easily during a job without the operator having to recapture a new location for the panel. In other words, flipping a panel over to place parts on its other side works exactly the same as when flipping individual boards over. See Understanding Board Locations for more information.

Design Example

As an example, the images below depict the top and bottom side of the simulated test panel "pnp-test.panel.xml" included with OpenPnP. It holds three copies of "pnp-test.board.xml" at various orientations.

pnpTestPanelBothAnnotated 

Below is the panel definition as it appears on OpenPnP's Panels tab:

pnp-test-panelized-panelsTabAnnotated 

And here is the panel as shown in the Panel Viewer, again showing both its top and bottom sides. Note how the locations of the boards and the panel itself (as denoted by the red and cyan crosshairs) coincide with the boards' and panel's coordinate system origins (as denoted by the red and cyan double arrows) when viewing their respective top sides. Further note that the locations of boards and the panel itself are offset from their respective coordinate system origins by their widths when viewing their bottom sides:

pnpTestPanelTopPanelViewer      pnpTestPanelBottomPanelViewer 

Creating Arrays

Often, a panel will consist of multiple copies of the same board design arranged in a regular array. To assist in setting up such panels, OpenPnP provides a Panel Array Generator that can quickly populate a panel with multiple copies of the same board design.

The first step is to create a new panel on the Panels tab. As shown below, set the panel's size and add a single copy of the board design to the panel as usual. This board will become the board in the first row and first column of the array. The locations of all other boards of the array will be offset from this one so be sure its location and rotation are set correctly before generating the array.

pnp-test-panelExampleArrayAnnotated1 

The next step is to open the Panel Array Generator by clicking the arrayGeneratorIcon button and create the array as shown below. In this example, a 6 row by 5 column rectangular array is being created:

PanelArrayGeneratorAnnotated 

Finally, when the OK button is clicked, the panel array is added to the panel as shown below. Notice that the original board Id has been replicated to all boards in the array and is appended with "[row#,col#]" to designate each element of the array:

pnp-test-panelExampleArrayAnnotated2 

X-Outs

When a large panelized design is sent to a PCB fabrication house, they will want to know if it is acceptable for some of the boards in the panel to be defective (called X-Outs). This is their way of asking for help in terms of improving yield (which, in turn, will mean lower cost for you). As a PCB panel increases in size, the chances of a defect occurring increases. Boards for production go through electrical testing, and thus a PCB manufacturer will usually know which boards in a panel have problems. For example, too much copper was etched away in a certain area resulting in an open. Or not enough copper was etched away in a certain area resulting in a short. In these cases, the manufacturer will mark the board in the panel with a big "X", which indicates to the assembly operator that board should not have parts placed on it due to a fault in that particular board's PCB.

In OpenPnP, there are two ways to deal with X-Outs:

The first is to simply find the defective boards in the Job table and mark them as disabled (uncheck the Enabled checkbox). In the example below, the job contains two copies of the example panel that was created above. Suppose the second panel has an X-Out in the 5th row 2nd column. As shown below, just find that row in the Job table (being careful to pick the one on the second panel - if in doubt, hover the mouse pointer over the Id field to see its full Id, in this case Pnl2 ⇒Brd[5,2]) and disable it:

pnp-test-panelizedJobXout1 

The second, and probably best way, is to do it graphically in the Job Viewer. Just open the Job Viewer (by clicking the viewerIcon button), locate the defective board, right-click on it, verify its Id (in this case Pnl2 ⇒Brd[5,2]) in the pop-up menu and uncheck the Enabled checkbox:

pnp-test-panelizedJobXout2 

Notice that the board in the Job table has become disabled and in the Job Viewer, it is filled with a red striped pattern so that it is easy to identify as being disabled:

pnp-test-panelizedJobXout3 

Clone this wiki locally