se1cvp- Simple Exercise: Assigning footprints to schematic symbols (CvPcb))

create counter

Go To Simple Exercise Overview Page

Go to previous page in Simple Exercise: Connecting the devices

So! Onward to the next phase: Mapping schematic symbols to "footprints", also known as "modules". This is at the heart of KiCad's cleverness.


In Dec 2019, I re-wrote this page, trying to make it as helpful as I could in the day spent on the job for KiCad ver 5-1-5 novices. If for some reason you are using an older version of KiCad, you might prefer the old version of this page.

… end of special note.

(There is an encyclopedia entry about "mapping schematic symbols to footprints" which may be helpful if what follows makes no sense… but for now, I recommend you just press on.)

We need at this point to step back from "doing it", and become aware, at least to a degree, of how KiCad works, internally.

"KiCad" has evolved into something that is pretty seamless. It more or less works as if it were just "one thing", a comprehensive application.

In fact, it is several smaller applications working together. The main two are…

- Schematic Layout Editor, aka eeSchema
- PCB Layout Editor, aka PCBnew

We've already covered the basic features of the Schematic Layout Editor.

Shortly, we will move on to using the PCB Layout Editor.

(Before I go further: Be advised: I will be describing the design of a very simple board, using "through hole technology"… i.e. the "old fashioned" sort, in which resistors, LEDs, etc have leads which go into holes in the PCB, and are soldered to the board like that. (If you are only interested in SMT/SMD ("surface mount technology/ devices"), don't worry. KiCad "does" SMT just as well as it does THT. But my examples are done in a THT world.)

The KiCad central project management window (vers 5-1-5 shown)…

… is the "glue" that lets us feel that we are working with "one application". And there are shortcuts that spare us constantly returning there to go forward.

Behind the scenes, there is another important element: Each of the modules (eeSchema, PCBnew, etc) creates and/ or reads data files.

You need to keep them in mind, if "the way forward" (and the way to go back, revise things, carry that forward into where ever you were before you backtracked) is to be clear to you.

eeSchema creates a file listing all the symbols we've put in our drawing, where we put them, the circuit's connections, etc.

That's enough to re-load our drawing, if we've been away from it for a while. So far what I'm talking about is very much like the situation with a word processor: We can create text, chose fonts, layout, etc… and save all of that for re-loading by the word processor later.

With KiCad, eeSchema saves what it needs in order that it can re-load our drawing into eeSchema again later.

But, in designing PCBs, we don't just want to see the schematic, we also want to see a PCB which manifests that circuit.

The PCB Layout Editor (PCBnew) starts with information from the file the Schematic Layout Editor (eeSchema) saved. (And yes, you really do "have" to do a schematic before you try to "draw" a PCB. Just trust me on that?)

And then you work with that starting point, turn the plan into a specific PCB.

Soon after you've made a start in the PCB Layout Editor, you will do another save. This writes to different file than the one PCBnew consulted, to get you started with the "design PCB" part of the overall process. The new file has "the devices and connections" (from eeSchema's information), AND the "new stuff"… how big the PCB should be, where the LED should be on the PCB, how far apart the holes are for the "legs" of the LED should be, etc, etc.

PCBnew needs information, even to make a start, that eeSchema just doesn't need. Where, exactly, that information lives isn't your main concern. But you do need to be very clear on the steps you must follow, if you want eeSchema and PCBnew to have the information they need, and to have the information that you want them to have, not scraps of old information.

So… what are those steps?….

Overall Scheme of Workflow

1) You use the Schematic Layout Editor (eeSchema) to draw the circuit's schematic. (We've covered all the basics you need, on that.)

2) You use the "annotation tool" to give every component of your circuit a "reference", i.e. an "ID". If you had three resistors in a circuit, they would usually have "references" like R1, R2 and R3. (You can "get creative" with references, up to a point… but I wouldn't encourage it!) I'll explain the annotation tool shortly.

3) Next comes "schematic symbol to PCB footprint association". Again, there's a tool for it, again easily (and appropriately) accessed from within eeSchema. (I will cover what symbol to footprint association" is about when I discuss how to complete this step. It either creates another file, or adds information to an existing file. (I'm not sure which… but we don't need to know.)

4) Then you use the "generate netlist" tool which is part of eeSchema to… generate a netlist. (You guessed?!(^_^) But what is a "netlist"? Happily, you don't need the answer to that in detail. Just so long as you realize you need one. And remember: Any time you change the schematic, **you must generate a new netlist.

5) NOW we can launch PCBnew. Some of what it needs is loaded automatically. In addition, we must use the "load netlist" button. (Subsequently, as we develop our PCB, any time we've made changes to the schematic, or to the symbol to footprint associations, we have to generate (in eeSchema) a new netlist, and load (in PCBnew) that netlist into the PCB's design. (Don't worry, you don't go back to "square one" each time, if you do it right.)

Step 1 (drawing the schematic) isn't too bad. Step 5 (drawing the PCB) isn't too bad.

Steps 2, 3 and 4 are something of a pain in the neck.

"Stuff" has to happen that is a bit abstract… but you can get the hang of it, with a little effort. I hope. Because you need to. Any decent PCB design tool has to have these elements, in some form or other, I fear. Can they be "packaged" in a more idiot-proof form? I don't know. (Idiots are so clever at finding ways to go wrong, after all.) For me, KiCad is a good compromise between power and ease of use.

Doing all of that. The details…

Details of 2) You use the "annotation tool" to give every component of your circuit a "reference", i.e. an "ID"

Our circuit has four components: The switch, the resistor, the LED and the connector.

Next to them at the moment, you will see SW?, R?, D?, and J?. These are placeholders for the components' references, and they indicate the default letter which KiCad is proposing. Three are self-evident, I hope. "J" as the letter for the connector derives from "Jumper".

You can get to the annotator elegantly via the Tools item of the menu…

Or, if you forget to annotate your diagram, you'll probably find it popping up automatically.

The choices may seem a little daunting…

… but for now, what you see above will be fine.

You can create or alter references by hand. (Right-click on the reference you want to alter.) You must not, say, assign "R1" to two resistors in your schematic. Sadly, the system won't protect you from making such errors.

If, however, under ver 5-1-5, you try to do the next step when you have two components bearing the same reference, the annotation tool will pop up, with the not-very-helpful text "Exporting the netlist requires a completely annotated schematic".

Hmmm… we HAVE a "completely annotated schematic"… even if it is incorrectly annotated! If the prompt said "… requires complete and correct annotation", it would be more helpful.

But at least the system catches our error and spares us moving forward before it is time to do that.

There are restrictions to the names allowed. (Using a letter followed by digits will be safe. No space. Traditionally, the first resistor is R1, not R0. If you anticipate more than 9 components of a given class, use R01, R02, etc for the first nine.)

((Digression… note this, for the future: In the "real world", you will go forwards and backward many times. If, having started a PCB design, you find that you need to add a component, you will have to go back to the schematic, add the component, re-annotate it, and then repeat steps 3 and 4 before going back to what you do in step 5. When you are re-annotating, you can invoke the "Keep exisiting annotations" option. (See dialog shown above.)))

Be careful, before you leave the annotation tool, to look at the messages area to see that your attempt to annotate your schematic didn't give rise to errors or warnings!

Details of 3) "Schematic symbol to PCB footprint association".

A little way along the Schematic Layout Editor's toolbar, you should find the following group. (Illustration from KiCad ver 5-1-5)

(If you don't, it may be that the window you have the editor open in isn't wide enough.)

You want the last-but-one of those, the "second" one, if you count from the right.

That should give rise to something like…


Oh my. Time for another coffee.

Start with the middle window: It lists the four components of our circuit. So far, the system knows how to show them on a circuit diagram. (Schematic). The first column lists the components by their "references". The second, not very helpful here, list the "values" we have assigned. Normally, for the resistor, "value" would be something like 1,000 ohms, probably shown as "1k" inside our KiCad project. But, if you've followed the tutorial faithfully, at this stage you will see what's in the image, because we've done nothing to refine the default "values" filled in for us. And we don't need to!

After the "values" column, so far, there is nothing. We have come to this tool to fill in that column with the footprint we want for that component of our design. And we will start with the LED's footprint. We'll do it first, then I will expound.

Just above the panel we've been discussing, you should see (KiCad 5-1-5)…

Fiddle with the four buttons. Put "led" into the edit box just to the right of the four buttons. Each button is a "toggle switch". Click it once, it goes to one state. Click again, it goes to its other state. When a button is "down", it applies a rule to restrict what footprints are offered to the user in the right hand panel, the "Filtered footprints" panel.

Click on the first component, "D1", our LED. Set all of the filter buttons to "on"… and in the first panel, select the "LED_THT" library. ("LED_THT"? "Through hole technology LED footprints").

Even with all of the filters applied, we have a choice of 72 footprints! They vary in the separation of the holes that will be made, the diameter of the holes, the silkscreen artwork, etc, etc.

"LED_THT:LED3.0mm" will suit our wants today. (Just LED_THT:LED3.0mm.. we don't need one of the ones with a longer name.) With "D1- LED" selected in the middle panel of the Assign Footprint dialog, you double click on the footprint you want (in the right hand panel). This should cause the footprint name to be copied to the middle panel, on D1's line.

For help when trying to choose which footprint meets your wants, right click on "LED_THT:LED3.0mm" and you can ask to "View Footprint", which gives you (KiCad 5-1-5)…

Once you have opened the viewer to view one footprint, you can leave it open. As you change which footprint is selected in the right-hand panel of the Assign Footprints dialog, what you see in the Footprint Viewer changes.

After we have specified that footprint (""LED_THT:LED3…") for D1, the Assign Footprint dialog looks like…

Right. So what is a footprint?

The LED is going to need two holes through the PCB. It will need copper pads around the holes. The holes will be a certain distance apart. They will be of a certain diameter. The pads will be of a certain diameter. ALL OF THESE THINGS ARE PART OF "what the footprint is".

Furthermore, there will probably be artwork to be part of the silkscreen on the front and back of the board.

That's enough, for now! We must specify footprints for the other three components…

For "J1", the connector to accept the wires from the battery that will make the LED glow, I selected only the middle two footprint filter toggles. (I.e. "turned" them "on".) I then selected the Connector_PinHeader_2.54 library. And from that, chose "Connector_PinHeader_2.4mm:PinHeader_2x01_P2.54mm_Vertical"

I had problems I never did resolve, when I tried to use the 4th filter button and "Resistor", with other buttons not pressed to find a resistor footprint.

In the end, I selected just the second and third filter button, and specified the "Resistor_THT" library, whereupon I was presented with many suitable candidates. I chose "Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal for R1's footprint.

For the switch's footprint, I had better luck with the search filter buttons. I put "spst" in the edit box to the right of the buttons, and had the 2nd and 4th buttons "down". Again… many candidates, and the "View Footprint tool was useful in selecting "Button_Switch_THT:SW_DIP_SPSTx01_SLIDE_6.7x4.1mm_W7.62_P2.54mm_LowProfile".

With a footprint chosen for each schematic symbol, you can click on the dialog's "OK" button.

Whew… onward! The rest is less tedious…

Details of 4) Use the "Generate netlist" tool which is part of eeSchema**

Next, you use the "generate netlist" tool which is part of eeSchema to… generate a netlist. (You guessed?!(^_^) But what is a "netlist"? Happily, you don't need the answer to that in detail. Just so long as you realize you need one.

Once again we need the group of buttons a little way along the Schematic Layout Editor's toolbar. (Illustration from KiCad ver 5-1-5)

This time, it is the one at the right-hand end of the above, the one with "NET" on it. Click that, and a dialog comes up with "Netlist" in the title bar. The "Pcbnew" tab should be selected, and the "Default format" option should be selected.

Click "Generate Netlist".

You will see a "SaveAs" dialog. The netlist should go in the same folder as you've put the other things connected to the folder. (The will not show in the SaveAs dialog because you have specified, at the bottom, that you only want to see netlist files.

Save the netlist with the suggested name and extension. (The extension will be ".net".)

When you've done that, the Generate Netlist dialog will close, and you can go on to the next step.

Remember: Any time you change the schematic, you must generate a new netlist

Details of 5) "Launch PCBnew. Design the layout of the board."

NOW we can launch PCBnew. Some of what it needs is loaded automatically. In addition, we must use the "load netlist" button. (Subsequently, as we develop our PCB, any time we've made changes to the schematic, or to the symbol to footprint associations, we have to generate (in eeSchema) a new netlist, and load (in PCBnew) that netlist into the PCB's design. (Don't worry, you don't go back to "square one" each time, if you do it right.)

This topic has a page of its own, so that's where you should go now…

Go to next page: Launching, using the PCB Layout Design tool- PCBnew. Beginning board layout.

Go to's main page.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License