As a sidenote I think one day customizing the PCB for your devices will likely be seen as the ultimate feature for enthusiasts.
For example:
Why carry around circuity to convert multiple voltages in your phone if you can make sure you’ll only ever use a single, standard, voltage charger with it?
Or, reserve some extra spaces on the PCB for a future drop-in RAM upgrade on your laptop.
I think that's definitely the future - the framework laptop and the steam deck is proving this out a bit. Hopefully we can get more and more customization on these open(ish) platforms.
Sounds like a total nightmare for an engineer. You now have to deal with whatever ram chip bubba got off eBay.
Also circuit boards for thing you'll actually want to play with have more layers than you have fingers on at least one hand, you can't just chop them up willy nilly.
Maybe it’s just me, but I found flux to be poorly documented, incredibly slow, and I find their landing page marketing a bit misleading. They almost imply you can simulate microcontroller behavior + other circuitry all on their tool, which would be an enormous undertaking. It’s what led me to sign up. But in the end it’s just a tool that barely makes any sense. The learning curve for their simulator assumes hardware folks are going to spend hours figuring out how to code up the sim instead of graphically laying out an LTSpice sim and hitting run.
One thing that's a pain I've encountered when designing my own PCBs is having to figure out, route, add and source bypass capacitors. Each chips you use needs them nearby, usually the datasheet specifies the type and capacitance. It would be nice to have either community premade functional blocks that include these as well as links to digikey for sourcing.
Things get a bit more complicated when you start using switching power supplies and you need to include a specific inductor, multiple caps and resistors all arranged in an optimal way specified by the datasheet. Those would be awesome to have functional PCB blocks for.
Something I've noticed is that the demand for "vendor supplied libraries" has only slowly trickled down from the microcontroller (MCU) world.
I've been playing with MCU's for going on 3 decades now. At first, you were lucky if an expensive commercial assembler supported your target chip. Then some vendors came out with free assemblers.
It quickly got to the point where a MCU stood little chance in the market if the vendor didn't serve up a toolchain for it, starting with assembly, but quickly demanding C. Then, on top of just the C compiler, folks started to demand libraries to support the chip specific hardware modules.
Going one step further, today I wouldn't think of using a MCU that was not available on a development board (no BGA soldering for me) and supported by Arduino.
I think PCB designers will come up to speed on this, but it will take time. There are some not insignificant issues. One is that your favorite distributor runs out of the component that's spec'd in the library layout, and you have to scramble. I have a tiny side business making an electronic gadget, and I've had to make multiple substitutions to keep my business running. Bless you, Octopart. ;-)
I wonder if there some way of specifying the important properties of the part, say the voltage rating, capacitance, etc of a capacitor, and have it choose the best capacitor from digikey or if sold out, the next best and do that all automatically. You can even specify a marking in the PCB like C6 and have the digikey BOM reference that so your little parts bag will have that printed when it arrives.
That sounds like an absolute logistical nightmare. Instead of trying to match voltage and capacitance and dielectric (ESR & tempco), why not match by purpose? And furthermore, it's the designer's job to try to use as few variants of components as possible. In general, 1 uF 25 V X5R in 0402 will work wonders for general decoupling (don't use many different values in parallel) and there's only so many other uses of capacitors to fulfill. If you need a particular 3 pF capacitor for RF matching or 12 pF capacitor for resonator loading, anything else likely won't be a good fit.
Digikey itself does a bit of this. So does Mouser, and it's a main feature of octopart.
Go to any part and there is both a short list of aka or substitute part numbers and a few links to likely alternatives.
The links aren't always good sibstitutions. Sometimes they are, but sometimes they are only very general alternatives where it does the same nominal job but you'd have to change your design to use the other part, sometimes they are merely related or associated in any sort of way like on Amazon. Maybe it's the mate to the connector you're looking at or the pin that fits in a housing, maybe it's an alternative, maybe it's just frequently ordered together for who knows what reason.
But if there's an aka list, that will be mostly a good drop-in substitution list.
Go for say a max3232-alike from anyone, and the aka list will have several good drop-in replacements from different manufacturers with totally different looking part numbers.
You still have to vet them yourself because some might be the wrong voltage or package. And you definitely have to check whatever fine details you care about like if you're trying to go for lowest possible power usage or highest possible temperature range, the substitutions will include everything not just the ones with the same lowest possible idle current that's a few uA less than usual like the one you had picked out.
They obviously have an extensive db in house with columns for all kinds of propeties, and some code to make meaningful matches and substitutions where there are sensible subsets of properties being considered vs ignored.
I think it would be totally abusive to their site to write something that scrapes it, or octopart etc.
There would have to be a community built db like that. The code for finding intelligent matches probably wouldn't be too crazy. A list of which properties are significant for a given part would just be part of the data on that part, and then it's pretty straight query on that.
A ui in a find-subs tool could even let you select/unselect properties for consideration, since what constitutes "significant" changes for each job. Sometimes even different package sizes are ok with you because for a lot of parts it's possible to draw a single footprint that can accomodate multiple different versions of the part.
But even with something like this, most jobs are doable an almost infinite number of ways using whatever parts you have access to. If you don't have one resistor anywhere in the world, you can use 2 others in parrallel, etc. The same job got done with no 1:1 substitution at all.
To be really useful there would need to be something quite a bit more involved. Where you would have to feed in your whole schematic so the the tool would know that this resistor isn't just a resistor, but the bias input to a transistor, and if you need change the transistor and you can't find a simple exact match you can find some other transistor AND a different bias input together to produce the same outward effect as the previous 2-part block. Let's just say "non-trivial"
For production,its best to specify the important properties as you say, then let the contract manufacturer figure it out, rather than spend ages finding the cheapest 100nF 10V X5R 0402 cap. If it really matters, then add a "no subsititutions" column in your BOM.
For smaller prototype runs, PCB+Assembly suppliers like Eurocircuits have "generic parts" already in stock for common passive values, which they will give you for free.
Its only really if you are in a big rush or very budget constrained (e.g. a hobbyist or startup) that you would assemble yourself and hence buy all the parts.
If you do though, then Altium can happily manage multiple alternative options for the same "part" using ActiveBOM, including a search tool and distributor stock levels. I think the cheaper CircuitStudio option might have this too.
We've actually got some decent (imho) support for this in our standard library, OCDB (1).
The function call is a little deceivingly simple, it queries a parts database for one that fits the constraints like value/rating/stock and the part/footprint are parameterized by global design variables/rules under the hood.
Many IC manufacturers already have reference PCB designs (or they have them for their EVMs) that you can look at for guidance. Personally I would rather adapt that for my design than modify a pre-made section in the EDA tools.
I've also found that the choices made in the reference PCB may not always be the best choice for your design. For example the reference may have a 802 cap but you'd rather use a 603. Same for routing, the reference may be a 2-layer board but you're doing a 4-layer. You may have other ICs that may be able to share certain components. And so on. Part stock and pricing also fluctuates quite often, so a manufacturer-provided BOM (which BTW exists for some EVMs) may not always work assuming that those are the exact components you want.
I haven't designed a PCB in a while but from when I did it the reasons above were why people weren't really keen on pre-made "libraries" of building blocks.
Redrawing designs yourself is indeed commonplace in the electronics industry, but coming from the software world it's always struck me as a mix of weak tooling and outdated conventions, rather than something inherent to the industry.
After all, why shouldn't a reference design be defined in a parametric way? Your switch-mode power supply might need a class-X value-Y precision-Z voltage-A ESR-B at frequency-C capacitor, while my decoupling capacitor just needs to be >3.3v 100nF and doesn't mind if you use one 5x larger.
Personally I've made innumerable designs where, at the schematic stage, I've copy-pasted a microcontroller and a crystal and capacitors and programming header and reset pull-up. It's a common-sense way to avoid human error, and a time saver too.
The design reuse is happening - the tools just haven't caught up.
The tools have had over ten years (if not twenty) of a growing maker movement bringing new people without training in EDA tools who would benefit from this kind of reuse… and it hasn’t caught up. There seems to be a perception that you should be able to do these basic things, like copying a circuit design into your EDA tool, and understanding which basic components to pick like all the little capacitors and pull up/down resistors. This perception prevents people from viewing it as a worthwhile feature.
I'm not sure what problems you're running into with decoupling capacitors. I find this to be the easiest part of my designs.
If the datasheet has specific requirements, do that. Otherwise, 100n capacitors on each power pin. 50V 100n capacitors can be found all the way down 0402s, and there's no sense in using anything else. Dielectric doesn't matter much for decoupling.
Increased cost due to an additional BOM item is way higher than the fraction of a cent of a cheaper capacitor.
Makes me wonder how Verilog isn’t used as a netlist format for PCB schematics. It’s used all the time as an interchange format for netlists from synthesis to APR, netlists of analog schematics, etc. Could just as easily be deployed to board schematics.
There are some reasonable reasons, like how it may speed up passing regulations. I believe RPi used some integrated WiFi modules that had certification done separately. And yeah, there's a lot of passives in those modules that I would not want to manually assemble
The search term you want is modular certification.
The volumes necessary to justify the cost, time, risk, and specialized skill set necessary to achieve both regulatory and standards certification of a WiFi device are significant.
Cost. You can easily get the premade ESP8266 boards for a quarter at scale. Laying out your own design for an ESP32 costs a lot more in time that's unnecessary usually.
If you're referring to the module on those boards, I can tell you it's because the actual IC was impossible to source. Only modules were readily available.
The core ideas here are cool, but switching from a symbolic, schematic based approach to code seems insane for what amounts to strictly analog/RF design. In integrated circuit design, "modules", parametric components, and bulk connections are standard practice in our schematics. We can also integrate this/use the same techniques with relatively high performance layouts. There's no reason the same couldn't be used for PCBs, and I'm honestly a little surprised that those features don't exist given that the only two major IC design software companies also make PCB design software.
I've mostly done analog IC design, but I've also done a not insignificant amount of verliog/vhdl, programming, infra as code, and pcb design. I can't pin point exactly why, but I just can't see how you accomplish the same thing visually and/or information ally with code as you can a graphical schematic.
So far I have only used skidl for a few small projects.
One project where it worked really well was in creating the schematic for backplanes, which is normally kinda tedious - especially if one has to create multiple variants with different slot numbers.
I don't buy that argument. ICs are massive. Way bigger in terms of number of schematic pages than any PCB. I think the problem is that PCB designers are used to having very "flat" schematics whereas IC designers always have a lot of hierarchy.
For example, the madness with the schematic he shows in that video for all of the by pass caps is something you'd never really see in an IC design. The cap would be placed in the schematic hierarchy either right at the voltage regulator or right at the circuit where its needed. But on PCB schematics you see that kind of thing all the time.
Part of the problem may be that with an IC you can easily simulate anything. The whole workflow is built around it. For a PCB, outside of using models for standard analog building blocks via spice simulator, it's a lot harder to verify your design.
I think software-defined (customized) hardware programming is the future whether it is in the form of HaaS or not.
The JITX company mentioned in the article is a YC startup trying to automate the electronics design part with AI. The company is using a new L. B. Stanza programming language created as one of the co-founders Ph.D thesis [1].
If you want to learn on embedded system design this is a recently released book with an accompanying open source hardware design described in the book [2],[3].
40 comments
[ 3.4 ms ] story [ 79.2 ms ] threadAs a sidenote I think one day customizing the PCB for your devices will likely be seen as the ultimate feature for enthusiasts.
For example: Why carry around circuity to convert multiple voltages in your phone if you can make sure you’ll only ever use a single, standard, voltage charger with it?
Or, reserve some extra spaces on the PCB for a future drop-in RAM upgrade on your laptop.
Also circuit boards for thing you'll actually want to play with have more layers than you have fingers on at least one hand, you can't just chop them up willy nilly.
It doesn’t just cover schematic design but also PCB layout. The later which I am not sure Jitx can do
But the team has been moving extremely fast on things like performance, tutorials and onboarding classes and so on
Btw: you can absolutely also just graphically layout your sim…that’s a common misunderstanding I think
Things get a bit more complicated when you start using switching power supplies and you need to include a specific inductor, multiple caps and resistors all arranged in an optimal way specified by the datasheet. Those would be awesome to have functional PCB blocks for.
I've been playing with MCU's for going on 3 decades now. At first, you were lucky if an expensive commercial assembler supported your target chip. Then some vendors came out with free assemblers.
It quickly got to the point where a MCU stood little chance in the market if the vendor didn't serve up a toolchain for it, starting with assembly, but quickly demanding C. Then, on top of just the C compiler, folks started to demand libraries to support the chip specific hardware modules.
Going one step further, today I wouldn't think of using a MCU that was not available on a development board (no BGA soldering for me) and supported by Arduino.
I think PCB designers will come up to speed on this, but it will take time. There are some not insignificant issues. One is that your favorite distributor runs out of the component that's spec'd in the library layout, and you have to scramble. I have a tiny side business making an electronic gadget, and I've had to make multiple substitutions to keep my business running. Bless you, Octopart. ;-)
Go to any part and there is both a short list of aka or substitute part numbers and a few links to likely alternatives.
The links aren't always good sibstitutions. Sometimes they are, but sometimes they are only very general alternatives where it does the same nominal job but you'd have to change your design to use the other part, sometimes they are merely related or associated in any sort of way like on Amazon. Maybe it's the mate to the connector you're looking at or the pin that fits in a housing, maybe it's an alternative, maybe it's just frequently ordered together for who knows what reason.
But if there's an aka list, that will be mostly a good drop-in substitution list.
Go for say a max3232-alike from anyone, and the aka list will have several good drop-in replacements from different manufacturers with totally different looking part numbers.
You still have to vet them yourself because some might be the wrong voltage or package. And you definitely have to check whatever fine details you care about like if you're trying to go for lowest possible power usage or highest possible temperature range, the substitutions will include everything not just the ones with the same lowest possible idle current that's a few uA less than usual like the one you had picked out.
They obviously have an extensive db in house with columns for all kinds of propeties, and some code to make meaningful matches and substitutions where there are sensible subsets of properties being considered vs ignored.
I think it would be totally abusive to their site to write something that scrapes it, or octopart etc.
There would have to be a community built db like that. The code for finding intelligent matches probably wouldn't be too crazy. A list of which properties are significant for a given part would just be part of the data on that part, and then it's pretty straight query on that.
A ui in a find-subs tool could even let you select/unselect properties for consideration, since what constitutes "significant" changes for each job. Sometimes even different package sizes are ok with you because for a lot of parts it's possible to draw a single footprint that can accomodate multiple different versions of the part.
But even with something like this, most jobs are doable an almost infinite number of ways using whatever parts you have access to. If you don't have one resistor anywhere in the world, you can use 2 others in parrallel, etc. The same job got done with no 1:1 substitution at all.
To be really useful there would need to be something quite a bit more involved. Where you would have to feed in your whole schematic so the the tool would know that this resistor isn't just a resistor, but the bias input to a transistor, and if you need change the transistor and you can't find a simple exact match you can find some other transistor AND a different bias input together to produce the same outward effect as the previous 2-part block. Let's just say "non-trivial"
For smaller prototype runs, PCB+Assembly suppliers like Eurocircuits have "generic parts" already in stock for common passive values, which they will give you for free.
Its only really if you are in a big rush or very budget constrained (e.g. a hobbyist or startup) that you would assemble yourself and hence buy all the parts.
If you do though, then Altium can happily manage multiple alternative options for the same "part" using ActiveBOM, including a search tool and distributor stock levels. I think the cheaper CircuitStudio option might have this too.
The function call is a little deceivingly simple, it queries a parts database for one that fits the constraints like value/rating/stock and the part/footprint are parameterized by global design variables/rules under the hood.
(1) https://github.com/JITx-Inc/open-components-database/blob/1f...
I've also found that the choices made in the reference PCB may not always be the best choice for your design. For example the reference may have a 802 cap but you'd rather use a 603. Same for routing, the reference may be a 2-layer board but you're doing a 4-layer. You may have other ICs that may be able to share certain components. And so on. Part stock and pricing also fluctuates quite often, so a manufacturer-provided BOM (which BTW exists for some EVMs) may not always work assuming that those are the exact components you want.
I haven't designed a PCB in a while but from when I did it the reasons above were why people weren't really keen on pre-made "libraries" of building blocks.
After all, why shouldn't a reference design be defined in a parametric way? Your switch-mode power supply might need a class-X value-Y precision-Z voltage-A ESR-B at frequency-C capacitor, while my decoupling capacitor just needs to be >3.3v 100nF and doesn't mind if you use one 5x larger.
Personally I've made innumerable designs where, at the schematic stage, I've copy-pasted a microcontroller and a crystal and capacitors and programming header and reset pull-up. It's a common-sense way to avoid human error, and a time saver too.
The design reuse is happening - the tools just haven't caught up.
Seems like the failure in the tools is that parametric generation is really badly supported by the usual graphics-oriented approach.
If the datasheet has specific requirements, do that. Otherwise, 100n capacitors on each power pin. 50V 100n capacitors can be found all the way down 0402s, and there's no sense in using anything else. Dielectric doesn't matter much for decoupling.
Increased cost due to an additional BOM item is way higher than the fraction of a cent of a cheaper capacitor.
But it turns out that 'a standard way to type out a netlist' is not the main thing an electrical designer needs from a language to be productive.
I presume it's cost/complexity, but it's a weird thing that ends up as a common solution.
The volumes necessary to justify the cost, time, risk, and specialized skill set necessary to achieve both regulatory and standards certification of a WiFi device are significant.
I've mostly done analog IC design, but I've also done a not insignificant amount of verliog/vhdl, programming, infra as code, and pcb design. I can't pin point exactly why, but I just can't see how you accomplish the same thing visually and/or information ally with code as you can a graphical schematic.
https://www.youtube.com/watch?v=WErQYI2A36M
At some point for large enough designs, it's hard to validate that pins match up to signals. Though for small designs I think you're right.
TL;DW the tool is named Skidl ans uses Python to generate net lists for KiCAD. https://github.com/devbisme/skidl
hmm.. maybe that's ok if they don't go too overboard and encourage a functional style
> uses & as an in-place, mutating operator
that's it, I'm out of here
In this case it's simple to do:
For example, the madness with the schematic he shows in that video for all of the by pass caps is something you'd never really see in an IC design. The cap would be placed in the schematic hierarchy either right at the voltage regulator or right at the circuit where its needed. But on PCB schematics you see that kind of thing all the time.
Part of the problem may be that with an IC you can easily simulate anything. The whole workflow is built around it. For a PCB, outside of using models for standard analog building blocks via spice simulator, it's a lot harder to verify your design.
The JITX company mentioned in the article is a YC startup trying to automate the electronics design part with AI. The company is using a new L. B. Stanza programming language created as one of the co-founders Ph.D thesis [1].
If you want to learn on embedded system design this is a recently released book with an accompanying open source hardware design described in the book [2],[3].
[1]http://lbstanza.org/
[2]https://us.artechhouse.com/mobile/A-Hands-On-Guide-to-Design...
[3]https://www.eejournal.com/article/a-hands-on-guide-to-design...