This information HAS errors and is made available WITHOUT ANY WARRANTY OF ANY KIND and without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is not permissible to be read by anyone who has ever met a lawyer or attorney. Use is confined to Engineers with more than 370 course hours of engineering.
Related kicad pages
EE CAD Terminology
- kicad Navigator - the kicad project Manager
eeschema - the schematic editor
cvpcb - the component to module (AKA foot-print) editor
pcbnew - the PCB layout program
Gerbview - the Gerber file viewer - and production
Bitmap2Component Converts bitmap images
to filled polygons
wings3d - 3d view - good way to waste a lot of
Things that are Common to all the different kicad programs
|Common Key Strokes of Kicad - Worth Memorizing
||zooms (needs to be a bit finer (2006-08-28))
|Mouse-wheel click or F4
||Center drawing at cursor
||Mirrors over X axis
||Mirrors over Y axis
||Orient Normal (Remove mirror, rotation)
||Zeros relative coordinates at cursor
||get object info - displays in bottom bar
||Block Select - and move - left click drops
||Block copy - and move - left click drops
||Context menu (repeat cancels menu)
||Duplicates last element (works with lines not parts as of 2006-08-28)
|A few more key strokes for PCBNEW
||Switch to next layer
||Switch to previous Layer
||Place 'Via' when routing track
||Move footprint (disconnect from tracks)
||Grab footprint (tracks are stretched)
||Get? and move footprint
||Toggle footprint lock (glue)
||Add Module ???
|Left mouse button held down
||Trace framework to move block
|Shift + Left mouse button held down
||Trace framework for invert block (180deg rotate)
|Ctrl + Left mouse button held down
||Trace framework for rotating block 90°
|Shft+Ctrl + Left mouse button held down
||Trace framework to delete the block
|Centre mouse button held down
||Trace framework to zoom to block
- measuring things - the space bar resets the relative coordinates (look at the bottom right of the screen - the small 'x' and
The programs that makeup Kicad
This is the top program of the kicad system - a project manager
which lets you create and name projects and start the major components
of kicad. This wiki page covers the Kicad manager. The manager also
lets you start these sub programs :
eeschema - the schematic editor
cvpcb - the component to module (foot-print) editor - strongly discourage it's use - much better to
make a proper component with the library editor with a footprint feild that points to a module.
- Assign footprints to parts Creates .cmp and .stf files. You don't have to run cvpcb if you fill the footprint field in
- For viewing Gerber 274-X format, (These used to be .pho files, but now we use the standard Gerber file extensions that tell
which layer is used SilkS_Front = .gto etc. )
PCB Calculator - the collection of commonly used calculators such as trace width and minimum
spacing between traces
Navigator Procedures - Project level Tasks
Incrementing the file names of a Project
After making the first version of a schematic and a board - lets
say named widgit1.0.xxx ( where xxx would be .sch .brd .net .pro )-
it is a good idea to make a copy and increment the version ready for
any changes that might come.
Changes that only affect the parts list in the schematic could be 1.0A - 1.0B etc.
Simply copy the old files to the new names and in the kicad project
browser open up the new project. Where original projects_dir =
$cd project_dir $cd .. $cp -Rp widgit1.3 widgit2.0 $cd widgit2.0 $mv widgit1.3.sch widgit2.0.sch $mv widgit1.3.brd widgit2.0.brd $mv widgit1.3.pro widgit2.0.pro $mv widgit1.3.net widgit2.0.net
Open the new .pro with the project manager, open the schematic and under pagesettings update the version once more..
Archiving a Project
This is not actually part of kicad - but has been recommended as a
better auto router than the one that comes with kicad. Its drawback
is that it does not route at 45 degree angles, the traces only go
parallel and perpendicular to each other.
Also not part of kicad - worth listing here for now.
The Files of kicad
- .bac backup of a .lib file
- .bck backup of a .dcm file
- .brd PCB file
- .cmp auxiliary component assignment file - a file that associates the Reference, part-name and footprint - Generated by CVPCB
- .dcm - from Libedit - goes with the associated .lib file (name.lib
and name.dcm go together). The .dcm file contains description,
keywords, and documentation file locations for each item in the
associated .lib file (which defines the schematic symbols). The .lib
file can contain aliases, different names for a component with the same
schematic symbol. An alias can be assigned to an existing
symbol definition, instead of copying the whole definition. This makes
the .lib files smaller, but each name will still have its own
entry in the .dcm file, allowing each alias to have its own keywords,
description, and documentation.
- .drl Drill file
- .dsn Design?
- .emp - export of module
- .equ - maps part-name to footprint
- .erc Error list
- .lib eeschema library file - for each schematic symbol, tells Eeschema how to draw the symbol and what text goes with it, and
(optionally) what footprints can be assigned to it. - also the file type that is exported and imported in libedit
- .lst BOM output
- .mdc - footprint associated description/keywords file (name.mod and name.mdc go together). Similar concept to .dcm and .lib (see
- .mod - footprints
- .net Netlist file.
- .plt Plotter output file
- .pro Project file Contains lib selections, default directory and
other details about the project. It maintains a number of
parameters relating to project management (such as the filename of the
principal schematic, list of libraries used in the schematics
and PCBs). To update this file for your own standard needs :
- Open eeschema directly ( it will load the default .pro file )
- Make changes to Your library list
- Save to /usr/share/kicad/template/kicad.pro
- Backup a copy as it will get overwritten on software updates. (this file really should be in /etc/kicad or
- .sch EEschema's Schematic file
- .ses Session file for autorouting with freerouting.net.
- .stf - back annotation file - fills in the footprint field in eeschema from what is selected in cvpcb
- .sym - these are symbols without parts (gates i.e NAND, NOR, opamp, )
- .rpt created by File/export /module report
- .wings 3d part model file
- .wrl VRML model
- project-cmp.pos create a Module Position File with Postprocess->Create Modules Pos (this is the component side)
- project-copper.pos (As above but this is the solder side)
- project.cache.lib Cache file of the libraries used in the schematic (backup of the components used)
- ~/.config/kicad - stores recent files opened, last font and a few other user preferences
- ~/.config/kicad-common - store preference of editor.
- ~/.config/eeschema - store preferences of eeschema including Template Field Names
Features - Future
Components of Kicad
- Schematic Entry - SVG -pdf output
- Hierarchical Schematic Support
- PCB layout
- DRC (Design Rule Check)
- Cross probing between Schematic and layout
- BOM support with user attributes
- Advanced Distributed Library
- Mechanical import export
- Simulator via Qucs
- Automatic placement
- Ground planes/zone support with cutouts, rounded corners
- Trace length support
- Microwave traces (experimental )
- 3D display via WINGS3D - Blender
- Multiple router support
- Advanced CAM output Gerber - drill files etc
- Gerber viewer for checking CAM output
- graphics to foot-print art
New under development Distributed Library System for Kicad's EESCHEMA
- Coming soon. (Written April 2011 )
- Based on SWEET - a part description language
- Provides new features
- Provides a Parts_list interface from within the schematic, that has a spreadsheet user interface, and ensures all parts provide
the same fields and properties for producing a BOM. The parts list is the internal library source for the current schematic.
- Other schematics can be used as a (read only) library source letting your library management and parts list management, to a
large extent, become a single job.
- Provides support for classical clipboard usage, allowing inter-operation with other software!
- Ability to serve up parts libraries over LAN AND Internet!
- This provides manufactures a way to provide part information from their web sites.
- Potential for paid Library services
- Work from home
- Sweet provides 'inheritance' so one can easily base a new part on a similar part.
- Escheema will no longer know of library files, instead there is a library API which abstracts the actual part information
source. This abstraction allows others to write other applications, library managers plug-ins and more that can be sources of
- Examples of potential Library sources ???
- A new part reference mechanism called LPID(Logical Part ID). An LPID consists of a logical library name, a part name,
and an optional revision. The part name can have one level of "category" in it, allowing the partitioning
of parts into different "directory like" areas within a library source.
- A few Defined terms for SWEET
- A part is a symbolic schematic circuit element found within an EESCHEMA library (or within a parts list).
- A component is an instantiated part. A component exists within a schematic which has a parts list containing the
part from which the component is instantiated. A component has a unique reference designator, part ref, its own location,
orientation, stuff/DNS, and text attributes but not its own text fields/strings (other than reference designator). The part
which is instantiated must exist in the parts list of the same schematic.
- Library Source
- Where parts are found
- Folks that want to contribute might want to look at the
Kicad Project Manager and functions common to all subprograms
- Seek mouse position - move to x y entry for exact positioning. <some-letter> x y - enter sends the cursor off to x,y (
<some-letter> could be 'c' for coordinate ). This is quite helpful during move and drawing operations.
- Horizontal and vertical line constraint for line items, copy placement etc. A lot of drawing packages use holding a key down
(shift, alt,cntl etc) to constrain the second point to 0,45, and 90 deg.
- Versioning should be a function built in to the kicad project manager - don't think it would take much - see
- Archive project should archive the doc files associated with the project.
- Archive project should archive the 3d files associated with the project.
- Archive should archive the subdirectories in the project folder
- There needs to be a way to create a lib with all the parts, modules
used in a project and at the same time save a copy of all the
associated document (PDF) files.
- A way to clone projects, so libraries and all other settings can be the same.
- The option to create a new project directory for every new project.
- Provide Automation by embedding Lua into the KiCAD. Many of the
features can be developed and distributed and shared among users as
Lua scripts giving a lot of flexibility of usage.
- Schematic symbol alternates
- When placing components such as passives (mainly R's and C's) you
come across the common problem that you draw the symbol either
horizontally or vertically, but when you place the component it could
be in one of four orientations, but generally you only need two
versions that can be mirrored. (bridge circuits need a 45 - makes 3
- Auto-place/auto increment labels - such as placing a wires of a bus
d1,d2,d3 ... A gadget to place short wires with labels with a
click a wire.
- A part ought to be able to have more than one Doc file associated with a part *
Needs Pin-swap and gate-swap!
- a better way to select overlapping fields (Tab key?)
- Lack of IEC60616 symbols in the standard symbol library. But of course, you will find them somewhere at the net.
- Should be able to add properties to nets (diff, power, min/max length, etc)
- A Room or Location field/property for components. This would allow
the engineer to specify to the designer which parts go together.
Can't just be one of the existing custom fields because parts in a
complex hierarchy page would get the same property in each
- Click to select, multi-select
- repeat paste after copy (instead of having to start a new copy each time you want to copy an item)
- copy and paste between schematics
- Ability to lock pads of modules or turn off the "move pad
'feature'" Accidental movement of a pad can cost a revision cycle. ( The
need to move a pad without changing the module is something I've never
run into - I have to scratch my head and wonder why this
so-called 'feature' was introduced. )
- The ability to make pads with a square end and a round end. ( The square end stops at the SOIC body and the lead end is
- Support for rounded corners in square pads ( a corner radius is specified) is almost required for producing lead-free land
patterns. It also greatly improves the performance of stencils. Such corners are now found in the new standards.
- Solder-paste-mask layer and negative-solder-mask layer. To avoid part floating,
there is a way to make custom solder-paste
and solder-mask areas, by turning off those layers in the edit-pad
dialog and creating zones leaving a solder-masked 'X' across large
solder area's under parts(messy), then and using the solder-paste layer
to add area's to put solder paste back on BUT it
is really, really nasty and quite ugly ( see
Pcbnew#Creating_Module_with_Custom_Solder-Paste ). What would be much better, is a way to re-add solder-mask and mask
solder-paste areas to reduce the solder-paste under parts that want to 'float-away'.
- Also, many times pads run under chips-bodies where it would be good
to simply mask-out the paste with a line along the part body,
and similarly re-add a solder-masked area under the now
masked-solder-paste area. This takes both a solder-paste-mask and a
negative-solder-mask layer (a solder-mask-mask? or a solder-mask-re-add
layer? A good name escapes me as the solder-mask layer is
really the holes in the solder mask and anything I think of sounds
- Rendering of Value should default to off on start-up
- Push routing mode: allowing to push other tracks around while you route a new track.
- Change internal units to metric! .001mm internal units? (or smaller?)
- All 4 orientations of reference designator rotation and/or a way to globally rotate reference designators - or set the preferred
orientations for a project (normally up - and right or up and left)?
- When saving all the modules contained in a pcb - there needs to be a
way to also save the Document(PDF) files and 3D images that go
with the PCB. (Might it be a good idea to save the Document and 3D
files in subdirectories based on name of the .moc file? ie Module
file name = my.moc then a dir named my_pdf would have the docs and
my_3d would have the 3d models.) The goal should be the creation of
a tar that backs up every possible part of a project so it can be
passed to a co-worker or backed up as a point in time.
- Make a net invisible (e.g. GND)
- Instead of initial parts placement all stacked up - the parts would be spread with some similarity to the position in eeschema
- Footprint wizards/plugins (following IPC models, etc..), you give
A,B,C,D,E spacings/parameters, get a preview of the footprint on
the windows, then setup the density level, and finally add the part to
Impedance Control features
- Differential net tagging on schematic, differential net routing on pcb.
- Support for curved tracks
- Support for fillet corners
- Support for rounded miters
- Length matching
- Stipline support
- Lib-browse from within libedit
- Why isn't .dcm just part of part of a .lib file ? There should
be a transition to unify these files and then remove the .dcm (
- Should have it's own color settings.
- Ability to mirror layer
- Display location and size information for selected geometry.
- Layer names (based on file name by default).
- Re-ordering of layers.
- Easy toggling of layer visibility (select ranges of layers to toggle, etc).
- Interactive layer offset, rotation and mirror.
- Ability to panelize a project - and combine multiple PCBs to one Gerber - and add scoring fabrication lines.
Building from source
- Debian centric - build to package
extract this into /usr/src
If some dependency is missing it will complain about it - install the dependency and try again.
The scrip you run is listed here - might help non Debian linux users
apt-get install bzr \
revnu=`bzr revno lp:~kicad-product-committers/kicad/product`
if [ ! -d $d ]; then
echo "Create kicad-bzr and checkout"
mkdir -p $d
bzr checkout lp:~kicad-product-committers/kicad/product $d/kicad
bzr checkout lp:~kicad-developers/kicad/doc $d/kicad-doc
bzr checkout lp:~kicad-product-committers/kicad/library $d/kicad-library
# need to do update here..
bzr update $d/kicad
bzr update $d/kicad-doc
bzr update $d/kicad-library
mkdir -p c$
cp -a -r $d/* $c
# link to a copy of the boost tar ball as the download is not reliable.
#mkdir -p $c/kicad/.downloads-by-cmake/
#if ! [ -L $c/kicad/.downloads-by-cmake/boost_1_54_0.tar.bz2 ]; then
# ln -s kicad-buildme/boost_1_54_0.tar.bz2 $c/kicad/.downloads-by-cmake/boost_1_54_0.tar.bz2
tar czf $tgz $c
rsync -au /usr/src/kicad-buildme/kicad-w-scripting-packaging/debian /usr/src/$c/
echo "kicad (0.0."$revnu"-1) unstable; urgency=low" > tmp
echo >> tmp
echo " * Updated daily build" >> tmp
echo >> tmp
echo " -- "$USER "<firstname.lastname@example.org> "$(date -R) >> tmp
echo >> tmp
cat tmp changelog >> changelog.new
mv changelog changelog.bkup
mv changelog.new changelog
dpkg-buildpackage -b -uc -us
This debian directory is maintened at lp:~js-reynaud/+junk/kicad-package
Related Software Tools