Yet? Not Yet? Let's give a thought to where is AI on Hardware Design
- 5 minsBreathe in, breathe out. That’s how an observation is made with breath but with hardware design in place and AI air all around, the same observation is to be repeated. Fixing the context, by hardware design I am specific to circuit board design and AI itself is a huge deal now. Observation is hard without clarity and getting clarity itself requires observation. So in this context, by the word AI, our quick imagination is of doing something without having human intervention hours burned or us giving thought to the process nitty-gritty of optimizing for best output. This school of thought is quite right but to rationalize, there is no better resource than ‘Goals’ explained in this page.
Why to think of hardware design after-all? It is not a very celebrated activity and once done, it’s done and no scope for fixing things without incurring additional costs and time. We see software development at high-level is logical and converges through a sequence of steps which modern computational models pose to do. Code generators have been alive for a long time now, probably since 1975 and they predominantly functioned as iterators unlike from a logical proceeding or through the training of models with feedback. One level down, thinking of everything that runs on a computer, it is translated to a ‘code’. Be it a paint tool or circuit design software for that matter. Fancy part is that you can use KiCAD project files with git source control and edit back of the screen file.kicad_sch code to modify KiCAD schematics, edit the component footprints etc. Now that we’ve narrowed in imagination about the hardware design and software development, it’s all code and can a modern ‘iterator’ generative tool be used for this activity?
Hardware design is an onion building type of activity where one consideration is taken after the other layer by layer leading to a full-fledged design. I feel one should also have a certain degree of OCD to be a better hardware designer.
Let’s go into the word AI now and use it from there. It’s quite high level to use directly unless for a business presentation just as AI. Specifically here, it is generative/agentic AI for coding utility. Iterator works for iterative tasks - obvious! And generative models work for any entity that tends to converge at a reasonably logical result(s) based on the set of data available training data. Not many things are iterative nor generative based on series of training data or constraints in hardware design. It involves giving immense thought to edge-cases while making trade-offs (no luxury of iterating the design after completion), real-world electrical considerations like electromagnetic compatibility, integrity related to power and signal and more that are realized after design ceases to operate as expected. As we know, it is all code, but is the code creative enough to judge how wide a power plane should be poured and where to put a via for jumping to the another layer? There is no one or the best answer. Story flipped.
INTERVAL
What can be automated and what not? There are a plethora of activities while saying board design itself. Placement of component itself is an activity where a fair amount of thought process goes into understanding the clearances, availability of connectors at the board edges, zoning the passive components around it's host chip and then decoupling capacitor placement in itself is a maze. Routing is a fairly light activity once constraints are defined. This is potentially where automation tools can help in matching the trace lengths and finding optimal trace routes. This method isn't finding success in high density design for a reason. It is true in software testing as well, where as the problem space expand and defining constraints become difficult, say for a self-driving car inference engine. Dropping this meaningful image
Optimization is still left for a thoughtful designer where high-frequency, high-power designs will require validation with multi-physics tools and back-tracing checks through experiments for signal integrity.
Some great examples of using machine to do some of the tedious job in design cycle are here. While these are great, it can be observed that none of this involves keeping all the checkboxes ticked from block diagram we've seen above.
Circuitmind: This looks like a promising tool doing the job of architecting a system and doing component selection based on the design requirement given. It functions more like a LEGO block thing wiring one to other and many to a central controller. While we have tools reading the component datasheet and generating footprints based on the numbers and pin names given, this tool is a culmination of this act.
Quilter: This is a compiler for board design and does the task of placing components based on math(so-called generative AI) to achieve the least intersection and routes down it. This input to this process is the schematic(netlist) and the board layout with placement of connectors specified(too much intelligence may lead to placing of USB connector in the middle of the board)
It can be done. If so how? Here are some closest things I can imagine:
- Building a custom GPT with a lot more dataset related to circuit design and gives streamlined pointers on how and why’s in the process for the designer. We have seen build your own GPT in the recent OpenAI Dev Day 2023
- Using scripting utilities for replicating layouts and keeping the design modular. There can be sections in a circuit board like power regulator which is repetitive for multiple different voltage levels with just the feedback resistor value changing. The layout can be made as a block and applied at multiple places in the design. This is not generative, but can be prescriptive based on the designer’s use case. KiCAD already has some of such plugins available
- Be a good hardware designer and do-it-yourself!