Root/fisl2012/talk.tex

Source at commit c52e2b902a82c1a2acb88d7414d5463c31f81a7d created 7 years 3 months ago.
By Werner Almesberger, fisl2012/: fix some typos
1\documentclass[12pt,trans]{beamer}
2\usepackage{color}
3\usepackage{url}
4\usepackage{colortbl}
5%\usepackage{soul}
6%\usepackage{verbatim}
7\usefonttheme{structurebold}
8\setbeamertemplate{navigation symbols}{}
9\setbeamertemplate{items}[ball]
10%\setbeamersize{sidebar width left=-5mm}
11\title{\Large Making Hardware \\ with KiCad and Friends}
12\author{Werner Almesberger \\\url{werner@almesberger.net}}
13\date{July 24, 2012}
14
15%\setul{}{1.5pt}
16
17\begin{document}
18
19\begin{frame}
20\titlepage
21\end{frame}
22
23% --- Overview ----------------------------------------------------------------
24
25\begin{frame}{Overview}
26\begin{itemize}
27  \item KiCad introduction
28  \item Qi-Hardware workflow
29  \item $\dots$ and tools
30\end{itemize}
31
32{\small \url{downloads.qi-hardware.com/people/werner/fisl13.pdf}}
33\end{frame}
34
35% --- KiCad Introduction ------------------------------------------------------
36
37\begin{frame}{KiCad}
38\begin{itemize}
39  \item Complete EDA solution
40  \item Text files $\rightarrow$ extensible
41  \item Free Software: GPL, LGPL
42  \item Development team by Jean-Pierre Charras, \\
43    Dick Hollenbeck, and many others
44  \item C++, wxWidgets
45  \item Multi-platform: Linux, Windows, Mac
46\end{itemize}
47
48\vskip5mm
49{\small \url{www.kicad-pcb.org}}
50\end{frame}
51
52% --- Schematics --------------------------------------------------------------
53
54\begin{frame}{KiCad: Schematics}
55eeschema + component editor: netlist, BOM
56
57SCREENSHOTS
58\end{frame}
59
60% --- Layout ------------------------------------------------------------------
61
62\begin{frame}{KiCad: Layout}
63cvpcb + pcbnew + module editor -> gerbers (gerbv)
64
65SCREENSHOTS
66\end{frame}
67
68% --- Qi-Hardware -------------------------------------------------------------
69
70\begin{frame}{Qi-Hardware}
71Structure and goals:
72\begin{itemize}
73  \item Collection of loosely connected projects
74  \item Informal gathering of like-minded developers
75  \item Copyleft Hardware with Free Software
76  \item Development and manufacturing
77  \item Toolmaking
78\end{itemize}
79
80Products:
81\begin{itemize}
82  \item Ben NanoNote (Handheld computer)
83  \item Ben-WPAN (IEEE 802.15.4 wireless)
84  \item Milkymist One (FPGA-based Video synthesizer)
85\end{itemize}
86
87\vskip2mm
88{\small \url{www.qi-hardware.com}}
89\end{frame}
90
91% --- Collaborative Design ----------------------------------------------------
92
93\begin{frame}{Collaborative Design}
94\begin{itemize}
95  \item Follow other people's work
96  \item Review other people's work (projects and libraries)
97  \item Shared design information
98  \item Shared version control (git)
99  \item Shared procedures and rules
100\end{itemize}
101\end{frame}
102
103% --- KiCad Limitations -------------------------------------------------------
104
105\begin{frame}{KiCad Limitations}
106\begin{itemize}
107  \item No integrated version control system support
108  \item Integration leads to weak peripheral tools
109    \begin{itemize}
110      \item Footprint editor
111      \item Component catalog
112      \item Module catalog
113    \end{itemize}
114  \item No scripting (coming)
115  \item Scattered libraries CHECK
116\end{itemize}
117\end{frame}
118
119% --- Qi-Wardware Adaptation --------------------------------------------------
120
121\begin{frame}{Qi-Hardware Adaptation}
122\begin{itemize}
123  \item Command-line-oriented use
124  \item Extend KiCad with patches
125  \item External scripts/programs
126  \item Own component and module libraries with common rules
127\end{itemize}
128\end{frame}
129
130% --- Libraries ---------------------------------------------------------------
131
132\begin{frame}{Libraries}
133Goals:
134\begin{itemize}
135  \item Consistent naming
136  \item Known origin of design information
137  \item Documented development process \\
138     E.g., IPC-7351
139\end{itemize}
140
141To do:
142\begin{itemize}
143  \item Improve organization
144  \item Better integrate background information
145  \item Reviews !
146\end{itemize}
147
148\vskip4mm
149% URL http://projects.qi-hardware.com/index.php/p/kicad-libs/source/tree/master/components/
150{\small \url{tiny.cc/p/kicad-libs-components}} \\
151% URL http://projects.qi-hardware.com/index.php/p/kicad-libs/source/tree/master/modules/
152{\small \url{tiny.cc/p/kicad-libs-modules}}
153\end{frame}
154
155% --- What goes into git ------------------------------------------------------
156
157\begin{frame}{What goes into git}
158KiCad:
159\begin{itemize}
160  \item Project file: {\tt {\em project}.pro}
161  \item Schematics: {\tt {\em project}.sch}, {\tt {\em subsheet}.sch}
162  \item Footprint mapping: {\tt {\em project}.cmp}
163  \item Layout: {\tt {\em project}.brd}
164\end{itemize}
165
166Qi-Hardware:
167\begin{itemize}
168  \item Makefile ({\tt sch}, {\tt brd}, {\tt fab}, {\tt clean})
169  \item Bookshelf (for dsv)
170  \item Project-local libraries
171\end{itemize}
172\end{frame}
173
174% --- What doesn't ------------------------------------------------------------
175
176\begin{frame}{What doesn't}
177\begin{itemize}
178  \item Netlist: {\tt {\em project}.net} \\
179    Generated with eeschema from {\tt *.sch} and {\tt {\em project}.cmp}
180  \item Caches and backups: {\tt {\em project}.bak}, {\tt {\em project}.000},
181    {\tt {\em project}-cache.lib}
182  \item Postscript: {\tt {\em project}-{\em sheet}.ps},
183    {\tt {\em project}-{\em layer}.ps}
184  \item Gerbers: {\tt {\em project}-{\em layer}.g{\em ??}}
185  \item BOMs: {\tt {\em project}.lst}, {\tt {\em project}.cvs}
186  \item Fab outputs: {\tt {\em project}.drl}, {\tt {\em project}.pos}
187  \item And so on: {\tt {\em project}.cad}, {\tt {\em project}.erc},
188    {\tt {\em project}.dsn}, {\tt {\em project}.rpt},
189    {\tt {\em project}.wrl}, $\ldots$
190\end{itemize}
191\end{frame}
192
193% --- Project File ------------------------------------------------------------
194
195\begin{frame}{Project File ({\tt {\em project}.pro})}
196
197Contains:
198\begin{itemize}
199  \item Project settings
200  \item Lists of libraries
201\end{itemize}
202
203Issues:
204\begin{itemize}
205  \item Local absolute paths
206  \item Default libraries
207  \item Timestamps $\rightarrow$ commit noise
208\end{itemize}
209
210Solution:
211\begin{itemize}
212  \item Maintain manually
213  \item {\tt purge} script: \\
214% URL http://projects.qi-hw.com/index.phpp/wernermisc/source/tree/master/bin/purge
215{\small \url{tiny.cc/wernermisc-bin-purge}}
216\end{itemize}
217\end{frame}
218
219% --- Makefile ----------------------------------------------------------------
220
221\begin{frame}[fragile]{Makefile}
222Objectives:
223\begin{itemize}
224  \item Convenience shortcuts
225  \item Combine tools
226  \item Share common procedures
227  \item Avoid mistakes
228\end{itemize}
229
230{\small
231\begin{verbatim}
232front:
233    pcbnew --plot=ps --plot-fill-all-zones \
234       --layers=Front --plot-mirror \
235       $(PROJECT).brd
236    lpr $(PROJECT)-Front.ps
237\end{verbatim}
238}
239\end{frame}
240
241% --- KiCad Command-Line Patches ----------------------------------------------
242
243\begin{frame}{KiCad Command-Line Patches}
244Original hack by Werner Almesberger, clean rewrite by Wolfgang Spraul.
245\begin{itemize}
246  \item Idea: command-line access to main output functions
247  \item eeschema
248    \begin{itemize}
249      \item Visualization: Postscript (and SVG, DXF)
250      \item BOM $\rightarrow$ BOOM
251      \item Netlist, ERC
252    \end{itemize}
253  \item pcbnew
254    \begin{itemize}
255      \item Fabrication: Gerbers, drill (Excellon), component positions
256      \item Visualization and DIY: Postscript
257      \item Attributes: mirror, size, origin, fill zones, $\ldots$
258    \end{itemize}
259\end{itemize}
260
261\vskip5mm
262% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/kicad-patches/
263{\small \url{tiny.cc/eda-tools-kicad-patches}}
264\end{frame}
265
266% --- Data Sheet Viewer (dsv) -------------------------------------------------
267
268\begin{frame}[fragile]{Data Sheet Viewer (dsv)}
269\begin{itemize}
270  \item Bookshelf: name and aliases $\rightarrow$ PDF or ZIP with PDF
271  \item Download (wget) to local cache
272  \item Hierarchical lookup by name or alias
273  \item Example: \\
274    {\tt dsv avr} $\rightarrow$ ATtiny87 ({\tt doc8265.pdf})
275      $\rightarrow$ xpdf
276\end{itemize}
277
278\vskip5mm
279Bookshelf example:
280
281\begin{verbatim}
282N: attiny87
283A: attiny167
284A: avr
285D: http://www.atmel.com/Images/doc8265.pdf
286\end{verbatim}
287\end{frame}
288
289% --- Data Sheet Viewer (dsv) -------------------------------------------------
290
291\begin{frame}{dsv Motivation}
292\begin{itemize}
293  \item Make sure everybody uses the same data sheet
294    \begin{itemize}
295      \item Same component
296      \item Same manufacturer
297      \item Same data sheet revision
298    \end{itemize}
299  \item Copyright: can't just check in PDF
300  \item Industrial pragmatism: private mail or ``internal'' repository
301  \item Qi-Hardware: send {\tt BOOKSHELF} around
302\end{itemize}
303
304\vskip10mm
305% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/dsv/
306{\small \url{tiny.cc/eda-tools-dsv}}
307\end{frame}
308
309% --- Schematics Symbol Catalog ----------------------------------------------
310
311\begin{frame}{Schematics Symbol Catalog}
312\begin{itemize}
313  \item For selection, review
314  \item Hierarchical order with alphabetical index
315  \item Short descriptions and data sheet links
316  \item Added value: indicate pin types
317  \item To do: connect to dsv
318\end{itemize}
319
320\begin{center}
321  \includegraphics[width=1.0\textwidth]{cat-comp.pdf}
322\end{center}
323\end{frame}
324
325% --- Schematics History ------------------------------------------------------
326
327\begin{frame}{Schematics History}
328\begin{itemize}
329  \item Schematics revision history
330  \item {\tt git diff} produces gibberish
331\end{itemize}
332
333\begin{center}
334  \includegraphics[height=4.5cm]{../fisl2011/schhist.png}
335  \qquad
336  \includegraphics[height=4cm]{../fisl2011/USB.png}
337\end{center}
338
339{\small \url{projects.qi-hardware.com/schhist/}}
340\end{frame}
341
342% --- Schematics History (cont'd) ---------------------------------------------
343
344\begin{frame}{Schematics History (cont'd)}
345How it works:
346\begin{itemize}
347  \item Walk git revision history
348  \item Check out project whenever schematics change
349  \item Run eeschema to make Postscript
350  \item Convert to PNG (find diffs, with highlighting) and PDF
351  \item Wrap in HTML
352\end{itemize}
353
354Issues:
355\begin{itemize}
356  \item Nasty shell script
357  \item Resource-hungry (partial caching)
358  \item Large schematics get confusing
359  \item Projects spanning multiple repositories
360\end{itemize}
361
362% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/schhist/
363{\small \url{tiny.cc/eda-tools-schhist}}
364\end{frame}
365
366% --- Footprint Catalog ------------------------------------------------------
367
368\begin{frame}{Footprint Catalog}
369\begin{itemize}
370  \item Like schematics symbol catalog, but for footprints
371  \item Added value: measurements, pad types
372\end{itemize}
373
374\begin{center}
375  \includegraphics[width=1.0\textwidth]{cat-mod.pdf}
376\end{center}
377
378% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/genkicat/
379{\small \url{tiny.cc/eda-tools-genkicat}}
380\end{frame}
381
382% --- Fped --------------------------------------------------------------------
383
384\begin{frame}{Footprint Editor (fped)}
385\begin{center}
386  \includegraphics[height=45mm]{../fisl2011/fped.png}
387\end{center}
388
389\begin{itemize}
390  \item Fully parametric
391  \item Automated repetition (loops, tables, sub-frames)
392  \item GUI or text-based
393  \item Automatic measurements
394  \item Output: KiCad, Postscript, Gnuplot
395\end{itemize}
396\end{frame}
397
398% --- Layout History ----------------------------------------------------------
399
400\begin{frame}{Layout History}
401\begin{itemize}
402  \item Layout revision history
403  \item To do $\ldots$
404\end{itemize}
405
406\vskip5cm
407%% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/brdhist/
408% {\small \url{tiny.cc/eda-tools-brdhist}}
409\end{frame}
410
411% --- Gerber Renderer ---------------------------------------------------------
412
413\begin{frame}{Gerber Renderer (prettygerbv)}
414\begin{columns}
415  \begin{column}[l]{8.5cm}
416    \begin{itemize}
417      \item ``Photorealistic'' view of PCB
418      \item Combines Gerber (traces, drawings) and Excellon (holes)
419      \item Easy to see issues with solder paste, silk screen,
420        solder mask, $\ldots$
421      \item Uses gerbv for rendering
422    \end{itemize}
423\vskip10mm
424% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/fab/prettygerbv/
425{\small \url{tiny.cc/p/eda-tools-fab-prettygerbv}}
426% MORE ??
427% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/fab/
428{\small \url{tiny.cc/p/eda-tools-fab}}
429  \end{column}
430
431  \begin{column}[r]{4cm}
432    \includegraphics[width=3cm]{../fisl2011/atusb-front.png}
433  \end{column}
434\end{columns}
435
436\end{frame}
437
438% --- BOM Processor -----------------------------------------------------------
439
440\begin{frame}{BOM Processor (BOOM)}
441\begin{itemize}
442  \item BOM $\rightarrow$ select components $\rightarrow$ find supplier
443     $\rightarrow$ \\
444     shopping list
445  \item Work in progress. Rewrite from Perl to C
446    \begin{itemize}
447      \item Faster
448      \item Less headache with data structures
449      \item Better parsing
450    \end{itemize}
451  \item Snag: Digi-Key spider no longer works
452  \item Future: help with component selection
453\end{itemize}
454
455% URL http://projects.qi-hardware.com/index.php/p/eda-tools/source/tree/master/b2/
456{\small \url{tiny.cc/p/eda-tools-b2}}
457\end{frame}
458
459% --- BOOM Data Flow ----------------------------------------------------------
460
461\begin{frame}{BOOM Data Flow}
462DRAWING
463\end{frame}
464
465% --- Schematics Design Rules -------------------------------------------------
466
467\begin{frame}{Schematics Design Rules}
468...
469
470{\small \url{en.qi-hardware.com/wiki/Rules_on_Editing_Schematics}}
471\end{frame}
472
473% --- Qi-Hardware Workflow ----------------------------------------------------
474
475\begin{frame}{Qi-Hardware Workflow}
476DIAGRAM
477\end{frame}
478
479% --- Conclusion --------------------------------------------------------------
480
481\begin{frame}{Conclusion}
482Experience this far:
483\begin{itemize}
484  \item KiCad is a good basis for collaborative projects
485  \item Open design allows extension with scripts
486  \item Workflow is complex and needs careful consideration
487\end{itemize}
488
489To do:
490\begin{itemize}
491  \item Spread the word
492  \item Unify meta-data (bookshelf, etc.)
493  \item Improve quality of libraries
494  \item Integrate patches into mainline KiCad
495  \item Finish BOOM and write brdhist
496\end{itemize}
497
498\vskip2mm
499{\small \url{downloads.qi-hardware.com/people/werner/fisl13.pdf}}
500\end{frame}
501
502\end{document}
503

Archive Download this file

Branches:
master



interactive