This tutorial covers machine learning algorithms and application methodologies necessary for building EDA applications and flows. We start with supervised machine learning algorithms, which create models from labeled training data sets. However, the clear majority of data generated by EDA tools and flows today are not labeled, which precludes supervised learning. Yet, there is significant value can be derived from these data sets, including understanding of the structure of data using clustering and similarity analysis, discovery of hidden underlying probability distributions, all of which can lead to better design of algorithms, failure analysis, and new data and feature insights. We discuss several unsupervised learning algorithms that make this possible. We also discuss some recent machine learning advances such as Generative Adversarial Networks which learn underlying data distributions without labels. Another class of problems we discuss involves systems or software agents that take actions in an environment to maximize some notion of cumulative reward. The problems in this class range from autonomous driving to driving randomized simulation for better coverage, to smart place and route algorithms.
The second part of the tutorial focuses on the more practical aspects of applying different algorithms to solve classical EDA problems. Solving production problems within electronic design automation is complex. Production engineering applications have accuracy, scalability, complexity, verifiability, and usability requirements that are not met by traditional machine learning approaches. These additional challenges frequently cause production machine learning approaches to fail. The presentation covers these engineering-specific challenges and presents some effective solutions.