Makefile 2.2 KB
Newer Older
Z
Zihao Yu 已提交
1
TOP = TopMain
2
FPGATOP = FPGANOOP
Z
Zihao Yu 已提交
3 4 5
BUILD_DIR = ./build
TOP_V = $(BUILD_DIR)/$(TOP).v
SCALA_FILE = $(shell find ./src/main/scala -name '*.scala')
6
TEST_FILE = $(shell find ./src/test/scala -name '*.scala')
Z
Zihao Yu 已提交
7
MEM_GEN = ./scripts/vlsi_mem_gen
Z
Zihao Yu 已提交
8

Z
Zihao Yu 已提交
9
SIMTOP = top.TestMain
Z
Zihao Yu 已提交
10 11
EMU_IMAGE = $(BUILD_DIR)/bin-readmemh
IMAGE ?= temp
Z
Zihao Yu 已提交
12
NEMU_IMAGE ?= $(IMAGE)
Z
Zihao Yu 已提交
13

Z
Zihao Yu 已提交
14 15
.DEFAULT_GOAL = verilog

Z
Zihao Yu 已提交
16
help:
Z
Zihao Yu 已提交
17
	mill chiselModule.test.runMain top.$(TOP) --help
Z
Zihao Yu 已提交
18

Z
Zihao Yu 已提交
19 20
$(TOP_V): $(SCALA_FILE)
	mkdir -p $(@D)
Z
Zihao Yu 已提交
21
	mill chiselModule.runMain top.$(TOP) -td $(@D) --output-file $(@F) --infer-rw $(FPGATOP) --repl-seq-mem -c:$(FPGATOP):-o:$(@D)/$(@F).conf
Z
Zihao Yu 已提交
22
	$(MEM_GEN) $(@D)/$(@F).conf >> $@
Z
Zihao Yu 已提交
23
	sed -i -e 's/_\(aw\|ar\|w\|r\|b\)_\(\|bits_\)/_\1/g' $@
Z
Zihao Yu 已提交
24

Z
Zihao Yu 已提交
25 26
verilog: $(TOP_V)

Z
Zihao Yu 已提交
27 28
SIM_TOP = NOOPSimTop
SIM_TOP_V = $(BUILD_DIR)/$(SIM_TOP).v
29
$(SIM_TOP_V): $(SCALA_FILE) $(TEST_FILE)
Z
Zihao Yu 已提交
30
	mkdir -p $(@D)
Z
Zihao Yu 已提交
31
	mill chiselModule.test.runMain $(SIMTOP) -td $(@D) --image $(EMU_IMAGE) --output-file $(@F)
Z
Zihao Yu 已提交
32 33 34 35 36 37 38 39 40


EMU_CSRC_DIR = $(abspath ./src/test/csrc)
EMU_VSRC_DIR = $(abspath ./src/test/vsrc)
EMU_CXXFILES = $(shell find $(EMU_CSRC_DIR) -name "*.cpp")
EMU_VFILES = $(shell find $(EMU_VSRC_DIR) -name "*.v" -or -name "*.sv")

EMU_CXXFLAGS  = -O3 -std=c++11 -static -g -Wall -I$(EMU_CSRC_DIR)
EMU_CXXFLAGS += -DVERILATOR -Wno-maybe-uninitialized
Z
Zihao Yu 已提交
41
EMU_LDFLAGS   = -lpthread -lreadline -lSDL2 -ldl
Z
Zihao Yu 已提交
42 43

VERILATOR_FLAGS = --top-module $(SIM_TOP) \
Z
Zihao Yu 已提交
44
  +define+VERILATOR=1 \
Z
Zihao Yu 已提交
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
  +define+PRINTF_COND=1 \
	+define+RANDOMIZE_REG_INIT \
  --assert --output-split 20000 \
  --x-assign unique -O3 -CFLAGS "$(EMU_CXXFLAGS)" \
   -LDFLAGS "$(EMU_LDFLAGS)"

EMU_MK := $(BUILD_DIR)/emu-compile/V$(SIM_TOP).mk
EMU_DEPS := $(EMU_VFILES) $(EMU_CXXFILES)
EMU_HEADERS := $(shell find $(EMU_CSRC_DIR) -name "*.h")
EMU := $(BUILD_DIR)/emu

$(EMU_MK): $(SIM_TOP_V) | $(EMU_DEPS)
	@mkdir -p $(@D)
	verilator --cc --exe $(VERILATOR_FLAGS) \
		-o $(abspath $(EMU)) -Mdir $(@D) \
Z
Zihao Yu 已提交
60
		-f $(BUILD_DIR)/firrtl_black_box_resource_files.f $^ $(EMU_DEPS)
Z
Zihao Yu 已提交
61 62 63 64 65

$(EMU): $(EMU_MK) $(EMU_DEPS) $(EMU_HEADERS)
	$(MAKE) -C $(dir $(EMU_MK)) -f $(abspath $(EMU_MK))

emu: $(EMU)
66 67 68 69
	@ln -sf $(IMAGE)_0 $(EMU_IMAGE)_0
	@ln -sf $(IMAGE)_1 $(EMU_IMAGE)_1
	@ln -sf $(IMAGE)_2 $(EMU_IMAGE)_2
	@ln -sf $(IMAGE)_3 $(EMU_IMAGE)_3
Z
Zihao Yu 已提交
70
	@$(EMU) -u $(NEMU_IMAGE)
Z
Zihao Yu 已提交
71

Z
Zihao Yu 已提交
72
clean:
73
	rm -rf $(BUILD_DIR)
Z
Zihao Yu 已提交
74

Z
Zihao Yu 已提交
75
.PHONY: verilog emu clean help