Files
b210-k7-fpga/tools/make/viv_simulator.mak
T
Wade Fife 4baf8139c8 fpga: tools: Add modelsim.ini to ModelSim calls
This adds the MSIM_VIV_COMPLIBDIR environment variable to specify
a non-default location for the compilation libraries.

This also allows a modelsim.ini other than the one in the ModelSim
installation folder to be used. By default, the one in the simulation
libraries compilation directory will be used. This can be changed by
setting MSIM_MODELSIM_INI to the one you want to use, or set it to an
empty string to use the one in the ModelSim installation folder.


Original-commit: 08473776b28a949027ec8cf2596d8d1b438b979b
2021-06-17 08:16:59 -05:00

136 lines
4.3 KiB
Makefile

#
# Copyright 2014-2015 Ettus Research
#
# -------------------------------------------------------------------
# Mode switches
# -------------------------------------------------------------------
# Calling with FAST:=1 will switch to using unifast libs
ifeq ($(FAST),1)
SIM_FAST=true
else
SIM_FAST=false
endif
# -------------------------------------------------------------------
# Variables
# -------------------------------------------------------------------
ifdef SIM_COMPLIBDIR
COMPLIBDIR = $(call RESOLVE_PATH,$(SIM_COMPLIBDIR))
endif
# Parse part name from ID
PART_NAME=$(subst /,,$(PART_ID))
# Resolve path
EXP_DESIGN_SRCS = $(call RESOLVE_PATHS,$(DESIGN_SRCS))
EXP_SIM_SRCS = $(call RESOLVE_PATHS,$(SIM_SRCS))
EXP_INC_SRCS = $(call RESOLVE_PATHS,$(INC_SRCS))
# Working directory for native ModelSim execution
MODELSIM_PROJ_DIR ?= modelsim_proj
# -------------------------------------------------------------------
# Usage: SETUP_AND_LAUNCH_SIMULATION
# Args: $1 = Simulator Name
# -------------------------------------------------------------------
SETUP_AND_LAUNCH_SIMULATION = \
@ \
export VIV_SIMULATOR=$1; \
export VIV_DESIGN_SRCS=$(EXP_DESIGN_SRCS); \
export VIV_SIM_SRCS=$(EXP_SIM_SRCS); \
export VIV_INC_SRCS=$(EXP_INC_SRCS); \
export VIV_SIM_TOP=$(SIM_TOP); \
export VIV_SYNTH_TOP="$(SYNTH_DUT)"; \
export VIV_PART_NAME=$(PART_NAME); \
export VIV_SIM_RUNTIME=$(SIM_RUNTIME_US); \
export VIV_SIM_FAST="$(SIM_FAST)"; \
export VIV_SIM_COMPLIBDIR=$(COMPLIBDIR); \
export VIV_SIM_USER_DO=$(MODELSIM_USER_DO); \
export VIV_MODE=$(VIVADO_MODE); \
export VIV_SIM_64BIT=$(MODELSIM_64BIT); \
$(TOOLS_DIR)/scripts/launch_vivado.sh -mode $(VIVADO_MODE) -source $(call RESOLVE_PATH,$(TOOLS_DIR)/scripts/viv_sim_project.tcl) -log xsim.log -nojournal
# -------------------------------------------------------------------
# Usage: SETUP_AND_LAUNCH_VLINT
# Args: N/A
# -------------------------------------------------------------------
SETUP_AND_LAUNCH_VLINT = \
@ \
export VLINT_PROJ_DIR=$(MODELSIM_PROJ_DIR); \
export VLINT_DESIGN_SRCS=$(EXP_DESIGN_SRCS); \
export VLINT_SIM_SRCS=$(EXP_SIM_SRCS); \
export VLINT_INC_SRCS=$(EXP_INC_SRCS); \
export VLINT_SVLOG_ARGS="$(SVLOG_ARGS)"; \
export VLINT_VLOG_ARGS="$(VLOG_ARGS)"; \
export VLINT_VHDL_ARGS="$(VHDL_ARGS)"; \
export VLINT_MODELSIM_INI="$(MODELSIM_INI)"; \
$(TOOLS_DIR)/scripts/launch_vlint.sh
# -------------------------------------------------------------------
# Usage: SETUP_AND_LAUNCH_VLINT
# Args: N/A
# -------------------------------------------------------------------
SETUP_AND_LAUNCH_MODELSIM = \
@ \
export MSIM_PROJ_DIR=$(MODELSIM_PROJ_DIR); \
export MSIM_SIM_TOP="$(SIM_TOP)"; \
export MSIM_ARGS="$(MODELSIM_ARGS)"; \
export MSIM_LIBS="$(MODELSIM_LIBS)"; \
export MSIM_MODE=$(VIVADO_MODE); \
export MSIM_MODELSIM_INI="$(MODELSIM_INI)"; \
$(TOOLS_DIR)/scripts/launch_modelsim.sh
.SECONDEXPANSION:
##ip: Generate the IP required for this simulation
ip: $(DESIGN_SRCS)
##xsim: Run the simulation using the Xilinx Vivado Simulator
xsim: .check_tool $(DESIGN_SRCS) $(SIM_SRCS) $(INC_SRCS)
$(call SETUP_AND_LAUNCH_SIMULATION,XSim)
##xclean: Cleanup Xilinx Vivado Simulator intermediate files
xclean:
@rm -f xsim*.log
@rm -rf xsim_proj
@rm -f xvhdl.log
@rm -f xvhdl.pba
@rm -f xvlog.log
@rm -f xvlog.pb
@rm -f vivado_pid*.str
##vsim: Run the simulation using ModelSim (via vivado)
vsim: .check_tool $(COMPLIBDIR) $(DESIGN_SRCS) $(SIM_SRCS) $(INC_SRCS)
$(call SETUP_AND_LAUNCH_SIMULATION,Modelsim)
##modelsim: Run the simulation using Modelsim (natively)
modelsim: .check_tool vlint
$(call SETUP_AND_LAUNCH_MODELSIM)
# NOTE: VHDL files require a correct compile order. This script compiles files
# in the order they are defined in $(DESIGN_SRC), then $SIM_SRC)
##vlint: Run ModelSim compiler to lint files
vlint: .check_tool $(COMPLIBDIR) $(DESIGN_SRCS) $(SIM_SRCS) $(INC_SRCS)
$(call SETUP_AND_LAUNCH_VLINT)
##vclean: Cleanup ModelSim intermediate files
vclean:
@rm -f modelsim*.log
@rm -rf $(MODELSIM_PROJ_DIR)
@rm -f vivado_pid*.str
# Use clean with :: to support allow "make clean" to work with multiple makefiles
clean:: xclean vclean
help::
@grep -h "##" $(abspath $(lastword $(MAKEFILE_LIST))) | grep -v "\"##\"" | sed -e 's/\\$$//' | sed -e 's/##//'
.PHONY: ip xsim xsim_hls xclean vsim vlint vclean clean help