MicroChip PIC Library


This is my first post and I’m new to KiCad. So thank you in advance if this already has been answered. However, I have looked for hours with no answers to my needs.

What IM looking for is a Library, for Pic controllers. Like the 18F46k22 etc. All from the 555 timmer to the 32 and 64 series.

I’m looking for the schematic footprints and if there are models for the PCB and maybe 3d models.

I found a post that said that they contained a few, and I installed them however, it did not contain any of the most used chips.

Thank you in advance once again.


In the KiCAD language, “schematic footprints” is a non sequitur. KiCAD has “symbols” that are used in schematic diagrams - on a Windows installation using local libraries, the default symbols are in {KiCAD_Installation_Directory}\share\kicad\library . There are typically several symbols described in each *.lib file, and the corresponding *.dcm file contains information to differentiate among the alias identities that a symbol might have.

KiCAD also has “footprints” that are placed on a PCB layout. The default footprints are located in individual files with the extension *.kicad_mod. There is one footprint per file. The footprint files are grouped into folders, with each folder having a name extension of *.pretty . If you have a Windows installation WITH LOCAL LIBRARIES, the “pretty” folders are found at {{KiCAD_Installation_Directory}\share\kicad\modules . For example, on my machine the footprint for an 18-pin SOIC package (that may contain a PIC 16F818) is in a file called " {KiCAD_Installation_Directory}\share\kicad\modules\Housings_SOIC.pretty\SOIC-18_7.5x11.6mm_Pitch1.27mm.kicad_mod ".

[quote=“MadMax, post:1, topic:6127”]
. . . What IM looking for is a Library, for Pic controllers . . . [/quote]

Try searching for " {KiCAD_Installation_Directory}\share\kicad\library\microchip*.lib ". On my machine, there are at least half a dozen libraries for the various families of PIC parts.


p.s. - I am amused by the proliferation of PIC microcontrollers over the last 40 years or so. There are hundreds - perhaps almost 1000 - basic part numbers, not counting the various packages, temperature grades, etc, available for each model number. It’s my understanding that the whole PIC genesis was a fortuitous accident. Back in the 1970’s there were a couple dozen companies trying to grab a share of the microprocessor market. General Instruments’ processors, like most of the others, were adequate performers that ended the race in the pack of “also-rans”.

Because the General Instruments processors ran out of pins before they could support all the I/O protocols they wanted to implement, they created the GI 1650 “Peripheral Interface Controller”. It was intended to be an I/O extender - a firmware-configurable piece of hardware that could be made to operate like any of hundreds of different I/O protocols. In fact, the 1650 had all the architectural characteristics of a microcontroller: an ALU, instruction decoder, program and data memory, and I/O. Forty years later, you can still buy a 16F54 which has the same architecture and functionality as that GI 1650. I wish just ONE of my designs had even HALF the longevity of the 1650!


The PICs and the Atmels were winners because of the cheap or free tools. Companies like Intel, Motorola and Siemens made development a very expensive experience if you weren’t Ford or GM


The PICs and the Atmel AVRs will be soon replaced by ARM Cortex M0+ based devices. That’s why Microchip buy Atmel to acquire their SmartARMs. If you closer look at the new ATtiny devices architecture you will see some similarity to the M0+ architecture.

PS. Maybe one day I will see some hybrid: Microchip MCU with SAM M0+ core and build-in ETH PHY based on ENC28J60. Unless Wireless replace whole 10/100/1000Base-T…


I don’t think that there are local footprints in a standard installation. Kicad gets them directly from github and does not store them locally. (Only footprints that are used are stored in the header of the pcb_new file)
If one wants local footprint libraries one can follow the guide by @bobc

The 555 timer will probably be in a separate library compared to micro controllers.

There are at least 10 different libraries containing pic controllers in the official github repo of the kicad library. (You should have most of them installed in the path given by @dchisholm. ) It might be necessary to add the libraries to the project though. Only a view of the installed libraries are added to a project by default.

But as @dchisholm already wrote, there are a lot of different micro processors out there. It is highly unlikely that the kicad library has a symbol for all of them. So there is a large chance that you need to create the symbol yourself.

For footprints, well there are a lot of footprints already included in the kicad library. If you don’t find the one you need yourself report back with what exactly you need. (pic controllers come in many different packages.) Maybe one of us knows which library contains the footprint you need. But again if you need something exotic you might need to create your own footprint as well.


Thank you for this information, as I’m new to KiCAD I will need to look into how to import these lib files into the program to start using them.
I did see in the program files where the folder containing them is located. and verified I have the area you said.
Now it is down to just working out how to get the info onto the design area.
Amazing thank’s


Yes I found these files as well in the Program files. now its a case of being able to use and find them in the building area of the PCB.
Thank you for such a fast reply on this topic Since I’m New I know questions can come up more than once so thank you in advance for your understanding.
If you have any more suggestions on how to use the software to make grabbing these footprints easier please let me know.
Thank you


There is no official symbol for PIC18FK22 that I can find, https://github.com/KiCad/kicad-library/blob/master/library/microchip_pic18mcu.lib has many PIC18 parts but not that particular one.

For fun I tried https://componentsearchengine.com/, they have a KiCad symbol for PIC18FK22 which looks ok (registration required, no endorsement offered).

A site that deserves more mentions is http://kicad.rohrbacher.net/quicklib.php. In 5 mins you can create any symbol you want.


The proliferation of microcontroller models by their manufacturers isn’t the only factor in the way of a comprehensive library of microcontroller symbols. For any given microcontroller chip, most pins have two or three (or four or five or six . . . ) possible functions. Identifying each pin with all of its possible functions can create a very cluttered, almost illegible, schematic symbol.

Whenever I have used a microcontroller in a design, I have drafted a custom symbol for it. Rather than identify all the possible functions a given pin may have, I label it with the particular function I used in that specific design. If it’s going to be, say, an A/D input, I label it as “AD2” (or however the manufacturer calls it). I don’t mention all the other functions it COULD be: general-purpose I/O, or analog comparator, or PWM output, or whatever else the manufacturer may assign to that pin. In my opinion this helps communicate my specific design intent - how that pin will actually be used. Yes, it means I must draft a new symbol for every schematic where I use that part but over the long run I’ll accept that extra workload.



I wonder if the future EEschema will have the ability to show only wanted ‘functions’ of a chip and hide the other (non-used) if so desired - would save work-time for needless operations (I hate those :wink: ).
Would not be hard to implement I guess (just needs a way to store which exact pin function one want’s to show, but I’m sure this is jut a matter of another ‘bit field’ in the pin definition for a symbol in the schematic in the end).


Something like this? -> https://lists.launchpad.net/kicad-developers/msg27071.html


yep pretty much = so it’s one someones radar. Nice :slight_smile:


Yes, it’s probably do-able but adds additional complexity to an already complex task.