From 89cec061923c22d6f2bda39a8f18bd4111d0f41c Mon Sep 17 00:00:00 2001 From: elamdf Date: Sun, 22 Dec 2024 22:48:19 -0800 Subject: [PATCH] try make e2e work --- .github/workflows/e2e-cad.yml | 44 +++++++++++++++++++++++++++++++++++ e2e/Makefile | 2 +- e2e/configs-env/bwrc-env.yml | 26 +++++++++++++++------ e2e/configs-tool/cm.yml | 4 ++-- e2e/pyproject.toml | 2 +- 5 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/e2e-cad.yml diff --git a/.github/workflows/e2e-cad.yml b/.github/workflows/e2e-cad.yml new file mode 100644 index 000000000..4eea3b99c --- /dev/null +++ b/.github/workflows/e2e-cad.yml @@ -0,0 +1,44 @@ +name: End-to-end CAD flow CI smoketest + +on: + push: + branches: + - main + - test-ci + pull_request: + +jobs: + test: + runs-on: [self-hosted] # TODO: replace with something centrally admined + + steps: + # Step 1: Create a temporary directory + - name: Create temporary directory + run: | + TMP_DIR=$(mktemp -d) + echo "Temporary directory created at: $TMP_DIR" + echo "TMP_DIR=$TMP_DIR" >> $GITHUB_ENV + + # Clone this repo + - name: Checkout + uses: actions/checkout@v4.1.6 + + + - name: Run `make build` in the `e2e` directory + run: | + cd e2e + # TODO make sure poetry is installed + #curl -sSL https://install.python-poetry.org | python3 - + poetry install + poetry shell + # redirect all hammer output a temp file, since it contains proprietary tool logs + tempfile=$(mktemp) + echo "log file is $tempfile on $(uname -a)" | tee -a $tempfile + echo "End-to-end CAD flow CI smoketest running on" ${{ github.head_ref }}.${{ github.sha }} > $tempfile 2>&1 + make build >> $tempfile 2>&1 + echo "running par.." | tee -a $tempfile + make par >> $tempfile 2>&1 + echo "running drc.." | tee -a $tempfile + make drc >> $tempfile 2>&1 + echo "running lvs.." | tee -a $tempfile + make lvs >> $tempfile 2>&1 diff --git a/e2e/Makefile b/e2e/Makefile index a66bb878c..649e44387 100644 --- a/e2e/Makefile +++ b/e2e/Makefile @@ -5,7 +5,7 @@ vlsi_dir=$(abspath .) # minimal flow configuration variables design ?= pass pdk ?= sky130 -tools ?= nop +tools ?= cm env ?= bwrc extra ?= # extra configs diff --git a/e2e/configs-env/bwrc-env.yml b/e2e/configs-env/bwrc-env.yml index e4fc2429e..7b0162ce2 100644 --- a/e2e/configs-env/bwrc-env.yml +++ b/e2e/configs-env/bwrc-env.yml @@ -27,14 +27,26 @@ drc.magic.magic_bin: "/tools/commercial/skywater/local/chipyard-tutorial/.conda- lvs.netgen.netgen_bin: "/tools/commercial/skywater/local/chipyard-tutorial/.conda-signoff/bin/netgen" -# Sky130 paths +# Technology paths technology.sky130: - sky130A: "/tools/commercial/skywater/local/sky130A" - sram22_sky130_macros: "/tools/commercial/skywater/local/sram22_sky130_macros" - openram_lib: "/tools/commercial/skywater/local/sky130_sram_macros" - sky130_nda: "/tools/commercial/skywater/swtech130/skywater-src-nda-20221031" - sky130_cds: "/tools/commercial/skywater/sky130_cds/PDK/sky130_release_0.0.3/" - sky130_scl: "/tools/commercial/skywater/sky130_cds/LIB/sky130_scl_9T_0.0.3/" + sky130A: "/tools/commercial/skywater/local/open_pdks-2022.10/share/pdk/sky130A" + # sram22_sky130_macros: "/tools/commercial/skywater/local/chipyard-tutorial/sram22_sky130_macros" + sram22_sky130_macros: "/tools/C/rohankumar/stac-top/vlsi/sram22_sky130_macros/" + # https://github.com/rahulk29/sram22_sky130_macros/tree/dev + + # this key is OPTIONAL, no NDA files will be used if it does not point to a valid path + sky130_nda: "/tools/commercial/skywater/swtech130/skywater-src-nda" + + # for caravel collateral pulled in by this design + caravel: /tools/commercial/skywater/local/caravel/v6.0 + + lvs_blackbox_srams: true + sky130_scl: "/tools/C/elamdf/sky130/sky130_scl_9T_0.0.6" + sky130_cds: "/tools/C/elamdf/sky130/sky130_release_0.0.4/" + stdcell_library: "sky130_scl" + +technology.core.stackup: "sky130_scl" +vlsi.technology.placement_site: "CoreSite" # ASAP7 paths technology.asap7: diff --git a/e2e/configs-tool/cm.yml b/e2e/configs-tool/cm.yml index df7785586..a1e35bf3c 100644 --- a/e2e/configs-tool/cm.yml +++ b/e2e/configs-tool/cm.yml @@ -9,5 +9,5 @@ vlsi.core.sim_tool: "hammer.sim.vcs" vlsi.core.timing_tool: "hammer.timing.tempus" vlsi.core.formal_tool: "hammer.formal.conformal" vlsi.core.power_tool: "hammer.power.voltus" -vlsi.core.drc_tool: "hammer.drc.calibre" -vlsi.core.lvs_tool: "hammer.lvs.calibre" +vlsi.core.drc_tool: "hammer.drc.pegasus" +vlsi.core.lvs_tool: "hammer.lvs.pegasus" diff --git a/e2e/pyproject.toml b/e2e/pyproject.toml index a63016fb8..23c059a6f 100644 --- a/e2e/pyproject.toml +++ b/e2e/pyproject.toml @@ -10,7 +10,7 @@ repository = "https://github.com/ucb-bar/hammer" [tool.poetry.dependencies] python = "^3.9" hammer-vlsi = {path = "../.", extras = ["asap7"], develop = true} -hammer-mentor-plugins = {path = "hammer-mentor-plugins", develop = true} +#hammer-mentor-plugins = {path = "hammer-mentor-plugins", develop = true} [build-system] requires = ["poetry-core>=1.0.8", "setuptools>=65.3"]