@@ -8,7 +8,11 @@ verilog = \
88 $(generated_dir)/$(long_name).v \
99 $(generated_dir)/$(long_name).behav_srams.v \
1010
11- .SECONDARY: $(firrtl) $(verilog)
11+ origin_verilog = \
12+ $(generated_dir)/$(long_name).v \
13+ $(generated_dir)/$(long_name).origin_behav_srams.v \
14+
15+ .SECONDARY: $(firrtl) $(verilog) $(origin_verilog)
1216
1317$(generated_dir)/%.fir $(generated_dir)/%.d: $(FIRRTL_JAR) $(chisel_srcs) $(bootrom_img)
1418 mkdir -p $(dir $@)
@@ -24,8 +28,12 @@ $(generated_dir)/$(long_name).behav_srams.v : $(generated_dir)/$(long_name).conf
2428 $(mem_init) $@.tmp mem_ext bin.txt $(generated_dir)/$(long_name).json > $@
2529 rm -f $@.tmp
2630
31+ $(generated_dir)/$(long_name).origin_behav_srams.v : $(generated_dir)/$(long_name).conf $(VLSI_MEM_GEN)
32+ cd $(generated_dir) && \
33+ $(VLSI_MEM_GEN) $(generated_dir)/$(long_name).conf > $@
34+
2735# Build and install our own Verilator, to work around versionining issues.
28- VERILATOR_VERSION=4.004
36+ VERILATOR_VERSION=4.008
2937VERILATOR_SRCDIR ?= verilator/src/verilator-$(VERILATOR_VERSION)
3038VERILATOR_TARGET := $(abspath verilator/install/bin/verilator)
3139INSTALLED_VERILATOR ?= $(VERILATOR_TARGET)
@@ -55,13 +63,14 @@ verilator: $(INSTALLED_VERILATOR)
5563
5664# Run Verilator to produce a fast binary to emulate this circuit.
5765VERILATOR := $(INSTALLED_VERILATOR) --cc --exe
66+ VERILATOR_THREADS ?= 2
5867VERILATOR_FLAGS := --top-module $(MODEL) \
5968 +define+PRINTF_COND=\$$c\(\"verbose\",\"\&\&\"\,\"done_reset\"\) \
6069 +define+RANDOMIZE_GARBAGE_ASSIGN \
6170 +define+STOP_COND=\$$c\(\"done_reset\"\) --assert \
6271 --output-split 20000 \
6372 --output-split-cfuncs 20000 \
64- --threads 4 \
73+ --threads $(VERILATOR_THREADS) \
6574 -Wno-STMTDLY --x-assign unique \
6675 -I$(vsrc) \
6776 -O3 -CFLAGS "$(CXXFLAGS) -DVERILATOR -DTEST_HARNESS=V$(MODEL) -include $(csrc)/verilator.h -include $(generated_dir)/$(PROJECT).$(CONFIG).plusArgs"
@@ -84,3 +93,12 @@ $(emu_debug): $(verilog) $(cppfiles) $(headers) $(generated_dir)/$(long_name).d
8493 -o $(abspath $(sim_dir))/$@ $(verilog) $(cppfiles) -LDFLAGS "$(LDFLAGS)" \
8594 -CFLAGS "-I$(generated_dir_debug) -include $(model_header_debug)"
8695 $(MAKE) VM_PARALLEL_BUILDS=1 -C $(generated_dir_debug)/$(long_name) -f V$(MODEL).mk
96+
97+ $(origin_emu): $(origin_verilog) $(cppfiles) $(headers) $(INSTALLED_VERILATOR)
98+ mkdir -p $(generated_dir)/$(long_name)
99+ $(VERILATOR) $(VERILATOR_FLAGS) -Mdir $(generated_dir)/$(long_name) \
100+ -o $(abspath $(sim_dir))/$@ $(origin_verilog) $(cppfiles) -LDFLAGS "$(LDFLAGS)" \
101+ -CFLAGS "-I$(generated_dir) -include $(model_header)"
102+ $(MAKE) VM_PARALLEL_BUILDS=1 -C $(generated_dir)/$(long_name) -f V$(MODEL).mk
103+
104+
0 commit comments