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. |
