|  | # 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. | 
|  |  | 
|  | # Adopted from OpenLANE's Makefile. | 
|  |  | 
|  | OPEN_PDKS_ROOT ?= $(shell pwd)/.. | 
|  | THREADS ?= $(shell nproc) | 
|  | STD_CELL_LIBRARY ?= sky130_fd_sc_hd | 
|  | SKYWATER_COMMIT ?= d8e2cf1ba006ed01468aa60e7f4e85a1ece74ca4 | 
|  |  | 
|  | .DEFAULT_GOAL := all | 
|  |  | 
|  | .PHONY: all | 
|  | all: pdk | 
|  |  | 
|  | .PHONY: pdk | 
|  | pdk: skywater-pdk skywater-library build-pdk | 
|  |  | 
|  | $(PDK_ROOT)/skywater-pdk: | 
|  | git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk | 
|  |  | 
|  | .PHONY: skywater-pdk | 
|  | skywater-pdk: $(PDK_ROOT)/skywater-pdk | 
|  | cd $(PDK_ROOT)/skywater-pdk && \ | 
|  | git checkout -qf $(SKYWATER_COMMIT) | 
|  |  | 
|  | .PHONY: skywater-library | 
|  | skywater-library: $(PDK_ROOT)/skywater-pdk | 
|  | cd $(PDK_ROOT)/skywater-pdk && \ | 
|  | git submodule update --init libraries/$(STD_CELL_LIBRARY)/latest && \ | 
|  | $(MAKE) -j$(THREADS) $(STD_CELL_LIBRARY) | 
|  |  | 
|  | .PHONY: all-skywater-libraries | 
|  | all-skywater-libraries: skywater-pdk | 
|  | cd $(PDK_ROOT)/skywater-pdk && \ | 
|  | git submodule update --init libraries/sky130_fd_sc_hd/latest && \ | 
|  | git submodule update --init libraries/sky130_fd_sc_hs/latest && \ | 
|  | git submodule update --init libraries/sky130_fd_sc_hdll/latest && \ | 
|  | git submodule update --init libraries/sky130_fd_sc_ms/latest && \ | 
|  | git submodule update --init libraries/sky130_fd_sc_ls/latest && \ | 
|  | git submodule update --init libraries/sky130_fd_sc_hvl/latest && \ | 
|  | $(MAKE) -j$(THREADS) timing | 
|  |  | 
|  | .PHONY: build-pdk | 
|  | build-pdk: $(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 $(OPEN_PDKS_ROOT) && \ | 
|  | ./configure --with-sky130-source=$(PDK_ROOT)/skywater-pdk/libraries --with-sky130-local-path=$(PDK_ROOT) && \ | 
|  | cd sky130 && \ | 
|  | $(MAKE) veryclean && \ | 
|  | $(MAKE) && \ | 
|  | $(MAKE) install-local |