# quad-encoder-i2c-openroad — OpenROAD place + PDN + route → DEF (klayout.com Part 4)
# Set PDK_ROOT (and optionally PDK), or set TECH_LEF / CELL_LEF / LIBERTY explicitly.
# Optional: DIE_UM (default 95), MARGIN_UM (default 5).

PDK      ?= sky130A
TECH_LEF ?= $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd__nom.tlef
CELL_LEF ?= $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/lef/sky130_fd_sc_hd.lef
LIBERTY  ?= $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib

DIE_UM    ?= 95
MARGIN_UM ?= 5

export PDK_ROOT PDK TECH_LEF CELL_LEF LIBERTY DIE_UM MARGIN_UM

.PHONY: openroad or check-inputs clean

check-inputs:
	@test -n "$(PDK_ROOT)" -o -n "$(TECH_LEF)" || (echo "Set PDK_ROOT or TECH_LEF/CELL_LEF/LIBERTY"; exit 1)
	@test -f "synth/encoder_top_gl.v" || (echo "Missing synth/encoder_top_gl.v"; exit 1)
	@test -f "$(TECH_LEF)" || (echo "TechLEF not found: $(TECH_LEF)"; exit 1)
	@test -f "$(CELL_LEF)" || (echo "Cell LEF not found: $(CELL_LEF)"; exit 1)
	@test -f "$(LIBERTY)"  || (echo "Liberty not found: $(LIBERTY)"; exit 1)

openroad or: check-inputs
	mkdir -p openroad/out
	openroad -exit openroad/run_minimal.tcl

clean:
	rm -f openroad/out/encoder_top.def openroad/out/*.odb openroad/out/*.v
