Open-Source EDA and Machine Learning for IC Design: A Live Update

ABSTRACT

Open-source EDA is rapidly enabling new waves of innovation on many fronts. For academic researchers, it speeds up the lifecycle of scientific progress and makes research results relevant to modern industry practice. For EDA professionals and the industry ecosystem, open-source EDA is a complement and booster to commercial EDA. For the IC design community, recent releases under permissive licenses make it possible for design engineers as well as hobbyists to take ideas to manufacturing-ready layout at essentially zero cost. This full-day tutorial will review the very latest progress in open-source EDA, focusing on the digital RTL-to-GDS flow. In particular, the tutorial will make a deep dive into The OpenROAD Project https://theopenroadproject.org/ , which brings new open-source tools and machine learning into a “no human in the loop” RTL-to-GDS flow. OpenROAD’s key components will be reviewed, along with how the overall system is architected. Here, we will provide live / hands-on demos on using the OpenROAD flow and integrating it into existing design flows. We will then turn to industry-compatible open-source infrastructure, and then demonstrate how OpenROAD’s continuous integration (CI) system works in order to welcome new contributions and give a low-overhead start for design tool and methodology innovation. Importantly, open-source EDA and the goal of “self-driving”, no-humans IC design puts a spotlight on machine learning that reduces design effort and schedule. We will show examples of important machine learning use cases and proof points in the RTL-to-GDS flow, along with demos of an open-source, freely portable integrated metrics collection system. The target audience of this tutorial includes EDA researchers and developers, graduate students and professors, and IC design methodologists, physical design engineers, and managers. Whether you are a veteran in EDA / IC design or just starting a career, the tutorial will give a new perspective and a roadmap to use and contribute to open-source EDA.

OpenROAD Documentation

Navigate to: https://openroad.readthedocs.io/en/latest/

Slides

Part 1: Introduction to Open-source EDA

Part 2: Machine Learning for IC Design

Concluding Remarks: here

PARTICIPATION

Prerequisites

Machine specs

To follow up with this tutorial, we recommend the use of a machine with 4GB+ of RAM to build and run the tools. However, if you are using big designs, more memory is required for the tools to perform their computations in a timely manner.

Operating system

While the tools can theoretically be built on Linux, Windows and Mac, they have been tested only on CentOS 7.

Windows or MacOS:

  1. Use VirtualBox. VirtualBox is a virtualization technology that allows us to run Linux-based distributions on Windows or Mac machines.
    1. Install VirtualBox from this link: https://www.virtualbox.org/wiki/Downloads
    2. Download CentOS 7 ISO image from: https://wiki.centos.org/Download
    3. Follow this tutorial to create a CentOS 7 virtual machine (VM): https://resources.infosecinstitute.com/installing-configuring-centos-7-virtualbox/
  2. Use Docker. Docker is a containerization technology that allows us to run Linux-based container distributions on Windows or Mac machines.
    1. Install Docker from this link: https://docs.docker.com/v17.09/engine/installation/
    2. A docker image with all required packages pre-installed is available at openroad/openroad:base. Use the following command to pull the image from Docker Hub.
      docker pull openroad/openroad:base

Install the required packages

Bare-metal (or VM using VirtualBox)

  1. Install essential build tools
      yum group install -y "Development Tools"
      yum -y install centos-release-scl
      yum -y install devtoolset-8 devtoolset-8-libatomic-devel
    
  2. Install CMake
      wget https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.sh
      chmod +x cmake-3.14.0-Linux-x86_64.sh
      ./cmake-3.14.0-Linux-x86_64.sh --skip-license --prefix=/usr/local
    
  3. Install development dependencies
      yum install -y wget git
      wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      yum install -y epel-release-latest-7.noarch.rpm
      yum install -y tcl-devel tcl tk libstdc++ tk-devel boost-devel
    
  4. Install Python development dependencies
      yum install -y https://centos7.iuscommunity.org/ius-release.rpm
      yum update -y
      yum install -y python36u python36u-libs python36u-devel python36u-pip
    

Docker

A docker image with all required packages pre-installed is available at openroad/openroad:base. Use the following command to pull the image from Docker Hub.

docker pull openroad/openroad:base

Build OpenROAD

  1. Clone the repository
  2. Change to repo directory
      cd OpenROAD
    

    If you are using Docker, then run the following command and continue working inside the container for the rest of the tutorial.

     docker run -it -v $(pwd):/OpenROAD openroad/openroad:base bash
     cd /OpenROAD
    
  3. Build OpenROAD
      mkdir build
      cd build
      cmake ..
      make -j 4
      make install
    
  4. Test OpenROAD
      openroad -version
    

    You should see openroad version printed out along with the hash of the build.

 

Getting Started

Refer to Tutorials Part 1 and Part 2 to Getting Started.