Modified the configure script to allow 3rd party libraries to be either installed by default (requiring --disable) or ignored by default (requiring --enable). Moved the SRAM library to the "ignored by default" list because it takes so long to build. Added all of the OSU standard cell libraries (hs/ms/ls each for 12T, 15T, and 18T). Added a straight-through analog pad for high-speed I/O, especially for the "caravan" analog variant of the "caravel" harness chip.
diff --git a/scripts/configure b/scripts/configure index 824d296..b0e3e58 100755 --- a/scripts/configure +++ b/scripts/configure
@@ -588,9 +588,13 @@ ac_subst_vars='LTLIBOBJS LIBOBJS EF_STYLE +SKY130_OSU_T18_PATH +SKY130_OSU_T15_PATH +SKY130_OSU_T12_PATH +SKY130_OSU_PATH +SKY130_SRAM_MACROS_PATH XSCHEM_SKY130_PATH SKY130_ML_XX_HD_PATH -SKY130_SRAM_MACROS_PATH PATCH MAGIC XSCHEM_DISABLED @@ -666,9 +670,13 @@ enable_openlane enable_qflow enable_xschem -enable_sram_sky130 enable_alpha_sky130 enable_xschem_sky130 +enable_sram_sky130 +enable_osu_sky130 +enable_osu_t12_sky130 +enable_osu_t15_sky130 +enable_osu_t18_sky130 with_ef_style ' ac_precious_vars='build_alias @@ -1327,15 +1335,27 @@ Enable or disable xschem setup [default=enabled] - --enable-sram-sky130[=path] - Install sky130_sram_macros. If path is omitted, it'll be - downloaded. [default=enabled] --enable-alpha-sky130[=path] - Install sky130_ml_xx_hd. If path is omitted, it'll be - downloaded. [default=enabled] + Install sky130_ml_xx_hd. If path is omitted, the repository + will be downloaded. [default=enabled] --enable-xschem-sky130[=path] - Install xschem_sky130. If path is omitted, it'll be - downloaded. [default=enabled] + Install xschem_sky130. If path is omitted, the repository + will be downloaded. [default=enabled] + --enable-sram-sky130[=path] + Install sky130_sram_macros. If path is omitted, the repository + will be downloaded. [default=enabled] + --enable-osu-sky130[=path] + Install sky130_osu. If path is omitted, the repository + will be downloaded. [default=enabled] + --enable-osu-t12-sky130[=path] + Install sky130_osu_t12. If path is omitted, the repository + will be downloaded. [default=enabled] + --enable-osu-t15-sky130[=path] + Install sky130_osu_t15. If path is omitted, the repository + will be downloaded. [default=enabled] + --enable-osu-t18-sky130[=path] + Install sky130_osu_t18. If path is omitted, the repository + will be downloaded. [default=enabled] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -2441,46 +2461,7 @@ # Other installations (libraries or tools if applicable) - - - - - - - # echo target targetvar flag location - - SKY130_SRAM_MACROS_PATH="" - - # Check whether --enable-sram-sky130 was given. -if test "${enable_sram_sky130+set}" = set; then : - enableval=$enable_sram_sky130; - if test "$enableval" == "yes" -o "$enableval" == "YES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will be installed automatically during make." >&5 -$as_echo "$as_me: Package 'sky130_sram_macros' will be installed automatically during make." >&6;} - export SKY130_SRAM_MACROS_PATH=../sources/sky130_sram_macros - elif test "$enableval" == "no" -o "$enableval" == "NO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_sram_macros'" >&5 -$as_echo "$as_me: Disabling package 'sky130_sram_macros'" >&6;} - export SKY130_SRAM_MACROS_PATH="" - else - SKY130_SRAM_MACROS_PATH=$enableval - { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&5 -$as_echo "$as_me: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&6;} - fi - SKY130_SRAM_MACROS_PATH=`realpath $SKY130_SRAM_MACROS_PATH` - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will be installed automatically during make." >&5 -$as_echo "$as_me: Package 'sky130_sram_macros' will be installed automatically during make." >&6;} - SKY130_SRAM_MACROS_PATH=../sources/sky130_sram_macros - - -fi - - - - +# Optional installations (like the above, but disabled by default) @@ -2570,6 +2551,212 @@ + + + + + # echo target targetvar flag location + + SKY130_SRAM_MACROS_PATH="" + + # Check whether --enable-sram-sky130 was given. +if test "${enable_sram_sky130+set}" = set; then : + enableval=$enable_sram_sky130; + if test "$enableval" == "yes" -o "$enableval" == "YES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will be installed automatically during make." >&5 +$as_echo "$as_me: Package 'sky130_sram_macros' will be installed automatically during make." >&6;} + export SKY130_SRAM_MACROS_PATH=../sources/sky130_sram_macros + elif test "$enableval" == "no" -o "$enableval" == "NO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_sram_macros'" >&5 +$as_echo "$as_me: Disabling package 'sky130_sram_macros'" >&6;} + export SKY130_SRAM_MACROS_PATH="" + else + SKY130_SRAM_MACROS_PATH=$enableval + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&5 +$as_echo "$as_me: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&6;} + fi + SKY130_SRAM_MACROS_PATH=`realpath $SKY130_SRAM_MACROS_PATH` + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will not be installed." >&5 +$as_echo "$as_me: Package 'sky130_sram_macros' will not be installed." >&6;} + + +fi + + + + + + + + + + + + + # echo target targetvar flag location + + SKY130_OSU_PATH="" + + # Check whether --enable-osu-sky130 was given. +if test "${enable_osu_sky130+set}" = set; then : + enableval=$enable_osu_sky130; + if test "$enableval" == "yes" -o "$enableval" == "YES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu' will be installed automatically during make." >&5 +$as_echo "$as_me: Package 'sky130_osu' will be installed automatically during make." >&6;} + export SKY130_OSU_PATH=../sources/sky130_osu + elif test "$enableval" == "no" -o "$enableval" == "NO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu'" >&5 +$as_echo "$as_me: Disabling package 'sky130_osu'" >&6;} + export SKY130_OSU_PATH="" + else + SKY130_OSU_PATH=$enableval + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu' at $SKY130_OSU_PATH" >&5 +$as_echo "$as_me: Enabling package 'sky130_osu' at $SKY130_OSU_PATH" >&6;} + fi + SKY130_OSU_PATH=`realpath $SKY130_OSU_PATH` + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu' will not be installed." >&5 +$as_echo "$as_me: Package 'sky130_osu' will not be installed." >&6;} + + +fi + + + + + + + + + + + + + # echo target targetvar flag location + + SKY130_OSU_T12_PATH="" + + # Check whether --enable-osu-t12-sky130 was given. +if test "${enable_osu_t12_sky130+set}" = set; then : + enableval=$enable_osu_t12_sky130; + if test "$enableval" == "yes" -o "$enableval" == "YES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t12' will be installed automatically during make." >&5 +$as_echo "$as_me: Package 'sky130_osu_t12' will be installed automatically during make." >&6;} + export SKY130_OSU_T12_PATH=../sources/sky130_osu_t12 + elif test "$enableval" == "no" -o "$enableval" == "NO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t12'" >&5 +$as_echo "$as_me: Disabling package 'sky130_osu_t12'" >&6;} + export SKY130_OSU_T12_PATH="" + else + SKY130_OSU_T12_PATH=$enableval + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t12' at $SKY130_OSU_T12_PATH" >&5 +$as_echo "$as_me: Enabling package 'sky130_osu_t12' at $SKY130_OSU_T12_PATH" >&6;} + fi + SKY130_OSU_T12_PATH=`realpath $SKY130_OSU_T12_PATH` + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t12' will not be installed." >&5 +$as_echo "$as_me: Package 'sky130_osu_t12' will not be installed." >&6;} + + +fi + + + + + + + + + + + + + # echo target targetvar flag location + + SKY130_OSU_T15_PATH="" + + # Check whether --enable-osu-t15-sky130 was given. +if test "${enable_osu_t15_sky130+set}" = set; then : + enableval=$enable_osu_t15_sky130; + if test "$enableval" == "yes" -o "$enableval" == "YES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t15' will be installed automatically during make." >&5 +$as_echo "$as_me: Package 'sky130_osu_t15' will be installed automatically during make." >&6;} + export SKY130_OSU_T15_PATH=../sources/sky130_osu_t15 + elif test "$enableval" == "no" -o "$enableval" == "NO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t15'" >&5 +$as_echo "$as_me: Disabling package 'sky130_osu_t15'" >&6;} + export SKY130_OSU_T15_PATH="" + else + SKY130_OSU_T15_PATH=$enableval + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t15' at $SKY130_OSU_T15_PATH" >&5 +$as_echo "$as_me: Enabling package 'sky130_osu_t15' at $SKY130_OSU_T15_PATH" >&6;} + fi + SKY130_OSU_T15_PATH=`realpath $SKY130_OSU_T15_PATH` + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t15' will not be installed." >&5 +$as_echo "$as_me: Package 'sky130_osu_t15' will not be installed." >&6;} + + +fi + + + + + + + + + + + + + # echo target targetvar flag location + + SKY130_OSU_T18_PATH="" + + # Check whether --enable-osu-t18-sky130 was given. +if test "${enable_osu_t18_sky130+set}" = set; then : + enableval=$enable_osu_t18_sky130; + if test "$enableval" == "yes" -o "$enableval" == "YES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t18' will be installed automatically during make." >&5 +$as_echo "$as_me: Package 'sky130_osu_t18' will be installed automatically during make." >&6;} + export SKY130_OSU_T18_PATH=../sources/sky130_osu_t18 + elif test "$enableval" == "no" -o "$enableval" == "NO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t18'" >&5 +$as_echo "$as_me: Disabling package 'sky130_osu_t18'" >&6;} + export SKY130_OSU_T18_PATH="" + else + SKY130_OSU_T18_PATH=$enableval + { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t18' at $SKY130_OSU_T18_PATH" >&5 +$as_echo "$as_me: Enabling package 'sky130_osu_t18' at $SKY130_OSU_T18_PATH" >&6;} + fi + SKY130_OSU_T18_PATH=`realpath $SKY130_OSU_T18_PATH` + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t18' will not be installed." >&5 +$as_echo "$as_me: Package 'sky130_osu_t18' will not be installed." >&6;} + + +fi + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem" >&5 $as_echo "$as_me: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem" >&6;}
diff --git a/scripts/configure.ac b/scripts/configure.ac index be17018..63de958 100755 --- a/scripts/configure.ac +++ b/scripts/configure.ac
@@ -168,7 +168,7 @@ flag, AS_HELP_STRING( [--enable-flag@<:@=path@:>@], - [Install target. If path is omitted, it'll be downloaded. @<:@default=enabled@:>@] + [Install target. If path is omitted, the repository will be downloaded. @<:@default=enabled@:>@] ), [ if test "$enableval" == "yes" -o "$enableval" == "YES"; then AC_MSG_NOTICE([Package 'target' will be installed automatically during make.]) @@ -192,10 +192,53 @@ AC_SUBST(targetvar[]_PATH) ]) -M4_GEN_INSTALLATION(sky130_sram_macros, sram-sky130, ../sources) +# Optional installations (like the above, but disabled by default) +AC_DEFUN([M4_OPT_INSTALLATION], [ + m4_define([target], $1) + m4_define([targetvar], [m4_normalize(m4_esyscmd(echo target | tr "a-z-" "A-Z_"))]) + m4_define([flag], $2) + m4_define([location], $3) + + # echo target targetvar flag location + + targetvar[]_PATH="" + + AC_ARG_ENABLE( + flag, + AS_HELP_STRING( + [--enable-flag@<:@=path@:>@], + [Install target. If path is omitted, the repository will be downloaded. @<:@default=enabled@:>@] + ), [ + if test "$enableval" == "yes" -o "$enableval" == "YES"; then + AC_MSG_NOTICE([Package 'target' will be installed automatically during make.]) + export targetvar[]_PATH=location/target + elif test "$enableval" == "no" -o "$enableval" == "NO"; then + AC_MSG_NOTICE([Disabling package 'target']) + export targetvar[]_PATH="" + else + targetvar[]_PATH=$enableval + AC_MSG_NOTICE([Enabling package 'target' at $[]targetvar[]_PATH]) + fi + targetvar[]_PATH=`realpath $[]targetvar[]_PATH` + ],[ + AC_MSG_NOTICE([Package 'target' will not be installed.]) + ] + ) + + $4 + + AC_SUBST(targetvar[]_PATH) +]) + M4_GEN_INSTALLATION(sky130_ml_xx_hd, alpha-sky130, ../sources) M4_GEN_INSTALLATION(xschem_sky130, xschem-sky130, ../sources) +M4_OPT_INSTALLATION(sky130_sram_macros, sram-sky130, ../sources) +M4_OPT_INSTALLATION(sky130_osu, osu-sky130, ../sources) +M4_OPT_INSTALLATION(sky130_osu_t12, osu-t12-sky130, ../sources) +M4_OPT_INSTALLATION(sky130_osu_t15, osu-t15-sky130, ../sources) +M4_OPT_INSTALLATION(sky130_osu_t18, osu-t18-sky130, ../sources) + AC_DEFUN([M4_GEN_WITH_TOOLS], [ m4_foreach_w(tool, $1, [ m4_define([toolvar], [m4_normalize(m4_esyscmd(echo tool | tr "a-z-" "A-Z_"))])
diff --git a/scripts/download.sh b/scripts/download.sh index 1bfadc1..a4188d9 100755 --- a/scripts/download.sh +++ b/scripts/download.sh
@@ -1,10 +1,10 @@ -#!/bin/sh +#!/bin/bash # # download.sh -- # Download a tarball from the specified URL to the specified target # directory, untar it, and remove the tarball file. # -# Usage: download.sh <url> <target_dir> +# Usage: download.sh <url> <target_dir> [<strip>] # # where: # @@ -13,6 +13,8 @@ # tarball will be downloaded to the directory above this, # untarred while renaming to <target_dir>, and then the tarball # file will be deleted. +# <strip> is the number of directory levels to strip off the front of the +# tarball contents. Defaults to 1 if not specified. # # Neither curl or wget are guaranteed to be included in all *nix systems, @@ -39,7 +41,14 @@ echo "Downloading $1 to $2" $DL_CMD $2.tar.gz $1 +if [ $# -gt 2 ]; then + snum=$3 +else + snum=1 +fi + mkdir -p $2 -tar -xf $2.tar.gz --strip-components 1 -C $2 +echo "Untarring and removing $2.tar.gz" +tar -xf $2.tar.gz --strip-components $snum -C $2 rm $2.tar.gz exit 0