Add lvs-X targets to run LVS independently - TODO: run count_lvs.py on the results - TODO: update GL netlists with full/corrected names for power pins
diff --git a/Makefile b/Makefile index cbc1c31..fc48b11 100644 --- a/Makefile +++ b/Makefile
@@ -8,6 +8,7 @@ ARCHIVES := $(shell find . -type f -name "*.gz") ARCHIVE_SOURCES := $(basename $(ARCHIVES)) + # PDK setup configs THREADS ?= $(shell nproc) STD_CELL_LIBRARY ?= sky130_fd_sc_hd @@ -61,6 +62,38 @@ uncompress: $(ARCHIVE_SOURCES) @echo "All files are uncompressed!" + +# LVS +NETGEN_SETUP=$(PDK_ROOT)/sky130A/libs.tech/netgen/sky130A_setup.tcl + +BLOCKS = $(shell cd openlane && find * -maxdepth 0 -type d) +LVS_BLOCKS = $(foreach block, $(BLOCKS), lvs-$(block)) +$(LVS_BLOCKS): lvs-% : ./mag/%.mag ./verilog/gl/%.v ./spi/lvs/%.spice + echo "Extracting $*" + mkdir -p ./mag/tmp + echo "load $* -dereference;\ + extract no all;\ + extract do local;\ + extract;\ + ext2spice lvs;\ + ext2spice;\ + feedback save extract_$*.log;\ + exit;" > ./mag/extract_$*.tcl + cd mag && MAGTYPE=maglef magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/current/sky130A.magicrc -noc -dnull extract_$*.tcl + mv ./mag/$*.spice ./spi/lvs + mv -f ./mag/extract_$*.{tcl,log} ./mag/*.ext ./mag/tmp + #### + mkdir -p ./spi/lvs/tmp + sh ./spi/lvs/run_lvs.sh ./verilog/gl/$*.v ./spi/lvs/$*.spice $* + mv -f ./spi/lvs/*{.out,.json,.log} ./spi/lvs/tmp + + +.PHONY: help +help: + @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' + + +########################################################################### .PHONY: pdk pdk: skywater-pdk skywater-library open_pdks build-pdk
diff --git a/mag/.gitignore b/mag/.gitignore new file mode 100644 index 0000000..a9a5aec --- /dev/null +++ b/mag/.gitignore
@@ -0,0 +1 @@ +tmp
diff --git a/spi/lvs/.gitignore b/spi/lvs/.gitignore new file mode 100644 index 0000000..a9a5aec --- /dev/null +++ b/spi/lvs/.gitignore
@@ -0,0 +1 @@ +tmp
diff --git a/spi/lvs/run_lvs.sh b/spi/lvs/run_lvs.sh new file mode 100644 index 0000000..77ff185 --- /dev/null +++ b/spi/lvs/run_lvs.sh
@@ -0,0 +1,5 @@ +#!/bin/sh + +NETGEN_SETUP=$PDK_ROOT/sky130A/libs.tech/netgen/sky130A_setup.tcl + +netgen -batch lvs "$1 $3" "$2 $3" ${NETGEN_SETUP} $2_comp.out -json | tee $2_comp_lvs.log