Added "--with-sky130-variants=" to the configuration, so that the
compile and install can be restricted to only sky130A or sky130B.
The default is to compile and install both variants, equivalent to
"--with-sky130-variants=all".
diff --git a/scripts/configure b/scripts/configure
index 5ccc6d5..29224d0 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -607,6 +607,7 @@
KLAYOUT_DISABLED
ALL_TECHS
SKY130_SOURCE_PATH
+SKY130_ENABLED_VARIANTS
SKY130_LINK_TARGETS
SED
pkgpyexecdir
@@ -661,6 +662,7 @@
enable_option_checking
enable_sky130_pdk
with_sky130_link_targets
+with_sky130_variants
enable_klayout
enable_magic
enable_netgen
@@ -1346,6 +1348,9 @@
--with-sky130-link-targets=none|source
"make symbolic links to existing files
[default=none]"
+ --with-sky130-variants=all|A|B|...
+ "compile/install specified PDK variants only
+ [default=all]"
--with-ef-style Use efabless style file system structure
[default=no]
@@ -2186,6 +2191,7 @@
echo "Checking technology sky130..."
+ SKY130_ENABLED_VARIANTS="all"
SKY130_SOURCE_PATH=""
SKY130_LINK_TARGETS="none"
SKY130_AUTO="0"
@@ -2262,6 +2268,18 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: Link targets set to $SKY130_LINK_TARGETS" >&5
$as_echo "$as_me: Link targets set to $SKY130_LINK_TARGETS" >&6;}
+
+ # --with-pdk-variants=PDK_ENABLED_VARIANTS
+
+# Check whether --with-sky130-variants was given.
+if test "${with_sky130_variants+set}" = set; then :
+ withval=$with_sky130_variants; SKY130_ENABLED_VARIANTS=$with_sky130_variants
+
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Enabled variants set to $SKY130_ENABLED_VARIANTS" >&5
+$as_echo "$as_me: Enabled variants set to $SKY130_ENABLED_VARIANTS" >&6;}
fi
@@ -2269,6 +2287,7 @@
+
# Export the list of known technologies to the Makefile
ALL_TECHS="sky130"
diff --git a/scripts/configure.ac b/scripts/configure.ac
index 7f1ba4b..940362d 100755
--- a/scripts/configure.ac
+++ b/scripts/configure.ac
@@ -41,6 +41,7 @@
echo "Checking technology pdk..."
m4_define([pdkvar], [m4_normalize(m4_esyscmd(echo pdk | tr "a-z-" "A-Z_"))])
+ pdkvar[]_ENABLED_VARIANTS="all"
pdkvar[]_SOURCE_PATH=""
pdkvar[]_LINK_TARGETS="none"
pdkvar[]_AUTO="0"
@@ -88,10 +89,19 @@
)
AC_SUBST([]pdkvar[]_LINK_TARGETS)
AC_MSG_NOTICE([Link targets set to $pdkvar[]_LINK_TARGETS])
+
+ # --with-pdk-variants=PDK_ENABLED_VARIANTS
+ AC_ARG_WITH(pdk-variants,
+ [AS_HELP_STRING([--with-pdk-variants=all|A|B|...], "compile/install specified PDK variants only @<:@default=all@:>@")],
+ [[]pdkvar[]_ENABLED_VARIANTS=$with_[]pdk[]_variants]
+ )
+ AC_SUBST([]pdkvar[]_ENABLED_VARIANTS)
+ AC_MSG_NOTICE([Enabled variants set to $pdkvar[]_ENABLED_VARIANTS])
fi
AC_SUBST(pdkvar[]_SOURCE_PATH)
AC_SUBST(pdkvar[]_LINK_TARGETS)
+ AC_SUBST(pdkvar[]_ENABLED_VARIANTS)
])
])
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 7edf57f..92f9fd5 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -113,6 +113,7 @@
# SKYWATER_PATH: Points to vendor sources
# EF_STYLE: 1 for efabless style, 0 otherwise
# LINK_TARGETS_A: If "source", link back to source when possible
+# ENABLED_VARIANTS: If not "all", then compile/install only the specified variants
#
# Run "make" to stage the PDK for tool setup and vendor libraries
#
@@ -192,6 +193,18 @@
LINK_TARGETS_A = @SKY130_LINK_TARGETS@
LINK_TARGETS_B = sky130A
+# ENABLED_VARIANTS = all | A | B
+ENABLED_VARIANTS = @SKY130_ENABLED_VARIANTS@
+ifeq (${ENABLED_VARIANTS},)
+ VARIANTS += A B
+else
+ ifeq (${ENABLED_VARIANTS}, all)
+ VARIANTS += A B
+ else
+ VARIANTS += ${ENABLED_VARIANTS}
+ endif
+endif
+
# Paths:
# Path to skywater_pdk
@@ -538,7 +551,7 @@
SPIEXT = spice
endif
-all: all-A all-B
+all: $(foreach var, ${VARIANTS}, all-$(var))
# 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
@@ -1461,7 +1474,7 @@
options=custom/scripts/gds_import_setup.tcl \
-library digital sky130_osu_sc_18t_ls 2>&1 | tee -a ${SKY130$*}_make.log
-install: install-A install-B
+install: $(foreach var, ${VARIANTS}, install-$(var))
install-A:
echo "Starting SKY130 PDK migration on "`date` > ${SKY130A}_install.log
@@ -1481,7 +1494,7 @@
-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
+uninstall: $(foreach var, ${VARIANTS}, uninstall-$(var))
uninstall-A:
echo "Uninstalling SKY130 PDK from ${SHARED_PDKS_PATH}"
@@ -1497,7 +1510,7 @@
fi
echo "Finished SKY130 PDK uninstall"
-clean: clean-A clean-B
+clean: $(foreach var, ${VARIANTS}, clean-$(var))
clean-A:
${STAGE} -target ${STAGING_PATH}/${SKY130A} -clean
@@ -1505,7 +1518,7 @@
clean-B:
${STAGE} -target ${STAGING_PATH}/${SKY130B} -clean
-veryclean: veryclean-A veryclean-B
+veryclean: $(foreach var, ${VARIANTS}, veryclean-$(var))
veryclean-A: clean-A
${RM} ${SKY130A}_make.log