n2ktoc - need to know Body, chapter 4.4

last updated 13 oct 97 - mjh

4.4) packaging

Choosing the appropriate components for a design is not an easy task. There are a lot of parts out there to choose from, many of which are very expensive to buy, difficult to obtain in a timely manner, or nearly impossible for us to assemble and test with our resources.

Also challenging is getting those component choices properly reflected in the schematic and associated design files. It is one thing to decide which part you want to use, it is quite another to insure that the CAE tools know what you are trying to say.

This section addresses some of the concerns associated with incorporating parts into a design.

4.4.1) selection considerations

There are lots of ways to go about selecting parts. Below are provided a few lists to serve as jumping off points, as well (4.4.1.2) the DigiKey metric for deciding whether you have chosen wisely, and a discussion of (4.4.1.3) package styles and how that may influence your decisions.

There is one bit of yin and yang to keep in mind throughout all of the following. If you find a symbol in a library, or a pdb entry, or a part in the Engineering Database, then that means that someone else has already walked down this path; you may do well to follow in their footsteps.

You may also meet up with them when you also fall into the same abyss... Just because its out there does not necessarily mean that it is a good thing.

Have a nice day :-)

4.4.1.1) favorite parts list(s)

The information provided below is a dynamic list of what we tend to favor. If you choose from these lists, you will be well supported for spare parts based on what we keep on hand.

Of course, you can design with whatever you want. But keep in mind that if you use something odd, we may not be able to get it quickly, and there may not be more in a bin when you are trying to repair something at 2am. So make sure you know where *your* odd spares are!

4.4.1.1.1) resistors

Our preferred resistor is the surface mount R1206 package, 1/8 watt, 1% component (RBJ____4). These are very cost effective compared to conventional axial leaded components. We still have quite a few 1/8 and 1/4 watt axial resistors on hand, but we are very resistant to buying more. So don't design with axial (through-hole) resistors unless you must.

And be aware that while use stock 1% resistors, we don't stock the entire range of 1% values! Because of the low cost differential, there is no advantage in stocking actual 5% devices. Thus, we stock only 1% devices, but according to the 5% values:

   5% 1%       K    K    K   M     5% 1%       K    K    K
   10 10.0 100 1.00 10.0 100 1.00  30 30.1 301 3.01 30.1 301
      10.2 102 1.02 10.2 102          30.9 309 3.09 30.9 309
      10.5 105 1.05 10.5 105          31.6 316 3.16 31.6 316
      10.7 107 1.07 10.7 107          32.4 324 3.24 32.4 324
   11 11.0 110 1.10 11.0 110       33 33.2 332 3.32 33.2 332
      11.3 113 1.13 11.3 113          34.0 340 3.40 34.0 340
      11.8 118 1.18 11.8 118          34.8 348 3.48 34.8 348
   12 12.1 121 1.21 12.1 121       36 35.7 357 3.57 35.7 357
      12.7 127 1.27 12.7 127          36.5 365 3.65 36.5 365
   13 13.0 130 1.30 13.0 130          37.4 374 3.74 37.4 374
      13.3 133 1.33 13.3 133          38.3 383 3.83 38.3 383
      13.7 137 1.37 13.7 137       39 39.2 392 3.92 39.2 392
      14.0 140 1.40 14.0 140          40.2 402 4.02 40.2 402
      14.3 143 1.43 14.3 143          41.2 412 4.12 41.2 412
      14.7 147 1.47 14.7 147          42.2 422 4.22 42.2 422
   15 15.0 150 1.50 15.0 150       43 43.2 432 4.32 43.2 432
      15.4 154 1.54 15.4 154          44.2 442 4.42 44.2 442
      15.8 158 1.58 15.8 158          45.3 453 4.53 45.3 453
   16 16.2 162 1.62 16.2 162          46.4 464 4.64 46.4 464
      16.5 165 1.65 16.5 165       47 47.5 475 4.75 47.5 475
      16.9 169 1.69 16.9 169          48.7 487 4.87 48.7 487
      17.4 174 1.74 17.4 174          49.9 499 4.99 49.9 499
      17.8 178 1.78 17.8 178       51 51.1 511 5.11 51.1 511
   18 18.2 182 1.82 18.2 182          52.3 523 5.23 52.3 523
      18.7 187 1.87 18.7 187          53.6 536 5.36 53.6 536
      19.1 191 1.91 19.1 191          54.9 549 5.49 54.9 549
      19.6 196 1.96 19.6 196       56 56.2 562 5.62 56.2 562
   20 20.0 200 2.00 20.0 200          57.6 576 5.76 57.6 576
      20.5 205 2.05 20.5 205          59.0 590 5.90 59.0 590
      21.0 210 2.10 21.0 210          60.4 604 6.04 60.4 604
      21.5 215 2.15 21.5 215       62 61.9 619 6.19 61.9 619
   22 22.1 221 2.21 22.1 221          63.4 634 6.34 63.4 634
      22.6 226 2.26 22.6 226          64.9 649 6.49 64.9 649
      23.2 232 2.32 23.2 232          66.5 665 6.65 66.5 665
      23.7 237 2.37 23.7 237       68 68.1 681 6.81 68.1 681
   24 24.3 243 2.43 24.3 243          69.8 698 6.98 69.8 698
      24.9 249 2.49 24.9 249          71.5 715 7.15 71.5 715
      25.5 255 2.55 25.5 255          73.2 732 7.32 73.2 732
      26.1 261 2.61 26.1 261       75 75.0 750 7.50 75.0 750
      26.7 267 2.67 26.7 267          76.8 768 7.68 76.8 768
   27 27.4 274 2.74 27.4 274          78.7 787 7.87 78.7 787
      28.0 280 2.80 28.0 280          80.6 806 8.06 80.6 806
      28.7 287 2.87 28.7 287       82 82.5 825 8.25 82.5 825
      29.4 294 2.94 29.4 294          84.5 845 8.45 84.5 845
   -------------------------          86.6 866 8.66 86.6 866
   exp  R    0    1    2   3          88.7 887 8.87 88.7 887
                                   91 90.9 909 9.09 90.9 909
                                      93.1 931 9.31 93.1 931
                                      95.3 953 9.53 95.3 953
                                      97.6 976 9.76 97.6 976
                                   -------------------------
                                   exp  R    0    1    2   3

Please keep in mind that when generating a Bill of Materials, since we only purchase 1% components, it will be necessary to properly represent the value as such. Thus, if you want to use a 3.9k resistor, you will need to encode it RBJ39214 (392*10**1, or 3.92k). The exponents are shown on the bottom line(s) of the table. The letter "R" is used to represent the location of the decimal point for resistances less than 100 ohms (i.e. exponents less than 0). Thus 39.2 ohms is encoded as RBJ39R24.

If you need more than 1M, axial resistors are available up to 10M (following the 5% numbers in the above table). Beyond that you are on your own.

If you need less than 10 ohms, Caddock makes some nice high-current shunts (for measuring current, of course). We have at least two our in-house (1.2.1) catalog.

If you need multiple resistors in a package, we stock 5% 9-pin SIPs (pin 1 common) and 8-pin SIPs (quad independent resistors).

4.4.1.1.2) capacitors

Our preferred bypass cap is the surface mount C1206 package 0.1uF@50VDC for TTL (ANHC104K), and 0.01uF for ECL (ANHC103K).

Our preferred bulk filter caps are the surface mount CT7343 package 22uF@20VDC (AODH226K) and 33uF@20VDC (AODH336K). We have two because someone (named Mike) didn't look in the drawer before ordering a lot of something.

For capacitors in general, we have a surface mount "kit" (C1206) containing the standard range of values, and we expect to maintain those 10%@50VDC standard values (ANHC___K):

   pF  pF   uF
       1000 0.01
       1200 0.012
       1500 0.015
       1800 0.018
   220 2200 0.022
   270 2700 0.027
   330 3300 0.033
   390 3300 
   470 4700 
   560 5600 
   680 6800 
   820 8200
 ----------------
 exp 1    2     3 

If you need something else (larger, smaller), then talk to Todd about availability before going too far.

Also, if you need thru-pin capacitors, our "past-standard" parts were 0.1" center radial ceramic 10%@50VDC (AHH1___) and 0.2" center radial ceramic 10%50VDC (AHH3___); our bulk caps were 0.25" center radial tantalum 10%@20VDC (AAD4226 and AAD4336).

4.4.1.1.3) diodes

Our cannonic small diode is the 1N914A. Our rectifier is the 1N4003. Both of these are axial (through-hole) devices.

But if you need surface mount, try the MMBD6100L (common cathode) or the MMBD7000L (series), both in SOT-23 packages. Whatever you do, stay away from the cylindrical MELF packaged diodes!

4.4.1.1.4) LEDs and optoisolators

We have two stock solutions for LEDs: HLMP1302 discrete (red) T-1 size, and 555-4001 quad (red) right-angle T-3/4 size. Other colors are available. Blue is expensive.

For optoisolators, use the 6N138 for digital applications, and the 6N135 for "analog" or lower-gain applications.

Be aware that the weak-link in using optoisolators for conveying analog signals is the LED; they "age" in less than predictable manners. There are some dual-phototransistor devices available specifically to address this. Both photo devices "see" the same LED: one is used for signalling while the other is used for feedback. This allows the LED aging to be compensated out. We don't have any such devices in out bag. We should.

4.4.1.1.5) BJTs

For small signal and switching, try 2N3904 and 2N3906 (NPN and PNP, respectively). If you need many, use MPQ3904 (quad DIP) or MMPQ3904 (quad SOIC).

For power, try the TIP29 and TIP30 (NPN and PNP, respectively)

4.4.1.1.6) FETs

For power applications, IRF9520 and IRF510 are nice P and N channel devices

4.4.1.1.7) op amps and linear devices in general

If you need an op amp, start with:

Of course you may have criteria other than noise (gain-bandwidth, input impedance, output drive of capacitive loads, etc.). If you find something you like, which is not too expensive and is readily available, add it to this list!

4.4.1.1.8) logic families

Our in-house favorite logic families are: 74ALS and 74AS for TTL, and 10KH for ECL. We have a fair amount of history with these families.

However, to provide a complementary view, it should be noted that OSU and Cornell are firm believers in the 74F family as superior to 74AS. Part of their motivation comes from edge speed. 74F is somewhat more forgiving on wirewrap modules.

We don't do wirewrap. We don't prototype if we can avoid it. We simulate, then fabricate.

4.4.1.1.9) small programmables (PLDs)

If you can not do it in a 22V10, you probably want to use a (4.4.1.1.10) large programmable (FPGAs) (next section).

Acceptable/available devices in-house are the PALCE16V8 and PALCE22V10, which are electrically erasable, and generally cover the low end of the PLD market. If you need just a little more, you can use a PALCE26V12, but we don't tend to stock these.

Be sure to read the discussion on (7.1) programming PLDs so you know what you are getting yourself in for.

4.4.1.1.10) large programmables (FPGAs)

Altera. For better or worse, if the question is "which FPGA?" our answer is Altera. They have given us a *large* amount of support under their University Program, and it has made all the difference in the world concerning "design wins" compared to Xilinx (for which we also have some support, but it is limited).

Keep in mind that the MAX7032, which is roughly three 22V10's in a chip, has a quantity price of just over $1 (in the right package, of course...)! The message is clear. Altera wants the low-end volume.

Be sure to read the section below on (4.4.1.3) package styles if you are working with Altera. There are a number of attractive parts that are simply not practical to use because of their package style. And also read the sections on (7.2) programming FPGAs since this may influence your component selection.

4.4.1.1.11) microcontrollers

The microcontroller du jour is the Motorola MC68HC11E9. We have a variation on the Buffalo Kernel which Mike has tailored, which we tend to burn into the one-time programmable memory. The actual application program is typically held in external PROM or RAM.

We have a C cross compiler for the HC11 from Imagecraft. Read the (4.1) tools discussion for more. The ICC11 compiler can handle simple C with out a lot of fancy stuff, so don't get carried away. Read the section on (7.4) programming (for) microcontrollers. And remember that the HC11 has no file system and no intrinsic keyboard/monitor. Thus, if your code as any "open" or a "printf" statements, you are not thinking clearly (or clearly not thinking).

We have done one 8052-based project (for the SLD rack monitor). Talk to Mike if you want to use one of these, or any other microcontroller, since we will need to build up the infrastructure to support it.

4.4.1.1.12) RAM and PROMs

Our most typical choice for RAM is the 32Kbyte HM62256.

Our most typical choice from UV-erasable PROM is the 32Kbyte 27C256 from Intel, AMD, etc. Be sure to read the section on (7.3) programming PROMs so you will be prepared.

Also talk to Vaidas about his "x256" schematic symbol. The pin-outs of the HM62256 and 27C256 are very compatible, and with just a little prior planning a circuit can be designed to accept either. It can be a tremendous win for debugging and development, to download your code into the RAM. Then, when you are confident that it is correct, you burn the final PROM version. Compare this to burn a PROM, find a bug, burn a PROM, find a bug, burn a PROM...

4.4.1.1.13) sockets and adapters

We need to fine-tune two definitions here:

Be aware that the socket/adapters (e.g. the PLCC "socket" that has through-pins for soldering to the board) are often called "sockets" even though they are (socket/)adapters. The distinction is subtle, but important to the discussion below.

It is recommended practice that programmable devices be socketed. There are exceptions, of course. But socketing programmables implies that

You are not required to do these, but sockets mean that you can.

It may also be advisable to socket/adapt those surface mount devices that are difficult to deal with. PLCCs and PQFPs (pin pitch down to 0.65mm) can be socket/adapted in mechanical through-hole adapters (typical IPNs?), since this makes it possible for us to assemble the board in-house. It may also be advisable to carrier/adapt PQFPs to to soldered adapters, to allow a compromise out-in-house assemble process. The component-to-carrier assembly would be performed by a contract assembler (due to the difficulties associated with soldering fine-pitch surface mount parts), while the component+carrier subassemblies could be loaded onto a board in-house.

It all comes down to who is going to (6) assemble your board.

4.4.1.1.14) connectors

.(more soon).

4.4.1.1.15) hardware (nuts and bolts...)

.(more soon).

4.4.1.2) the DigiKey metric

There is one fairly effective metric for judging whether a part is a bad choice for a design: if you can not get one overnight, you probably don't want to use it if you don't have to.

This is the so-called "DigiKey metric" named after the same-named overnight distributor. There are other overnight outfits (e.g. JDR) which also might be consulted in evaluating component viability.

Beware: don't misunderstand the metric to imply that you *should* obtain the parts overnight! This is prohibitively expensive! You should go through conventional distributor channels and save money. However the motivation for checking the DigiKey catalog first is that many of the distributors will not tell you right away (even with their "availability" web pages) that the part you ordered will not be available for several weeks.

Note: when a distributor quotes "16 weeks" for availability, that actually is a code phrase for "we have no clue at all, but don't want you to know that."

4.4.1.3) package styles

The electronics industry is perpetually moving toward more/faster/cheaper. An important aspect of this (at least today) is the use of fine-pitch surface mount components. While these components are *very* attractive for commercial products, since they offer increasing densities and can be assembled with automated equipment, they pose a nightmare for us.

Simple question: who is going to (6) assemble your board for you?

If all you have are through-pin components (resistors, capacitors, DIPs and SIPs) then anyone can do the job, even you. If you shift to surface mount R1206 resistors and C1206 capacitors, mosquito-sized SOT23 transistors, and SOIC gull-wing parts, you still can do the job, as long as you got a good night's sleep and you don't drink too much coffee.

If you are using PLCC's, you can hand solder them, but be sure to have a really good magnifier at hand. A stereo microscope would be better. If you are using 0.025" pin-pitch PQFP, forget about the magnifier and get the microscope. As well as the finest-tip controllable temperature iron that you can afford. Plan to spend about one day per chip.

Or perhaps you would like to try your hand at solder paste and hot air... Even trivial misalignment will result in solder bridges between pins, and of course if you don't get enough solder (or too much) on any one pin, rework will be hell. But all things considered, life could be a lot worse if you had to deal with parts whose pin-pin pitch were finer than 0.025".

Life *is* a lot worse.

A significant number of high-tech parts are available *only* in 0.5mm (approximately 0.0197" pin-pitch).

And then there are ball-grid array parts, which have no pins at all, only balls of solder on their undersides. You don't use and iron for these; you need a toaster oven! And how do you verify the quality of the solder joints if you can not see them? You might want to make friends with the security guards at the airport. Maybe they will let you run your boards through their x-ray machine :-)

If reality is such a bite when it comes to surface mount components, then why is the industry going in this direction? They have two things that we do not have: volume and profit. They can afford solder-paste masks to deposit just the right amount of paste in just the right locations. They can set up robotic pick+place machines to load the parts. They can run the parts through huge toaster ovens (convection, infrared, vapor phase, and more).

And they can tolerate a few bad boards. If you are making a few thousand, you can afford to throw away 50 or so to get things right: just adjust the market price to account for the yield.

We can rarely afford "a few dozen" bad boards just to get started. For many projects, the total board count is less than 12!

The answers are not pretty. We can go out for (6.2) contract assembly (and pay dearly for the service), keeping in mind that there will be yield issues to deal with. This is *not* a small quantity solution.

Or we can limit our choice of components to those that *can* be dealt with in-house. For practical purposes, that means:

This excludes PQFP parts with pin-pin pitch less than 0.65mm, most if not all TQFP parts (which typically have a pin-pin pitch of 0.5mm), and ball-grid array parts.

Note: there are several companies that are addressing the issues associated with these parts. If you really need to use an "impossible" part, take a look at the adapters available from Aries, Advanced Interconnect, Ironwood, or Methode. Also look for sockets from Amp and Berg. But always keep in the back of your mind the question: "who is going to assemble my board?"

If the answer is "its someone else's problem" then you are way wrong.

4.4.2) pdb creation/editing

The relationship between a schematic and the pc layout is mediated by the "parts database" or PDB. Try not to read too much into the word "database" here, since it is not as if there is an SQL-based relational DBMS tool or any other such thing out there that you can get your hands on. The PDB is essentially one (sometimes more) binary file that contains "entries" with the following information:

A simple example is available in the refs\readme_pdb.txt file. If you created a project from one of the standard (4.6.1) seed projects then you will have a pdb_src folder that contains your own copy of readme_pdb.txt; it will be similar to the one indicated above, except that everything is commented out.

Under normal circumstances, your project file will point *both* at at file name "cad.pdb" in your pdb_src folder, and at a centrally located cad.pdb which contains all of the PDB entries that are believed (or at least hoped) to be correct. These cad.pdb files are binary, and are created using a tool named pdb_comp.tcl which you should also have in your pdb_src folder. The pdb_comp.tcl tool will compile *any* file with a name of the form "*_pdb.txt" into your local cad.pdb file. Thus you are free to have as many source text files as you wish. Just remember that they will all get compiled.

Various CAE tools, most notably the Packager (from VBDC or the Design Capture Utilities) and the DataBase Load function of VBPCB will the PDB information. The mechanism for this is a little funky:

This last bit is a common thing to forget. If you have a localjob.pdb file that contains *old* information, it will not be updated just because you changed your cad.pdb file in the pdb_src folder. You must remember to delete localjob.pdb any time that you want the most up-to-date PDB data. Also note that there are *two* of these localjob.pdb files: one in the [project] folder and one in the pcb folder. Be sure to delete both.

There is not a lot of instruction here on how to create PDB entries, because a fair amount of (4.1.3) documentation is already available online. One *very* good starting place, however, is:

   I:\apps\UofI\vbpcb\pdb_src
as it contains our collection of PDB source files. Don't be shy. Steal! Find something that looks like it has potential, and copy-copy-copy! There are just a few tedious tasks that you must perform:

When in doubt (for %INTERNAL and %TOPCELL) just put in a "dummy" name (such as your name, dummy!) to remind yourself and others that you still need to get some real information inserted here.

One important point concerning the online documentation and VeriBest's "way" of doing things. There is a "PDB Editor" which will manipulate the binary PDB data. This editor does have certain user-friendly features which can assist in obtaining pin names from symbols and other mundane tasks. However, this editor does not address the critical issues associated with maintaining a *large* collection of PDB entries; it is fine for 10, but useless for 1000. Therefore, we maintain all of our PDB data as ASCII text, and compile on-the-fly as needed. If you must use the PDB Editor, please take the time to translate your cad.pdb or localjob.pdb file back to ASCII, and save the result. The only way that one of your PDB entries will be accepted back into the system collection is in the form of ASCII text. And if you do not make your PDB entries available, someone else will waste time duplicating your effort.

4.4.2.1) pdb entries for programmable devices

There is a special hell reserved for people who wish to use programmable devices; at the entrance is the Parts Database...

The current semantic rules imposed by VeriBest require unique %NAME and %VEND, while allowing locally repeated %INTERNAL to identify equivalence sets. However, for a programmable device, each different configuration of one device may have a completely distinct pin utilization and function, but all share the same manufacturer's part number. This creates a naming paradox, if not a genuine contradiction, under VeriBest's naming semantics.

Our current solution is marginal, and not acceptable, but it is the way we must proceed for now:

This issue is a work-in-progress between Mike Haney and VeriBest...

4.4.3) ordering parts (preliminary)

The real story on (5) ordering parts is in Section 5. But the short version is as follows. You need to create a two column spreadsheet in Excel, consisting of Reference Designator and Illinois Part Number pairs. If you don't know what the IPN is for your part(s), you will need to look it up in our in-house (1.2.1) catalog database, or work with Todd to get one assigned (for each part).

Order early! Some parts can have long lead times. Some parts are simply not worth waiting for. If you discover this early in the design cycle, you have a chance to change your design before you have committed to a pc board. If you don't find out until the board artwork goes out the door to fab, you will have to live with what you can get.

4.5) simulation