File size: 2,382 Bytes
92978e6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | # AgentIC Makefile - Structured Verification & Hardening Workflow
# Usage: make <target> [DESIGN=name]
DESIGN ?= simple_counter
OPENLANE_ROOT ?= $(HOME)/OpenLane
DESIGN_SRC = designs/$(DESIGN)/src
RTL = $(DESIGN_SRC)/$(DESIGN).v
TB = $(DESIGN_SRC)/$(DESIGN)_tb.v
PDK_ROOT ?= $(HOME)/.ciel
OPENLANE_IMAGE ?= ghcr.io/the-openroad-project/openlane:ff5509f65b17bfa4068d5336495ab1718987ff69-amd64
.PHONY: all lint sim verify harden clean help
# Complete flow
all: lint sim harden verify
@echo "=========================================="
@echo " COMPLETE WORKFLOW FINISHED FOR $(DESIGN)"
@echo "=========================================="
# Step 1: Lint (syntax check)
lint:
@echo "βββ [1/4] LINTING $(DESIGN) βββ"
iverilog -t null $(RTL)
@echo "β Syntax OK"
# Step 2: Simulate (functional verification)
sim: lint
@echo "βββ [2/4] SIMULATING $(DESIGN) βββ"
iverilog -o $(DESIGN_SRC)/sim $(RTL) $(TB)
cd $(DESIGN_SRC) && vvp sim | tee sim.log
@grep -q "TEST PASSED" $(DESIGN_SRC)/sim.log && echo "β Simulation PASSED" || (echo "β Simulation FAILED" && exit 1)
# Step 3: Harden (RTL β GDSII via OpenLane Docker)
harden:
@echo "βββ [3/4] HARDENING $(DESIGN) β GDSII βββ"
@echo "Copying design to OpenLane..."
cp -r designs/$(DESIGN) $(OPENLANE_ROOT)/designs/
@echo "Running OpenLane flow (may take 5-15 min)..."
docker run --rm \
-v $(OPENLANE_ROOT):/openlane \
-v $(PDK_ROOT):$(PDK_ROOT) \
-e PDK_ROOT=$(PDK_ROOT) \
-e PDK=sky130A \
-e PWD=/openlane \
$(OPENLANE_IMAGE) \
./flow.tcl -design $(DESIGN) -tag agent_run_$(shell date +%Y%m%d_%H%M%S) -ignore_mismatches
@echo "β Hardening complete. Check $(OPENLANE_ROOT)/designs/$(DESIGN)/runs/"
# Step 4: Verify (DRC/LVS)
verify:
@echo "βββ [4/4] VERIFYING $(DESIGN) (DRC/LVS) βββ"
bash scripts/verify_design.sh $(DESIGN)
# Utilities
clean:
rm -f $(DESIGN_SRC)/sim $(DESIGN_SRC)/sim.log $(DESIGN_SRC)/*.vcd
@echo "Cleaned simulation artifacts."
help:
@echo "AgentIC Makefile Targets:"
@echo " make lint - Check Verilog syntax"
@echo " make sim - Run RTL simulation"
@echo " make harden - Run OpenLane (RTLβGDSII)"
@echo " make verify - Run DRC/LVS checks"
@echo " make all - Run complete flow"
@echo " make clean - Remove temp files"
@echo ""
@echo "Override design: make DESIGN=my_counter sim"
|