Is circuit design based on min/max values good practice?

Time and again I am arguing with a colleague of mine about the question above. When I design a circuit for mass production (> 10k/a) I want to make it robust against every possible variation of component parameters that I know about. This means for example:

• BJT parameters like VBE, current gain etc. vs. bias and temperature
• Tolerances, temperature dependences, aging and soldering drift of passives

Furthermore I consider any violation of absolute maximum ratings under normal operation conditions as unacceptable.

As I understand my colleague he just deems it a useless business to care about parasitics and the like. Just put it all together and try if it works, that's it. Put some pieces into the heat chamber, age them and if they still work afterwards you're done. He has more experience in designing commercial electronics than I do, but I really don't like such an approach. I am convinced that as an engineer I should have thought about any part of a circuit before I build it up for the first time.

Is my approach just sick perfectionism or has it something reasonable? I have already discovered that a lot of electronic designers don't care about robust design...

Engineering is not only about creating robust designs, but is about creating a design that meets some specifications. Usually young designers don't fully understand that economic factors are part of the specification. The problem is that sometimes those economic factors are not well specified (that's often a management's fault), but a good designer is somewhat expected to consider also non-strictly-technical aspects in his designs, such as:

• BOM-related costs: who cares if 1% of the units fail in the field if it is more economical to ship a new one to the customer instead of making all of them more reliable!

• Time to market: who cares if the units are more reliable if our competitors ship their things one month in advance!

• Planned obsolescence: (sad, and not environmentally friendly, but usually it goes like this): why should we want to ship units that can last for 20 years if we marketed them to be able to work for 5 (and we made a lower price point for that)?!?

• etc.

All this depends on the field to which the design you are creating is targeted, of course. If you aim at a market where a single failure could cost lives (say a new defibrillator), you will apply more safety margins to your design (and you will be forced to do that, in some cases, by mandatory safety standards).

Stricter specs are good if, for example, you are designing a mission-critical board for a space probe for a ~1G$mission to Pluto. In that case you really would want to foresee the unforeseeable and test for any darned little thing that can go wrong. But this is counterbalanced, economically, by the risk of being sued (or fired) by NASA because your crappy MCU code made all the mission go awry! To recap, experienced successful designers know how to manage all these economic factors. Of course some of them are really smart and really understand all the delicate balances needed to bring a project to success (be it the new Apple iMostUselessMuchHypedphone or the best instruments for detecting bacteria on a comet). Some others, incredible but true, are just lucky and find the right niche where the "Does the prototype work after being mistreated a bit? Ok! Let's ship it!" mantra works well! BTW, a good designer should always be wary of requirements he is given. Sometimes people giving you the specs don't really know what they want or need. Even the communication between the designer and the client (or the management) could be misleading. For example, if a client asks for a remotely-controllable barometric station that can work well during winter, it does matter if he is from Alaska or from Saudi Arabia! A good designer should work out the specs with the client, if he is in the position to do so, and a successful designer usually can ask the right questions to nail down the actual specs of the design to make the client happy. I can understand that for some engineers it is compelling to work out all the details, especially for some passionate individuals that really love creating things that work well. It is not a fault in itself, but it is important to understand that the ability to make tradeoffs is part of engineering. With experience this ability will improve, especially if you work together with good senior designers. You could also discover that you work for an employer with too low standards for your taste and this could push you to seek another job. But this should be done after you get a bit more experience and learn some tricks of the trade and make you more "appetizing" for a better employer. • +1: 'good', 'bad', 'best' etc. must always be understood in a context. The first step of enigineering is to identify (sometimes quantify!) the context, which is often much broader than just the explicit specs. Only after that the real fun can start. – Wouter van Ooijen Jul 7 '15 at 19:37 • Very good analysis. +1 – MathieuL Jul 7 '15 at 20:02 • I actually work in a quite young company with only a single electronic designer that has more than 10 years of working experience. And we are desparately searching for a senior engineer now for months and don't even get meaningful applications. Those guys are really hard to find! BTW, is there any book out there that teaches how to make good circuits (guidlines for a young engineer)? – christoph Jul 8 '15 at 17:48 • See this answer of mine for a must-have book for EE designers (Art Of Electronics 3rd ed.). There is also analog Seekrets which is available in PDF for free. – Lorenzo Donati -- Codidact.com Jul 8 '15 at 17:56 • Yeah, I preordered "The Art Of Electronics" before its release but my wife would only let me read it in work ;). Thanks for the other references! – christoph Jul 8 '15 at 18:03 I'm with you 100%. That said, there are things (for example hFE) where you have to trust that things don't go too wonky between (say) two guaranteed points and that nothing in the physics and typical curves would suggest any kind of weird behavior. If you using a cut-and-try approach, which may actually be the practical way to deal with complex parasitics say, at least find out how far from disaster you may be by testing limits or phase margin etc. That's also work, and that's okay. The problem with the cavalier approach is that if you don't know about something like optocoupler aging or certain kinds of drift or other longer term effects and you start getting 10% field failures after a year or two. Or you end up with 5% or 10% fallouts because the some components are more typical than others, and 5-10% of the non-fallouts fail later in the field under hard-to-reproduce conditions. I have yet to be burned by a risk that I have taken with both eyes open- evaluated, tested and reviewed, even if the part was outside of its recommended operating conditions or intended use. It's always something that wasn't considered and came out of left field. Thinking about all the things that can possibly go wrong is how you can minimize those problems. Even if they're not 'your fault'. Some of them are systems level things that have nothing to do directly with design. For example, a power supply that's flipped on and off 5x in 2 seconds should not fail, but that may not be in the specifications so it may not be designed for or tested for. Violating absolute maximum ratings is almost always a really bad idea, even at the far corners of the design space (maximum ambient temperature, maximum load, maximum input voltage, minimum ventilation etc.). There may be a few oddball cases where it can be justified. Some products only have to function once, for example. For the opposite approach, see Muntzing. Bypass capacitor sales would surely plummet if that was accepted practice. I will do an worst-case analysis of circuits where the component values may have a significant effect on the performance of the circuit; for example the gain of a op-amp where that gain is important to the next circuit connected to the output of the op-amp. And I will do the same analysis for a switching power supply so I can expect the voltage(s) to be within expected limits. (Being primarily a digital designer, op-amps and power supplies are about the limit of my analog expertise.) LTSpice can be used for carrying out such analysis. But I don't care about the tolerance of a pull-up resistor for example; it cannot be expected to vary enough to make a difference. Although not mentioned in the question, this type of analysis sometimes is important to be done for digital designs too. The datasheets for most digital ICs include minimum and maximum times for various parameters like setup and hold times. When combining various ICs together, sometimes timing variations in other chips, including propagation delays will cause problems in meeting these timing requirements. In particular, I have run into issues like this when interfacing with memories. Re the subject of planned obsolescence, this is sometimes necessary for economic reasons. For example, an Li-Poly battery may have an expected life of only three or four years. Do you provide a way for the customer to change the battery? Or do you keep it inside a closed case, like Apple does with its iPhones, where the battery can only be changed at one of their stores (unless the customer has purchased a secret tool and follows a video on YouTube). Another example is a cellular modem. A couple of years ago, when working on a project using a cellular modem for data transmission only, a decision was made to go with a 2G modem instead of 3G, even though we knew 2G would be phased out. The reason was the 2G modem cost half the price of the 3G. We found a carrier that promised that 2G would be available from them for the expected lifetime of the device. I think that the strategy that is best to follow depends on the kind of product you're designing. If it's something simple and non critical, just an implementation of a circuit on the datasheet of an IC. Then probably your colleague's approach is good enough. The IC and other components are guaranteed to work over what is specified. Not much need for an extra check. But if (for example) you're designing a very accurate voltage reference without using an IC for that then all the things you mention become more important as variations will influence performance. But if you design in a "smart" way then you can compensate for many things. For example the VBE of a BJT, in IC design we use current mirror everywhere, since in and output transistor are made in the same fabrication step they are nearly identical and differences in VBE do not matter much. In a discrete (off-chip) design you could use an opamp to make an accurate current mirror. Just use accurate resistors and a low offset opamp for example. A current mirror can be made more accurate by using emitter resistors for example or a base-current compensating circuit implementation. With experience you get to recognize the critical parts from the less critical. But if you do not know (no experience) then investigating the sensitivity to variations now will give you an idea. I think the trick is to keep a practical attitude and to put variations into perspective: what matters, what does not ? Where do I need a full investigation, and where is that not needed. It depends on how robust you need the design to be. Engineering is all about tradeoffs. If you want the design to be maximally robust, then your approach is correct. I'd go even further and apply a fudge factor beyond the datasheet min/max values, unless you know a lot about how the manufacturer arrived at those values. But doing that has a cost - in money, in effort that could be devoted to other things, in time to market. Not every design needs to be that robust. If you're designing an atomic bomb (and you want to be really sure it doesn't go off by accident), or a heart defibrillator, or a space probe, those costs are probably worth bearing. If you're designing a tamagouchi toy that will sell for$5, probably not.

To some degree your colleague is right - for many purposes a conservative design that aims at the middle range of parameters will work fine 99.99% of the time without the need for extensive analysis and testing.

If failure in 0.01% of cases is acceptable, then that's fine. Really.

You need to evaluate the tradeoff between the cost of design optimization and what you get in return for it.

All the answer you have received are very good. However,there is one other aspect that I feel has not been addressed. Your and your company's reputation. In my case, I would prefer to "err" on the side of "robustness." The reason being that I would gain a reputation for designing circuits that work reliably under varying conditions, and my company would get a reputation for providing reliable products. All(most) other considerations, I would leave them to my manager/supervisor.
If my design is too expensive, or is going to take too much time to build and test, I would let my manager "push back" at me and tell me to modify the design so that it costs less or done sooner, etc.. So, yes using min/max values is a good practice.

Designing a device that will work if components have any combination of behaviors allowed by their data sheet is a good practice when it is practical. Unfortunately, many data sheets fail to specify device behaviors with sufficient detail to make that workable.

As a simple example, suppose one takes a 74HC374 and wires outputs Q0-Q5 directly to inputs D2-D7, for purposes of using it as a 2x4-bit shift register. Such designs are commonplace and work fine in practice. A typical data sheet, however, will specify that a device has a minimum propagation time of 0ns (meaning the output could change instantly in response to a clock edge), and a minimum hold time of 2ns (meaning that device behavior is not guaranteed if the input changes within 2ns of a clock edge). In practice, a device for which any input could malfunction if it changes 2ns after a clock edge is unlikely to have outputs which change faster than that, but nothing in the datasheet guarantees that. In theory one could ensure correct circuit behavior by adding an RC delay circuit on each output before it feeds back to the next input, but in practice such things are almost never done when feeding the outputs of one part back to other inputs of the same part which are operated by the same clock.

I'm not sure if there's any particular reason that manufacturers generally fail to supply information sufficient to guarantee correct device behavior (e.g. by specifying that the fastest propagation time of any device in a lot, measured from when the clock rises above VIL, will exceed by at least __ns longer the hold time of the slowest device in the lot, measured from when the clock rises above VIH), but they generally don't; while it would be possible to add additional circuitry to ensure correct behavior under all combinations of parameters, doing so may sometimes double the cost of the circuitry involved.