- Google/Skywater Open PDK Distribution
Open PDKs 1.0 is distributed with installation scripts and files for use with the Google/SkyWater sky130 130nm open PDK. The files for this open PDK are publicly distributed on the site github.com:google/skywater-pdk. The primary prerequisite for Open PDKs is this repository. Clone the repository and follow the instructions for the essential preparation of the PDK, since it requires a build to generate some of the larger files that are too big for the git repository.
This repository may go in any convenient location. The Open PDKs Makefile suggests the target location ~/projects/foundry/skywater-pdk but any location will do as long as the definition for SKYWATER_PATH in the Makefile is set appropriately.
Per the README file (open_pdks/sky130/README), the instructions for obtaining the Google/SkyWater open PDK repository files is as follows:
- git clone https://github.com/google/skywater-pdk
- cd skywater-pdk
- git submodule init libraries/sky130_fd_pr/latest
- git submodule init libraries/sky130_fd_sc_hd/latest
- git submodule init libraries/sky130_fd_sc_hdll/latest
- git submodule init libraries/sky130_fd_sc_hs/latest
- git submodule init libraries/sky130_fd_sc_ms/latest
- git submodule init libraries/sky130_fd_sc_ls/latest
- git submodule init libraries/sky130_fd_sc_lp/latest
- git submodule init libraries/sky130_fd_sc_hvl/latest
- git submodule update
- make timingThe purpose of doing the "git submodule init" on individual submodules is to avoid pulling the files for any but the latest version of each digital standard cell library. The open_pdks installation process will use only the latest libraries, so any older library versions are just wasting disk space and compute cycles.Note: As of this writing (September 30, 2020), the last two of the libraries (LP and HVL) are not available in the repository, and will generate an error message when doing "git submodule init". The install instructions will be updated when these become available.
- EDA Tools
For installing files to use with the Magic layout tool, Magic must be installed. Obtain Magic from github.com:RTimothyEdwards/magic and follow the compile and install instructions. Note that pre-packaged versions of magic are likely to be out of date, as at least verson 8.3.25 is required.
InstallationAfter the skywater-pdk files are installed, cd to the top level directory in open_pdks.
There are two methods for installation: Local and Distribution. Use Local installation if you are installing on a single host computer. Use Distribution installation if you are installing into a respository (such as git) that will be distributed to multiple hosts.
- Set paths and definitions:
As of version 1.0.21, open_pdks has an autoconf setup. From the open_pdks top-level directory, run:./configure --with-sky130-source=source_path --with-local-path=local_path [--with-dist-path=dist_path] [--with-link-targets=source|none] [--with-ef-style]where:
- is the location of the Google/SkyWater repository cloned from github, down to the "libraries" subdirectory.
- is the path to the target run-time install directory. This is used in both the local and distribution installations. For a distribution installation, this is the local name of the path to the PDK after it has been distributed to the host computers.
- is the path to the target distribution install directory. Setting this option implies a distribution installation, in which files will be copied into a location such as a git repository from which they will be distributed to different systems.
The configuration options are as follows:
- This value comes directly from the --with-sky130-source= option in the configuration script. Modify this variable to point to the location of the Google/SkyWater repository cloned from github, down to the "libraries" subdirectory. This option is mandatory.
- Specify this option for an efabless-style file structure. The main difference when using "ef-style" is that the file directory hierarchy is swapped with respect to the IP library and the file format; so ef-style uses, e.g., "gds/sky130_fd_sc_hd/" while the standard style uses "sky130_fd_sc_hd/gds/". Otherwise, there are only minor differences in these two styles, namely for version tracking of the Magic setup files, and the location of the technology LEF file.
- -with-link-targets= source|none
- "none" or "source". "none" copies files from the source directories to the target. "source" makes symbolic links to the source directories. Use "source" only if doing a local install, and the source foundry data will not be deleted. Default value if not specified:: none
- This is the path to the target run-time install directory. This is used in both the local and distribution installations. For a distribution installation, this is the local name of the path to the PDK after it has been distributed to the host computers. This option is mandatory.
- The path to the location of the installed files prior to distribution. This will most likely be a git or similar repo. If this option is not specified, then installation will be local only.Example:
./configure --with-sky130-source=~/gits/skywater-pdk/libraries --with-sky130-local-path=~/cad/pdksThe above configuration line assumes that the skywater-pdk repository has been cloned into a subdirectory "gits" of the user's home directory, and that files will be installed such that the PDK will be located at ~/cad/pdks/sky130A/.
- Generate files in staging location:
Run:cd sky130This will pre-process the setup files to create the PDK-specific files for the sky130A PDK, and process all vendor files, and place everything in a local staging area.
- Migrate files to installation location:
For a local or distributed install, do:make installFor a local install (--with-sky130-dist-path not specified in "configure"): This copies all files from the staging area into the destination as specified by the "--with-sky130-local-path" option value in "configure". All pointers to absolute paths in the files are changed to match the local path.
For a distributed install (--with-sky130-dist-path specified in "configure"): This copies all files from the staging area into the destination as specified by the "--with-sky130-dist-path" option value in "configure". All pointers to absolute paths in the files are changed to match the local path as specified by the "--with-sky130-local-path" option value. The assumption is that the distributed path is a repository (such as a git repo) that is cloned to multiple hosts, and the destination on the hosts where it is distributed is the local path.
Last updated: September 30, 2020 at 9:38pm