I've been thinking about what makes the hardware design process so difficult. It's no secret that getting a PCB designed and out the door takes far longer than a software design of comparable complexity. I've come to a conclusion about this... Hardware design tools are still in the stone age.
A bold statement, of course, but I can back it up. I can sum it up with a few bullet points:
- EDA tools are too expensive
10K for the first year is waaaaay too expensive. There are some at a more reasonable price, but they tend to fall short. Abandon the ancient pay to play business model and find something more modern. (as an aside, FOSS EDA tools are a nice try, but they just aren't seamless enough)
- EDA tools take little advantage of distributed computing systems
Big downloads, frequent bug fixes (not to mention frequent bugs), no collaboration facilities, etc. In short, get with the program and bring your code into this century.
- EDA tools are too complex
Much of what is incorporated into the tools is unused for day-to-day engineering. The downside of this is that the menus are cluttered and difficult to understand.
- EDA tools do not fit well with modern development frameworks
Waterfall is going away, but all of the current tools are either designed to work with it, or have no facilities for getting around it. Something that can help engineers break some of the larger tasks into smaller chunks that can fit into a scrum sprint, or some other agile task, is in order. There really isn't anything like that.
- EDA tools do NOT lend themselves to design re-use
Previously designed circuits are difficult to incorporate into new designs. Sure... you can cut and paste schematic pages from one project to another, or you can import an entire schematic page and edit all of the component IDs, but that's a manual process subject to lots of human error. Even that doesn't get you the layout as well, which is just as important. In short... there are too many pain points.
Of all these shortcomings, I believe that the last one is the worst. The technology to create circuit libraries (read that carefully... circuit libraries, not component libraries, not schematic pages) has existed for many years now. I simply don't understand why it hasn't been done yet.
Dream with me a little here. Imagine a tool that will allow you to design a circuit (say, a complex buck regulator circuit). This circuit has all of the component libraries complete, the schematic is complete and reviewed, the traces are all laid out, the BOM is solid (including alternate part numbers and links to update prices), and best of all, it is fully tested. Lets say that you used it before with excellent results.
Now here's the dream part: Imagine you can just pull that entire circuit in from a menu and drop it into your next design. All of it. Schematic, PCB layout, BOM, current prices... and it's already been tested. The circuit just melts into your new design... job well done.
Now let's dream a little more. This circuit is capable of many different input and output configurations with exactly the same layout. The only thing it needs is recalculation of a half-dozen resistor and capacitor values. So... you pop up an options dialog for the circuit and it contains a form with lots of entries. You change a few of the parameters, hit re-calculate, and all of the values update automatically. Re-design done.
Yeah... but this is all just a dream, right? The technology for this doesn't exist, does it? Well, why not?
The technology for doing all of this in software has existed for decades. The computing power and storage facilities for doing this in hardware have existed for at least 10 years. Just why hasn't it been done? I can't really answer that question for certain. I can see why the current big names haven't done it: too much legacy code to lose, and a little architectural sclerosis. However, I cannot understand why nobody has created a small skunkworks shop to address the problem. Hmmm... stay tuned... I have an idea.
General references to web sites or pages that would not result in an SEO-friendly link (i.e. www.example.com/index) are allowable. All tags will be automatically stripped