| # Copyright 2020-2022 Efabless Corporation |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # This file is intended to be included by the top-level Makefile. |
| # Please don't use it directly. Consider efabless/volare instead. |
| |
| STD_CELL_LIBRARY ?= sky130_fd_sc_hd |
| SPECIAL_VOLTAGE_LIBRARY ?= sky130_fd_sc_hvl |
| IO_LIBRARY ?= sky130_fd_io |
| |
| LIBRARY_LIST ?= $(STD_CELL_LIBRARY) $(IO_LIBRARY) $(SPECIAL_VOLTAGE_LIBRARY) sky130_fd_pr |
| ifeq ($(FULL_PDK),1) |
| LIBRARY_LIST = sky130_fd_sc_hd sky130_fd_sc_hs sky130_fd_sc_hdll sky130_fd_sc_ms sky130_fd_sc_ls sky130_fd_sc_hvl sky130_fd_io sky130_fd_pr |
| endif |
| ifeq ($(NATIVE_PDK),1) |
| ENV_COMMAND = env |
| endif |
| |
| OPEN_PDK_ARGS ?= --enable-sram-sky130 |
| |
| .PHONY: build-pdk-conda |
| build-pdk-conda: skywater-pdk skywater-library open_pdks build-open_pdks gen-sources |
| |
| $(PDK_ROOT): |
| mkdir -p $(PDK_ROOT) |
| |
| $(PDK_ROOT)/skywater-pdk/LICENSE: | $(PDK_ROOT) |
| git clone $(shell $(PYTHON_BIN) ./dependencies/tool.py sky130 -f repo) $(PDK_ROOT)/skywater-pdk |
| |
| .PHONY: skywater-pdk |
| skywater-pdk: $(PDK_ROOT)/skywater-pdk/LICENSE |
| cd $(PDK_ROOT)/skywater-pdk && \ |
| git checkout main && \ |
| git submodule init && git pull --no-recurse-submodules && \ |
| git checkout -qf $(SKYWATER_COMMIT) |
| |
| .PHONY: skywater-library |
| skywater-library: $(PDK_ROOT)/skywater-pdk |
| cd $(PDK_ROOT)/skywater-pdk && \ |
| for library in $(LIBRARY_LIST); do \ |
| git submodule update --init libraries/$$library/latest ;\ |
| done; \ |
| $(MAKE) -j$(NPROC) timing |
| |
| ### OPEN_PDKS |
| $(PDK_ROOT)/open_pdks: |
| git clone $(shell $(PYTHON_BIN) ./dependencies/tool.py open_pdks -f repo) $(PDK_ROOT)/open_pdks |
| |
| .PHONY: open_pdks |
| open_pdks: $(PDK_ROOT)/ $(PDK_ROOT)/open_pdks |
| cd $(PDK_ROOT)/open_pdks && \ |
| git checkout master && \ |
| git pull && \ |
| git checkout -qf $(OPEN_PDKS_COMMIT) |
| |
| .PHONY: build-open_pdks |
| build-open_pdks: $(PDK_ROOT)/open_pdks $(PDK_ROOT)/skywater-pdk |
| [ -d $(PDK_ROOT)/sky130A ] && rm -rf $(PDK_ROOT)/sky130A || true |
| |
| $(ENV_COMMAND) sh -c "\ |
| cd $(PDK_ROOT)/open_pdks && \ |
| ./configure --enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk/libraries $(OPEN_PDK_ARGS)\ |
| " |
| |
| cd $(PDK_ROOT)/open_pdks/sky130 && \ |
| $(MAKE) veryclean && \ |
| $(MAKE) prerequisites |
| |
| $(ENV_COMMAND) sh -c "\ |
| cd $(PDK_ROOT)/open_pdks/sky130 && \ |
| make && \ |
| make SHARED_PDKS_PATH=$(PDK_ROOT) install && \ |
| make clean \ |
| " |
| |
| gen-sources: $(PDK_ROOT)/sky130A |
| touch $(PDK_ROOT)/sky130A/SOURCES |
| OPENLANE_COMMIT=$(git rev-parse HEAD) |
| printf "openlane " > $(PDK_ROOT)/sky130A/SOURCES |
| cd $(OPENLANE_DIR) && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES |
| printf "magic " >> $(PDK_ROOT)/sky130A/SOURCES |
| python3 ./dependencies/tool.py -f commit magic >> $(PDK_ROOT)/sky130A/SOURCES |
| printf "\n" >> $(PDK_ROOT)/sky130A/SOURCES |
| printf "skywater-pdk " >> $(PDK_ROOT)/sky130A/SOURCES |
| cd $(PDK_ROOT)/skywater-pdk && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES |
| printf "open_pdks " >> $(PDK_ROOT)/sky130A/SOURCES |
| cd $(PDK_ROOT)/open_pdks && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES |