FreeCalypso > hg > ueda-linux
comparison ueda/doc/mcldoc.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 uEDA Master Component List (MCL) description | |
| 2 | |
| 3 The MCL is an essential component of the design source code in the uEDA flow. | |
| 4 It is a human-created and human-edited text file which lists all components on | |
| 5 the board being designed and all their attributes. The file must be named | |
| 6 "MCL" (w/o quotes) and must reside in the project directory. This document | |
| 7 describes the file format and everything you need to know in order to write the | |
| 8 MCL for your board. | |
| 9 | |
| 10 Each component on the board must have a reference designator (refdes). Valid | |
| 11 characters for the refdes are uppercase and lowercase letters and digits; the | |
| 12 first character must be an uppercase letter. Lowercase letters are allowed but | |
| 13 not recommended, in particular a refdes should not end in any lowercase letters | |
| 14 - see the description of component instances in netlisting.txt for the | |
| 15 explanation. | |
| 16 | |
| 17 The MCL contains a section for each component of the form: | |
| 18 | |
| 19 refdes: | |
| 20 attribute=value | |
| 21 attribute=value | |
| 22 ... | |
| 23 | |
| 24 Each refdes line must begin in the leftmost column without leading spaces | |
| 25 and end with a colon. It is followed by attribute lines defining various | |
| 26 attributes for the component in question; these attributes are the essence of | |
| 27 the information contained in the MCL. Different attributes are required by | |
| 28 different tools in the uEDA suite and all currently defined attributes are | |
| 29 listed in this document. Attributes are name=value pairs and attribute lines | |
| 30 in the MCL must begin with a tab or space. Both the name and the value must | |
| 31 be present and non-null. For most attributes it is meaningless and illegal to | |
| 32 have multiple attributes with the same name for the same component, but there | |
| 33 are a few attributes which can be given more than once for a given component. | |
| 34 Attribute values may contain spaces. | |
| 35 | |
| 36 Blank lines are ignored and non-processed comments may appear anywhere in the | |
| 37 file introduced by a '#' character. Everything between a '#' character and | |
| 38 the following newline is ignored. | |
| 39 | |
| 40 Here is an example component definition that can appear in the MCL: | |
| 41 | |
| 42 J1: | |
| 43 device=DB25F | |
| 44 footprint=DB25F | |
| 45 description=Connector, DB25F, right angle | |
| 46 manufacturer=AMP | |
| 47 manufacturer_part_number=747846-4 | |
| 48 | |
| 49 If it is desired to define multiple components with the same attributes, the | |
| 50 following shorthand syntax may be used: | |
| 51 | |
| 52 C43,C44,C45,C46,C47,C48,C49: | |
| 53 # Voltage reference capacitors for RS8973 | |
| 54 # schematic page 6 | |
| 55 value=0.22 uF | |
| 56 footprint=0805 | |
| 57 description=Ceramic chip capacitor, X7R, 0.22 uF, 0805 | |
| 58 manufacturer=Panasonic | |
| 59 manufacturer_part_number=ECJ-2VB1C224K | |
| 60 vendor=Digi-Key | |
| 61 vendor_part_number=PCC1816CT-ND | |
| 62 bom_comment=RoHS part, no SnPb version available | |
| 63 | |
| 64 uEDA tools generally process components in the order in which they are defined | |
| 65 in the MCL, thus you should list your components in the MCL in the order in | |
| 66 which you would like them to appear on the BOMs generated from it. In | |
| 67 particular, there is no collating function for the refdes string, so if you have | |
| 68 a collating order in mind for your reference designators, implement it in the | |
| 69 order in which you list them in the MCL. | |
| 70 | |
| 71 Currently defined attributes | |
| 72 | |
| 73 bom_comment= | |
| 74 | |
| 75 This attribute specifies a free-form line of text to be included in the | |
| 76 procurement BOM (generated by ueda-mkbom) for this part. This attribute | |
| 77 may be given more than once in order to include multiple comment lines. | |
| 78 This attribute should be used to include information in the BOM that is | |
| 79 not covered by any other defined attributes. | |
| 80 | |
| 81 bom_part_title= | |
| 82 | |
| 83 This attribute specifies the title line for this part in the procurement | |
| 84 BOM. Normally the title line is constructed from the manufacturer= and | |
| 85 manufacturer_part_number= attributes, but this attribute overrides it. | |
| 86 | |
| 87 description= | |
| 88 | |
| 89 This attribute gives a one line summary description of the component for | |
| 90 BOMs. What information should be included is subjective, but one | |
| 91 starting point is that uEDA-generated BOMs include the information from | |
| 92 the manufacturer= and manufacturer_part_number= attributes, but not from | |
| 93 other attributes like value= or footprint=. Thus if the value and | |
| 94 footprint information is desired, it should be included in the | |
| 95 description, but don't include the manufacturer or the part #. | |
| 96 | |
| 97 device= | |
| 98 | |
| 99 If the component has an associated alphanumeric designation that is | |
| 100 universally recognized and meaningful to someone looking at your design | |
| 101 at the high level (i.e., without getting down to part numbers), it | |
| 102 should be given as the device= attribute. Examples: | |
| 103 | |
| 104 device=74LS04 | |
| 105 device=29F010 | |
| 106 device=41256 | |
| 107 | |
| 108 A good general rule of thumb is that if it isn't obvious what to put in | |
| 109 the device= attribute, you probably shouldn't have this attribute at all | |
| 110 for the component rather than make something up. In particular, basic | |
| 111 semiconductors (diodes and transistors) and passives do not use this | |
| 112 attribute. | |
| 113 | |
| 114 The device= attribute is not currently used very much by uEDA tools, | |
| 115 but it sometimes provides a fallback for the manufacturer_part_number= | |
| 116 attribute if the latter isn't given. | |
| 117 | |
| 118 footprint= | |
| 119 | |
| 120 This attribute facilitates the pre-layout step of the uEDA flow. | |
| 121 See prelayout.txt for the details. | |
| 122 | |
| 123 A value of "none" indicates that the component has no footprint on the | |
| 124 PCB. I admit that the physical meaning of such a specification is a | |
| 125 little unclear, but ueda-getfps will skip such components without error | |
| 126 or warning messages. | |
| 127 | |
| 128 A value of "TBD" (to be determined) means that you realise you need a | |
| 129 footprint, but aren't able to name it yet. ueda-getfps recognizes this | |
| 130 special value and issues an appopriate warning, but doesn't try to look | |
| 131 for an actual footprint named "TBD". | |
| 132 | |
| 133 manufacturer= | |
| 134 | |
| 135 Should be self-explanatory. | |
| 136 | |
| 137 manufacturer_part_number= | |
| 138 | |
| 139 Should be self-explanatory. Meaningless without manufacturer= also | |
| 140 being specified. | |
| 141 | |
| 142 npins= | |
| 143 | |
| 144 In the uEDA model pin numbers are arbitrary alphanumeric strings in the | |
| 145 general case, allowing for mixed alphanumeric pin "numbers" used on PGA | |
| 146 and BGA packages. However, most components have simple numeric pin | |
| 147 numbers ranging from 1 to some N inclusive. If your component falls | |
| 148 into the latter category, you should define an npins=N attribute. | |
| 149 Having this definition makes uschem-netlist(1) run much more | |
| 150 efficiently, detect invalid pin numbers and produce naturally sorted | |
| 151 pin lists. | |
| 152 | |
| 153 part= | |
| 154 | |
| 155 See the Components vs. parts section below. | |
| 156 | |
| 157 pcbvalue= | |
| 158 | |
| 159 The PCB layout file format includes 3 ASCII strings for each element: | |
| 160 "description" (not really used, uEDA puts the footprint name there), | |
| 161 "name on the PCB" (refdes) and "value". | |
| 162 | |
| 163 The pcbvalue= attribute explicitly sets the "value" parameter in the | |
| 164 PCB elements generated by the ueda-getfps | ueda-runm4 pipeline (see | |
| 165 prelayout.txt). If the pcbvalue= attribute is not defined, ueda-getfps | |
| 166 tries value=, device= and manufacturer_part_number= in this order. If | |
| 167 none of these attributes are given, a null string is used. | |
| 168 | |
| 169 pinout= | |
| 170 | |
| 171 This attribute specifies the name of the pinout mapping file to be used | |
| 172 for this component. See the Pinout mapping section in netlisting.txt | |
| 173 for the explanation. | |
| 174 | |
| 175 population_option= | |
| 176 | |
| 177 See Population options in bom_model.txt. | |
| 178 | |
| 179 The value of this attribute is either a decimal integer identifying the | |
| 180 population group this component belongs to or the keyword "NO". | |
| 181 | |
| 182 population_option=NO indicates that the component is never populated at | |
| 183 all in any of the standard population options, e.g., a component that | |
| 184 is only populated for debug purposes. Such components appear in the BOM | |
| 185 only if -pall is given to ueda-mkbom(1) or ueda-shortbom(1). | |
| 186 | |
| 187 socket= | |
| 188 | |
| 189 If the component is to be socketed, this attribute specifies the part ID | |
| 190 for the socket. See the Components vs. parts section below for the | |
| 191 explanation of the part ID. | |
| 192 | |
| 193 source= | |
| 194 | |
| 195 This attribute indicates a source for the procurement of this part. | |
| 196 It may be given more than once to indicate multiple sources where parts | |
| 197 can be obtained. | |
| 198 | |
| 199 If one or more source= attributes are given, the vendor= and | |
| 200 vendor_part_number= attributes are not used. | |
| 201 | |
| 202 substitute= | |
| 203 | |
| 204 This attribute lists an "acceptable substitute" for the part specified | |
| 205 by the manufacturer= and manufacturer_part_number= attributes. This | |
| 206 attribute may be given more than once. | |
| 207 | |
| 208 Given the unfortunate reality of part availability, it is often the | |
| 209 case that the manufacturer= and manufacturer_part_number= attributes | |
| 210 specify the ideal wish list part (e.g., one with SnPb solder coating) | |
| 211 while substitute= attributes list what's actually obtainable (e.g., the | |
| 212 lead-free crap). | |
| 213 | |
| 214 value= | |
| 215 | |
| 216 This attribute is intended to hold the value of components such as | |
| 217 resistors and capacitors for which a numeric value is meaningful. uEDA | |
| 218 does not currently make any formal use of this attribute, hence there | |
| 219 are no formal rules currently as to units, exact syntax etc. | |
| 220 | |
| 221 vendor= | |
| 222 | |
| 223 Should be self-explanatory. Specifies the name of a vendor from whom | |
| 224 the part may be obtained. | |
| 225 | |
| 226 vendor_part_number= | |
| 227 | |
| 228 Should be self-explanatory. Meaningless without vendor= also being | |
| 229 specified. | |
| 230 | |
| 231 Unlike source=, the vendor= and vendor_part_number= attributes may not | |
| 232 be given more than once. If multiple sources need to be listed, the | |
| 233 source= attribute must be used instead. Neither vendor= nor | |
| 234 vendor_part_number= is used if any source= attributes are present. | |
| 235 | |
| 236 Components vs. parts | |
| 237 | |
| 238 Contrast the following alternative descriptions of the same component: | |
| 239 | |
| 240 * A 0.1 uF capacitor | |
| 241 * Ceramic chip capacitor, X7R, 0.1 uF, 0805 | |
| 242 * Panasonic ECJ-2VB1C104K | |
| 243 | |
| 244 The first description is what you would likely use in the initial design of your | |
| 245 circuit, the second description may appear on the list of required components | |
| 246 when your design is finished, and a description of the third kind can be made | |
| 247 about the components found on the final board when it's fully assembled. | |
| 248 | |
| 249 The uEDA MCL makes a distinction between components and parts. A component is | |
| 250 something that has a refdes and an associated section in the MCL; a part is | |
| 251 something that can appear on a procurement BOM with a quantity next to it. | |
| 252 uEDA also has a process of "reducing components to parts", which basically | |
| 253 means going from a description of the first kind above to one of the 2nd or 3rd | |
| 254 kind. | |
| 255 | |
| 256 Given that you are free to specify or not specify each of the defined attributes | |
| 257 for each component in the MCL, your initial design may be as vague or as | |
| 258 specific as you like. For example, you may put a capacitor on your schematic | |
| 259 and list it in the MCL, but not specify anything else. Or you may specify the | |
| 260 value while leaving the footprint undecided. Or vice-versa. Or you could | |
| 261 specify both the value and the desired footprint, but put no more thought as | |
| 262 to what kind of actual capacitor you would need. | |
| 263 | |
| 264 However, when it's time to actually build your board, you will have to pick | |
| 265 some specific part from the Digi-Key catalog (or substitute your favourite | |
| 266 component supplier), order it and populate it on the board. That will be a | |
| 267 specific part with a very concrete set of parametric specifications. This is | |
| 268 what I mean by reducing components to parts. | |
| 269 | |
| 270 The concepts just described may be self-evident, but the reason I'm spelling | |
| 271 them out is that uEDA has some special support for reducing components to parts. | |
| 272 Namely, the MCL syntax that has been described so far is not actually the whole | |
| 273 story. If the syntax described so far was all that's available, the process of | |
| 274 reducing components to parts would be very clumsy. For example, if you had | |
| 275 decided that your 0.1 uF bypass caps would be 0805s and that you would order | |
| 276 and populate Panasonic ECJ-2VB1C104K parts for them, you would have to enter | |
| 277 the full information about this part for every component (every refdes) in the | |
| 278 MCL where you had a 0.1 uF bypass capacitor. This approach would suffer from | |
| 279 two problems: | |
| 280 | |
| 281 * The replication of information would be very redundant and error-prone. | |
| 282 | |
| 283 * The process for generating the procurement BOM would face the problem of | |
| 284 how to tally all of those separately described components into a quantity of | |
| 285 one part. | |
| 286 | |
| 287 The uEDA solution is that in addition to components with reference designators, | |
| 288 the MCL file format allows for part definitions. A part definition has the | |
| 289 following form: | |
| 290 | |
| 291 part part-ID: | |
| 292 attribute=value | |
| 293 attribute=value | |
| 294 ... | |
| 295 | |
| 296 The part-ID is an arbitrary ASCII label for your part. Component definitions | |
| 297 can then refer to your part definition by its part-ID using this syntax: | |
| 298 | |
| 299 refdes: | |
| 300 part=part-ID | |
| 301 | |
| 302 Example: | |
| 303 | |
| 304 part bypasscap-0.1uF-0805: | |
| 305 value=0.1 uF | |
| 306 footprint=0805 | |
| 307 description=Ceramic chip capacitor, X7R, 0.1 uF, 0805 | |
| 308 manufacturer=Panasonic | |
| 309 manufacturer_part_number=ECJ-2VB1C104K | |
| 310 vendor=Digi-Key | |
| 311 vendor_part_number=PCC1812CT-ND | |
| 312 bom_comment=RoHS part, no SnPb version available | |
| 313 | |
| 314 C1: | |
| 315 # Bypass cap for U5 | |
| 316 part=bypasscap-0.1uF-0805 | |
| 317 | |
| 318 Most tools in the uEDA suite treat such part references as nothing more than | |
| 319 shorthand, in other words, the example above would be equivalent to: | |
| 320 | |
| 321 C1: | |
| 322 value=0.1 uF | |
| 323 footprint=0805 | |
| 324 description=Ceramic chip capacitor, X7R, 0.1 uF, 0805 | |
| 325 manufacturer=Panasonic | |
| 326 manufacturer_part_number=ECJ-2VB1C104K | |
| 327 vendor=Digi-Key | |
| 328 vendor_part_number=PCC1812CT-ND | |
| 329 bom_comment=RoHS part, no SnPb version available | |
| 330 | |
| 331 The one important exception is ueda-mkbom. For the procurement-oriented BOM | |
| 332 parts are essential, and ueda-mkbom operates only on parts, not on components. | |
| 333 When it reads the example above, it takes note of part bypasscap-0.1uF-0805, | |
| 334 counts all components that refer to it and emits it in the BOM with the counted | |
| 335 quantity. | |
| 336 | |
| 337 What does ueda-mkbom do when it encounters a component that has no part= | |
| 338 attribute? It may be either a component that hasn't been reduced to a part yet | |
| 339 (in which case ueda-mkbom can't do anything with it other than issue a warning | |
| 340 message), or a component that self-defines its part. A component is considered | |
| 341 to self-define a part if it has both manufacturer= and manufacturer_part_number= | |
| 342 attributes or a bom_part_title= attribute. Alternatively, a component may be | |
| 343 explicitly declared to self-define its part with a part=yes attribute (see | |
| 344 below). | |
| 345 | |
| 346 Every part definition (explicit or implicit in a component that self-defines | |
| 347 its part) that is to be usable to ueda-mkbom must have some attributes from | |
| 348 which ueda-mkbom can make a title for it in the BOM. ueda-mkbom considers part | |
| 349 attributes in this order: | |
| 350 | |
| 351 * bom_part_title= if one is given | |
| 352 * manufacturer= and manufacturer_part_number= if both are given | |
| 353 * manufacturer= and device= if both are given | |
| 354 * description= if one is given | |
| 355 | |
| 356 If none of the above attributes are present for a part which needs to go into | |
| 357 the BOM, it is an error. | |
| 358 | |
| 359 Formal definition of the part= attribute | |
| 360 | |
| 361 The part= attribute may appear only in component definitions and not in part | |
| 362 definitions. The value of the part= attribute may be one of the following: | |
| 363 | |
| 364 * The keyword "none". This specification indicates that the component has no | |
| 365 associated part and that this lack of a part is not an error. Note that it's | |
| 366 possible to have a component which has no part but still has a footprint. | |
| 367 An example would be a test point or an antenna made from the copper etch on | |
| 368 the PCB. | |
| 369 | |
| 370 * The keyword "yes". This specification indicates that this component | |
| 371 self-defines its part, i.e., that the MCL section being parsed is both a | |
| 372 component definition and a part definition. | |
| 373 | |
| 374 * A part-ID defined by a part definition earlier in the MCL file. | |
| 375 | |
| 376 * A refdes of another component which appears earlier in the MCL file and self- | |
| 377 defines its part. | |
| 378 | |
| 379 Note that no forward references are allowed. | |
| 380 | |
| 381 Component definitions which refer to a part definition may override some of the | |
| 382 attributes in the latter, as long as such an override is physically meaningful. | |
| 383 (Overriding the value of a Panasonic ECJ-2VB1C104K cap to something other than | |
| 384 0.1 uF is not.) The population_option= attribute is normally set at the | |
| 385 component level rather than the part level, but other attributes may also be | |
| 386 overridden sometimes. For example, a dual position resistor (DPR) may be made | |
| 387 by taking a standard SMT resistor part (which would contain a footprint= | |
| 388 attribute for its normal two-pad footprint) and overriding its footprint to | |
| 389 a DPR footprint with 3 pads. | |
| 390 | |
| 391 Socket parts | |
| 392 | |
| 393 If a component is to be socketed, the socket part should have its own part | |
| 394 definition with a part-ID assigned and should be referenced via the socket= | |
| 395 attribute. |
