Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Introduction

The purpose of this guide is to serve as a beginner-friendly walkthrough on how to create a PCB from a schematic using Altium Designer. You can find many such guides on the internet in both video and text form (Several good recommendations are made here!), but this guide has the benefit of being tailored to the specific standards and conventions used by Northeastern Electric Racing. This document was created by Walter Stadolnik (Unlicensed) , so feel free to poke him if anything seems outdated/incorrect.

Info

Throughout this guide, I’ve bolded most commands and menu paths. When applicable, I’ve underlined the letter of each command used as its default command shortcut, to reduce the hassle of locating each command in the menus.

Anatomy of a PCB

Before we get started, lets review what a PCB is. PCB stands for Printed Circuit Board, which is a bit of a misnomer, as the layers of modern PCBs are produced through subtractive processes. Only the silkscreen layers are ever printed - more on that in a second. The term “printed” has its origins in the first PCBs, which were produced by drawing “wires” with conductive ink on an insulating substrate.

PCB Layers

Even the simplest PCBs are comprised of several layers:

  • copper layers - used to conduct electric currents. Confusingly, PCBs use ounces as units of thickness for copper layers. This is the thickness of copper achieved if you flatten out an ounce of copper over a square foot of area.

  • dielectric/prepreg layers- insulating layers which prevent shorts between the copper

  • solder masklayers - deposited on the top and bottom copper layers, this protects the copper from corrosion and environmental damage, and lends PCBs their color (typically green by default)

  • silkscreen layers(“silks”)- to call this a “layer” might seem odd, since this is just the text and decals printed on the top and bottom of the board, typically in white ink. Another anachronistic term, most PCB silkscreens are now produced with a direct printing or photoimaging process, rather than true screen printing.

Key PCB Features

  • Traces (or Tracks)- “wires” etched into the copper layers. Because the copper layers are a predetermined thickness, the width of copper traces is often increased for traces which carry more current. See Step 4 - Route Componentsfor more details.

  • Vias - holes that go all or partway through a pcb, and which are plated in copper. These allow for signals to travel between copper layers.

  • Pads- If you’ve made it through the component creation guide, you’ll know that a pad is used to allow a component to be soldered onto the PCB. Pads may be surface mount (flat piece of copper) or through-hole (think an extra wide via).

  • Copper Pours - wide areas of copper that belong to a single net, so called because it looks like someone “poured” copper over part of the board. These are often used in areas of high current, or when many adjacent components share a common net.

If you’re interested in learning about how PCBs are made, I highly recommend checking out this tour of the JLCPCB factory. Many of the boards on our car likely originated in that very factory!

About the demo board

In the following demonstration, I’ll be walking through step-by-step as I do the layout for a custom Raspberry Pi Debug Probe. Not to be confused with a Raspberry Pi computer, this probe uses a RPi 2040 microcontroller, and is used to convert between USB and UART or SWD when flashing a board. In our 2024 competition vehicle, we’ll be embedding two copies of this circuit into our /wiki/spaces/NER/pages/63275033 in order to wirelessly flash the microcontrollers and FPGA on the /wiki/spaces/NER/pages/63209494 and the /wiki/spaces/NER/pages/100925527.

The Raspberry Pi Debug probe includes fully open-source schematics, which can be found here. Further information on designing with an RPi 2040 microcontroller can be found here. Below is my adaptation of these schematics for use in our vehicle. My only notable changes are the consolidation of the two output JST connectors into a single Molex PicoBlade connector, and the addition of a 3.3V output so that the probe can power the microcontroller or FPGA being programmed. The USB micro connector was also swapped for USB-C in my design, and an additional LED was added to indicate that the 3.3V net is receiving power.

Step 1 - Verify Schematics + Components

So, you’ve finished up a circuit schematic. Great! Now it’s time to turn it into a PCB.

~ But wait! ~

First, make sure that:

  • Your schematic has been reviewed - all schematics need to be reviewed before moving on to layout. Trust us - it’s no fun to change your design in the middle of routing a board.

  • You’ve addressed all the concerns from design review - double check that you’ve thoroughly responded to and implemented all feedback in your schematic’s review document.

  • All un-reviewed components are marked as “Ready to Review” - Ideally all components will be reviewed before layout - it’s better to catch stuff like incorrect land patterns before getting too deep in the weeds of routing. At the very least, all components should be marked as “ready to review,” and should be handed off to the head of your system or the chief EE (Walter Stadolnik (Unlicensed) ) for review.

Step 2 - Set up the Board

You’re schematics are good to go, and your components are reviewed. Now what?

Creating the PCB Doc

First, you’re gonna need a PCB document.

  • Open the Projects Panel (Panels → Projects), right click on the project title (CUSTOM_RPI_DEBUG.PrjPcb), and select “Add New To Project”. Select “PCB” from the dropdown.

  • This should open a new tab with a big, empty black box. This black box is the default 6” x 4” PCB outline. Before you make changes, go ahead and CTRL+S to save your PCB file, and give it a fitting name. If in doubt, PROJECT_NAME.PcbDoc will do.

Setting up Component Layer Pairs

  • Next step is setting up component layer pairs, just as you would when making a footprint. Go to Panels → View Configuration to see the layers of the board. Right click on “Component Layer Pairs,” and select “Add Component Layer Pair”. Do this for each of the four required layer pairs (Assembly, Component Outline, Component Center, and Courtyard), as defined in the Vault Guidelines.

Defining the Layer Stack-up

  • Open Design Layer Stack Manager

  • A new tab should open as shown to the right. This tab shows all the layers which will make up the PCB, which is by default a 2-layer board (only copper layers count towards the PCB layer count. As is evident from this stackup, a total of 5 non-copper layers are present in a 2-layer board).

  • The outermost green layers are the overlay (silkscreen) layers, the inner green layers are solder mask layers, the two orange layers are the copper layers, and the brown layer is the dielectric (insulator). The material of the dielectric is set to FR-4 fiberglass, which is the standard dielectric used in PCB cores.

  • Depending on the complexity of your board, you may need more than two layers. To add copper layers, click on the cell labelled “Top Layer,” Click the “+ Add” button, and click OK with the default settings shown at right. Congratulations, you now have a 4-layer board! Note that all changes to the stack manager occur symmetrically: Adding a copper layer above the core will add a second layer below the core.

  • Next, you’ll want to verify the layer Types and Weights of each copper layer.

    • “Type” is either signal or plane - A signal layer is generally used for routing traces, while a plane layer is a giant sheet of copper that helps bring power or ground to different parts of the PCB

    • The weight of a copper layer is synonymous with thickness. Typically this is left at 1oz, but doubling it to 2oz means that you can force twice the current through every trace, which is useful for keeping trace widths small on high current boards.

  • Since my board uses USB, which requires controlled impedance, I’ll use a 4-layer stack-up with planes as the inner layers (see the next section). Since the board is entirely low current, I’ll stick to 1oz copper layers.

Info

Note that manufacturers almost always require an even number of copper layers. Even if you only need3 layers, it’ll probably cost you less to add that 4th layer. However, cost can increase dramatically with layer count, so do be conservative with how many layers you use.

Setting Up Controlled Impedance

Note

Don’t skip this step, even if you’re not using differential pairs!

  • If planning on ordering the board for JLCPCB (includes most boards), refer to this page for impedance profile information: https://jlcpcb.com/impedance

  • Scroll down to the section that applies to the layer count of your board, and use the stack-up data for the first controlled impedance option which appears under “No Requirement Stackup”. I’m planning on doing 4-layers for the RPi debug board, so I’ll follow the JLC04161H-7628 spec. For 6-layer boards, follow the JLC06161H-3313 spec.

  • Be sure to select the proper thickness and copper weight settings! You can leave the default thickness setting, but set the copper weights to match your board stack-up.

  • Go back to the Layer Stack Manager in Altium, and enter the appropriate thicknesses for each layer. If it displays in units of mils instead of mm, press “q” while in the .PcbDoc to switch units.

  • Click on the icon with 3 dots in the “Material” cell for the top dielectric layer. Scroll down the material list until you see a number in the “constructions” column that matches the last 4 digits of the impedance spec (in my case 7628). Then, select the material with that construction number which most closely matches the upper dielectric layer in thickness (in my case this is PP-022, with a thickness of 0.20828mm).

  • Switch to the Impedance tab (bottom left corner of the window). Click the “+ Add” button at the top left of the window. Open the properties panel if not already open (panels properties). Verify that the Impedance profile says type Single, 50 for target impedance, and 10% for target tolerance. Note that the desired single-ended impedance varies in different contexts, but that 50 ohms is a good baseline.

  • To the right of the layer stack, it should now show impedance characteristics of the top and bottom signal layers. Verify that the impedance is close to 50 ohms. If you plan to use differential pairs, copy the value in the width column (in my case 0.35831mm).

  • If your board does not use differential pairs, move on to Importing Design Rules. If it does, then Click the “+ Add” button at the top left of the window. By default, this will add a new single-ended impedance constraint. Open properties, and change Type to Differential, and impedance to the target impedance of the differential pair you’re using. For USB, the target is 90 ohms. Leave the default tolerance of 10%. USB can tolerate an impedance range from 75 to 105 ohms.

  • In the differential impedance characteristics to the right of the layer stack, update the Width field with the width copied from the single ended impedance characteristics. This will likely cause the Impedance to deviate from your target. To fix this, guess and check values for the Trace Gap field until you restore your target impedance (within ~1%).

Info

If your board includes differential pairs, it’s good practice to make sure that the inner copper layer nearest to the most sensitive differential pairs is assigned to GND

Importing the NER Design Rules File

  • Navigate to the following folder in Drive, and download the NER_STANDARD.RUL file: https://drive.google.com/drive/folders/11oKh59Eb7NA6K9tXJcL4e2ynardMhUn6. This file is based on PCBway’s design requirements.

  • Click Design → Rules (shortcut DR) to open the PCB Rules and Constraints Editor

  • Right click on “Design Rules” at the upper left hand corner, and click Import Rules

  • In the “Choose Design Rule Type” menu, do CTRL + A to select all of the design rule types, then click OK

  • Select the NER_STANDARD.RUL file, and open it. Agree to clear all rules when loading in the new rule set. Click Apply, then OK.

Step 3 - Placing Components

Whew, done with the boring part. Time for the fun stuff!

Importing the Components + Netlist

  • Ensure that all components are updated. This can be done with Tools → Update From Libraries. Click Next, then Finish, then Validate, then Execute, then Close (I don’t know why there’s so many steps, but thankfully it’s just clicking through)

  • Open the schematic file for your board, and click Design → Update (shortcut DU), and click Validate, then Execute, then Close to bring all of the components into the PCB document.

  • Return to the PCB file. It might look daunting when you first import the components and they’re all jumbled in a corner. Don’t worry - It looks worse than it is!

  • Notice the red box around the components (there may be multiple!). These are rooms, which are intended to help organize your schematic. While we sometimes do make use of them, more often than not they mostly get in the way.

  • To hide the room, drag its extents to cover the entire PCB area. Then, open Panels → View Configuration. Switch to the View Options tab of the View Configuration window, and look under the Object Visibility Section. Click on the Eye icon next to Rooms in order to hide all rooms.

  • Observe that all of the components are connected by thin gray lines. This is referred to as a Rat’s Nest, and it’s a graphical representation of the various electrical connections between components. Each line in the rat’s nest connects between two pins with the same net, and they help provide a visual cue that a given net still needs to be routed.

  • Now is also a good time to introduce PCB viewing modes. If you press 3, the PCB will switch to a 3D viewing mode, where all of the components are rendered as they’ll look once the board is assembled. Pressing 2 will return you back to 2D mode. Furthermore, pressing CTRL+ALT+2 or CTRL+ALT+3 Allows you to switch between viewing modes while preserving your perspective on the board. Try it out!

  • Another trick is CTRL + F to flip the board. This applies to both 2D and 3D modes. Get comfortable using this, too!

Organizing the Components

  • Before even thinking about where things go, the first step I like to do is to organize my components.

  • Typically I begin by identifying “focal points” - components that a lot of other stuff is next to. This could be a connector, a microcontroller, or a smaller IC (integrated circuit)

    • Often, connectors will be surrounded by circuit protection elements, like fuses and TVS diodes.

    • ICs will often be surrounded by discrete passive elements, like decoupling capacitors, resistors, and inductors

  • Drag each “focal point” component to a different area in space, and start sorting the smaller components by which “focal point” they belong near.

Refining Component Positions

  • Now that your components are grouped, it’s time to start planning the board layout.

  • The first thing to think about is usually connectors - what sides they should go on, and what orientation they should be in. This is often informed by the mechanical packaging for the board

  • Another key consideration is decoupling capacitors. These should always be as close as possible to the power pin of the IC, to minimize the inductance of the trace once it's routed moving these into position around any integrated circuits can help reduce clutter and ensure that routing will be easier

  • In boards with a microcontroller, there are often communication protocols connecting to other chips and connectors. It’s important to keep these in mind when orienting the microcontroller, so that you minimize trace lengths and produce a logically organized board

  • If you have switching regulators, or other noisy circuits, it’s generally a good idea to separate them from anything sensitive. I realize that sentence means nothing without significant elaboration - we’ll make a guide at some point on EMI considerations for layout. In the mean time, feel free to ask a head or chief about it.

Note

Don’t forget components can go on the bottom of the board! Proper utilization of the bottom layer is key to space efficiency

Redefining the Board Outline Using Primitives

  • The board outline can be redefined at any point in the layout process - I like to do an initial outline early on, then revise it as needed once the board is nearly complete

  • Open the View Configuration panel, and add a mechanical layer called “Board Outline”

  • Use primitives to create an outline for the board. “Primitives” are any of several types of basic drawing “pieces” in Altium - things like lines and arcs.

  • Make sure that “Board Outline” is selected in the layer bar at the bottom of the screen, so that drawings you make will be added to the correct layer. If you accidentally draw on the wrong layer, you can always select an object, and change the layer it’s on in Properties

  • To make a rectangular board outline, locate the line tool at the far right of the menu bar at the top of the board viewing area.

  • To make a rectangular board outline, right click on the line tool and click on Arc (Edge). Alternatively, use Place → Arc. Place an arc – don’t worry about looks like or where it's placed – and open the properties panel with the arc selected

  • Edit the radius to the desired value, set the start angle to 90 degrees, and set the end angle to 180 degrees. Then, enter the desired X and Y coordinates. This arc will form the upper left corner of the board.

  • Repeat the above process to place the other 3 arcs to define the board corners.

  • If your corners are aligned properly, you can now draw straight lines to connect them using the line

  • Once your outline is created, select all primitives in the outline, and use the command Design → Board Shape → Define Board Shape from Selected Objects (shortcut DSD)

  • In 3D view, you should now see that the board extents have been updated

Info

Note that holding SHIFT + SPACE while placing a line allows you to change the line style - you can add things like 45 degree angles and curves by doing this

Info

You can also import a 3D STEP model into the PCB to use as a primitive to define the board outline. This is often handy for weirdly shaped boards where it might be easier to CAD the outline in SolidWorks

Image RemovedImage AddedImage RemovedImage RemovedImage RemovedImage AddedImage AddedImage Added

Once the initial component positioning is completed, it’s a good idea to run this past other people in an informal (or formal) design review. The picture below shows my initial component layout for the custom Raspberry Pi Debug Probe board.

[Insert Image Here]

Step 4 - Routing the Board

Start With the Easy Stuff

  • To be continued once component placement completed

“QSPI pins of RP2040 should be wired directly to

the flash, using short connections”

linko: https://datasheets.raspberrypi.com/rp2040/hardware-design-with-rp2040.pdf#minimal-design-example

We must place 1μF capacitors close to both the input (VREG_IN) and the output (VREG_OUT)

it is important to place decoupling close to the power pins

“require 27Ω series termination resistors (R3 and R4 in Figure 9), placed close to the chip, in order to meet the USB impedance specification”

Tips and Tricks for Routing

  • To be continued once component placement completed

Routing Differential Pairs

  • To be continued once component placement completed

Current Capacity Validation

  • To be continued once component placement completed

Step 5 - Board Cleanup and DRC Check

Add to this section once the layout is complete!

Step 6 - Final Board Review

Add to this section once the board is reviewed!

Step 7 - Order the Board and Components

Add to this section once the board is ordered!

Exporting Gerber Files

Ordering from JLCPCB

General Tips and Tricks

  • SAVE WHENEVER YOU CAN- get into the habit of doing CTRL+S after literally everything you do. If/when Altium crashes, this will ensure that the progress you’ve made will be saved locally to your computer.

  • If this is your first board at NER, I highly recommend perusing the Altium vault and checking out our previous designs. You can learn a lot about layout technique by simply observing other people’s work

  • Don’t take this document too seriously! While I generally follow good practices, what counts as “good practice” varies massively depending on who you ask. While most of these tips are good for this club, you may find that your co-ops will tell you something entirely different. If anything seems outdated, or questionable, feel free to add a comment!

Shortcuts used in this tutorial:

  • DU, Design Update → Do this while in your schematic to synchronize the PCB with schematic changes

  • TDR, Run Design Rules Check → Do this to generate a new report showing Design Rule Violations

  • TGA, Repour all Polygon Pours → Re-generates all Polygon Pours, accounting for recently moved components, vias, and traces