Files
Toooba/builds/Resources/Include_verilator.mk

93 lines
3.7 KiB
Makefile

### -*-Makefile-*-
# Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved
# This file is not a standalone Makefile, but 'include'd by other Makefiles
# ================================================================
# Generate Verilog RTL from BSV sources (needs Bluespec 'bsc' compiler)
RTL_GEN_DIRS = -vdir Verilog_RTL -bdir build_dir -info-dir build_dir
build_dir:
mkdir -p $@
Verilog_RTL:
mkdir -p $@
ifeq (,$(filter clean full_clean,$(MAKECMDGOALS)))
include .depends.mk
.depends.mk: TagTableStructure.bsv StatCounters.bsv GenerateHPMVector.bsv | build_dir Verilog_RTL
if ! bluetcl -exec makedepend -verilog -elab $(RTL_GEN_DIRS) $(BSC_COMPILATION_FLAGS) -p $(BSC_PATH) -o $@ $(TOPFILE); then rm -f $@ && false; fi
endif
%.bo:
$(info building $@)
bsc -verilog -elab $(RTL_GEN_DIRS) $(BSC_COMPILATION_FLAGS) -p $(BSC_PATH) $<
.PHONY: compile
compile: build_dir/Top_HW_Side.bo | build_dir Verilog_RTL
#Verilog_RTL/mkTop_HW_Side.v: build_dir Verilog_RTL /tmp/src_dir $(VERILOG_SUB_MODULES)
#Verilog_RTL/mkTop_HW_Side.v: $(TOPFILE) build_dir/Top_HW_Side.bo build_dir Verilog_RTL
# @echo "INFO: Verilog RTL generation ..."
# bsc -u -verilog $(RTL_GEN_DIRS) $(BSC_COMPILATION_FLAGS) -p $(BSC_PATH) $<
# @echo "INFO: Verilog RTL generation finished"
# ================================================================
# Compile and link Verilog RTL sources into an verilator executable
SIM_EXE_FILE = exe_HW_sim
# Verilator flags: notes
# stats Dump stats on the design, in file {prefix}__stats.txt
# -O3 Verilator optimization level
# -CFLAGS -O3 C++ optimization level
# --x-assign fast Optimize X value
# --x-initial fast Optimize uninitialized value
# --noassert Disable all assertions
VERILATOR_FLAGS = --stats --x-assign fast --x-initial fast --noassert
# VERILATOR_FLAGS = --stats -O3 -CFLAGS -O3 -LDFLAGS -static --x-assign fast --x-initial fast --noassert
# XXX: Allow lint_off DEPRECATED for older Verilator versions.
# This was added around the same time as -msg was deprecated, so we need
# to suppress the deprecation messages without breaking older versions.
# See verilator_config.vlt. Remove once 4.026 can be relied upon.
VERILATOR_FLAGS += -Wfuture-DEPRECATED
# Verilator flags: use the following to include code to generate VCDs
# Select trace-depth according to your module hierarchy
# VERILATOR_FLAGS += --trace --trace-depth 2 -CFLAGS -DVM_TRACE
VTOP = V$(TOPMODULE)_edited
VERILATOR_RESOURCES = $(REPO)/builds/Resources/Verilator_resources
.PHONY: simulator
simulator: build_dir/Top_HW_Side.bo
@echo "INFO: Verilating Verilog files (in newly created obj_dir)"
sed -f $(VERILATOR_RESOURCES)/sed_script.txt Verilog_RTL/$(TOPMODULE).v > tmp1.v
cat $(VERILATOR_RESOURCES)/verilator_config.vlt \
$(VERILATOR_RESOURCES)/import_DPI_C_decls.v \
tmp1.v > Verilog_RTL/$(TOPMODULE)_edited.v
rm -f tmp1.v
verilator \
-IVerilog_RTL \
-I$(RISCY_HOME)/fpgautils/xilinx/fpu \
-I$(RISCY_HOME)/fpgautils/xilinx/reset_regs \
-I$(RISCY_HOME)/procs/asic/bluespec_verilog \
-I$(REPO)/src_bsc_lib_RTL \
$(VERILATOR_FLAGS) \
--cc $(TOPMODULE)_edited.v \
--exe sim_main.cpp \
$(REPO)/src_Testbench/Top/C_Imported_Functions.c \
$(REPO)/src_Verifier/BSV-RVFI-DII/SocketPacketUtils/socket_packet_utils.c
@echo "INFO: Linking verilated files"
cp -p $(VERILATOR_RESOURCES)/sim_main.cpp obj_dir/sim_main.cpp
cd obj_dir; \
make -j -f V$(TOPMODULE)_edited.mk $(VTOP); \
cp -p $(VTOP) ../$(SIM_EXE_FILE)
@echo "INFO: Created verilator executable: $(SIM_EXE_FILE)"
# ================================================================