Some corrections to the Makefile, and a change to sky130.json to
list the ReRAM in the set of options in sky130B/.config/nodeinfo.json.
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index dede373..1f49f67 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -110,9 +110,9 @@
#
# The variables below are substituted from the configuration options:
#
-# SKYWATER_PATH: points to vendor sources
+# SKYWATER_PATH: Points to vendor sources
# EF_STYLE: 1 for efabless style, 0 otherwise
-# LINK_TARGETS: link back to source or link to 1st PDK when possible
+# LINK_TARGETS_A: If "source", link back to source when possible
#
# Run "make" to stage the PDK for tool setup and vendor libraries
#
@@ -181,9 +181,16 @@
# PDK (e.g, "sky130A"), then symbolic links are made to the
# same files in that PDK, where they exist, and are copied
# from source, where they don't.
+#
+# Behavior is to let the link targets for variant A follow the
+# configuration option. Link targets for variant B will always
+# be the files of variant A (which may end up being symbolic
+# links to symbolic links if "source" was chosen for link-targets
+# in the configuration).
# LINK_TARGETS = source | none | sky130A
-LINK_TARGETS = @SKY130_LINK_TARGETS@
+LINK_TARGETS_A = @SKY130_LINK_TARGETS@
+LINK_TARGETS_B = sky130A
# Paths:
@@ -226,11 +233,8 @@
SKY130A = sky130A
SKY130B = sky130B
-ifeq (${LINK_TARGETS}, ${SKY130A})
- DIST_LINK_TARGETS = ${SHARED_PDKS_PATH}/${LINK_TARGETS}
-else
- DIST_LINK_TARGETS = ${LINK_TARGETS}
-endif
+DIST_LINK_TARGETS_A = ${LINK_TARGETS_A}
+DIST_LINK_TARGETS_B = ${SHARED_PDKS_PATH}/${LINK_TARGETS_B}
# Basic definitions for each EF process node
SKY130A_DEFS = -DTECHNAME=sky130A -DREVISION=${REVISION}
@@ -425,6 +429,9 @@
OPENLANE_COMMON = config.tcl tracks.info no_synth.cells drc_exclude.cells
OPENLANE_COMMON += tribuff_map.v latch_map.v mux2_map.v mux4_map.v fa_map.v rca_map.v csa_map.v
+# Corners defined in IRSIM parameter files (this should be wild-carded!)
+IRSIM_CORNERS = 1v62_27 1v62_n40 1v62_n5 1v80_125 1v80_27 1v80_n40 1v80_n5 1v98_125 1v98_27 1v98_n40 1v98_n5
+
# Where cpp syntax is followed, this is equivalent to cpp, but it does not
# mangle non-C source files under the belief that they are actually C code.
CPP = ../common/preproc.py
@@ -531,8 +538,7 @@
SPIEXT = spice
endif
-# all: all-A all-B
-all: all-A
+all: all-A all-B
# Handle prerequisites (fetch and install the PDK and requested libraries)
prerequisites: pdk-repo alpha-repo xschem-repo sram-repo osu-t12-repo osu-t15-repo osu-t18-repo
@@ -755,7 +761,10 @@
mkdir -p ${IRSIMTOP_STAGING_$*}
mkdir -p ${IRSIM_STAGING_$*}
rm -f ${IRSIM_STAGING_$*}/${SKY130$*}_*.prm
- cp irsim/${SKY130$*}_*.prm ${IRSIM_STAGING_$*}/
+ for corner in ${IRSIM_CORNERS} ; do \
+ cp irsim/sky130A_$$corner.prm \
+ ${IRSIM_STAGING_$*}/${SKY130$*}_$$corner.prm ; \
+ done
klayout-%: klayout/${TECH}.lyp klayout/${TECH}.lyt
mkdir -p ${KLAYOUTTOP_STAGING_$*}
@@ -1460,7 +1469,7 @@
-source ${STAGING_PATH}/${SKY130A} \
-finalpath ${SHARED_PDKS_PATH}/${SKY130A} \
-variable PDKPATH \
- -link_from ${LINK_TARGETS} 2>&1 | tee -a ${SKY130A}_install.log
+ -link_from ${DIST_LINK_TARGETS_A} 2>&1 | tee -a ${SKY130A}_install.log
echo "Ended SKY130 PDK migration on "`date` >> ${SKY130A}_install.log
install-B:
@@ -1469,7 +1478,7 @@
-source ${STAGING_PATH}/${SKY130B} \
-finalpath ${SHARED_PDKS_PATH}/${SKY130B} \
-variable PDKPATH \
- -link_from ${LINK_TARGETS} 2>&1 | tee -a ${SKY130B}_install.log
+ -link_from ${DIST_LINK_TARGETS_B} 2>&1 | tee -a ${SKY130B}_install.log
echo "Ended SKY130 PDK migration on "`date` >> ${SKY130B}_install.log
uninstall: uninstall-A uninstall-B
diff --git a/sky130/sky130.json b/sky130/sky130.json
index af33d23..0ec84f5 100644
--- a/sky130/sky130.json
+++ b/sky130/sky130.json
@@ -8,6 +8,9 @@
#ifdef REDISTRIBUTION
#define OPTION3 + redistribution layer
#endif (REDISTRIBUTION)
+#ifdef RERAM
+#define OPTION4 + ReRAM
+#endif (RERAM)
{
"foundry": "SW",
"foundry-name": "SkyWater",
@@ -15,7 +18,7 @@
"feature-size": "130nm",
"status": "active",
"commit": "OPEN_PDKS_COMMIT",
- "description": "DESCRIPTION OPTION1 OPTION2 OPTION3",
+ "description": "DESCRIPTION OPTION1 OPTION2 OPTION3 OPTION4",
"options": [
#ifdef METAL5
#undef METAL5