Kicad PCB toolset changed a lot over last two years. Great contribution from CERN is merged with stable release on one hand, new library format and projects migration necessity on the other. Meantime Freerouter cooperative tool disappeared and my reluctance to move was justified. Until recently when I gave migration a try.
Time saving push-and-shove capabilities that I tried long time ago are now part of regular bundle. Whole bunch of new convenience functions is impressing so that moving to latest-gratest version of Kicad is natural. It is also zero-effort task as long as you do not have your own components and footprint libraries. I have my own where I keep tens of items that were missing in Walter’s library, the library I use almost exclusively since the beginning of my Kicad adventure.
First I made a backup copy of current Kicad BZR4022 version and installed BZR6032 latest version at a time to start discovery of new approach to library. Component for eeschema looked similar but footprints management were moved to new level. New approach allows reference to online libraries (github), quite handy. As I prefer offline version I took copy of Walter’s library that was already migrated to new format. As the legacy libraries are also supported I decided to use my assets in read-only mode and create new footprints in new format when necessary (no other options in fact), successively migrating old ones if time permits. At this point I found the minor bug manifesting in ERC dialog box. Few weeks later Kicad community fixed it in BZR6177.
For next phase I took logger part of WLS project as it is most complex PBC design I had to migrate. The process looked roughly like this:
- Loading schema and performing ERC check. At this point Kicad tries to migrate components.
- Reassinging footprints. Components in eeschema can have now assigned footprints (back annotated). I prefer old way using .cmp mapping file.
- Regenerating net list.
- Loading net list in PCB editor. I do not use “dry run” since I alway have my projects backed up in versioning system. Watch out for red-marked errors.
- Checking for missing footprint assignments circling between schema editor and pcb editor generating and loading net list.
- Performing DRC check.
- Verifying no parsing errors by reopening all pcb boards.
The only serious problem was slash (/) in footprint names, character that became illegal. For such footprint net list loading produces “No footprint defined for element” error. What is worse PCB design saved cannot be reopened again as pcbnew gives fatal error on board loading.
To fix it I opened .kicad_pcb original file in text editor at line 2777 as error message instructs. The section was pointing out to quartz component as follows:
(module crystal_hc-49/smd (layer F.Cu) (tedit 53650385) (tstamp 53634F85) (at 95.885 58.42) (descr "Crystal, HC-49/SMD") (tags QUARTZ) ...
Saving the board deisng misnamed the module as shown below. Added semicolon was probable source of parsing error on board loading.
(module smd: (layer F.Cu) (tedit 53650385) (tstamp 53634F85)
When I manually fixed module name to “hc-49_smd” it and tried to open again I succeeded. To avoid further problems I have reviewed and renamed all my footprints having slash in the name.
Interactive router shortcuts
Most shortcuts work same way in all modes, like X to start routing, M to move objects or V to place vias. Other interactive router specific were harder to find. I knew some of them from videos yet I could not find ultimate list of all possibilities in documentation. Chapter 9 of pcbnew documentation did not answer my question, neither shortcut list (invoked by Shift+? in pcbnew) did as it does not change across different modes. What I obviously overlooked was chapter on context menus that could shed some light and help to understand that context menu changes on canvas view mode change. After switching from default mode (F9) to OpenGL (F11) or Cairo (F12) modes, that activates interactive router, right mouse click brings different options and their shortcuts for quick keystrokes. Pay attention that menu changes after you start routing process (pressing X) and gets back when skipped routring (ESC pressed).
Push and shove can save half of time spent on manual routing. Granted. Couple hours of intense work later and what I am missing is ability to interactively drag components i.e. moving component in a way that keeps routes connected to pads pushing things around. Having partially routed board makes you realizing better components placement; moving them though disconnects traces that must be redrawn… no problem for couple discrete elements, pain in the ass for tens to hundreds connections of single IC. I keep fingers crossed CERN team place it on enhancements list 😉
Fully automated routing is passé among professional EEs. For hobby work it is nice accelerator, especially combined with push-and-shove. Imagine this: for sensitive fragments of PCB (like switching DC/DCs or microwave parts) you do the manual routing job and then spawn Freerouting tool to wire the rest of it more carelessly.
The new Kicad still teases with that option but www.freerouting.net is down so Kicad bundle gives you grayed out button instead. Porting my offline freerouter for from old to new Kicad would be failure as with the advent of JDK8 old JARs stopped working anyway.
Why there is freerouter shortcut in pcbnew then? The answer is in the Kicad source code — pcbnew will enable middle button when it detects freeroute.jar in Kicad binary directory. Since freerouter source code was GPLed, mirrored and modified, now it can be still compiled and run as standalone co-working Java application.
To enable Freerouter in Kicad:
Download Freerouter from this mirror — https://github.com/freerouting/freerouting
- Extract freerouting-master.zip/binaries/freerouting.jar
- Copy JAR to Kicad bin directory and rename it to freeroute.jar
- Restart Kicad to enable freerouter middle button in pcbnew. Voila!