------------------------------------
open_pdks
----------------------------------------
Master PDK generator for SkyWater Sky130
Hybrid 180nm / 130nm foundry process
for open source EDA tools
----------------------------------------

-------------------------------------------------------------------------------
Prerequisites:

1. Foundry source files:

    Obtain sources for the SkyWater sky130 130nm process from the git repository at
    the following location:

	 https://github.com/google/skywater-pdk

    This repository may go in any convenient location.  The 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.

    So cd to the target location parent directory (e.g., "cd ~/projects/foundry")
    and run the following command:

	 git clone https://github.com/google/skywater-pdk

    Note that many of the files in the PDK are too large for a single git
    repository, and so each IP library in the PDK has been placed in a
    submodule.  There are multiple versions of each library, and it is
    nearly certain that you will only want to deal with the "latest" version
    of each.  To make sure you have the submodules for the latest version of
    each supported IP library, do:

	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_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

    The liberty (.lib) files are the largest of all and so individual files
    are too large for the git repo and need to be assembled by script.  To
    do that, do:

	make timing

    That installs all of the Google/Skywater files.

    Then follow the instructions below for generating the additional files
    for supporting the open source EDA tool flows.

2. EDA tools:

    For installing files to use with the Magic layout tool, Magic must be installed.
    Obtain Magic from:

	https://github.com/RTimothyEdwards/magic

-------------------------------------------------------------------------------
Installation:

    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.

Step 1:

    Run "configure" to set the paths to the Google/SkyWater source
    repository and to set the path to the install location.  Note that
    the configure script is located in the open_pdks top level directory,
    not in the foundry subdirctory, and must be run from the top level
    directory.  Configure options are as follows:

	--with-sky130-source=/path/to/sky130/source
                          "location of the source files for sky130"
	--with-local-path=/path/to/install/pdks
                          "location where the PDKs will be installed"

    NOTE:  The intention of the configure file is to not have to hand-edit
    the Makefile.  However, the development of the configure script is
    currently ongoing and unfinished, so for now the Makefile should be
    checked and edited after running configure.

Step 2:

    All other steps are run in the sky130/ subdirectory.

    cd to the sky130/ subdirectory and edit the Makefile to set the following
    definitions for your host system:

	EF_STYLE = Select "1" for an efabless-style file structure, "0"
			otherwise. There are some differences in
			these two styles, the most important of which being
			that the order of directories for the IP libraries
			is <file_format>/<library_name> instead of
			<library_name>/<file_format>. Other differences
			include version tracking of the Magic setup files
			and the location of the technology LEF file.

	LINK_TARGETS = "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.  For distribution installations, LINK_TARGETS
			must be set to "none".

	LOCAL_PATH = The path to the target 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 should have been set by the
			option --with-local-path= passed to configure).

	DIST_PATH = The path to the location of the installed files prior to
			distribution.  This will most likely be a git or similar
			repo.

Step 3:
	Run:

	    make

	This 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.

Step 4:
	For a local install, do:

	    make install-local

	This copies all files from the staging area into the destination
	as specified by the variable LOCAL_PATH in the Makefile.  All
	pointers to absolute paths in the files are changed to match
	LOCAL_PATH.

	For a distribution install, do:

	    make install-dist

	This copies all files from the staging area into the destination
	as specified by the variable DIST_PATH in the Makefile.  All
	pointers to absolute paths in the files are changed to match
	LOCAL_PATH.  The assumption is that DIST_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
	LOCAL_PATH.

-------------------------------------------------------------------------------
Summary:

    The Makefile script takes the source files and generates files for local
    PDK names "SKY130A", "SKY130B", etc.  (Note there is currently only one
    PDK variant "A".)

    The definition of each PDK is made in the Makefile using defines; e.g.,
	-DMETAL5, etc.

    The make script makes use of the python script "preproc.py" (in the ../common
    directory) to parse each source file for "#ifdef ..."-type macros.  The syntax
    is similar to that used by the C preprocessor (cpp) but does not assume C
    language syntax in the input file, so is generally better to use than cpp
    (has less unexpected/unintentional behavior).  See comments in the preproc.py
    script for a full list of macros that it accepts (short list: #ifdef, #ifndef,
    #define, #include, and boolean operators ||, &&, and !). 

    Files generated:
	.tech		techfile for magic (full DRC, extract, GDS)
	-GDS.tech	techfile for magic, vendor mask layers
	.tcl		PDK script for magic
	-BindKeys	key binding script for magic partly matching Cadence defaults
	.magicrc	magic startup script (copy to local directory as .magicrc)
	_setup.tcl	netgen setup script for LVS
	.sh		qflow master setup script, standard 1.8V digital
	.par		graywolf setup file, standard 1.8V digital

    The installation directory below LOCAL_PATH is the name of the PDK;  e.g.,

	    sky130A/		5-metal stack with MiM cap and redistribution layer

    The installation directory hierarchy below the PDK name looks like the following:

		libs.tech/		technology and setup files

		    magic/		magic techfiles, startup file, PDK script,
					and key binding script.
		    netgen/		netgen setup file
		    qflow/		qflow scripts and graywolf setup files.
		    klayout/		setup files for klayout
		    openlane/		setup files for openlane

		libs.ref/		foundry data

		    cdl/		CDL netlists
		    doc/		Foundry documentation
		    gds/		GDS files
		    lef/		LEF macro files
		    lib/		Timing files
		    mag/		Magic files derived from GDS
		    maglef/		Magic files derived from LEF macros
		    spice/		SPICE netlists (ngspice compatible)
		    techlef/		LEF technology files
		    verilog/		verilog modules

    Each subdirectory of libs.ref is further divided into sections based on the
    IP type.  The section names are largely foundry-dependent.  For SkyWater Sky130,
    these sections include one or more of:

			sky130_fd_sc_hd/		1.8V digital logic (high density)
			sky130_fd_sc_hdll/		1.8V digital logic (high density low leakage)
			sky130_fd_sc_hs/		1.8V digital logic (high speed)
			sky130_fd_sc_hvl/		3.3V digital logic
			sky130_fd_sc_lp/		1.8V digital logic (low power)
			sky130_fd_sc_ls/		1.8V digital logic (low speed)
			sky130_fd_sc_ms/		3.3V digital logic (medium speed)

			sky130_fd_io/			Standard I/O

			sky130_fd_pr_base/		Primitive devices w/fixed layout
			sky130_fd_pr_rf/		RF primitive devices w/fixed layout
			sky130_fd_pr_rf2/		Additional RF primitive devices w/fixed layout

    The target installation destinations assume the directory structure above.  Changing
    this requires editing the source files.

