The Arduino Uno is an open-source microcontroller board widely used in prototyping projects for electronics enthusiasts and professionals. In many ways, the Arduino Uno can be considered the “Hello World” program of the electrical engineering world, as it is often the first project that people build when starting their journey into this field.
As such, designing an Arduino Uno presents a perfect starting point for Quilter! Read on to see how Quilter’s generative design has compiled an entire Arduino Uno layout from scratch, with no human intervention!
Preparing the Inputs
We think of Quilter as a compiler for PCBs. Your schematic is the “code” to be compiled - it defines the logic that the PCB will perform. The layout is then an instruction set for a manufacturer to create a physical device that executes that logic (much like C is compiled into machine code).
The Arduino Uno is an existing open source design, so we can simply use the schematics that are available on their website.
In addition to the logical constraints described by the schematic, we also need to specify a few physical constraints for the compiler: namely the outline of the board that we want, and the locations of connectors. This will allow our Uno design to remain compatible with the existing shields and enclosures created for the original Uno.
To define these, we simply create a board file with the outline defined, and the connectors placed where we want them.
If you’d like to take a closer look at this input file, you can download it here.
At this point, life gets easy! Just drag-and-drop the input file to Quilter’s online dashboard and watch the magic happen! In about an hour, Quilter considers thousands of candidate designs, and presents the best one.
If you’d like to take a closer look at this design, you can download it here. Note that this is the latest design as of 2023/03/09, and does not match the pictured design.
What About The Design Rules?
Following our compiler analogy, we can think of the board design as machine code, and we can think of the manufacturer as the “processor” which executes that machine code.
So, as we can compile code to target different processors, Quilter can compile PCB layouts targeting the specific capabilities of different manufacturers!
Today, Quilter targets the capabilities of three specific manufacturers: JLCPCB, PCBWay and OSHPark, and presents the candidate with the most flexible manufacturing options. The board shown above can be manufactured by any of these fabs!
Quilter automatically sets the design rules in the output file so that the user can independently run the DRC to ensure that no errors were made.
Software is no fun without the hardware! So, of course as soon as we got a manufacturable design that passed all DRCs without any human intervention, we rushed the Gerber files off to the fab! This is the first board to be compiled completely autonomously by Quilter, so we were anxious to see how it would do!
Note: This design was completed on 2022/09/14, with an older version of the compiler which could only target PCBWay. The design files for this specific board are here.
A “hello world” board is nothing without a “hello world” script! Let’s run one on our Quiltuino Uno.
Our Quiltuino Uno boots, connects to the computer and executes a simple program! But this doesn’t exercise much of the Uno’s IO capabilities. To test these out, we decided to pair the Uno with a touch screen shield.