I would like to know if anyone has some PCB design best practices. These could include following a [mostly] standardized design checklist for review of a PCB before sent to fabrication, testing/measuring tips and tricks that have saved countless hours (and money), or supply chain considerations. Some of us here (myself included) are aspiring engineers who don’t necessarily want to reinvent the wheel, so would anyone be willing to share good habits learned that have turned into best practices?
Too many to list really, but I’ve done a Design for EMC course by Keith Armstrong only a year or so ago. Since striving for EMC also results in good signal and power integrity, there’s a lot of value and I’m happy to share some nuggets:.
- Tie shields to GND via a 0Ohm resistor. The old 1M/10n in parallel is a common misconception to avoid odd shield/GND ground loops within a single cable which are mostly a non-issue in modern systems, and a direct GND tie (at both ends!) will give best EMC performance. Worst case, the fit option means you can play around (in applications with multiple cables that are shielded, all bets are off and there’s no way of knowing what option works best - but generally the 0Ohm direct shunt is a good place to start).
- At the end of the design, top and bottom GND fills is a great idea if there is decent free space (ie no point if it is split very badly) followed by via stitching. A solid GND plane gives anywhere from 10 to 20dB reduces EMI noise floor, so even a split GND fill won’t hurt.
- For 4 layer or more boards, a VCC/GND plane gives basically 10n free bypass capacitance globally. So when placing bypasses, go for higher (100n, 1u) or lower (1n) value depending on your IC
- Parallel bypassing (1u/100n/10n) does not give the frequency response you would expect (ie their frequency responses don’t just perfectly multiply due to ESR/ESL of each). If you have a current-hungry fast device (say, an ESP32) a Pi filter will give much better results
- Fit option for your plated mounting holes. Common-mode currents are the main cause of EMC issues, and you never know where they could be coming in and out of your system
- Ferrite beads have very specific and high Qs. This means if you choose just 1, it could either not be enough or actually make things worse. Consider choosing them carefully, and using several in series for critical power lines.
Take these as-is, I’m not here to debate. I’m sure some of them will spice up controversy, as these topics can be polarising. But I’ve seen the calculations, the simulations, and the before/after testing to prove them (that’s why you pay thousands for the course for). They’ve worked well for me. So I stick by them
I don’t know how good the advice in it is, but there’s a 124-page document here that has a lot of interesting stuff in it. I’m sure the more experienced people here would find plenty of things in there to disagree with, but for someone less experienced (like me) it’s a valuable resource.
Dunno how complex advice you’re looking for, but here are some basic things that I usually mention on Kicad intro courses:
- If you have a MCU on the board
- add a button (for testing/bringup)
- add a LED (for testing/bringup)
- Always add rounded corners
- Add mounting holes, even if you think you don’t need them
- When you have exported the PCB files, make a ZIP of the PCB project with a version number in the name
- Pin holes are free. Break out some extra I/O on the first revisions of a board - just in case you’ll need them
- A Power LED can save you both time and grief
Understanding how Current flows and what return current is, will change how you design. This video shows this visually. I’m a big fan of Robert Feranec on Youtube and he has a long list of great tips. The videos are full of things that are difficult to learn without sitting next to an experienced engineer as he lays out a board.
I put test points on unused pins of devices that would be hard to attach wires to wherever it is practical. It makes adding wires much easier.
Great question with some very informed answers so far.
This is a vast area and the needs of a hobbyist building a few boards for their own use will be very different to the needs of a company shipping many millions of assembled PCBs in finished products.
That said, here are two checks that are well worth doing. Obviously, this is not an exhaustive list but these two issues apply to projects of every budget and complexity. I have seen organisations of all sizes overlook these checks.
- Check the footprint of each component on the PCB again and again … and then, again. Sooner or later, everybody gets a footprint wrong. It is frustrating, embarrassing and imminently avoidable. It’s also a rite of passage so don’t beat yourself up too much. Just try to make sure you go through it on one of your own PCBs rather than on a client’s PCB.
- If you have a crystal in your design, e.g. to provide the clock source for a microcontroller, do the calculations to ensure that the crystal will definitely start to oscillate and will oscillate at the right frequency. It is not unusual for a crystal to operate on a single board at room temperature. It is well worth doing the work to ensure that it will do so on all PCBs across process, voltage, and temperature (PVT). I have seen many products suffer from this issue after the product has been manufactured in volume, or worse, shipped to customers.
Hope this helps.
On EMC - I took a class by Andy Eady (https://emcfastpass.com/) that was great, he does design reviews & consulting as well.
For board bring-up, I always use a thermal camera (just a cheap ‘seek thermal’ with an additional lense) - it’s very fast for troubleshooting all sorts of stuff. You can almost instantly see issues that will make you rather unhappy if left too long!
Lots of good tips here already!
I have been burned more than once by using the wrong CAM file (such as one that doesn’t include the milling layer, making connectors etc not fit). So adding a version control to that as well as the actual design files is a good idea.
I am also a big fan of using thermal camera when bringing up a board, or trobleshooting one.
My personal favorite method of finding a short. Saves a whole bunch of time.
Some good advice for EMC here. I’ll add: understand where your return currents are going. High speed traces and power planes beget a solid, continuous ground return path, with no interlocking loops making another possible aggressor out of a GND plane! (Thinking of a professional project where a coworker mistakenly routed HDMI TMDS over a power plane, then referenced both to the same GND plane. The power plane reradiated HDMI TMDS horribly, desensitizing radios and causing serious compliance headaches. Not fun.)
Liked the note from @scott.xentronics re a global 10nF cap from parallel VCC/GND planes in 4 layer boards - I was wondering something similar to that just the other day!
You actually don’t get anywhere near that. If you use a special exotic “buried capacitance thin laminate” material, you can get maybe a few hundred pF/sq inch between L1-L2 and L3-L4, but L2 and L3 remain miles apart from each other and the distributed “decoupling” capacitance is pretty negligible. The thin spacing is used between L1-L2 and L3-L4 in order to increase mutual inductance between the signal layers and their image planes, or if you prefer, to reduce the planes’ impedance.
Yeah, the prepreg layer being substantially thicker than the L1/L2 and L3/L4 substrates seems like that would be a problem. I guess I got a little too excited about “10nF” without looking at the “global” - of course it’s not going to be as high in little local spots.
Another thing that I always get a PCB back and smack myself for not including: adequate ground test hooks. For low speed stuff, having a nice ground loop to easy-hook your scope to is really convenient.
I also tend to kick myself when I don’t include color coded test hooks. I bring up a multicore ARM SoC once or twice a year, and these make it really fast to validate a power sequence. These hooks make power/reset sequencing a breeze. You can just clip your scope probes to the next hook, cycle power, screencap the sequence, and keep moving. Be sure to include a hook for the global RESET_L line as well - that is frequently a useful timing reference for the overall sequence!
It’s an extra ten minutes to add to the PCB, and an extra $100 of test hooks (probably less if you get them from the Chinese equivalent of Keystone), but when you’re dealing with a multicore ARM SoC with an abundance of voltage rails (looking at you here, Mediatek ), it can turn a half-day or day’s worth of measurements/screencaps into a half-hour.
Wow, this is great already! Thanks everyone these tips will be pretty useful to implement.
Any thermal camera recommendations?
The FLIR One iPhone camera is hard to beat.
Wow. That does seem good.
Second @JuliaTruchsess’s reccomendation for FLIR cameras!
I’ve used one of the iPhone modules that Julia is talking about - belongs to one of my thermal engineer friends at work. He loves it. I’m a big fan of the pro-line of products FLIR makes too.
I also love the FLIR One thermal camera. It’s god a crap battery but the rest is great!
After reviewing everyone’s best practices, be sure to pick and choose the ones that best apply to your context. Not all of them will apply to you.
Then, structure your workflow around your set of best practices. I like the culinary concept of “mis en place”, to have your PCB design environment have a consistent starting place for each project. Such structuring will help you automatically stick to “good habits”.
Pick out your favorite board fab houses and prepare comprehensive design-rules around them.
Set trace widths and via sizes that you will consistently use by default unless otherwise needed.
Prepare boilerplate for your fab notes and title block. It doesn’t have to be a formal title block. I have labels that get auto-generated with the client name, project name, and project revision. I can always put it on a hidden layer or delete it outright if needed.
Prepare a default starting board with mount holes and any other items that you want on boards by default. On my board, I have a 0603 LED and resistor by default on VCC, and the board outline set to 100 x 100 (because Chinese fabs run specials at the size or below).
Prepare footprints for your favorite tools. A FTDI footprint with pins labeled for use during prototyping. A banana-jack footprint spaced to accept the dual-ganged banana plugs. ISP headers for your favorite MCUs. And so on.
Also prepare footprints for favorite connectors and hardware. I have my own library of unplated screw holes, plated screw holes, headers, 6mm tact buttons, test points, et cetra that I designed to suit my particular needs and preferences.
Set up your output workflow to generate fabrication and assembly data in a consistent manner.
Put all this “mis en place” stuff in a central location which you will maintain for the rest of your career.
One thing I haven’t seen mentioned here yet – if you have a sufficiently complex board design, re-annotate the board from the PCB and back-annotate that into the schematic. It makes working on the board much easier when you can locate parts quickly because they are mostly in order. Not so much an issue with 20-30 components. But when the part counts are in the hundreds or breaks a thousand, it really helps.