MPW_precheck is a script used to verify a user's design before submission to Tapeout. It runs a sequence of checks and aborts with the appropriate error message(s) if any of them fails.
The checks are as follows:
DISABLE_LVS
environment variable. The user must understand this is risky to the operation of the final chip and should only be done in a very reasoned manner under very specific conditions.###Current Assumptions
user_project_wrapper
(or user_analog_project_wrapper
for caravel_user_project_analog
)GOLDEN_CARAVEL
.In order for LVS and OEB checks to run successfully, the user must provide an lvs configuration file that describes the hierarchy of the design and give necessary information for running the checks. For extra information on how to write the configuration file click here.
MPW Precheck can be found on GitHub here.
You can either build the docker locally or fetch it from dockerhub.
Build Docker Locally
To build the necessary docker locally, run:
cd dependencies
sh build-docker.sh
Pull Docker from Dockerhub To pull the necessary docker from dockerhub, run:
docker pull efabless/mpw_precheck:latest
If you don't have the pdk installed, please refer to the Caravel Makefile.
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. 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.
Mount the docker file:
export PDK_PATH=<Absolute path to the desired PDK 'variant specific'.>
export INPUT_DIRECTORY=<Absolute path to the user project path>
sh docker-mount.sh
Run the following command:
usage: mpw_precheck.py [-h] --input_directory $INPUT_DIRECTORY --pdk_path $PDK_PATH [--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
-i, --input_directory $INPUT_DIRECTORY
INPUT_DIRECTORY, absolute Path to the project. (default: None)
-p, --pdk_path $PDK_PATH
PDK_PATH, points to the installation path of the pdk 'variant specific' (default: None)
-o, --output_directory 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.
MPW PRECHECK
Vendor
Efabless
System-Level
Free