Programmatic circuit design methodologies

Programmatic circuit design is a rapidly emerging design paradigm in design of microelectronics circuits. It builds on extensive utilization of programming in all categories of microelectronic circuit design and verification. The theme can be divided coarsely in four interrelated categories under which Aalto University’s microelectronics designers have developed programmatic design methodologies actively over the years.
The principle of the development has been modularity : the category boundaries are well defined and the the boundary crossings are handled in structured manner. This enables development under the different areas independentdly, yet in a manner that all the developments are compatible with the related other areas, continuously improving the methodology as a whole.

The methodologies developed in Aalto are open sourced, but they originally build on commercial industry standard tools. Support for open source tools is added when the tools are mature enough to be used at the forefront microelectronics design.

Design and verification: TheSyDeKick

TheSyDeKick is a open source design and verification framework written in Python. It enable rapid system modeling with Python, and incremental increase of model accuracy by enabling simulations of sub-blocks of the system in circuit or RTL abstraction level with a switch of a single parameter. The implemented hardware is also considered an abstraction level, so the development environment can be also used for physical verification in the measurement lab. This approach reduces the verification workload to about one third compared to approaches where system modeling, circuit verification and measurement are considered to be independent tasks.
TheSyDeKick project in github: https://github.com/TheSystemDevelopmentKit
TheSyDeKick documentation: https://thesystemdevelopmentkit.github.io/docs/index.html

Analog circuit generators: Berkeley Analog Generator at MOSAIC
Berkeley Analog Generator (BAG) is a Python framework for creating parametrized layouts and schematics, originally developed at Berkeley Wireless Recearh Center at UC Berkeley. Aalto University has been active in further developing the methodology in a spin-off fork of it at MOSAIC (Modular Open Source Analog IC) group https://gitlab.com/mosaic_group/mosaic_BAG . The methodology, combined with TheSyDeKick, eventually enables procedural optimization of analog circuit structures , greatly improving the consistency of the design methodology, application portability of building blocks, and process portability.
See the link https://gitlab.com/mosaic_group/mosaic_BAG to join in.

Mixed-mode System Chip compilation flow: Chip ‘n Dale

Chip ‘n Dale is a fully programmatic open source mixed-mode system chip compilation flow. It provides methodology to re-use analog and digital building blocks through version controlled repositories, and combines these blocks, macro releases, to a full system chip. The flow also automates the execution of the digital flows, merging their results to the top-level design managed in analog design environment. Regardless of this, the flow supports both digital-top and analog-top design approaches, and seamlessly merges BAG builds to the flow.
The flow also performs sign-off steps, i.e. LVS, DRC and tiling, and as a cherry on a cake, sends a ‘Chip ready’-message to the desired Zulip or Slack channel. Use of Chip ‘n Dale converts a chip building process to an agile software development, where the design is incrementally and iteratively improved towards the tape-out. The flow has been gradually taken into use also in teaching at Aalto, aiming for full chip tape-out course with programmatic methodology.
You may join the project at https://gitlab.com/chipndale

Programmatic digital design: Chisel
Yet another souvenir from UC Berkeley. To support greater flexibility we have adopted CHISEL https://www.chisel-lang.org/, as Scala subset for RTL designs in majority of our digital projects. We are not actively contributing to th development of Chisel, but we are very actively using it. Our flagship in this development currently is A-Core project: Aalto implementation of RISC-V microprocessor.
A-Core project lives here, https://gitlab.com/a-core , in case you wish to join.

Afterword
To power of the programmatic approaches above, can be described through the capabilities it provides us: The four aspects of modular programmatic design methodology combined gives us means to design efficiently an effectively processor-controlled mixed mode systems with procedurally optimized analog accelerators and interfaces. We are able to verify all that in one unified system, TheSyDekick, controlling the verification and procedural optimization of the analog building blocks and executing C-code in the RTL simulators for A-Core processor. We are able to verify the C-programs running on this system and utilizing the developed analog and digital hardware verifying their interoperability and demonstrating capababilities. Finally, with Chip ‘n Dale it is possible to compile everything to a chip in programmatic and agile manner.