FreeCalypso > hg > ueda-linux
comparison ueda/doc/bom_model.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 Bill of Materials (BOM) handling in uEDA | |
2 | |
3 There are a number of reasons why one may want to have a BOM for a board design: | |
4 | |
5 * To have a list of all components outside of schematic drawing files | |
6 * To have a list of PCB land patterns for pre-layout (see prelayout.txt) | |
7 * For purchasing or other part procurement | |
8 * For handing to assemblers (those who populate the parts on the board) | |
9 * For quick reference | |
10 | |
11 Although one is often tempted to get away with keeping the "BOM" information in | |
12 his head, a formal BOM is a good thing to have. | |
13 | |
14 OK, so we are going to have a BOM. But what exactly is the BOM in precise | |
15 terms, and what is its format? uEDA provides several different facilities for | |
16 BOM handling. | |
17 | |
18 The MCL | |
19 | |
20 Whether or not you are interested in any of the other BOM formats, you have to | |
21 have the MCL. It is a critical part of the design source code in the uEDA flow | |
22 model. It's a human-created and human-edited text file described in great | |
23 detail in mcldoc.txt. | |
24 | |
25 Having a simple and intuitive text-based format, MCL can be readily viewed and | |
26 printed. As it contains the complete information about all components in the | |
27 design, i.e., all BOM information, it is in itself a type of BOM. It is in a | |
28 way "the ultimate BOM". There are, however, a few situations in which other | |
29 BOM formats are desirable. | |
30 | |
31 Procurement BOM | |
32 | |
33 You write the MCL for your design. For each component you enter all the | |
34 attributes that you may need for procurent: manufacturer, | |
35 manufacturer_part_number, vendor, vendor_part_number, etc. But now it's | |
36 actually time to order the parts. What quantity of what part numbers do you | |
37 order? All necessary information is in the MCL, but it isn't at all obvious | |
38 for filling out order forms. One really needs a distilled BOM for procurement. | |
39 | |
40 The ueda-mkbom utility generates a procurement-oriented BOM from the MCL. | |
41 First it reads the MCL and makes note of all components that have been reduced | |
42 to parts. (Components that haven't been reduced to parts are ignored, though | |
43 the user can request that a warning be issued. You need to reduce all | |
44 components to parts for this function to be useful, see mcldoc.txt for the | |
45 details.) All multiple instances of each part are tallied together. | |
46 Finally, output is emitted which is centered around parts with a quantity for | |
47 each, rather than around reference designators. (A list of refdes'ed components | |
48 using each part can optionally be emitted.) Each entry is given a heading and | |
49 usually some comment lines based on part attributes from the MCL which are | |
50 deemed relevant to the procurement BOM. See mcldoc.txt for the details. | |
51 | |
52 One can generate procurement BOMs for different population options, see below. | |
53 | |
54 The procurement BOM generated by ueda-mkbom is plain text formatted on the | |
55 assumption of 80 columns of fixed character spacing. It is thus suitable for | |
56 both online viewing and printing. | |
57 | |
58 Short BOM | |
59 | |
60 For purposes other than procurement of parts, component reference designators | |
61 do matter, and a BOM organised and sorted by the component refdes is the right | |
62 format. MCL is such a format, and oftentimes it serves quite well. | |
63 | |
64 Sometimes however, it is desirable to have a "short BOM" that is ordered by | |
65 the component refdes like the MCL, but follows a tabular format with one line | |
66 per component and with columns corresponding to a few attributes deemed most | |
67 useful. | |
68 | |
69 The ueda-shortbom utility generates such a "short BOM" with 4 columns: refdes, | |
70 manufacturer, part number and description. The manufacturer and description | |
71 columns are taken from the identically named MCL attributes; the part number | |
72 column is taken from the manufacturer_part_number= attribute if one is defined, | |
73 otherwise the device= attribute is used instead. If neither attribute is | |
74 defined, the string "unknown" is substituted. The same holds for the | |
75 manufacturer column. The description column is left blank if no description= | |
76 attribute is defined. | |
77 | |
78 The intent is that the MCL would be used directly only by the board designer | |
79 himself, who would of course be intimately familiar with the UNIX environment, | |
80 the workings of uEDA and its file formats, and the way his particular MCL is | |
81 structured, whereas the short BOM would be given to lab technicians and others | |
82 who are not UNIX-based intellectual creators. | |
83 | |
84 ueda-shortbom can generate plain text output that is directly usable for viewing | |
85 and printing in a fixed character spacing environment, but it usually ends up | |
86 needing more than 80 characters per line and thus a pain to work with. | |
87 ueda-shortbom can also produce output with columns separated by ASCII tab | |
88 characters irrespective of field widths; such output is useful for post- | |
89 processing. UNIX tbl(1) and troff(1) can be used to produce a very pretty | |
90 hard copy (PostScript) version of the short BOM. | |
91 | |
92 Assembly BOM | |
93 | |
94 An assembly BOM is exactly the same as the short BOM described above, but has | |
95 one difference: if a component is to be socketed, the information put in the | |
96 corresponding columns of the assembly BOM is that for the socket part, rather | |
97 than for the component to be pushed into the socket. The assembly BOM is thus | |
98 exactly what you need to give to those who will be stuffing parts on your board | |
99 and running it through the reflow oven. | |
100 | |
101 An assembly BOM is generated by the ueda-shortbom utility with the -a option. | |
102 Since one would need to generate different assembly BOMs for different | |
103 population options (assuming that the document is intended for those who will | |
104 follow it blindly), ueda-shortbom supports population options as well. | |
105 See the ueda-shortbom(1) man page for details. | |
106 | |
107 If your design uses no socketed parts and no population options, the short BOM | |
108 and the assembly BOM would be identical. | |
109 | |
110 Population options | |
111 | |
112 uEDA supports designs with population options, i.e., ones in which some | |
113 components may or may not be populated as a manufacturing option. They are | |
114 described in this document because the BOM is really the only part of the uEDA | |
115 flow for which population options matter. The PCB obviously has to have | |
116 footprints for all components that may ever be populated on it and the | |
117 schematics normally show the interconnections for all possible components as | |
118 well. The BOM is the only part that is made in multiple versions for different | |
119 population options. | |
120 | |
121 In order to support population options, each component in the design (i.e., in | |
122 the MCL) is assigned to a numbered population group. Population groups are | |
123 identified by integers and a component is assigned to a given population group | |
124 via the population_option= attribute in the MCL. Components without this | |
125 attribute are assigned to population group 0, the default. | |
126 | |
127 When generating a BOM for a given population option, specify the list of | |
128 population groups to be included (see ueda-mkbom(1) and ueda-shortbom(1)). | |
129 The default population option consists of population group 0, i.e., running | |
130 ueda-mkbom or ueda-shortbom without any options counts only those components | |
131 which do not have a population_option= attribute. |