Makefile (6c83971f152dd38cc3b8ed58204a3bd447d2d35a) Makefile (19dedbf6196e7c26afb2e885cca2bb8004f288b6)
1TOP = TopMain
2BUILD_DIR = ./build
3TOP_V = $(BUILD_DIR)/$(TOP).v
4SCALA_FILE = $(shell find ./src/main/scala -name '*.scala')
5
6SIMTOP = top.TestMain
7IMAGE = ""
8SIMCMD = test:runMain $(SIMTOP) -td $(BUILD_DIR) --image $(IMAGE) \
9 --more-vcs-flags "+define+RANDOMIZE_REG_INIT"
10
11.DEFAULT_GOAL = verilog
12
13help:
14 sbt 'test:runMain gcd.GCDMain --help'
15
1TOP = TopMain
2BUILD_DIR = ./build
3TOP_V = $(BUILD_DIR)/$(TOP).v
4SCALA_FILE = $(shell find ./src/main/scala -name '*.scala')
5
6SIMTOP = top.TestMain
7IMAGE = ""
8SIMCMD = test:runMain $(SIMTOP) -td $(BUILD_DIR) --image $(IMAGE) \
9 --more-vcs-flags "+define+RANDOMIZE_REG_INIT"
10
11.DEFAULT_GOAL = verilog
12
13help:
14 sbt 'test:runMain gcd.GCDMain --help'
15
16LIBDEVICE_PATH = ./src/test/cpp/libdevice
16LIBDEVICE_PATH = ./src/test/libdevice
17libdevice:
18 make -C $(LIBDEVICE_PATH)
19
20$(TOP_V): $(SCALA_FILE)
21 mkdir -p $(@D)
22 sbt 'runMain top.$(TOP) -td $(@D) --output-file $@'
23 sed -i -e 's/_\(aw\|ar\|w\|r\|b\)_\(\|bits_\)/_\1/g' $@
24
25verilog: $(TOP_V)
26
17libdevice:
18 make -C $(LIBDEVICE_PATH)
19
20$(TOP_V): $(SCALA_FILE)
21 mkdir -p $(@D)
22 sbt 'runMain top.$(TOP) -td $(@D) --output-file $@'
23 sed -i -e 's/_\(aw\|ar\|w\|r\|b\)_\(\|bits_\)/_\1/g' $@
24
25verilog: $(TOP_V)
26
27SIM_TOP = NOOPSimTop
28SIM_TOP_V = $(BUILD_DIR)/$(SIM_TOP).v
29$(SIM_TOP_V): $(SCALA_FILE)
30 mkdir -p $(@D)
31 sbt 'test:runMain $(SIMTOP) -td $(BUILD_DIR) --image $(IMAGE) --output-file $@'
32
27test: libdevice
28 sbt '$(SIMCMD) --tr-rollback-buffers 0'
29
33test: libdevice
34 sbt '$(SIMCMD) --tr-rollback-buffers 0'
35
30emu: libdevice
31 sbt '$(SIMCMD) --backend-name verilator --generate-vcd-output off'
32
36
37EMU_CSRC_DIR = $(abspath ./src/test/csrc)
38EMU_VSRC_DIR = $(abspath ./src/test/vsrc)
39EMU_CXXFILES = $(shell find $(EMU_CSRC_DIR) -name "*.cpp")
40EMU_VFILES = $(shell find $(EMU_VSRC_DIR) -name "*.v" -or -name "*.sv")
41
42EMU_CXXFLAGS = -O3 -std=c++11 -static -g -Wall -I$(EMU_CSRC_DIR)
43EMU_CXXFLAGS += -DVERILATOR -Wno-maybe-uninitialized
44EMU_LDFLAGS = -lpthread -lreadline -lSDL
45
46VERILATOR_FLAGS = --top-module $(SIM_TOP) \
47 +define+PRINTF_COND=1 \
48 +define+RANDOMIZE_REG_INIT \
49 --assert --output-split 20000 \
50 --x-assign unique -O3 -CFLAGS "$(EMU_CXXFLAGS)" \
51 -LDFLAGS "$(EMU_LDFLAGS)"
52
53EMU_MK := $(BUILD_DIR)/emu-compile/V$(SIM_TOP).mk
54EMU_DEPS := $(EMU_VFILES) $(EMU_CXXFILES)
55EMU_HEADERS := $(shell find $(EMU_CSRC_DIR) -name "*.h")
56EMU := $(BUILD_DIR)/emu
57
58$(EMU_MK): $(SIM_TOP_V) | $(EMU_DEPS)
59 @mkdir -p $(@D)
60 verilator --cc --exe $(VERILATOR_FLAGS) \
61 -o $(abspath $(EMU)) -Mdir $(@D) \
62 $^ $(EMU_DEPS)
63
64$(EMU): $(EMU_MK) $(EMU_DEPS) $(EMU_HEADERS)
65 $(MAKE) -C $(dir $(EMU_MK)) -f $(abspath $(EMU_MK))
66
67emu: $(EMU)
68 $(EMU)
69
70#emu: libdevice
71# sbt '$(SIMCMD) --backend-name verilator --generate-vcd-output off'
72
33clean:
34 rm -rf $(BUILD_DIR)
35
36.PHONY: libdevice verilog test emu clean help
73clean:
74 rm -rf $(BUILD_DIR)
75
76.PHONY: libdevice verilog test emu clean help