← Back to team overview

kicad-developers team mailing list archive

Developing and Submitting a Library tool for KiCad

 

Hey All,

First, thanks for the hard-work you put on developing KiCad.

I want to propose to develop and submit a symbol and footprint
creator/editor tool for KiCad. Before starting I would like to get some
feedback about the idea itself, and if I should even consider submitting it
for a merge once ready or just keeping it as a personal tool. In the rest
of the email I will try to describe the idea and road-map.

*Reason:*
Creating small (<= 32pins)symbols and footprints using KiCad is fairly
straightforward for now. But when you want to use KiCad for creating bigger
parts then you will be faced with a cumbersome work. The last part I had to
create was a 208 pins QFP symbol for the LPC1788 by NXP. Using other tools
you can just import a simple Comma Separated Value (CSV) file and the
symbol will be created instantly. You can then go ahead and make changes to
the symbol inside the symbol editor. This feature is missing in KiCad, I
had to add pins one by one. Input the data in the pop-up window for every
pin and place the it in the needed position. So I thought maybe I can help
implementing this feature in KiCad.

In addition to this I have seen some scripting tools to help create
footprints, but in my modest opinion having a centralized integrated tool
is better for the user experience. And of course the tool will have added
features over the scripting approach.

*Features:*

   1. Allow the user to create a schematic symbol and/or PCB footprint.
   2. Allow the user to load existing library objects and edit them.
   3. Allow the user to save the new symbol/footprint in a new library or
   append it to existing one
   4. The schematic symbol is created by either importing a CSV file
   holding pins information or by manually adding pin information inside the
   tool
   5. The footprint is created by first choosing the package type from a
   pre-existing list (QFP - QFN - SOIC - DIP ...), then typing in the package
   dimensions.
   6. Since the IPC standard is not open, the tool will not be making PAD
   size calculations. The PAD size should also be entered by the user
   manually. Many datasheets already have this information.
   7. DXF to footprint converter. Sometimes it is easier to draw a
   footprint in a CAD software. By putting everything on predefined layers,
   the user can then import the DXF and generate a FP.

*Implementation:*
The way I see it implemented is to have an extra icon on the KiCad main
window next to the 'PI editor' for the library tool. (The images below are
just a mock-up, surely will follow the KiCad design once moving to the real
thing)

[image: Inline image 2]

The symbol tab will have a sheet containing pin information :
[image: Inline image 3]

The footprint tab will have text input for dimensions :
[image: Inline image 4]

The misc tab will hold other information about the component. The
information field will be available depending if the user chooses
footprint/symbol or both. The user should also be able to add custom fields.
[image: Inline image 5]

*Road-map:*
The work will be implemented one step at a time.

   1. Create the symbol creation part
   2. Implement import from csv for symbol creation
   3. Create the footprint part for widely used SMD/TH components
   4. Add the less widely used SMD/TH components

Once all the above is implemented and working, the next phase will be:

   1. Implement a live footprint viewer to show how the footprint is
   changing based on the input
   2. Create templates for symbol and footprints
   3. Create a 'standard' way for creating symbols (Ground pins bottom
   right, VCC pins top left, group IO ports)
   4. Implement an import from DXF for footprint creator.

If at anytime KiCad team manages to get hold of the IPC standard regarding
package landing. It will be fairly easy to implement footprint calculations
inside this tool.

I will be waiting for your feedback, do you think I should go ahead and
start doing it or maybe it should be a tool unrelated to the KiCad project
(external java tool for example) ?

Best Regards,
Hisham Daou
LazyHD
www.LazyEngineers.com

PNG image

PNG image

PNG image

PNG image


Follow ups