FreeCalypso > hg > ueda-linux
comparison ueda/doc/overview.txt @ 0:cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 20 Jul 2015 00:24:37 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:cd92449fdb51 |
---|---|
1 Welcome to uEDA, an EDA suite for UNIX! | |
2 (for board level design) | |
3 | |
4 The uEDA project has been inspired by gEDA (http://geda.seul.org/) and intends | |
5 to do for the UNIX culture what gEDA has done for the GNU/Linux culture. | |
6 | |
7 First a disclaimer is in order. Different people write Free Software based on | |
8 different motivations. Like most Free Software written by Michael Sokolov, | |
9 uEDA is based on the "scratching a personal itch" development model. In other | |
10 words, I have written the software to satisfy my own internal need, and I | |
11 don't really care if you like it or not. Please keep this observation in mind | |
12 as you discover that it lacks some feature you need or want, or that its flow | |
13 is not to your liking. I have written it to satisfy *my* needs. I could have | |
14 written it for myself and never released it, but I believe in sharing and | |
15 letting others have what I have (though whether they like it or not is not my | |
16 concern). So there you have it. | |
17 | |
18 uEDA has been written by a hard-core UNIX programmer (as in real UNIX in 4 | |
19 capitals running on Big Iron, not the cheap modern crap), and is designed to | |
20 allow one to design hardware using not only a UNIX host environment, but also | |
21 the intellectual creation flow model associated with the UNIX culture, one that | |
22 revolves around the concepts of source code files, generated files and | |
23 Makefiles. I won't explain these concepts here; if they are foreign to you, | |
24 uEDA is not for you. | |
25 | |
26 Note my choice of words: "the intellectual creation flow model" of the UNIX | |
27 culture, rather than "the UNIX programming model". I fully acknowledge that | |
28 hardware engineering is very different from SW eng, and uEDA does not try to | |
29 "make hardware like software". However, the UNIX culture's intellectual | |
30 creation flow model has already been extended many times to various intellectual | |
31 products other than software. Consider for example an author writing a book in | |
32 troff. The troff source files take the place of C source code, PostScript or | |
33 other typesetter files for the print house take the place of the executable | |
34 binary, and a Makefile is used to drive the flow. The author edits the book | |
35 source files with vi and regenerates the generated files on each iteration by | |
36 running 'make'. It isn't software, but the intellectual creation flow is | |
37 virtually identical. uEDA applies the same model to hardware design. | |
38 | |
39 So what is the source code for hardware, and what is the final product that | |
40 should be generated by 'make all'? Well, the ultimate final product is the | |
41 physical board which you can hold in your hand, but the most "final" product | |
42 that can be made on a computer would be a set of gerber files for PCB | |
43 fabrication, a bill of materials (BOM) for the purchasing or other procurement | |
44 of parts, and a set of assembly instructions to be handed to the assembly line | |
45 workers who populate the parts on the board. The starting source code would | |
46 be the schematic design. | |
47 | |
48 The ultimate UNIX-model EDA suite would thus be one that can generate all final | |
49 manufacturing files from the schematic source code with a single 'make' command. | |
50 uEDA is almost there, except for the layout step. | |
51 | |
52 The problem is that even with the best EDA technology PCB layout still involves | |
53 considerable human effort, and is thus not something that can be done by a batch | |
54 program that works from stdin to stdout. Therefore, the PCB layout file is | |
55 subject to human editing and is not just an intermediate file between schematics | |
56 and gerbers like a .o file in the software compilation flow. | |
57 | |
58 The uEDA solution is to view the job of designing a board as two separate | |
59 intellectual creation jobs, each with its own UNIX-model Makefile-driven flow. | |
60 These two jobs are the design and the layout. uEDA addresses the design. The | |
61 uEDA suite does not really get involved in the layout, but is designed with the | |
62 assumption that the layout will be done with the free & open source PCB program | |
63 (http://pcb.sourceforge.net/). The two are connected by the "pre-layout" step | |
64 described in prelayout.txt. | |
65 | |
66 (Note that such separation of the design and layout jobs is additionally | |
67 supported by the fact that in many engineering companies these jobs are done | |
68 by different people.) | |
69 | |
70 In the design phase addressed by uEDA, the source code is the set of schematic | |
71 sources and the Master Component List (MCL), a human-edited text file documented | |
72 in mcldoc.txt. The products that can be generated from these sources with a | |
73 Makefile are: | |
74 | |
75 * Printable schematics (PostScript or PDF) for documentation; | |
76 * A set of "pre-layout materials" for handing to the PCB layout person; | |
77 * Bill of Materials (BOM) in different formats for part procurement, for | |
78 assembly and for quick reference. | |
79 | |
80 In the layout phase the .pcb that is both read and written by the PCB GUI is the | |
81 source code, and pcb can be invoked from the command line without the GUI to | |
82 generate gerbers, PostScript prints of the layout and other product files from | |
83 it; those generations can be codified in a Makefile, once again creating the | |
84 traditional UNIX flow. | |
85 | |
86 Design source code structure | |
87 | |
88 The source code for a board design in uEDA consists of 3 major parts: | |
89 | |
90 * Information about all components on the board; | |
91 * Electrical interconnect information: how these components are interconnected | |
92 with nets; | |
93 * Graphical information used to construct PostScript prints of the schematic | |
94 sheets. | |
95 | |
96 The core philosophy of uEDA is that these 3 kinds of information should be kept | |
97 as orthogonal as possible. Component information is stored in the Master | |
98 Component List (MCL) documented in mcldoc.txt, whereas the interconnect and | |
99 graphical schematic information is stored in the schematic sheets (.usch files) | |
100 documented in uschemlang.txt. Although the electrical interconnect and | |
101 graphical information are stored together, the uschem language is designed to | |
102 provide a high degree of orthogonality between the two. Schematic sheets can | |
103 be either graphical or non-graphical. | |
104 | |
105 Further reading: | |
106 | |
107 bom_model.txt Describes the uEDA approach to BOM handling | |
108 drc.txt Describes the means for helping ensure a match between the | |
109 actual electrical interconnect and the graphical representation | |
110 graphsyms.txt Information about graphical symbols used on schematic sheets | |
111 mcldoc.txt Master Component List document | |
112 netlisting.txt Describes uEDA's handling of netlist information | |
113 prelayout.txt Describes what I mean by "pre-layout" | |
114 psfeatures.txt Describes the features available in the PostScript prints of | |
115 schematic sheets made with uschem-print(1) | |
116 uschemlang.txt uschem language document | |
117 *.1 Man pages for all uEDA utilities |