As both beginning hackers and Silicon Valley investors alike keep discovering, there are a lot of differences between hardware and software. One important difference is cost of iterating over a design. In software, you can comfortably rerun your build process and push updates out near instantly to tons of users. In hardware, all of that costs money, and I do mean, it costs way more money than you’d want to spend.
When I see people order boards that could never work because of some fundamental design assertions, with mistakes entirely preventable, it hurts. Not in an “embarrassment” way – it’s knowing that, if they asked someone to take a look at the design, they could’ve received crucial feedback, pulled the traces on the board differently or added some components, and avoided spending a significant chunk of money and time expecting and assembling a board that has a fundamental mishap.
Every thing like this might set a beginner back on their hacker journeys, or just have them spend some of their valuable time, and we can do a ton to prevent that by simply having someone experienced take a look.
We Don’t Do This Often Enough
When it comes to hacker communities, an underappreciated part of what we can do for fun is design review, and it helps if we offer it actively. If people don’t know they can ask others for design review, they might not ask at all, and knowing that they can is certainly a confidence boost for people going for their first PCB design.
It’s also yet another way we can pass knowledge down to newcomers – through demonstrating PCB design tactics, techniques and tricks, and also ways to spot and prevent mistakes before they appear, that so many of us had to develop the hard and painful way.
This isn’t just about individually reviewing boards – it’s about having a design review culture, where we have a set of practices showing how people can ask for advice, and how other people are supposed to give it. For instance, it can be tricky to remember to focus on what matters, and talk about what the board designer actually wants to achieve.
I’m no expert, and, I’ve been doing design review here and there online for over a year now, so I think it’d be fun to talk about how we can address beginners’ design mishaps quickly, while meeting what they expect. It’s also certain that, the more eyes we get on any given board, the more things we can all learn about how to make it better!
Send Them In!
So, here’s my proposal. You send in your PCB designs. They don’t have to be your first designs, but it’s nice if they are. Ideally, there will be a problem still to be solved. If there’s something that we can all learn from, we’ll feature it and ask the community for help. Ideally, we could, over time, form a small collection of common PCB mishaps, and a series of fun articles.
Here’s a few asks. First, it has to be open-source, and not just schematics-available, though I will also be taking a look at schematics. Also, I’d greatly prefer KiCad over anything else, purely because that’s what I’m personally laser focused on working with. GitHub / GitLab / any other repo is the best option, but I never turn my nose at a sketchy link with a zip archive!
Send your link or files to the tips line, and put [design review]
in the title!
As a side question – are you in a community that does design review for each other and newcomers? If so, what do you have to share? And, if not, what are your thoughts anyway?
This is a great idea. I’m a software guy, slowly trying to find my way in the hardware world.
What I’ve noticed is that in software, there’s an abundance of useful help out there – articles, clear documentation, code you can grab and take apart, helpful people on forums etc – so it’s easy to learn new things. You do get a certain amount of geek ‘snobbery’ but it’s not so bad that you can’t make progress and by and large people are cool.
This isn’t true of hardware – now my electronics and embedded knowledge is somewhat rudimentary, but I’m here trying to learn and make progress. But, truth be told, I’m fed up searching for an answer to a problem or for some explanation of something I don’t get and finding others asking similar questions on boards and being met with distain for daring to disturb the knowledgeable electronics nerds, or the customary aggressive ‘read the datasheet’. As if datasheets ever make any sense to any mortal person! Especially when it’s some transistor question, where often the datasheet is rammed full of crazy graphs that I’m sure must make sense to someone somewhere – but honestly I don’t know what VgsHzVolts against temperature current cutoff differential parsec meters are, no matter how fuzzy the graph on the datasheet is. Maybe I don’t want to know badly enough, I just want my humble circuit to work so I can get on with the software side that I understand.
But I digress. Having some friendly way for people like myself to get our terrible mistakes pointed out so we can learn and move forward would be brilliant! I will endeavour over the weekend to get one of my current projects into a state fit for submission.
Datasheets are one of the most difficult parts of design. Sometimes not all the info is there, sometimes wrong info (or none).
Learning that part is very important though. Not everything in the datasheet is relevant to what you may be doing. Some are very important and not made clear that they are.
Syntax is difficult sometimes. Just like code. Need to know what the words mean.
And yeah…sometimes the best answer is “read the datasheet”…then read it again…then after you think you are done and have a prototype in your hand…read it again just to find that one sentence you missed.
Hardware can be hard :) I prefer it myself though.
For sure, point taken.
I understand what you’re saying – there’s no substitute for understanding the parts and the theory of how they work.
I’m very much still in the caveman ‘copy circuit block and paste next to other circuit block’ design style, rather than have deeper knowledge of what I’m actually doing, and I end up with a lot of dead boards that I then debug and iterate. My last big project happened this way, and it took 2 years and a fair bit of money to realize it, and I still have no idea how some of it works ha!
I iterate with a lot of guess work until it does what I need, then I move on, often never really understanding why the change I made in the last iteration actually solved the problem.
I think this happens out of simple necessity – I’m focused on ‘make the thing’, rather than the learning. There’s so little time to ‘make the thing’ that I don’t have time to learn all the stuff that would make ‘make the thing’ quicker!
It’s maddening.
I often start with reviewing sample circuits first. In my head it is often better to understand than the datasheet.
Then just like is often done in code I search the part number and see what others have done online publicly…but just like code you can’t just trust it. Sometimes you are being linked to a broken schematic but it can give you a rough idea of what is going on. Then the hard work starts where you need to verify everything isn’t exceeding any ranges from the datasheet.
Finding a good community like what is being discussed is a great idea. There are many who are willing to help but they are scattered between different forums/chats.
I just wanted to say that my high school electronics teacher was named Cecil.
I’m glad he was a teacher.
Earlier he did electronics work for government nuclear weapons programs, which may be why he died of cancer before reaching retirement age.
Problem with “reading the datasheet” as silver bullet advice for a newcomer, yeah there’s missing/wrong info, and also, it can also easily get overwhelming. If you are looking at someone’s project and you have the sense of what could be wrong, pointing that out instead of recommending the datasheet is the best option – then, you can point out the part in the datasheet that shows why that particular thing is wrong, which helps them learn a lesson instead of feeling lost!
A lot of the time if you ever find yourself doing something really hard, other than debugging, there’s probably an easier way, and whatever you’re doing is probably the equivalent of making your own programming language, the extra special challenging way.
DIY electronics is less practical and has more hobby influence, compared with software which has trends driven by people’s day job where they just want stuff to work.
If you care about the properties of specific transistors enough to even try reading those datasheets, you should feel accomplished, you’re probably doing something at least intermediate level!
In the “boring beginner”/small qty commerical/etc way (Think the equivalent of just using a JS framework) you really don’t want to be relying on the specifics that much, transistors are mostly only ever used for power switching, you’re usually doing PWM and trying to avoid analog anything, you’re probably using motor driver chips instead of transistors because they have protection, etc.
You might check something like “Will it have at least this much gain at this temperature” but you rarely think “I need this much gain specifically” unless you’re doing something more advanced.
Those graphs aren’t hard because electronics is hard, they’re hard because anything involving real math is hard!
Yayyyyy will be waiting for your submission! if you already haven’t sent it in – we’ve received like a dozen ^^ and yeah,, a friendly approach is a must. I do believe that, if someone takes some time to write an answer to someone’s electronics question, it’s best to spend that time either giving them the answer, or better yet, demonstrating them how to find the answer in a way that teaches something new. Let’s see if I can cover some of that ^^
During the development of the V2 Smoothieboard doing review and test was a large part of my work.
At a certain point I started using the Github issues to log the problems we were having and how we fixed them. One in particular was especially annoying and there was only one sentence in the datasheet (mixed in the middle of a paragraph) that warned about it. https://github.com/Smoothieware/Smoothieboard2/issues/30
If you are doing the testing and documentation anyways (like you would for a customer) it is very easy to upload to the project for future designers to take note of. As well as keep track of how/who/when the fix was applied to the project. And all you need to do to review is look at the closed issues.
I know many people who review projects for people but it is quite often on a case by case basis. Although, there is plenty of need out there. Even if it just starts as a forum/guide on how to get started…then have developers write pages on more advanced topics. Good way to get activity across projects too (i.e. kicad dev writes an article explaining a feature or process).
That resistor issue is all too painful.
Going over ADC datasheets and now NXP microcontroller datasheets I find so many small details like that and they are often just a single line, or an annotation in the reference design schematic.
This pin cannot be tied to ground, this is a ferrite bead and not an inductor or resistor, this pin needs this capacitor, must be exactly this spec and within *this* far of the component and tied to the center ground pad!
Sometimes I see these in the datasheet, sometimes in an application note, sometimes in a specific assembly addennum.
The only thing I have learned so far is that really good documentation is REALLY DAMN DIFFICULT and honestly as long as it is printed somewhere I am thankful, it just means I do a lot of reading and usually end up with my own notebook of comments and details.
Best ones are the ones they don’t really tell you about that you get to find out for yourself if you are not watching closely.
“Sure…this ADC pin works but since it is right next to the PHY clock on the MCU it is nearly impossible to filter all the noise”
Little stuff like that seems a bit obvious once you experience it though.
Docs are really hard. Especially on complex stuff. But every time you are reading 100 pdf datasheets open in your tabs…remember at least it isn’t databooks anymore.
Oof, that reminds me of the months I spent debugging a board that I was working on that had a 900 megahertz on it. I eventually figured out that the voltage regulator was unstable. Once the code started to run, and contacted the manufacturer. They told me that the voltage regulator was unstable in the presence of RF.
Oh that’s wonderful! It’s like asking a question on stackoverflow and answering it yourself, except less rules to follow and higher usefulness for project participants in exchange for maybe a slightly worse search engine position =D A cool trick for sure!
At our department i am the guy you ask when your pcbs or circuits are not working. I got so much of THESE pcbs that i instructed my boss to force everybody to submit their designs to me before ordering pcbs and parts.
The e-waste we produce has gone down significantly.
I wish our electronics guys would ask me to review their designs. I’m a software guy, but still pick up crosstalk issues, after they have been made, and point them at the parallel traces with signals and clocks.
Yep! It really, really helps, glad you’ve figured out a pathway to make it required. Me, I’ve seen enough PCBs online where I’ve personally had no stakes but a friend would’ve had gotten burned, that I got convinced we should help each other way more on that front.
I have one big problem with PCB reviews in my experience: if you post your design on a forum or chat for people to comment, they will invent a lot of superficial problems by just looking at the board, and will never find that one problem that actually makes the board not work.
So you will be sent on a fool’s errand of rounding off corners, adding a bigger battery, adding dozens of completely unnecessary capacitors and ESD-protection diodes, swapping RX and TX so many times, that you can’t even remember how they were initially, and generally pandering to the different opinions and tastes of the people reviewing the design. You end up with a lot of stress, having to defend your design decision that are perfectly fine, and distracted from the actual issues. Bikeshedding galore.
Better save yourself the stress and the time, and just accept that your first design is not going to work, leave room for bodges on it, and order it at small quantity. Oh, and test with a breadboard, or, better, some universal breakouts, before ordering, too. Because your reviewers sure are not going to.
Trust me, that’s a problem for me as a reviewer too! If I spend time giving feedback on superficial issues and end up not catching a major bug, I’m gonna be a bit embarrassed, to put it lightly, and I’ll have wasted my time. My goal with reviews is about working boards, not pretty ones. Though, of course, there’s definitely some potential in pretty-fication simply because quite a few people enjoy seeing how it’s done, and, can’t deny, cleaning up PCB routing is pretty satisfying!
A good design review is a lot of work for the reviewer. Asking someone to do that for you on a project that they are not really involved with is a big ask. Doing a decent job of the review requires the reviewer to look at and understand each part of the circuit. This is true for board designs, software and RTL designs. It’s also a really good opportunity for the designer to learn some things, beside the flavor of tennis shoe if it is done well.
It might feel like a lot of work, but I do believe it can be *significantly less* than that.. and I’m looking into a toolkit for that! ^^ especially for those of us who have seen many kinds of designs people tend to create, the “understand each part of the circuit” stage tends to be quick.
Will that tool have enough information to check the configuration on each pin of every chip in use? Recognize unusual, but possibly acceptable configurations? For example, a basic power supply can be implemented many different ways.
That’s indeed often the case and can be quite demoralizing, which is I suppose why there is the advice to keep your projects/bigger goals private.
It’s frustrating though, since sometimes good feedback is very rewarding.
It’s why I always enjoyed well made “model checker” software that verifies for typical mistakes, but also for logical mistakes. You can test, iterate, “ask” it repeatedly and it wont get tired or start to give random opinions and analysis you didn’t ask for, or let’s you ignore what doesn’t matter without becoming less helpful.
Investing in developing such software is also sustainable, since it will be useful for many and also useful longer term. (If only this unnecessary drive to obsolete platforms/systems wasn’t so prevalent, that makes a lot of software phase out without any good reason.)
A mix of teaching and validation tools, that focus on helping/usefulness, not rating. Rating and evaluation has become much too widespread of a mindset, because that’s the easy way to deal with masses of information and data (in social networks, the internet etc.).
Well designed and thought out systems give a more solid and reliable grounding, though. The effort is substantial to build such systems, so the efforts needs to be rewarded, which is not the case, so mass handling of data/information became the norm.
And that’s also why many answers focus on quick superficial reactions.
Oh do you have examples of such software? That’s a pretty interesting concept overall!
>Better save yourself the stress and the time, and just accept that your first design is not going to work, leave room for bodges on it, and order it at small quantity.
This is very good advice!
I would add a few other things:
1. Add lots of labelled test points. Add a test point for every stage of critical signal pathways so you can trace them out with a scope (obv. this is tricky for really high-speed/low noise etc circuits)
2. Use a little SMD LED + resistor to each power rail so you know there’s power.
3. While you’re adding LEDs, put on an idiot LED so if all elese fails you can check to see that you can blink the LED
4. Put a name, date and version number on the PCB even if you are sure you’ll never make another one.
And finally, when you DO receive you first shipment of PCBs, make sure you fix EVERY issue before you order the new revision PCBs. Even if it’s a lot of work and messy bodge wires.
Just worked on a board where the design was laid out from a reference document in the chip vendor’s data sheet. Should have worked but didn’t. Scoured the data sheet and app notes but couldn’t find anything that could be causing the failure. I did notice that the “demo board” layout had a ground plane with stitching throughout and began to suspect switching noise as the culprit. Lifted the chip’s VCC pin and wired it directly to the power connector and it began working.
The engineer that laid out the board said the wire shouldn’t have done anything, but the proof is that it now works. It just goes to show a little observation, suspicion and experience is sometimes the best way to find a fix. The other lesson is not to discount the seemingly “unnecessary” advice from others.
TI is the worst. Great chips, but you have to get everything *just right* or they won’t work worth a damn.
I’m currently fighting a static issue on a battery operated machine – I’d love a hardware review :-)
oh that’s interesting, have you talked about it somewhere?
You have to treat hardware like software.
You design with the ability to make some modification / facilitate testing ESPECIALLY on designs you have never done before.
Second, on designs you have tested and are successful, you turn those into modules or circuit snippets. In Altium it’s Design Reuse blocks. These include BOTH schematic reuse blocks and PCB layout blocks.
SURELY YOU TURN YOUR COMPLETED, TESTED, SOFTWARE INTO MODULES WHEN YOU’RE DONE, RIGHT? You do the same with hardware.
For a DIYer, you don’t even need software support for reuse blocks…. you can just literally make everything separate modules and wire it up with 0.1″ female jumpers.
I never understood why people use those junky little Amazon relay boards. I thought we should have custom controller boards with 12v step down converters built in…
But then I got a job where they use them all the time, and it makes so much sense. If it fails you can swap it without soldering anything and risking breaking stuff worse.
If you no longer need something, you just take it apart and make something else like Lego, no e-waste required.
Now I’m disappointed every time I see a custom circuit board used for something that could have just been an ESP32 module, some relay modules, a 12v-to-USB module, and some Wago connectors.
Cheap, off the shelf, swappable, e-waste free, very little training needed, easy to test, very fast to put together.
Clock rates become an issue.
A 0.1 inch connector can work fine on breadboards, or a 10MHz clock.
Jump to 50MHz, and they probably still work.
At 100MHz, track length and impedance mismatches are coming into play. Your connectors might work, if you keep your tracks short.
Oh, you have a cpu / fpga running at 480MHz? Good luck with that.
Clock rates are a big issue with more advanced stuff, but for the simple stuff hobbyists and entry level devs do, you’re probably not gonna find anything above 5MHz, outside of an off the shelf dev board.
And if you do, the high frequency probably doesn’t need to cross module boundaries.
We do a lot of design review on the ZMK discord server for keyboard PCBs.
I try to:
* Ask what areas specifically someone has questions on,
* Focus on the aspects they’ve noted first,
* Afterwards, focus on the areas I have specific experience with to catch anything there
* Refer them to whomever I know that might have more experience with a specific aspect that I don’t.
Above all: refer them to known working designs to compare!
These days I’m thankful for bismuth solder paste. It melts at such a low temp, a bit of hot air makes moving chips from a v1 to v2 board nice and easy.
I had the benefit of making a pirate fm transmitter from scratch in high school. Had to figure out how to do stereo and 80W from library and ARRL handbooks. Treating every design with RF design rules is the secret sauce.
There is no such thing as ground. It’s just another circuit net. Every conductor is a resistor, capacitor and transformer winding.
It seems in my 50 years designing boards, reviews have become less common.
Youngsters now seem to trust Google over “old timers”
Google is good, in that new ideas can be bought forward much faster than times of old,
but
Youngsters cant and have no way of distinguishing a good and a bad google result,
Unfortunately, reviews are not taught, or common , so become “adversarial” , so become less common, etc.
Unfortunately, each and every company I as a consultant work for, have their own “expert rules”,
and the nuances of each design, are complex. Look at something simple like ground plane split questions,
Unfortunately a common review site I feel is liable to fall into the trap of no one can agree. but a good try.
“Unfortunately, reviews are not taught, or common , so become “adversarial” , so become less common, etc.”
Agreed, that’s a trend in social media in general. So it’s becoming risky to ask questions or make mistakes (which has ofc reasons, because others have been lazy or careless — but it’s still annoying when people assume that, when it doesn’t apply). It makes learning demotivating, as you usually struggle enough figuring things out. Or when you really need help that can’t be solved with reasonable web search efforts, you will be referred to search the web again…
My experience: old timers can be trusted as long as they’re mindful of the advice they’re giving and positions they’re taking. If you want to help someone and you want them to seek out your help, you have to respect where they’re coming from, and I feel like that’s what’s missing from reviews I’ve seen. This part is crucial before the knowledge transfer process can even begin, and I feel like it’s missed out on. As for distinguishing good and bad results – yeah that’s the part that comes with experience, because a lot of advice sanity checking is about seeing whether it fits into your mental map of the field, and, can’t do that too well if the mental map is small.
You’re touching upon a wonderful point – it’s easy for a design review to become adversarial to begin with! It involves pointing out possible mistakes, and a large number of cultures, ethnic/interpersonal/online, have a complex relationship with mistakes, that doesn’t necessarily result in effective learning. I am convinced that, when doing a review from a position, we’re not just giving advice on technical sides of it – we’re also modeling a relationship that one can have with mistakes.
The “expert rules” tend to stay within companies indeed – which is a shame, because that makes them fundamentally proprietary knowledge that could be utterly wrong for all you know. I hope that, when we go into individual board specifics, we’ll have other people go into these rules and lay them bare – such discussions are wonderful for figuring out whose rules hold water and whose don’t!
This is a great idea – I am the only one in my circle of friends who has significant electronics experience, so it’s hard for me to get anyone to review designs. I pretty frequently make mistakes that a reviewer likely would have caught.
…same, except I mostly avoid mistakes =D but I don’t know anyone who’d review mine, which, ngl is a bit disappointing. I’d put them up, except I often skirt boundaries (i.e. 2L design where 4L would work better, tight small-footprint designs), and I want someone who’s respectful about that while still being able to give good advice!
I’m still waiting for an always-on DRC rule that stops people putting solder points (thru or SM) too close to components with plastic bodies. I see qualified engineers making this mistake time and time again.
I would like to help. I have preformed hundreds of customer schematic and layout reviews from my time at Intel Corporation as a Signal Integrity/Validation Engineer. Currently, I am in the midst of getting the next generation started in teaching the Electronics part of Mechatronics. It has always been my assertion that five engineers in a room can out preform any CRC or even AI based rule checker. Maybe the room is now online? I would love to help redefine the process.