WIP actual usage of make targets

This commit is contained in:
kareem 2022-02-17 11:56:56 -08:00
parent 703a986b70
commit 67a49b0aa2
2 changed files with 31 additions and 41 deletions

View File

@ -1163,8 +1163,7 @@ update_caravel:
########################################################################### ###########################################################################
# Install Mgmt Core Wrapper # Install Mgmt Core Wrapper
.PHONY: install_mcw $(MCW_ROOT):
install_mcw:
ifeq ($(SUBMODULE),1) ifeq ($(SUBMODULE),1)
@echo "Installing $(MCW_NAME) as a submodule.." @echo "Installing $(MCW_NAME) as a submodule.."
# Convert MCW_ROOT to relative path because .gitmodules doesn't accept '/' # Convert MCW_ROOT to relative path because .gitmodules doesn't accept '/'
@ -1179,6 +1178,9 @@ else
@cd $(MCW_ROOT); git checkout $(MCW_BRANCH) @cd $(MCW_ROOT); git checkout $(MCW_BRANCH)
endif endif
.PHONY: install_mcw
install_mcw: $(MCW_ROOT)
# Update Mgmt Core Wrapper # Update Mgmt Core Wrapper
.PHONY: update_mcw .PHONY: update_mcw
update_mcw: check-mcw update_mcw: check-mcw
@ -1210,60 +1212,35 @@ endif
########################################################################### ###########################################################################
pdk-with-sram: pdk pdk-with-sram: pdk
.PHONY: pdk .PHONY: pdk
pdk: skywater-pdk skywater-library skywater-timing open_pdks build-pdk gen-sources pdk: check-env $(PDK_ROOT)/sky130A
$(PDK_ROOT)/skywater-pdk: $(PDK_ROOT)/skywater-pdk:
git clone https://github.com/google/skywater-pdk.git $(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 && \ cd $(PDK_ROOT)/skywater-pdk && \
git checkout main && git pull && \ git checkout main && git pull && \
git checkout -qf $(SKYWATER_COMMIT) 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/$(STD_CELL_LIBRARY)/latest && \
git submodule update --init libraries/$(IO_LIBRARY)/latest && \ git submodule update --init libraries/$(IO_LIBRARY)/latest && \
git submodule update --init libraries/$(SPECIAL_VOLTAGE_LIBRARY)/latest && \ git submodule update --init libraries/$(SPECIAL_VOLTAGE_LIBRARY)/latest && \
git submodule update --init libraries/$(PRIMITIVES_LIBRARY)/latest git submodule update --init libraries/$(PRIMITIVES_LIBRARY)/latest && \
gen-sources: $(PDK_ROOT)/sky130A
touch $(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
printf "magic $(PDK_MAGIC_COMMIT)" >> $(PDK_ROOT)/sky130A/SOURCES
skywater-timing: check-env $(PDK_ROOT)/skywater-pdk
cd $(PDK_ROOT)/skywater-pdk && \
$(MAKE) timing $(MAKE) timing
### OPEN_PDKS ### OPEN_PDKS
$(PDK_ROOT)/open_pdks: $(PDK_ROOT)/open_pdks:
git clone git://opencircuitdesign.com/open_pdks $(PDK_ROOT)/open_pdks git clone git://opencircuitdesign.com/open_pdks $(PDK_ROOT)/open_pdks
.PHONY: open_pdks
open_pdks: check-env $(PDK_ROOT)/open_pdks
cd $(PDK_ROOT)/open_pdks && \ cd $(PDK_ROOT)/open_pdks && \
git checkout master && git pull && \ git checkout master && git pull && \
git checkout -qf $(OPEN_PDKS_COMMIT) git checkout -qf $(OPEN_PDKS_COMMIT)
.PHONY: build-pdk $(PDK_ROOT)/sky130A: $(PDK_ROOT)/open_pdks $(PDK_ROOT)/skywater-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
docker run --rm\ docker run --rm\
-v $(PDK_ROOT):$(PDK_ROOT)\ -v $(PDK_ROOT):$(PDK_ROOT)\
-e $(PDK_ROOT)\ -u $(shell id -u $(USER)):$(shell id -g $(USER)) \
efabless/openlane-tools:magic-$(PDK_MAGIC_COMMIT)-centos-7\ efabless/openlane-tools:magic-$(PDK_MAGIC_COMMIT)-centos-7\
sh -c "\ sh -c "\
export PATH=$$PATH:/build/bin &&\
cd $(PDK_ROOT)/open_pdks && \ cd $(PDK_ROOT)/open_pdks && \
ls . -al && \
./configure --enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk/libraries --with-sky130-local-path=$(PDK_ROOT) --enable-sram-sky130=yes && \ ./configure --enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk/libraries --with-sky130-local-path=$(PDK_ROOT) --enable-sram-sky130=yes && \
cd sky130 && \ cd sky130 && \
make veryclean && \ make veryclean && \
@ -1271,6 +1248,12 @@ build-pdk: check-env $(PDK_ROOT)/open_pdks $(PDK_ROOT)/skywater-pdk
make SHARED_PDKS_PATH=$(PDK_ROOT) install && \ make SHARED_PDKS_PATH=$(PDK_ROOT) install && \
make clean \ make clean \
" "
touch $(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
printf "magic $(PDK_MAGIC_COMMIT)" >> $(PDK_ROOT)/sky130A/SOURCES
.RECIPE: manifest .RECIPE: manifest
manifest: mag/ maglef/ verilog/rtl/ Makefile manifest: mag/ maglef/ verilog/rtl/ Makefile
@ -1293,6 +1276,7 @@ master_manifest:
find spi/lvs/*.spice -type f -exec shasum {} \; >> master_manifest && \ find spi/lvs/*.spice -type f -exec shasum {} \; >> master_manifest && \
find gds/*.gds -type f -exec shasum {} \; >> master_manifest find gds/*.gds -type f -exec shasum {} \; >> master_manifest
.PHONY: check-env
check-env: check-env:
ifndef PDK_ROOT ifndef PDK_ROOT
$(error PDK_ROOT is undefined, please export it before running make) $(error PDK_ROOT is undefined, please export it before running make)

View File

@ -29,7 +29,8 @@ $(CONFIG) :
@echo "Missing $@. Please create a configuration for that design" @echo "Missing $@. Please create a configuration for that design"
@exit 1 @exit 1
$(BLOCKS) : % : ./%/config.tcl FORCE .PHONY: $(BLOCKS)
$(BLOCKS) : % : ./%/config.tcl
ifeq ($(OPENLANE_ROOT),) ifeq ($(OPENLANE_ROOT),)
@echo "Please export OPENLANE_ROOT" @echo "Please export OPENLANE_ROOT"
@exit 1 @exit 1
@ -68,16 +69,21 @@ endif
cp $*/runs/$*/reports/final_summary_report.csv ../signoff/$*/ cp $*/runs/$*/reports/final_summary_report.csv ../signoff/$*/
.PHONY: openlane .PHONY: openlane
openlane: openlane: check-openlane-env $(OPENLANE_ROOT)
ifeq ($(OPENLANE_ROOT),)
@echo "Please export OPENLANE_ROOT" $(OPENLANE_ROOT):
@exit 1
endif
git clone https://github.com/The-OpenROAD-Project/OpenLane --branch=$(OPENLANE_TAG) --depth=1 $(OPENLANE_ROOT) && \ git clone https://github.com/The-OpenROAD-Project/OpenLane --branch=$(OPENLANE_TAG) --depth=1 $(OPENLANE_ROOT) && \
cd $(OPENLANE_ROOT) && \ cd $(OPENLANE_ROOT) && \
export IMAGE_NAME=efabless/openlane:$(OPENLANE_TAG) && \ export IMAGE_NAME=efabless/openlane:$(OPENLANE_TAG) && \
$(MAKE) pull-openlane $(MAKE) pull-openlane
.PHONY: check-openlane-env
check-openlane-env:
ifeq ($(OPENLANE_ROOT),)
@echo "Please export OPENLANE_ROOT"
@exit 1
endif
FORCE: FORCE:
clean: clean: