blob: 8b7bf3a5c7b060befc4d814e8d464fd2a5d4cce1 (
plain)
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
|
# ==============================================================================
# CONFIGURATION
# ==============================================================================
PROJECT_NAME = lisp_coproc
CONFIG_FILE = config.json
# Tool Paths
LIBRELANE = librelane
VERILATOR = verilator
# PDK Paths (Standard Volare location)
PDK_ROOT ?= $(HOME)/.ciel/ciel/sky130/versions/0fe599b2afb6708d281543108caf8310912f54af/
PDK = sky130A
LIB_VERILOG = $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v
PRIM_VERILOG = $(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/verilog/primitives.v
# Simulation Flags
VERILATOR_FLAGS = --binary -j 0 --timing --trace --top-module tb_$(PROJECT_NAME) \
-Wno-fatal -Wno-style -Wno-lint
# ==============================================================================
# TARGETS
# ==============================================================================
.PHONY: all rtl harden gls clean
# 1. Default: Run the full pipeline (RTL -> GDS -> Check)
all: rtl harden gls
# 2. RTL Verification: Runs your Golden SystemVerilog Testbench
rtl:
@echo "\n=== [1/3] Running RTL Verification ==="
$(VERILATOR) $(VERILATOR_FLAGS) \
-DGL_SIM=0 \
rtl/tb_$(PROJECT_NAME).sv rtl/$(PROJECT_NAME).sv
./obj_dir/Vtb_$(PROJECT_NAME)
@echo ">>> RTL Verification Passed <<<"
# 3. Hardening: Runs LibreLane (Synthesis, Place & Route)
# Note: Uses --run-tag to create a predictable folder name for the GLS step
harden:
@echo "\n=== [2/3] Running LibreLane Hardening ==="
$(LIBRELANE) --flow Classic \
--run-tag automated_run \
--overwrite \
$(CONFIG_FILE)
@echo ">>> Hardening Complete <<<"
# 4. Gate-Level Simulation (GLS): Verifies the final GDSII netlist
# Finds the netlist generated by the 'harden' step
GL_NETLIST = runs/automated_run/final/nl/$(PROJECT_NAME).nl.v
gls:
@echo "\n=== [3/3] Running Gate-Level Simulation (GLS) ==="
$(VERILATOR) $(VERILATOR_FLAGS) \
-DGL_SIM=1 -DFUNCTIONAL -DUNIT_DELAY=\#1 \
-I$(PDK_ROOT)/$(PDK)/libs.ref/sky130_fd_sc_hd/verilog \
rtl/tb_$(PROJECT_NAME).sv \
$(GL_NETLIST) \
$(LIB_VERILOG) $(PRIM_VERILOG)
./obj_dir/Vtb_$(PROJECT_NAME)
@echo ">>> GLS Verification Passed <<<"
# Clean up build artifacts
clean:
rm -rf obj_dir runs/automated_run $(PROJECT_NAME).vcd
|