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.

(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.)

Think about it: The symbols we used on the circuit's schematic fill that need admirably. But they are only approximate representations of the actual physical objects which will populate the final circuit board. Furthermore, one schematic symbol, for instance that for a capacitor, may need several different footprints available for it, given that capacitors come in different sizes, and there are different ways of mounting them on a board.

KiCad stores "libraries" of "schematic symbols" in ".lib" files, and stores "libraries" of "footprints" in ".kicad_mod" files inside XX.pretty folders. (The footprint, remember is the "thing" that has to be on the PCB for the device to be soldered into. (Footprints used to be stored in .mod files, and used to be called "modules".)

We'll get to "doing that" in a moment, but first I have to ask you if you feel really confident about your grasp of "schematic symbols", "footprints" and "libraries"? If in doubt, take a moment to read my essay talking about their inter-relationships.

So… onward!

  • We drew the schematic.

Now we are going to tell the system which footprint (aka module) to use for each schematic symbol in the schematic. (Actually… that slightly simplifies things. If, for instance, you have a 7400 NAND chip in your design, and you are using all four gates, there will be four NAND schematic symbols in the schematic, but they will map to a single footprint. And there are a few other "things"… but what I said is a good starting understanding, none-the-less.)

Go have a cup of coffee… this element of the whole process is not easy, nor easy to explain. But fear not! Things get better again after this slightly tiresome page.

To map the schematic symbols to footprints, invoke "CvPcb". There's a button (KiCad 4.0.4) for that at the far right end of the top toolbar of eeSchema. You can leave eeSchema open. (In everyday use, you will probably go back to the schematic to make changes at least once or twice in each project. As with software, it is difficult to get everything in the design for a new piece of hardware right on the first attempt.) You used to be able to invoke CVpcb from the central project management window. Since at least version 4-0-4, the button on the eeSchema top toolbar is what you use…

From KiCad version 4-0-4, the right hand end of the eeSchema toolbar looks like looks like…

N.B. If you can't see what is shown in the illustration, make your eeSchema window wider!!

(Old (pre- version 4-0-4) icons…)

Be warned: Whatever means you use to launch it, you may get a nasty beep from your PC, the first time in each project that you run CvPcb, and you will first see….

… which is fine. Click "OK". (The beep and warning may be gone now. There were there in "the bad old days".)

Let's look at a detail. The warning says it could not open the file called …(long path).. KiCadHowToBasic.cmp

(Your file may have a different name, but the extension will still be .cmp)

It couldn't open it because it doesn't exist yet. The point of CvPcb is to create the .cmp file! (You may "come this way again", and the next time, while you are working on the current project, you start CVpcb, the system won't moan, because it will see the pre-exisitng .cmp file… which you may be about to alter. Why else start CvPcb?

Anyway…. Get CvPcb up and running.

But don't be alarmed if instead of CvPcb, you get the following demand for schematic symbol annotation. Sigh.

This is the top of the annotation dialog. In rough, non-KiCad-use-of-the-word, you have to give each device in the circuit a "name". You might call the resistors R1, R2, R3… and the switches SW1, SW2, etc.

This "annotating" is quite a big topic, actually… but happily you don't have to worry about the details now. Just say "Annotate", and KiCad will do a pretty good job for you with the default settings of the Annotate Dialog.

Quite quickly, a new window should appear… but it may be empty for up to thirty seconds. THIS is CvPCB's window. (It can take a long time to load if it has a lot of schematic symbols and footprints in the libraries available to it. (You can change what libraries will be used.)

Here's what we're looking at…

The first column gives you the names of the libraries of footprints available. If you click on one of the entries, the list in the last column changes. (That tells you what footprints are available in the selected library.)

The middle column, so far, has just a list of the devices from our schematic diagram. Mostly, and certainly in a simple case like the present example, there will be one entry for each schematic symbol on our diagram.

Now we need to assign a footprint to each of the items in the list.

"Doing it" is one of those "you just have to struggle for a bit" things.

Beware the "filter buttons". They can help reduce "the forest", so you have fewer things to choose from… you don't want ALL the footprints on offer. Filtering by number of pins is a good bet, and "by library". But if you filter too vigorously, you may hide a suitable footprint from yourself.

What you're going to do is:

  • Click on a row in the middle column, to say "I'm going to assign a footprint to THIS"
  • Fiddle about with clicks in the other columns, until you find a suitable footprint. You can view a selected footprint's design with the "View Selected Footprint" button. And if you look at the bar at the bottom of that, you can see that moving the cursor lets you measure things.
  • When you have a good footprint for the currently selected device, double-click on its name in the right hand column, and you should see that name be filled in next to the device in the center column.

Whew. As I said, apologies for the sketchy help with this element.

When I was done, the center column on my screen looked as follows. DON'T BE ALARMED if you didn't select exactly the footprints I did.

SAVE WHAT YOU'VE DONE… there's a button at the upper left, or use ctrl-S.

Here's how we read that, taking the first line as our example…

  • "1" (Just numbering for the list of things getting footprints
  • "D1" This is the "reference" for this schematic symbol. The same reference will carry through to the PCB design, and the footprint used for this device. If we want to "set" our own references, we can. KiCad doesn't care what we call things, as long as no two components have the same name, the name ends with a digit, and has no spaces. The annotation process is all about assigning references to anything you haven't given a reference.
  • "LED" This is he "value" of the device. In the case of an LED, the "value" is unlikely to be of much use. It could be used for "red" or "green", etc. If the device were a resistor, we might well have the resistance of the device here. If a transistor, we might well have the name, e.g. 2N2222. It too will be passed thorough to the PCB.
  • "LEDs:LED_D3.0mm" This says that the footprint we have chosen is came from the "LED_D3.0mm.kicad_mod" file in the LEDs.pretty folder. (Or is derived from it. The question of derived footprints is for LATER.) The XX.pretty folders available to pcCvPcb is defined by the complex (another thing for later!) table which you can access from the menu of CvPcb, "Preferences/ Footprint Libraries".

Whew! Just in case you wanted to know the details. Basically, pick footprints, and press on.

You can preview a selected footprint with the "View Selected Footprint" button on CvPCB's top toolbar. (Near left hand end)

I would close CvPcb at this point, unlike, say, eeSchema and PCBnew, which can remain open throughout a design session, with you moving back and forth between them. You close it because you need the table freshly loaded each time you work with CvPcb.

Go to next page: Creating Netlist

Go to's main page.

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