You can either build the docker locally or fetch it from dockerhub.
To build the necessary docker locally, run:
cd dependencies sh build-docker.sh
To pull the necessary docker from dockerhub, run:
docker pull efabless/mpw_precheck:latest
If you don't have the skywater-pdk installed, run:
export PDK_ROOT=<absolute path to where skywater-pdk and open_pdks will reside> cd dependencies sh build-pdk.sh
Before you run the precheck tool, make sure you go through https://opensource.google/docs/releasing/preparing/ and cover the requirements.
Overwrite verilog/gl/user_project_wrapper.v
with your synthesized netlist make sure the netlist includes power information. Otherwise, point to it properly in your info.yaml
. You can alternatively use spice files for both caravel
and user_project_wrapper
. Keep on reading for this point to make more sense.
Make sure you have the top level GDS-II under a directory called gds/
; thus containing gds/user_project_wrapper.gds
, this directory should be compressed and the script will use your Makefile to uncompress it.
Please create a file ./third_party/used_external_repos.csv
and add to it all repository name,commit hash
for any external github repository that you are using to build this project.
Please include any useful statistics about your design, i.e. cell count, core utilization, etc. in a .csv
file under ./signoff/<macro-name>/final_summary_report.csv
. If you're using OpenLANE then, this file should be created automatically in <run path>/reports/final_summary_report.csv
.
It runs a sequence of checks and aborts with the appropriate error message(s) if any of them fails.
The steps are as follows:
user_project_wrapper
(or `user_analog_project_wrapper' for caravel_user_project_analog)Mount the docker file:
export PDK_ROOT=<Absolute path to parent of sky130A. Installed PDK root.> export INPUT_DIRECTORY=<Absolute path to the user project path> # if caravel is submoduled under the user project, run "export CARAVEL_ROOT=$INPUT_DIRECTORY/caravel" export CARAVEL_ROOT=<Absolute path to caravel> sh docker-mount.sh
Run the following command:
usage: mpw_precheck.py [-h] --input_directory INPUT_DIRECTORY --caravel_root CARAVEL_ROOT --pdk_root PDK_ROOT [--output_directory OUTPUT_DIRECTORY] [--private] [check [check ...]] Runs the precheck tool by calling the various checks in order. positional arguments: check Checks to be ran by the precheck (default: None) optional arguments: -h, --help show this help message and exit --input_directory INPUT_DIRECTORY, -i INPUT_DIRECTORY INPUT_DIRECTORY Absolute Path to the project. (default: None) --caravel_root CARAVEL_ROOT, -cr CARAVEL_ROOT CARAVEL_ROOT Absolute Path to caravel. (default: None) --pdk_root PDK_ROOT, -p PDK_ROOT PDK_ROOT, points to pdk installation path (default: None) --output_directory OUTPUT_DIRECTORY, -o OUTPUT_DIRECTORY Output Directory, default=<input_directory>/precheck_results. (default:None) --private If provided, precheck skips [License, Defaults, Documentation] checks used to qualify the project to as an Open Source Project (default: False)
See the following document for guidance on troubleshooting issues with precheck.