Updated the gf180mcu Makefile to pull the klayout technology files for gf180mcu from github.com/waferspace where they are considerably further ahead than what is on github.com/ fossi-foundation. The original repository is still being pulled, but may be deprecated and removed in the future.
diff --git a/gf180mcu/Makefile.in b/gf180mcu/Makefile.in index 64774b7..9f14520 100644 --- a/gf180mcu/Makefile.in +++ b/gf180mcu/Makefile.in
@@ -146,6 +146,7 @@ # library repositories must be subdirectories of this path. GF180MCU_PR_PATH = @GF180MCU_FD_PR_PATH@ GF180MCU_PV_PATH = @GF180MCU_FD_PV_PATH@ +GF180MCU_WS_KLAYOUT_PATH = @GF180MCU_WS_KLAYOUT_PATH@ GF180MCU_IO_PATH = @GF180MCU_FD_IO_PATH@ GF180MCU_SC_7T5V0_PATH = @GF180MCU_FD_SC_MCU7T5V0_PATH@ GF180MCU_SC_9T5V0_PATH = @GF180MCU_FD_SC_MCU9T5V0_PATH@ @@ -172,12 +173,14 @@ OCD_URL = https://github.com/RTimothyEdwards AVALON_URL = https://github.com/AvalonSemiconductors FOSSI_URL = https://github.com/fossi-foundation +WAFERSPACE_URL = https://github.com/wafer-space # Names of library repositories # NOTE: Switching PDK_LIB_PR and PDK_LIB_SC_7T5V0 to Efabless versions # having "quick fixes" under development. PDK_LIB_PR = ${FOSSI_URL}/globalfoundries-pdk-libs-gf180mcu_fd_pr PDK_LIB_PV = ${FOSSI_URL}/globalfoundries-pdk-libs-gf180mcu_fd_pv +PDK_LIB_WS_KLAYOUT = ${WAFERSPACE_URL}/gf180mcu PDK_LIB_IO = ${FOSSI_URL}/globalfoundries-pdk-libs-gf180mcu_fd_io PDK_LIB_SC_7T5V0 = ${FOSSI_URL}/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu7t5v0 PDK_LIB_SC_9T5V0 = ${FOSSI_URL}/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu9t5v0 @@ -255,6 +258,11 @@ else COMMIT_DEFS += -DFD_PV_COMMIT=$(shell cd ${GF180MCU_PV_PATH} ; git rev-parse HEAD) endif +ifeq (${GF180MCU_WS_KLAYOUT_PATH},) + COMMIT_DEFS += -DWS_KLAYOUT_COMMIT="unknown" +else + COMMIT_DEFS += -DWS_KLAYOUT_COMMIT=$(shell cd ${GF180MCU_WS_KLAYOUT_PATH} ; git rev-parse HEAD) +endif ifeq (${GF180MCU_IO_PATH},) COMMIT_DEFS += -DFD_IO_COMMIT="unknown" else @@ -503,7 +511,7 @@ ../common/save_commit_refs.py ${COMMIT_DEFS} ${TECH}.json # Handle prerequisites -prerequisites: pr-repo pv-repo io-repo sc-7t-repo sc-9t-repo sram-repo ocd-sram-repo osu-sc-repo avalon-sc-repo ocd-io-repo ocd-alpha-repo +prerequisites: pr-repo pv-repo klayout-repo io-repo sc-7t-repo sc-9t-repo sram-repo ocd-sram-repo osu-sc-repo avalon-sc-repo ocd-io-repo ocd-alpha-repo pr-repo: if test "x${REFERENCE_JSON}" != "x"; then \ @@ -531,6 +539,19 @@ fi ; \ fi +klayout-repo: + if test "x${REFERENCE_JSON}" != "x"; then \ + WS_KLAYOUT_COMMIT=`cat ${REFERENCE_JSON} | grep gf180mcu_klayout | grep -v COMMIT | cut -d'"' -f4` ; \ + fi ; \ + if test "x${GF180MCU_WS_KLAYOUT_PATH}" != "x" ; then \ + if test -d "${GF180MCU_WS_KLAYOUT_PATH}" ; then \ + echo "Using existing installation of klayout libraries from ${GF180MCU_WS_KLAYOUT_PATH}" ; \ + else \ + echo "Downloading klayout library from ${GF180MCU_WS_KLAYOUT_PATH}" ; \ + ../scripts/download.sh ${PDK_LIB_WS_KLAYOUT} ${GF180MCU_WS_KLAYOUT_PATH} $${WS_KLAYOUT_COMMIT}; \ + fi ; \ + fi + io-repo: if test "x${REFERENCE_JSON}" != "x"; then \ FD_IO_COMMIT=`cat ${REFERENCE_JSON} | grep gf180mcu_fd_io | grep -v COMMIT | cut -d'"' -f4` ; \ @@ -650,7 +671,7 @@ # Update prerequisites -update: update-pr-repo update-pv-repo update-io-repo update-sc-7t-repo update-sc-9t-repo update-sram-repo update-ocd-sram-repo update-osu-sc-repo update-avalon-sc-repo update-ocd-io-repo +update: update-pr-repo update-pv-repo update-klayout-repo update-io-repo update-sc-7t-repo update-sc-9t-repo update-sram-repo update-ocd-sram-repo update-osu-sc-repo update-avalon-sc-repo update-ocd-io-repo update-pr-repo: if test "x${GF180MCU_PR_PATH}" != "x" ; then \ @@ -664,6 +685,12 @@ ../scripts/update.sh ${GF180MCU_PV_PATH} ; \ fi +update-klayout-repo: + if test "x${GF180MCU_WS_KLAYOUT_PATH}" != "x" ; then \ + echo "Updating GF180MCU klayout libraries from ${PDK_LIB_WS_KLAYOUT}" ; \ + ../scripts/update.sh ${GF180MCU_WS_KLAYOUT_PATH} ; \ + fi + update-io-repo: if test "x${GF180MCU_IO_PATH}" != "x" ; then \ echo "Updating GF180MCU I/O library from ${PDK_LIB_IO}" ; \ @@ -791,35 +818,18 @@ mkdir -p ${IRSIMTOP_STAGING_$*} mkdir -p ${IRSIM_STAGING_$*} -klayout-%: ${GF180MCU_PV_PATH} ${GF180MCU_PR_PATH} +klayout-%: ${GF180MCU_WS_KLAYOUT_PATH} ${GF180MCU_PR_PATH} mkdir -p ${KLAYOUTTOP_STAGING_$*} mkdir -p ${KLAYOUT_STAGING_$*} rm -rf ${KLAYOUT_STAGING_$*}/drc rm -rf ${KLAYOUT_STAGING_$*}/lvs rm -rf ${KLAYOUT_STAGING_$*}/tech rm -rf ${KLAYOUT_STAGING_$*}/pymacros - mkdir ${KLAYOUT_STAGING_$*}/drc - mkdir ${KLAYOUT_STAGING_$*}/lvs mkdir ${KLAYOUT_STAGING_$*}/tech - mkdir ${KLAYOUT_STAGING_$*}/tech/macros - mkdir ${KLAYOUT_STAGING_$*}/tech/pymacros - mkdir ${KLAYOUT_STAGING_$*}/tech/pymacros/cells - mkdir ${KLAYOUT_STAGING_$*}/tech/pymacros/klayout_api_cells - cp -rp ${GF180MCU_PV_PATH}/klayout/drc/* \ - ${KLAYOUT_STAGING_$*}/drc - cp -rp ${GF180MCU_PV_PATH}/klayout/lvs/* \ - ${KLAYOUT_STAGING_$*}/lvs - cp -rp ${GF180MCU_PR_PATH}/rules/klayout/macros/* \ - ${KLAYOUT_STAGING_$*}/tech/macros - cp -rp ${GF180MCU_PR_PATH}/cells/klayout/pymacros/cells/* \ - ${KLAYOUT_STAGING_$*}/tech/pymacros/cells - cp -rp ${GF180MCU_PR_PATH}/cells/klayout/pymacros/klayout_api_cells/* \ - ${KLAYOUT_STAGING_$*}/tech/pymacros/klayout_api_cells - cp -rp ${GF180MCU_PR_PATH}/tech/klayout/* \ - ${KLAYOUT_STAGING_$*}/tech - cp -rp ${GF180MCU_PR_PATH}/cells/klayout/pymacros/*.lym \ - ${KLAYOUT_STAGING_$*}/tech/pymacros + # This is a pre-built library; just copy the entire thing. + cp -rp ${GF180MCU_WS_KLAYOUT_PATH}/${GF180MCU$*}/libs.tech/klayout/tech \ + ${KLAYOUT_STAGING_$*} xcircuit-%: rm -rf ${XCIRCUIT_STAGING_$*}
diff --git a/gf180mcu/gf180mcu.json b/gf180mcu/gf180mcu.json index 9ba8437..a41b478 100644 --- a/gf180mcu/gf180mcu.json +++ b/gf180mcu/gf180mcu.json
@@ -78,6 +78,7 @@ }, "verification": { "gf180mcu_fd_pv": "FD_PV_COMMIT" + "gf180mcu_ws_klayout": "WS_KLAYOUT_COMMIT" }, "memory": { "gf180mcu_fd_ip_sram": "FD_IP_SRAM_COMMIT" @@ -95,11 +96,12 @@ "magic": "MAGIC_COMMIT" }, "reference": { - "open_pdks": "8fa792c6f7db44c0873c619d62190496b89c0083", + "open_pdks": "08cfcaf22e0a9e87b2578c71602829e9a01822c7", "magic": "22a230edc9f83b7890469d65a22c9c5c8fb06d86", "gf180mcu_pdk": "a897aa30369d3bcec87d9d50ce9b01f320f854ef", "gf180mcu_fd_pr": "739f508876db86bd7d3403f1fe056dedfeaabdab", "gf180mcu_fd_pv": "50cc2fe338c81925e24a6ac4907ddaab534c1312", + "gf180mcu_ws_klayout": "041640819a8054b8dc79852c89f8bbf2f392b727", "gf180mcu_fd_io": "545621fdbac44f55344834e6c03486310c0862d7", "gf180mcu_fd_sc_mcu7t5v0": "5641d172662a7d9086e5b99c5d54506c05e65cee", "gf180mcu_fd_sc_mcu9t5v0": "e0e80f5a6522f10b82165d3aeab9b8ee28e89849",
diff --git a/scripts/configure b/scripts/configure index 567946f..f0f2a72 100755 --- a/scripts/configure +++ b/scripts/configure
@@ -624,6 +624,7 @@ GF180MCU_FD_SC_MCU9T5V0_PATH GF180MCU_FD_SC_MCU7T5V0_PATH GF180MCU_FD_IO_PATH +GF180MCU_WS_KLAYOUT_PATH GF180MCU_FD_PV_PATH GF180MCU_FD_PR_PATH SKY130_OSU_T18_PATH @@ -749,6 +750,7 @@ enable_osu_t18_sky130 enable_primitive_gf180mcu enable_verification_gf180mcu +enable_klayout_gf180mcu enable_io_gf180mcu enable_sc_7t5v0_gf180mcu enable_sc_9t5v0_gf180mcu @@ -1482,6 +1484,9 @@ --enable-verification-gf180mcu[=path] Install gf180mcu_fd_pv. If path is omitted, the repository will be downloaded. [default=enabled] + --enable-klayout-gf180mcu[=path] + Install gf180mcu_ws_klayout. If path is omitted, the repository + will be downloaded. [default=enabled] --enable-io-gf180mcu[=path] Install gf180mcu_fd_io. If path is omitted, the repository will be downloaded. [default=enabled] @@ -3794,6 +3799,50 @@ # echo target targetvar flag location + GF180MCU_WS_KLAYOUT_PATH="" + + # Check whether --enable-klayout-gf180mcu was given. +if test ${enable_klayout_gf180mcu+y} +then : + enableval=$enable_klayout_gf180mcu; + if test "$enableval" == "yes" -o "$enableval" == "YES"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_ws_klayout' will be installed automatically during make." >&5 +printf "%s\n" "$as_me: Package 'gf180mcu_ws_klayout' will be installed automatically during make." >&6;} + export GF180MCU_WS_KLAYOUT_PATH=../sources/gf180mcu_ws_klayout + elif test "$enableval" == "no" -o "$enableval" == "NO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_ws_klayout'" >&5 +printf "%s\n" "$as_me: Disabling package 'gf180mcu_ws_klayout'" >&6;} + export GF180MCU_WS_KLAYOUT_PATH="" + else + GF180MCU_WS_KLAYOUT_PATH=$enableval + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_ws_klayout' at $GF180MCU_WS_KLAYOUT_PATH" >&5 +printf "%s\n" "$as_me: Enabling package 'gf180mcu_ws_klayout' at $GF180MCU_WS_KLAYOUT_PATH" >&6;} + fi + GF180MCU_WS_KLAYOUT_PATH=`realpath $GF180MCU_WS_KLAYOUT_PATH` + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_ws_klayout' will be installed automatically during make." >&5 +printf "%s\n" "$as_me: Package 'gf180mcu_ws_klayout' will be installed automatically during make." >&6;} + GF180MCU_WS_KLAYOUT_PATH=../sources/gf180mcu_ws_klayout + + ;; +esac +fi + + + + + + + + + + + + + # echo target targetvar flag location + GF180MCU_FD_IO_PATH="" # Check whether --enable-io-gf180mcu was given.
diff --git a/scripts/configure.ac b/scripts/configure.ac index 00d8624..d5c11a9 100755 --- a/scripts/configure.ac +++ b/scripts/configure.ac
@@ -255,6 +255,7 @@ # GlobalFoundries gf180mcu essential M4_GEN_INSTALLATION(gf180mcu_fd_pr, primitive-gf180mcu, ../sources) M4_GEN_INSTALLATION(gf180mcu_fd_pv, verification-gf180mcu, ../sources) +M4_GEN_INSTALLATION(gf180mcu_ws_klayout, klayout-gf180mcu, ../sources) M4_GEN_INSTALLATION(gf180mcu_fd_io, io-gf180mcu, ../sources) M4_GEN_INSTALLATION(gf180mcu_fd_sc_mcu7t5v0, sc-7t5v0-gf180mcu, ../sources) M4_GEN_INSTALLATION(gf180mcu_fd_sc_mcu9t5v0, sc-9t5v0-gf180mcu, ../sources)
diff --git a/sky130/sky130.json b/sky130/sky130.json index 23f13aa..b7d68f5 100644 --- a/sky130/sky130.json +++ b/sky130/sky130.json
@@ -94,7 +94,7 @@ "magic": "MAGIC_COMMIT" }, "reference": { - "open_pdks": "8fa792c6f7db44c0873c619d62190496b89c0083", + "open_pdks": "08cfcaf22e0a9e87b2578c71602829e9a01822c7", "magic": "22a230edc9f83b7890469d65a22c9c5c8fb06d86", "sky130_fd_pr": "c996d0e7417d7574714079050e2768da70f7fdca", "sky130_fd_io": "e60737bf624df95c211fe99c007ddec78e3e081d",