| # Copyright 2020 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. | |
| THREADS ?= $(shell nproc) | |
| STD_CELL_LIBRARY ?= sky130_fd_sc_hd | |
| SPECIAL_VOLTAGE_LIBRARY ?= sky130_fd_sc_hvl | |
| IO_LIBRARY ?= sky130_fd_io | |
| SKYWATER_COMMIT ?= bb2f842ac8d1b750677ca25bc71fb312859edb82 | |
| OPEN_PDKS_COMMIT ?= 44c13e2256d5907090d6a2a62d9b9f8ddf23758d | |
| .DEFAULT_GOAL := pdk | |
| .PHONY: pdk | |
| pdk: skywater-pdk skywater-library open_pdks build-pdk | |
| $(PDK_ROOT)/skywater-pdk: | |
| git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk | |
| .PHONY: skywater-pdk | |
| skywater-pdk: check-env $(PDK_ROOT)/skywater-pdk | |
| cd $(PDK_ROOT)/skywater-pdk && \ | |
| git checkout main && git pull && \ | |
| git checkout -qf $(SKYWATER_COMMIT) | |
| .PHONY: skywater-library | |
| skywater-library: check-env $(PDK_ROOT)/skywater-pdk | |
| cd $(PDK_ROOT)/skywater-pdk && \ | |
| git submodule update --init libraries/$(STD_CELL_LIBRARY)/latest && \ | |
| git submodule update --init libraries/$(IO_LIBRARY)/latest && \ | |
| git submodule update --init libraries/$(SPECIAL_VOLTAGE_LIBRARY)/latest | |
| ### OPEN_PDKS | |
| $(PDK_ROOT)/open_pdks: | |
| git clone https://github.com/RTimothyEdwards/open_pdks.git $(PDK_ROOT)/open_pdks | |
| .PHONY: open_pdks | |
| open_pdks: check-env $(PDK_ROOT)/open_pdks | |
| cd $(PDK_ROOT)/open_pdks && \ | |
| git checkout master && git pull && \ | |
| git checkout -qf $(OPEN_PDKS_COMMIT) | |
| .PHONY: build-pdk | |
| build-pdk: check-env $(PDK_ROOT)/open_pdks $(PDK_ROOT)/skywater-pdk | |
| [ -d $(PDK_ROOT)/sky130A ] && \ | |
| (echo "Warning: A sky130A build already exists under $(PDK_ROOT). It will be deleted first!" && \ | |
| sleep 5 && \ | |
| rm -rf $(PDK_ROOT)/sky130A) || \ | |
| true | |
| cd $(PDK_ROOT)/open_pdks && \ | |
| ./configure --enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk/libraries --with-sky130-local-path=$(PDK_ROOT) --enable-sram-sky130 && \ | |
| cd sky130 && \ | |
| $(MAKE) veryclean && \ | |
| $(MAKE) && \ | |
| $(MAKE) install-local && \ | |
| $(MAKE) clean | |
| check-env: | |
| ifndef PDK_ROOT | |
| $(error PDK_ROOT is undefined, please export it before running make) | |
| endif |