John Drummond

May 6, 2023

Time for an EDA shake-up

Over the last 10+ years, I've become increasingly dissatisfied with the quality of Electronic Design Automation (EDA) software I use for my job. As a Physical Design (or Back-End) engineer in the integrated circuit design business, I use EDA software to layout chips using a standard cell based methodology. The software we use is very expensive, for example a typical chip's license cost can easily run into the millions per year. But what we receive for those millions, is becoming increasingly buggy, not well tested, and struggles to integrate with more modern data processing platforms. The closed source nature of this software has meant very slow progress of enhancements and very little advancement in the underlying algorithms used to optimize our implementations. The technical debt has hit the point where we have daily issues with multi-thread race conditions, segmentation faults (i.e. addressing memory that has been deleted) and memory leaks.

Here is a very high level overview of my ideal system:

STATE
We need a super clean, very well tested, core database structure, to store the state of a design. It needs to be written with multithreading and memory safety built into the core code. It also needs to understand hierarchy and view abstraction (i.e. the ability to model the same logical and physical structure using different accuracies and/or modeling techniques).

ENGINES
We need a standard method to manipulate the state of the database. Using a functional event driven architecture to chain functions together, along with metadata attached to objects and their attributes to determine the cleanliness/validity of the existing state. We need a high level view of the size of the problem space, such as count and depth of operations, iteration counts, and other metrics to determine the convergence of our algorithms. We also need to be able to measure the performance of our algorithms wrt runtime, memory usage and complexity. As engineers, we need to be able to choose how our implementations are optimized, instead of just running the same black-boxed algorithms and choosing based on trial and error.

VISUALIZATION
A very simple and fast GUI to view the current state, along with the ability to overlay data visualizations in any way we see fit. Coupled with the ability to take snapshots of those visualizations during engine execution. Currently we use GUIs for floorplanning, layout editing etc. What I want is a GUI to determine how the engines are performing.

Am I alone in this want?

About John Drummond

Welcome to my world! I'm a silicon chip physical implementation engineer, based in the UK. Having spent the last 20+ years working in this industry, both in the UK and USA, I'm working on modernizing the way we work.