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
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”.
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/
$ 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.