Werner's Miscellanea
Sign in or create your account | Project List | Help
Werner's Miscellanea Git Source Tree
Root/
Source at commit 72b587faab1b0de551e8735e332a7f23bb67edd7 created 11 years 8 months ago. By Werner Almesberger, fisl2012/talk.tex: some more small changes | |
---|---|
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} |
55 | eeschema + component editor: netlist, BOM |
56 | |
57 | SCREENSHOTS |
58 | \end{frame} |
59 | |
60 | % --- Layout ------------------------------------------------------------------ |
61 | |
62 | \begin{frame}{KiCad: Layout} |
63 | cvpcb + pcbnew + module editor -> gerbers (gerbv) |
64 | |
65 | SCREENSHOTS |
66 | \end{frame} |
67 | |
68 | % --- Qi-Hardware ------------------------------------------------------------- |
69 | |
70 | \begin{frame}{Qi-Hardware} |
71 | Structure 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 | |
80 | Products: |
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} |
133 | Goals: |
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 | |
141 | To 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} |
158 | KiCad: |
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 | |
166 | Qi-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 | |
197 | Contains: |
198 | \begin{itemize} |
199 | \item Project settings |
200 | \item Lists of libraries |
201 | \end{itemize} |
202 | |
203 | Issues: |
204 | \begin{itemize} |
205 | \item Local absolute paths |
206 | \item Default libraries |
207 | \item Timestamps $\rightarrow$ commit noise |
208 | \end{itemize} |
209 | |
210 | Solution: |
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} |
222 | Objectives: |
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} |
232 | front: |
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} |
244 | Original 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 |
279 | Bookshelf example: |
280 | |
281 | \begin{verbatim} |
282 | N: attiny87 |
283 | A: attiny167 |
284 | A: avr |
285 | D: 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)} |
345 | How 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 | |
354 | Issues: |
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} |
462 | DRAWING |
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} |
476 | DIAGRAM |
477 | \end{frame} |
478 | |
479 | % --- Conclusion -------------------------------------------------------------- |
480 | |
481 | \begin{frame}{Conclusion} |
482 | Experience 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 | |
489 | To 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 |
Branches:
master