How Game Engines Can Inspire EDA Tools Development: A use case for an open-source physical design library

Similarly to game engines, physical design tools must handle huge amounts of data. Although the game industry has been employing modern software development concepts such as data-oriented design, most physical design tools still relies on object-oriented design. Differently from object-oriented design, data-oriented design focuses on how data is organized in memory and can be used to solve typical object-oriented design problems. However, its adoption is not trivial because most software developers are used to think about objects' relationships rather than data organization. The entity-component design pattern can be used as an efficient alternative. It consists in decomposing a problem into a set of entities and their components (properties). This paper discusses the main data-oriented design concepts, how they improve software quality and how they can be used in the context of physical design problems. In order to evaluate this programming model, we implemented an entity-component system using the open-source library Ophidian. Experimental results for two physical design tasks show that data-oriented design is much faster than object-oriented design for problems with good data locality, while been only sightly slower for other kinds of problems.

[1]  Andrew B. Kahng,et al.  Horizontal benchmark extension for improved assessment of physical CAD research , 2014, GLSVLSI '14.

[2]  Robert Nystrom,et al.  Game Programming Patterns , 2014 .

[3]  Martin D. F. Wong,et al.  OpenTimer: A high-performance timing analysis tool , 2015, 2015 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).

[4]  Jin Hu,et al.  ICCAD-2015 CAD contest in incremental timing-driven placement and benchmark suite , 2015, 2015 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).

[5]  Yih-Lang Li,et al.  OpenDesign Flow Database: The infrastructure for VLSI design and design automation research , 2016, 2016 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).

[6]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[7]  John A. Sharp,et al.  Data oriented program design , 1980, SIGP.