The following information may have errors; It is not permissible to be read by anyone who has ever met a lawyer.

Use is confined to Engineers with more than 370 course hours of electronic engineering for theoretical studies. <p> ph +1(785) 841-3089 Email


From Transwiki
Jump to: navigation, search


[edit] Kicad

[edit] 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 notes
  • Bitmap2Component Converts bitmap images to filled polygons
  • wings3d - 3d view - good way to waste a lot of time..

[edit] Things that are Common to all the different kicad programs

Common Key Strokes of Kicad - Worth Memorizing
mouse wheel zooms (needs to be a bit finer (2006-08-28))
F1 Zoom in
F2 Zoom out
F3 Re-paint
Mouse-wheel click or F4 Center drawing at cursor
M Move
R Rotates
X Mirrors over X axis
Y Mirrors over Y axis
N Orient Normal (Remove mirror, rotation)
A Add component
Space Zeros relative coordinates at cursor
Left-click get object info - displays in bottom bar
Left-double-click Edit part
left-click-drag Block Select - and move - left click drops
Shift+Left-click-drag Block copy - and move - left click drops
CNT+Shift+Left-click-drag Block delete
Right-Click Context menu (repeat cancels menu)
Del Deletes
Insert 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
pg-up Copper layer
pg-down Components layer
V Place 'Via' when routing track
F Flip footprint
M Move footprint (disconnect from tracks)
G Grab footprint (tracks are stretched)
R Rotate footprint
T Get? and move footprint
L Toggle footprint lock (glue)
O 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 'y'.

[edit] The programs that makeup Kicad

[edit] kicad navigator

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 eeschema!
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

[edit] Navigator Procedures - Project level Tasks

[edit] Incrementing the file names of a Project

After making the first version of a schematic and a board - lets say named ( 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 = widgit1.3

$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

Open the new .pro with the project manager, open the schematic and under pagesettings update the version once more..

[edit] Archiving a Project

[edit] External Autorouters

[edit] Freerouter

[edit] MUCS-PCB Autorouter

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.

  • Steps to use ???

[edit] Topological Autorouter

Also not part of kicad - worth listing here for now.

  • Steps to use ??

[edit] 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 above).
  • .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/
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
  • .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)
  • ~/.kicad - stores recent files opened, last font and a few other user preferences
  • ~/.kicad-common - store preference of editor.

[edit] Features - Future

Components of Kicad Click to enlarge
  • 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
  • Simulation
  • 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

[edit] 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 parts.
    • 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
    • Part
      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 Developer information and lurk on the kicad-dev list for a while. Contribution are most welcome, but need to conform to tight coding standard to be useful.

[edit] Wish list:

[edit] 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 Kicad#Incrementing_the_file_names_of_a_Project
  • 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.

[edit] eeschema

  • 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 versions).
  • 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 instantiation.
  • Click to select, multi-select
  • Multi-edit
  • 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

[edit] pcbnew

  • 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 round.)
  • 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'.
Very ugly
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 confusing )

  • 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
  • Support for pad stacks
  • 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 the library.

[edit] 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

[edit] libedit

  • 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 ( ping)

[edit] Module Editor

  • Should have it's own color settings.

[edit] Gerb View

  • 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.

[edit] Qucs

[edit] FreeRouter

[edit] Topor

[edit] Wings3D

[edit] Building from source

  • Debian centric - build to package

Download kicad-buildme.tar.gz

extract this into /usr/src


$ /usr/src/kicad-buildme/kicad-w-scripting-packaging/debian/

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 update
apt-get  install bzr \
            bzrtools \
            build-essential \
            cmake \
            cmake-curses-gui \
            debhelper \
            doxygen \
            grep \
            libbz2-dev \
            libcairo2-dev \
            libglew-dev \
            libssl-dev \
            libwxgtk2.8-dev \

revnu=`bzr revno lp:~kicad-product-committers/kicad/product`
#c=kicad-0.0.$(date +%Y%m%d)
#tgz=kicad_0.0.$(date +%Y%m%d).orig.tar.gz

cd /usr/src

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/
cd /usr/src/$c/debian
echo "kicad (0.0."$revnu"-1) unstable; urgency=low" > tmp
echo  >> tmp
echo "  * Updated daily build" >> tmp
echo >> tmp
echo " -- "$USER "<>  "$(date -R) >> tmp
echo  >> tmp
cat tmp changelog >>
mv changelog changelog.bkup
mv changelog
cd ..
dpkg-buildpackage -b -uc -us

This debian directory is maintened at lp:~js-reynaud/+junk/kicad-package

[edit] Related Software Tools

[edit] further reading

Personal tools