For the ImpatientMost people will want to do the default compile and install. From open_pdks version 1.0.122, the "make" process will automatically pull third-party sources from remote repositories and install them, so compiling only requires specifying which packages to install. The typical user will want do to the following*:
./configure --enable-sky130-pdkThis will do the following:
sudo make install
- Automatically pull the Google/SkyWater SKY130 PDK from github and compile the timing files.
- Automatically pull the 3rd-party alphanumeric layout library
- Automatically pull the 3rd-party library for the xschem schematic entry and schematic capture tool.
- Build and install all libraries to /usr/local/share/pdk/sky130A/.*Strong caveat, though: The SkyWater PDK is a very large repository, and building it can take quite a long time. You may prefer to download and install the PDK repository separately, so that you can limit the number of library submodules and thereby reduce the overhead significantly. In that case, use --enable-sky130-pdk=pathThe remainder of this page contains the detailed instructions for configuring and installing open_pdks. If the simple steps above worked for you, then you're done with the install!
- 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.
If "--enable-sky130-pdk" is specified as an option to the open_pdks configure command without any following value, then the PDK will be automatically pulled from the repository above and placed in the subdirectory sources/sky130-pdk in the open_pdks source directory. Doing "make distclean" will remove the directory and its contents. If you already have the SkyWater PDK repository or want it in another place, then use "configure --enable-sky130-pdk=path_to_pdk_repo"
This repository may go in any convenient location.
Per the README file (open_pdks/sky130/README), the instructions for obtaining the Google/SkyWater open PDK repository files is as follows:The 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.
- git clone https://github.com/google/skywater-pdk
- cd skywater-pdk
- git submodule init libraries/sky130_fd_io/latest
- git submodule init libraries/sky130_fd_pr/latest
- git submodule init libraries/sky130_fd_sc_hd/latest
- git submodule init libraries/sky130_fd_sc_hvl/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 update
- make timing
Note: It is not required to initialize all the submodules, and doing so greatly increases the disk space overhead and the amount of time to compile the PDK. At a minimum, initialize the first four submodules (io, pr, sc_hd, and sc_hvl). These comprise the I/O pad cells, the primitive devices, the high-density digital standard cells, and the high-voltage digital standard cells.
Note: The sky130_fd_io library (partial) was added on Nov. 10, 2020; this is enough to simulate the caravel harness chip. Additional I/O cell views are added through custom open_pdks additions to the PDK.
- 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 --enable-sky130-pdk=source_path --with-sky130-local-path=local_path [--with-sky130-dist-path=dist_path] [--with-sky130-link-targets=source|none] [--with-ef-style] [--enable-default_off_option] [--disable-default_on_option]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 can always be queried using:./configure --helpThe configuration options are as follows:
- Modify this value to point to the location of the Google/SkyWater repository cloned from github, down to the "libraries" subdirectory. This option is mandatory for installing the Google/SkyWater SKY130 PDK. If the path is omitted, then the repository will be cloned, installed, and configured automatically.
- 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-sky130-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. If specifed, then path is mandatory. If not specified, then the local path defaults to /usr/share/pdk/ such that the sky130 PDK will install to /usr/share/pdk/sky130A/
- 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.
- If not disabled, the 3rd-party alphanumeric layout library will be installed as part of the sky130A PDK. If path is omitted, or the configuration option is not specified, then the library will be pulled automatically from the repository and installed. The repository sources will remain in the sources/ directory unless removed with "make distclean". To disable the package, use --disable-alpha-sky130.
- If not disabled, the 3rd-party Sky130 setup for xschem will be installed as part of the sky130A PDK. If path is omitted, or the configuration option is not specified, then the library will be pulled automatically from the repository and installed. The repository sources will remain in the sources/ directory unless removed with "make distclean". To disable the package, use --disable-xschem-sky130.
- If enabled, the 3rd-party SRAM macro library https://github.com/efabless/sky130_sram_macros will be installed. This library contains pre-compiled and verified memory blocks created with OpenRAM with commonly used configurations like 32-bit wide data in blocks of 1kB, 2kB, and 4kB. This is disabled by default because preparing the PDK entries can take a long time.
- If enabled, the 3rd-party open-source OSU digital standard cell library will be installed.
- If enabled, the 3rd-party open-source OSU 12-track height digital standard cell library will be installed.
- If enabled, the 3rd-party open-source OSU 15-track height digital standard cell library will be installed.
- If enabled, the 3rd-party open-source OSU 18-track height digital standard cell library will be installed.Example:
./configure --enable-sky130-pdk=~/gits/skywater-pdk \The 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/. All the "enabled by default" 3rd-party libraries will be installed, and in addition the SRAM macro library will be installed.
- Generate files in staging location:
Run:makeThis 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:[sudo] 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.
- Clean up:
To clean up the open_pdks source directory, do:make cleanThe first one removes the staging area. The second removes the staging area and all log files. The third removes the staging area, all log files, and any automatically downloaded repositories.
Last updated: June 12, 2021 at 10:27pm