FreePCB User Guide |
Version 1.2 |
4. Overview of the PCB Design Process
This is a brief overview of the PCB design process, with explanations of some terms which have special importance to FreePCB. These are shown in bold type as they are introduced.
4.1 Schematic Diagram
Most PCB designs start out as a Schematic Diagram, which shows the Devices used in the design and the Connections between them. Each device in the schematic has a Reference Designator such as "U1" or "R3". The connection points on the devices are called Pins, even though they may actually be non-pin terminals such as tabs, wire leads, screw terminals, etc. In general, the PCB should contain devices and connections exactly as shown on the schematic. If the designer makes changes to the PCB layout which create discrepancies between the PCB and the schematic, the schematic should be Back-Annotated to reflect the changes.
4.2 Specifying Parts, Packages and Pin Names
The first step in designing a PCB from a schematic is to select a physical Part for each device in the schematic. At the very least, the part specification should include the Package and Pinout for the part. Once parts and packages have been chosen, it may be necessary to go back to the schematic and assign Pin Names. A name must be assigned to every pin in the design, even on parts which have interchangeable pins, such as resistors.
Pin names are usually numbers, but may also contain letters. If letters are used, FreePCB requires that they precede any numbers. For example, "12", "A", "SOURCE" and "A23" are legal pin names, while "1A" and "A1A" are not. Characters other than letters and numbers are not allowed.
The Package Identifier is a string such as "DIP16" which identifies the package to FreePCB, and determines which Footprint to use for the part. The footprint includes the copper Pads to which pins will be soldered, as well as graphical elements such as a Part Outline and a Text String for the reference designator.
4.3 The Partlist
The Partlist is a list of all of the parts in a design, with their reference designators and package identifiers. A sample partlist is shown below:
Reference Designator | Package Identifier |
U1 | DIP14 |
R1 | RES_1/4W_AXIAL |
C1 | CHIP_0805 |
4.4 The Netlist
A Net is a set of pins which are connected together by lines on the schematic. Each pin in the net is identified by a text string consisting of the reference designator of the part containing the pin, the character ".", and the pin name. For example, pin 8 on part U5 would be "U5.8". Each net must have a unique name, which may be meaningful and descriptive, or merely distinctive. The set of pins in a net is called the Pin List.
A Netlist is a list of all of the nets in the design, with their pin lists. A sample netlist is shown below:
Net Name | Pin List |
VCC | U1.14, R1.1, C1.1, Q1.C |
GND | U1.7, C1.2, Q1.E |
$$1234 | U1.1, R1.2, U1.2, Q1.B |
4.5 Making Netlist Files
If the schematic was created with a schematic editor, the partlist and netlist can be automatically written to a Netlist File. Most editors will produce netlist files in a variety of formats. You should choose a format which is recognized by FreePCB, such as "PADS-PCB". A netlist file in this format is shown below. The listing is pretty much self-explanatory.
*PADS-PCB*
*PARTS*
U1 DIP14
R1 RES_1/4W_AXIAL
C1 C0805
*NETS*
*SIGNAL* GND
U1.7 C1.2
*SIGNAL* $1234
U1.1 R1.2 U1.2
If you are working from a printed or hand-drawn schematic, you will have the make the netlist file manually. This is actually pretty easy, although it can get tedious on a large design. I usually make a photocopy of the schematic that I can draw on. Then I start making the netlist file using a text editor. For each part, I highlight the reference designator on the schematic with a yellow felt-tip pen as I add it the partlist. Then I assign net names and pin names (if they are not already on the schematic) and make the netlist. For each net, I use the yellow highlighter and draw over each connection as I add it to the pin list. When I am finished, every part and every connection on the schematic should be highlighted in yellow. Then, I print out the netlist file and check it line-by-line. As I go, I again highlight the parts and connections in the schematic, this time with a red pen, making sure that every part and every connection is included. I have made quite large netlist files this way without errors.
4.6 Importing Netlist Files into FreePCB
Once your netlist file is complete, you can import it into FreePCB to start your design. FreePCB will try to find a footprint to match the package identifier for each part. If this is unsuccessful, you can assign footprints manually, or go back and edit the netlist. All of the footprints will be placed near the lower left corner of the PCB design area. FreePCB then loads the nets from the netlist, breaking each net into a set of connections between the pins in the net. These will appear as "rubber-band" lines between the pins, called Ratlines. As you move the parts around, the ratlines will move with them.
4.7 Adding Parts and Nets "On-the-Fly"
Alternatively, you can create a design in FreePCB without a netlist file by using the "on-the-fly" editing technique. Starting with an empty design, add each part, net and connection using the Modify and Add menus. You will be prompted for the reference designators and net names as necessary. This works reasonably well for small designs, but I prefer to create a netlist file as described above.
4.8 Placing Parts
The next step is to Place the parts on the PCB by moving and rotating them as necessary. After you move a part, FreePCB will automatically reassign the ratlines of every net connected to the part to minimize their total length. Alignment of parts is made easier by using a Snap Grid.
4.9 Routing Traces
Once the parts are placed, Routing begins. This is usually the most time-consuming part of the PCB design process. Each connection must be converted to a copper Trace, consisting of multiple straight-line Segments. The points where trace segments join are called Vertices. The segments may all be on the same copper Layer, or may be on different layers, in which case they will be connected by Vias. At this point, FreePCB only supports full-thickness vias, not blind or hidden vias. Copper Areas can also be created, which are useful for ground and power planes. Stub Traces can be used to connect SMT pads to the copper areas. The snap grid is very useful for aligning traces. You can also set a Snap Angle, which forces trace segments to be oriented at multiples of the snap angle (usually 45 degrees).
4.10 Adding Text
Text Strings may be added for labels, revision numbers, copyright notices, etc. These will usually be placed on the silk-screen layers.
4.11 Plot and Drill Files
Plots of each layer can be exported as Gerber Files, which are used to make Photoplots for PCB fabrication. FreePCB can also produce Drill Files, which specify all of the holes to be drilled in the board. You can use a free Gerber Viewer such as ViewMate by PentaLogix to check your files and make Check Plots on a Windows printer. Then send your Gerber and drill files to a PCB Fabrication Company (along with some Money), and they will send back finished boards, usually in a couple of days. How Cool is that!