Labs #
ECE 260C has 5 labs, 4 of which we have released here. These labs were distributed throughout the academic quarter.
These labs primarily utilize Google Docs and GitHub Classroom but alternatives are available.
As part of course development, these labs will also continue to evolve. Please see the homepage for information on issue reporting, suggestions, and inquiries.
Lab | Title |
---|---|
0 | Welcome & Tools Setup |
1 | Design Space Exploration |
2 | Scripting with the Database |
3 | Machine Learning (Not released) |
4 | Modifying & Extending OpenROAD |
When adapting these labs to your courses, remember to change out links to guides or GitHub Classroom as necessary. By default, these links point to this site with a placeholder warning.
Some labs also reference PIDs, which are student ID numbers.
Lab Descriptions #
Below are lab descriptions, alongside the original announcements which were sent out to students as part of each lab release.
Lab 0 Welcome & Tools Setup #
Used in conjunction with the Software Setup Guide (see Tools), this lab was an introduction to both the flow and the Docker-based environments.
Note that this lab makes extensive reference to PIDs, which are UC San Diego’s numeric student IDs. You may wish to use your own numeric ID scheme or to modify the problems.
This lab has lab report and repo submission components, but no starter code.
Lab Report Template |
---|
Google Docs |
Other formats on GitHub |
Welcome to ECE 260C! In this lab, you’ll learn how to setup and run the tools at the heart of this course: OpenROAD, the OpenROAD Flow Scripts, and yosys.
Lab 1 Design Space Exploration #
This lab aimed to introduce students to the inner workings of synthesis tools and their databases through the practical lens of design space exploration. Students perform several synthesis experiments before completing a series of design space exploration scripts used to find an optimum Fmax/Area balance. Finally, students take their chosen optimal design and run it through OpenROAD to demonstrate the difference between synthesis and P&R results.
Lab Report Template | Starter Code |
---|---|
Google Docs | GitHub Repository |
Other formats on GitHub |
In this lab, you will take a tour of yosys - the open-source synthesis tool - and OpenSTA - a static timing analysis tool. Then, you will learn how to organize and perform a design space exploration as a way to prove designs and architectures without the same high labor and compute investment as full P&R.
Lab 2 Scripting With the Database #
This lab explores OpenROAD’s Python Database APIs by having students make small DB queries and manipulations, culminating in them building a simple structured datapath placement script. Students will gain familiarity with the database model used in P&R tools.
Lab Report Template | Starter Code |
---|---|
Google Docs | GitHub Repository |
Other formats on GitHub |
In this lab, you will explore the OpenDB database built into OpenROAD. You’ll do this with OpenROAD’s innovative Python scripting support, which makes richer scripting possible. You will perform placement scripting similar to that used in the industry for Structured Datapaths.
Lab 4 Modifying & Extending OpenROAD #
The goal of this lab is to demonstrate OpenROAD’s support for native extensions. Students complete a simple ERC-driven resizer in C++ using the OpenDB and OpenSTA network query APIs.
This lab can be conducted entirely in GitHub Classroom/Codespaces or with any git server and Dev Containers-compliant tool.
Starter Code |
---|
GitHub Repository |
In this lab, you will get to write your own resizer tool within the OpenROAD main sources, in C++. By doing this, you will get to see the unique power of open source as you use the full, high-performance APIs exposed by OpenROAD’s subsystems, like OpenSTA. This is a natural step forward from the Python scripting you have done in Lab 2.
Fair Use #
Please refrain from distributing lab solutions publicly so as to maintain academic integrity and fairness.