RTimothyEdwards / open_pdks

PDK installer for open-source EDA tools and toolchains. Distributed with setups for the SkyWater 130nm and Global Foundries 180nm open processes.
http://opencircuitdesign.com/open_pdks
Apache License 2.0
291 stars 86 forks source link

Issue with `--with-reference` #372

Closed kareefardi closed 1 year ago

kareefardi commented 1 year ago

When trying to build gf18mcu using --with-reference option, I get the following error.

(cd gf180mcu && make -j all)
make[1]: Entering directory '/home/karim/work/pdk/volare/gf180mcu/build/43493de6d35c95f3ed379c41b9b4b47beedb7bd1/open_pdks/gf180mcu'
if test "xgf180mcu.json" != "x"; then \
    FD_PR_COMMIT = `cat gf180mcu.json | grep gf180mcu_fd_pr | grep -v COMMIT | cut -d'"' -f4` ; \
fi
if test "xgf180mcu.json" != "x"; then \
    FD_PV_COMMIT = `cat gf180mcu.json | grep gf180mcu_fd_pv | grep -v COMMIT | cut -d'"' -f4` ; \
fi
if test "xgf180mcu.json" != "x"; then \
    FD_IO_COMMIT = `cat gf180mcu.json | grep gf180mcu_fd_io | grep -v COMMIT | cut -d'"' -f4` ; \
fi
if test "xgf180mcu.json" != "x"; then \
    FD_SC_MCU7T5V0_COMMIT = `cat gf180mcu.json | grep gf180mcu_fd_sc_mcu7t5v0 | grep -v COMMIT | cut -d'"' -f4` ; \
fi
if test "xgf180mcu.json" != "x"; then \
    FD_SC_MCU9T5V0_COMMIT = `cat gf180mcu.json | grep gf180mcu_fd_sc_mcu9t5v0 | grep -v COMMIT | cut -d'"' -f4` ; \
fi
if test "xgf180mcu.json" != "x"; then \
    FD_IP_SRAM_COMMIT = `cat gf180mcu.json | grep gf180mcu_fd_ip_sram | grep -v COMMIT | cut -d'"' -f4` ; \
fi
if test "xgf180mcu.json" != "x"; then \
    OSU_SC_COMMIT = `cat gf180mcu.json | grep gf180mcu_osu_sc_gf12t3v3 | grep -v COMMIT | cut -d'"' -f4` ; \
fi
/bin/bash: line 2: FD_PV_COMMIT: command not found
/bin/bash: line 2: FD_SC_MCU7T5V0_COMMIT: command not found
make[1]: *** [Makefile:509: pv-repo] Error 127
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:535: sc-7t-repo] Error 127
/bin/bash: line 2: FD_IP_SRAM_COMMIT: command not found
/bin/bash: line 2: FD_PR_COMMIT: command not found
make[1]: *** [Makefile:561: sram-repo] Error 127
/bin/bash: line 2: FD_SC_MCU9T5V0_COMMIT: command not found
/bin/bash: line 2: FD_IO_COMMIT: command not found
make[1]: *** [Makefile:496: pr-repo] Error 127
/bin/bash: line 2: OSU_SC_COMMIT: command not found
make[1]: *** [Makefile:574: osu-sc-repo] Error 127
make[1]: *** [Makefile:522: io-repo] Error 127
make[1]: *** [Makefile:548: sc-9t-repo] Error 127
make[1]: Leaving directory '/home/karim/work/pdk/volare/gf180mcu/build/43493de6d35c95f3ed379c41b9b4b47beedb7bd1/open_pdks/gf180mcu'
make: *** [Makefile:132: tech-gf180mcu] Error 2

I noticed this section gf180mcu Makefile:

pr-repo:
    if test "x${REFERENCE_JSON}" != "x"; then \
        FD_PR_COMMIT = `cat ${REFERENCE_JSON} | grep gf180mcu_fd_pr | grep -v COMMIT | cut -d'"' -f4` ; \
    fi
    if test "x${GF180MCU_PR_PATH}" != "x" ; then \
        if test -d "${GF180MCU_PR_PATH}" ; then \
            echo "Using existing installation of primitive library from ${GF180MCU_PR_PATH}" ; \
        else \
            echo "Downloading primitive library from ${GF180MCU_PR_PATH}" ; \
            ../scripts/download.sh ${PDK_LIB_PR} ${GF180MCU_PR_PATH} ${FD_PR_COMMIT}; \
        fi ; \
    fi

This wouldn't work. FD_PR_COMMIT = <> is illegal sh syntax. It should be FD_PR_COMMIT=<>. The other issue is that ${FD_PR_COMMIT}, in later lines, references the Make variable called FD_PR_COMMIT not the shell variable being created at runtime.

RTimothyEdwards commented 1 year ago

That's Makefile syntax, not shell syntax.

RTimothyEdwards commented 1 year ago

Okay, right, SHELL variable was overwritten, so bash syntax applies. I will get it fixed.

RTimothyEdwards commented 1 year ago

Fixed and pushed to opencircuitdesign.com.

kareefardi commented 1 year ago

Fixed in https://github.com/RTimothyEdwards/open_pdks/pull/373