Routing at Compile Time

Chun-Xun Lin, Tsung-Wei Huang, Martin Wong
University of Illinois at Urbana-Champaign


Abstract

The rapid evolution of modern C++ programming language has completely changed the way developers write high performance and robust applications. By modern, we mean C++17, which has revolutionized the “old-fashion” C++98 in many aspects such as meta-programming, concurrency controls, and functional programming. Despite the tremendous progress in language innovation, research on how these advanced features can improve EDA programs is still nascent. In this paper, we introduce a novel routing framework using the technique of generalized constant expression in C++17. Our framework allows a router to take advantage of compile-time computation and thus can save a significant amount of engineering effort that would otherwise be issued every time the program runs. By prescribing computation at compile time, the compiler is able to further produce more optimized codes to run faster than ever before. We have evaluated our framework on classic routing problems and have demonstrated promising performance gain over which is done solely at runtime. Our framework has the potential to change many fundamental EDA building blocks and thus can achieve better tool performance and engineering productivity.