Modern board design practices are very low-level (requiring high electrical engineering expertise) and schematic tools offer little design assistance (really, they're more drawing tools). At the same time, electronics is becoming more accessible to a wider audience given Arduino, PlatformIO, and many high-quality beginner-friendly tutorials online.
This project aims to take a modern look at what board-level electronics design tools can do to actually assist circuit design, instead of being merely for drawing and data entry. Unlike recent work which largely exclusively focuses on supporting beginners, this aims to provide something for everything - maximize design assistance while preserving as much of the generality of current schematic tools as possible.
To so do, we take a hardware description language approach, which allows users to define subcircuits and the rules for constructing them while presenting a higher-level abstraction and interface over them. This supports multiple levels of design and expertise, from skilled engineers building power converters generators, so the novices who might want to use those subcircuits without getting bogged down in the details. An emphasis on usability, human factors, and code quality further aims to produce a system that is not powerful, but may one day see wider adoption as a better way to build boards.
Currently, this project is in pre-alpha state as a Python frontend HDL, backend Scala compiler, IntelliJ/PyCharm IDE plugin, and several example designs.
CANbus to USB adapter - as an example of a microcontroller-centric design with practical applications
USB source-measure unit (two quadrant power source) - as an example of a design with heavier analog focus