Safiq Ahamed – The OpenROAD Project https://theopenroadproject.org Foundations and Realization of Open and Accessible Design Fri, 24 Mar 2023 07:37:02 +0000 en-US hourly 1 https://theopenroadproject.org/wp-content/uploads/2022/01/OR-Icon-150x150.png Safiq Ahamed – The OpenROAD Project https://theopenroadproject.org 32 32 An OpenROAD based IC Design course for Spanish Learners https://theopenroadproject.org/an-openroad-based-ic-design-course-for-spanish-learners/ Thu, 15 Dec 2022 17:27:42 +0000 https://theopenroadproject.org/?p=5263

Professor Erick Carvajal teaches VLSI and microelectronics based courses at the University of Costa Rica. In 2021, he was actively looking to set up his undergraduate, Microelectronics course using conventional EDA tools. However, these were very expensive and difficult to set up for the class requirements given software licensing constraints and server resources limitations. Hence he started looking for other alternatives– he learned about OpenROAD™ through a Google sponsored presentation in 2021.
His goals were to provide easy-to-use and access EDA tools and course content to enable his students to learn basic IC design concepts and flows, both collectively and independently, within a semester. Most importantly, he wanted the flexibility to tailor the course for his Spanish students who did not have any other source of learning material.  Erick also wanted to ensure that his students have a viable path to employment in the semiconductor Industry beyond the opportunities in Costa Rica. Hence he chose OpenROAD as the OpenEDA application of choice for his course that is ideal particularly for regionally underserved communities.
The usage of OpenROAD™ as a key OpenEDA source for VLSI education and curriculum for workforce development is rapidly growing since it provides easy, scalable and open access to the entire tool suite, flow control options and design cases on multiple technology platforms. This story features the exemplary work of Erick and his students who resourcefully took advantage of OpenROAD in this new era of open source based learning and in semiconductors.
OpenROAD actively engages with motivated Universities and researchers worldwide to provide training and curriculum support as part of its vision to democratize and spread the learning of VLSI and enable a path to skilled workforce development.

Course – Key Flow concepts with Hands-on learning

The semester-long course, from August-December, covered the entire IC design flow RTL-GDSII flow with key VLSI design and open PDKS using OpenLane, the flow controller by Efabless, based on OpenROAD™ ,  and Skywater 130nm. The course duration was a total of 16 weeks with 4 hrs/week allocated to lectures and lab discussions. Students completed labs online as homework. The prerequisite for this course was basic semiconductor devices knowledge as covered in the seminal textbook CMOS VLSI DESIGN: A Circuits and Systems Perspective By N. Weste and D. Harris
The course included three labs aimed at providing students with a depth of training on core concepts of the RTL-GDSII design flow using OpenLane. One such design example was a basic 8-bit adder.

Open Source learning offers limitless potential for creativity.

The current OpenLane flow does not contain a RTL schematic viewer. The team found a useful way to visualize the Yosys synthesized netlist using netlistsvg: (https://github.com/nturley/netlistsvg). This allowed students to view the netlist as a schematic for design exploration and specially to understand technology mapping visually. This tool takes a netlist in a JSON format (which can be generated in Yosys using the write_json command) and outputs an SVG image of the circuit. Figure below shows a 4 bit adder. The values on the signals (e.g. A_96, B_75) were personal identifiers assigned to each student to validate their individual work.

Diagram before technology mapping *

*A bug in netlistsvg renders the two output port directions incorrectly as inputs

Diagram after technology mapping *

*A bug in netlistsvg renders the two output port directions incorrectly as inputs

Design Exploration enables PPA comparisons

In the labs, students explored multiple synthesis strategies and design configurations based on changes to pin configurations, floor plan aspect ratios and various power grids for a fixed die size.
Students learned to experiment, analyze design choices and arrive at the best possible PPA results i.e area and the critical path delay based on comparisons to generated layout–all of which they could do so very rapidly in a matter of just a few hours. The OpenROAD™ GUI based detail analysis and visualization features allowed them to study  the impact of design changes at various flow stages and thereby converge to the final layout.

GUI based Visualization for easy analysis and feedback

Here’s an example of a clock tree generated for a Huffman JPEG encoder displayed in the OpenROAD™ GUI: https://github.com/The-OpenROAD-Project/OpenLane/blob/master/designs/y_huff/src/y_huff.v

Clock Tree for a Huffman JPEG encoder

Macro Placement Exploration

Students also learned how to create a macro and then instantiate multiple instances at the top-level. Here’s an example- Macro for 4 bit adder first created at block-level and  then instantiated in an 8 bit ALU. Students played with pin positions of macros and top level, as well as various cases for good macro placement.

Sample Layout created by students for the 8 bit ALU with macros

What’s Next?

Prof Erick Carvajal plans to offer a full semester based on an OpenROAD™ based capstone project in addition to the current course. He is also eager to collaborate and share his work with other Spanish learners. Interested users can reach out to him directly via his email:  erick.carvajalbarboza@ucr.ac.cr. Course materials will be made available sometime in January 2023. So stay tuned for updates.
Here’s a summary of his experience in his own words about how OpenROAD is a powerful aid to Open Source learning and contribution.
“OpenROAD™ was essential for the class I taught.  The OpenLane based flow was easy to set up, so the students were not stuck at unnecessary steps, and the ramp-up was very fast. Students were able to learn and gain practical experience with EDA tools: analyze reports, debug errors, optimize the design, and have a free and safe environment for experimentation and exploration. The concepts we covered have already helped some of the students to get good jobs at physical design roles in big companies, and sparked the curiosity for VLSI in others, who are already trying to get involved in bigger projects using OpenROAD. One of my students already working in the industry expressed to me that he was able to gain a better understanding of the tasks he was performing at his job. OpenROAD is, without a doubt, democratizing VLSI education and spurring research opportunities–it gave me the chance to teach a class I couldn’t afford.”

About Professor Erick Carvajal

Prof Erick Carvajal, received his Bachelors in Electrical Engineering at Universidad de Costa Rica in 2014, his Masters of Science in Electrical Engineering at The University of Texas at Austin in 2017 and his PhD in Computer Engineering from Texas A&M University in 2021, where his research was co-advised by Dr. Jiang Hu and Dr. Paul Gratz. His interests include the integration of Machine Learning techniques into the IC design flow to make designs faster and more efficiently, as well as the application of innovative techniques for teaching engineering classes.

]]>
Automated SoC, Mixed-Signal Design using OpenROAD and OpenFASoC https://theopenroadproject.org/automated-soc-mixed-signal-design-using-openroad-and-openfasoc/ Sun, 05 Jun 2022 09:43:00 +0000 https://theopenroadproject.org/?p=5016

OpenROAD™ is a foundational application for open-source VLSI design from RTL to GDSII. It is used widely by many popular Open Source tools and initiatives that foster and enable ASIC and FPGA design flows and methodologies. One such initiative is  FASoC, a DARPA-funded program across multiple universities and industry leaders such as Arm, led by the University of Michigan.

Automating Analog Design using OpenROAD 

FASoC consists of a set of tools and scripts, mainly based on python and Tcl used to implement a single pass,  RTL-GDSII flow. OpenFASoC uses the OpenROAD application to generate GDS from verilog for both analog and digital components.  Conventional analog designs require schematic-entry based specification and a custom layout design that requires many iterations to meet design goals.

The automated OpenFASoC/OpenROAD-based flow shown below enables the integration of cell-based analog blocks into an SoC digital flow, thereby greatly increasing productivity by digitizing the analog design creation and implementation and enabling ease of integration into the SoC.

 

The OpenROAD™ API is flexible and allows fine control during physical design through the use of both Tcl and python based scripts to define floorplanning and power components. Complex physical design features like building macro functions to do symmetrical placements or arrays, guardbanding, etc. are easier in the OpenROAD flow as compared to proprietary tools.

OpenFASoC on  

Figure shows a D-LDO generator design submitted in the Google MPW-II shuttle. It represents highly trimmable voltage references to address dependencies on or sensitivities to temperature variation. Switches and voltage reference structures are tightly placed using an evenly distributed placement to minimize variations.

The power stripes for the switches array are created to minimize resistivity.

OpenTitan FASoC with OpenROAD ECO flow

OpenROAD™ supports a modular ECO flow to augment timing optimization and closure through iterative  buffer sizing and insertion on timing critical paths. The ECO flow is important and necessary, especially in low power designs which are tightly constrained to optimize power for a target speed. The table above shows that hold violations were fixed at target clock of 20MHz in five iterations.

OpenFASoC also uses custom functions to control placement,  power stripe generation and

custom routing for good PPA. Future work involves support for multiple voltage domains.

Reference Links

https://github.com/idea-fasoc

https://github.com/idea-fasoc/OpenFASOC

https://github.com/msaligane/caravan_openfasoc

https://github.com/msaligane/opentitan_soc

https://github.com/The-OpenROAD-Project

]]>
Using Git Action For OpenLane Design Change Management https://theopenroadproject.org/using-git-action/ Thu, 12 May 2022 20:26:44 +0000 https://theopenroadproject.org/?p=4982

The OpenROAD™ project contains a specific repository that defines a set of useful actions that can be triggered to implement several valuable functions. Refer to the repository https://github.com/The-OpenROAD-Project/actions. The README.md file lists the actions provided for various useful functions that can be applied to the OpenROAD project repositories.

One such function is openlane_run. The action is defined here: https://github.com/The-OpenROAD-Project/actions/blob/main/openlane_run/action.yml

openlane_run

This action aims to run a given design through the OpenLane flow. This is useful when a user pushes a commit to a design in the repository. This action will automatically trigger a complete run of the OpenLane flow on the design using the specified ol_tag as shown in the following usage description. This feature can also test the design against newly released OpenLane tags and keep track of the last known stable tag. Specific tools may also be updated to the latest version, which will trigger an automatic re-run of the OL. Designers can thus ensure a working version of their designs in OpenLane at all times.

Optionally a PR can be created to update a stable tag file stored in the repository. Arguments:

  • ol_tag [optional, default: master]: OpenLane tag. You can set to ol_tag_file to use the value from the file content.
  • update_tag [optional, default: false]: if the test is successful update stable tag pointed by the ol_tag_file input.
  • ol_tag_file [optional, default: .github/openlane-stable-tag]: File where to store stable OpenLane tag. The file must exist before running with this feature.
  • tools_list [optional, default: ‘ ‘]: List of tools to update to the latest version. Multiple values are separated by a space, e.g., “openroad_app magic”.

Use Model

You will need a GitHub repository with the source code for your design and a valid OpenLane config.tcl file to include and enforce this action. We provide a sample GitHub repository here that showcases the three most common use models. The repository contains the source code for the spm design (copied over from the OpenLane repository) with its config.tcl file.

To add the workflow to your repository, you can start copying the sample workflow file here. You must use the same folder structure (i.e., .github/workflows/). After adding the workflow file, you will need to commit and push your changes to GitHub.

$ cd <DESIGN_REPO_PATH>

$ mkdir -p .github/workflows/

$ cd .github/workflows/

$ wget https://raw.githubusercontent.com/The-OpenROAD-Project/actions-test/main/.github/workflows/openlane-ci.yml

$ git commit -m ‘Add workflow’ .

$ git push

The final step is to enable the action for your repository; see GitHub docs here. Note that GitHub actions are free and unlimited only for public repositories.

The workflow will trigger on every push to the repository. The ol_latest will run the design against the latest OpenLane release. The ol_stable will run the design with the last known good OpenLane release (i.e., the previous tag where the flow was completed without errors). Finally, or_latest will update the openroad application to the latest commit and run the OpenLane flow.

]]>
Post Page https://theopenroadproject.org/welcome-to-openroads-documentation/ Mon, 14 Feb 2022 10:43:18 +0000 https://theopenroadproject.org/?p=3062

OpenROAD

Welcome to OpenROAD’s documentation!

The OpenROAD™ (“Foundations and Realization of Open, Accessible Design”) project was launched in June 2018 within the DARPA IDEA program. OpenROAD aims to bring down the barriers of cost, expertise and unpredictability that currently block designers’ access to hardware implementation in advanced technologies. The project team (Qualcomm, Arm and multiple universities and partners, led by UC San Diego) is developing a fully autonomous, open-source tool chain for digital SoC layout generation, focusing on the RTL-to-GDSII phase of system-on-chip design. Thus, OpenROAD holistically attacks the multiple facets of today’s design cost crisis: engineering resources, design tool licenses, project schedule, and risk.

The IDEA program targets no-human-in-loop (NHIL) design, with 24-hour turnaround time and zero loss of power-performance-area (PPA) design quality.

The NHIL target requires tools to adapt and auto-tune successfully to flow completion, without (or, with minimal) human intervention. Machine intelligence augments human expertise through efficient modeling and prediction of flow and optimization outcomes throughout the synthesis, placement and routing process. This is complemented by development of metrics and machine learning infrastructure.

The 24-hour runtime target implies that problems must be strategically decomposed throughout the design process, with clustered and partitioned subproblems being solved and recomposed through intelligent distribution and management of computational resources. This ensures that the NHIL design optimization is performed within its available [threads * hours] “box” of resources. Decomposition that enables parallel and distributed search over cloud resources incurs a quality-of-results loss, but this is subsequently recovered through improved flow predictability and enhanced optimization.

For a technical description of the OpenROAD flow, please refer to our DAC-2019 paper: Toward an Open-Source Digital Flow: First Learnings from the OpenROAD Project. The paper is also available from ACM Digital Library. Other publications and presentations are linked here.

Code of conduct

Please read our code of conduct here.

Documentation

The OpenROAD™ Project has two releases:

Application

The application is a standalone binary capable of performing RTL-to-GDSII SoC design, from logic synthesis and floorplanning through detailed routing with metal fill insertion, signoff parasitic extraction and timing analysis.

See documentation for the application here.

Flow

The flow is a set of integrated scripts that allow for RTL-to-GDSII flow using open-source tools.

See documentation for the flow here.

How to contribute

If you are willing to contribute, see the Getting Involved section.

If you are a developer with EDA background, learn more about how you can use OpenROAD as the infrastructure for your tools in the Developer Guide section.

How to get in touch

We maintain the following channels for communication:

See also our FAQs.

]]>
Getting Started with OpenROAD App – Part 3 https://theopenroadproject.org/getting-started-with-openroad-app-part-3-2/ Wed, 09 Feb 2022 05:59:45 +0000 https://theopenroadproject.org/?p=1736 In digital design, a circuit is described in a hardware description language (e.g. Verilog) and the goal is to manufacture it. To get the actual layout of the circuit that is manufacturable, it needs to pass through a number of steps before handing it over to a fabrication lab. In this post, we briefly give an overview of the steps and show how to perform them using open-source tools in OpenROAD™ .

This post assumes that you have some background on hardware design. No programming knowledge is required to use the tools. Physical design knowledge is a plus, but not necessary. When appropriate, we give some links to Wikipedia articles to refer to.

]]>
Getting Started with OpenROAD App – Part 1 https://theopenroadproject.org/getting-started-with-openroad-app-part-1-2/ Wed, 09 Feb 2022 05:59:17 +0000 https://theopenroadproject.org/?p=1732 In digital design, a circuit is described in a hardware description language (e.g. Verilog) and the goal is to manufacture it. To get the actual layout of the circuit that is manufacturable, it needs to pass through a number of steps before handing it over to a fabrication lab. In this post, we briefly give an overview of the steps and show how to perform them using open-source tools in OpenROAD™ .

This post assumes that you have some background on hardware design. No programming knowledge is required to use the tools. Physical design knowledge is a plus, but not necessary. When appropriate, we give some links to Wikipedia articles to refer to.

]]>
Getting Started with OpenROAD App – Part 3 https://theopenroadproject.org/getting-started-with-openroad-app-part-3-3/ Wed, 09 Feb 2022 05:59:07 +0000 https://theopenroadproject.org/?p=1731 In digital design, a circuit is described in a hardware description language (e.g. Verilog) and the goal is to manufacture it. To get the actual layout of the circuit that is manufacturable, it needs to pass through a number of steps before handing it over to a fabrication lab. In this post, we briefly give an overview of the steps and show how to perform them using open-source tools in OpenROAD™.

This post assumes that you have some background on hardware design. No programming knowledge is required to use the tools. Physical design knowledge is a plus, but not necessary. When appropriate, we give some links to Wikipedia articles to refer to.

]]>
Getting Started with OpenROAD App – Part 3 https://theopenroadproject.org/getting-started-with-openroad-app-part-3/ Sat, 05 Feb 2022 04:03:19 +0000 https://theopenroadproject.org/?p=1494 In digital design, a circuit is described in a hardware description language (e.g. Verilog) and the goal is to manufacture it. To get the actual layout of the circuit that is manufacturable, it needs to pass through a number of steps before handing it over to a fabrication lab. In this post, we briefly give an overview of the steps and show how to perform them using open-source tools in OpenROAD™.

This post assumes that you have some background on hardware design. No programming knowledge is required to use the tools. Physical design knowledge is a plus, but not necessary. When appropriate, we give some links to Wikipedia articles to refer to.

]]>
Getting Started with OpenROAD App – Part 2 https://theopenroadproject.org/getting-started-with-openroad-app-part-2/ Sat, 05 Feb 2022 03:45:15 +0000 https://theopenroadproject.org/?p=1463 In digital design, a circuit is described in a hardware description language (e.g. Verilog) and the goal is to manufacture it. To get the actual layout of the circuit that is manufacturable, it needs to pass through a number of steps before handing it over to a fabrication lab. In this post, we briefly give an overview of the steps and show how to perform them using open-source tools in OpenROAD™.

This post assumes that you have some background on hardware design. No programming knowledge is required to use the tools. Physical design knowledge is a plus, but not necessary. When appropriate, we give some links to Wikipedia articles to refer to.

]]>
Getting Started with OpenROAD App – Part 1 https://theopenroadproject.org/getting-started-with-openroad-app-part-1/ Sat, 05 Feb 2022 03:42:10 +0000 https://theopenroadproject.org/?p=1460 In digital design, a circuit is described in a hardware description language (e.g. Verilog) and the goal is to manufacture it. To get the actual layout of the circuit that is manufacturable, it needs to pass through a number of steps before handing it over to a fabrication lab. In this post, we briefly give an overview of the steps and show how to perform them using open-source tools in OpenROAD™.

This post assumes that you have some background on hardware design. No programming knowledge is required to use the tools. Physical design knowledge is a plus, but not necessary. When appropriate, we give some links to Wikipedia articles to refer to.

]]>