Line 132... |
Line 132... |
BOARD_BACKEND_VERILOG_DIR=$(BOARD_BACKEND_DIR)/rtl/verilog
|
BOARD_BACKEND_VERILOG_DIR=$(BOARD_BACKEND_DIR)/rtl/verilog
|
TECHNOLOGY_BACKEND_DIR=$(BOARD_DIR)/../backend
|
TECHNOLOGY_BACKEND_DIR=$(BOARD_DIR)/../backend
|
# This path is for the technology library
|
# This path is for the technology library
|
TECHNOLOGY_BACKEND_VERILOG_DIR=$(TECHNOLOGY_BACKEND_DIR)/rtl/verilog
|
TECHNOLOGY_BACKEND_VERILOG_DIR=$(TECHNOLOGY_BACKEND_DIR)/rtl/verilog
|
|
|
|
# Synthesis directory for board
|
|
BOARD_SYN_DIR=$(BOARD_DIR)/syn/synplify
|
|
BOARD_SYN_OUT_DIR=$(BOARD_SYN_DIR)/out
|
|
|
# System software dir
|
# System software dir
|
COMMON_SW_DIR=$(PROJECT_ROOT)/sw
|
COMMON_SW_DIR=$(PROJECT_ROOT)/sw
|
BOARD_SW_DIR=$(BOARD_DIR)/sw
|
BOARD_SW_DIR=$(BOARD_DIR)/sw
|
|
|
# BootROM code, which generates a verilog array select values
|
# BootROM code, which generates a verilog array select values
|
Line 206... |
Line 210... |
$(MAKE) -C $(VPI_SRC_C_DIR) $(MODELTECH_VPILIB)
|
$(MAKE) -C $(VPI_SRC_C_DIR) $(MODELTECH_VPILIB)
|
|
|
#
|
#
|
# Verilog DUT source variables
|
# Verilog DUT source variables
|
#
|
#
|
|
|
|
# First consider any modules we'll use gatelevel descriptions of.
|
|
# These will have to be set on the command line
|
|
GATELEVEL_MODULES ?=
|
|
|
# First we get a list of modules in the RTL path of the board's path.
|
# First we get a list of modules in the RTL path of the board's path.
|
# Next we check which modules not in the board's RTL path are in the root RTL
|
# Next we check which modules not in the board's RTL path are in the root RTL
|
# path (modules which can be commonly instantiated, but over which board
|
# path (modules which can be commonly instantiated, but over which board
|
# build-specific versions take precedence.)
|
# build-specific versions take precedence.)
|
|
|
# Paths under board/***/rtl/verilog we wish to exclude when getting modules
|
# Paths under board/***/rtl/verilog we wish to exclude when getting modules
|
BOARD_VERILOG_MODULES_EXCLUDE= include
|
BOARD_VERILOG_MODULES_EXCLUDE= include $(GATELEVEL_MODULES)
|
BOARD_VERILOG_MODULES_DIR_LIST=$(shell ls $(BOARD_RTL_VERILOG_DIR))
|
BOARD_VERILOG_MODULES_DIR_LIST=$(shell ls $(BOARD_RTL_VERILOG_DIR))
|
# Apply exclude to list of modules
|
# Apply exclude to list of modules
|
BOARD_RTL_VERILOG_MODULES=$(filter-out $(BOARD_VERILOG_MODULES_EXCLUDE),$(BOARD_VERILOG_MODULES_DIR_LIST))
|
BOARD_RTL_VERILOG_MODULES=$(filter-out $(BOARD_VERILOG_MODULES_EXCLUDE),$(BOARD_VERILOG_MODULES_DIR_LIST))
|
|
|
# Rule for debugging this script
|
# Rule for debugging this script
|
Line 225... |
Line 234... |
@echo $(BOARD_RTL_VERILOG_MODULES)
|
@echo $(BOARD_RTL_VERILOG_MODULES)
|
|
|
# Now get list of modules that we don't have a version of in the board path
|
# Now get list of modules that we don't have a version of in the board path
|
COMMON_VERILOG_MODULES_EXCLUDE= include
|
COMMON_VERILOG_MODULES_EXCLUDE= include
|
COMMON_VERILOG_MODULES_EXCLUDE += $(BOARD_RTL_VERILOG_MODULES)
|
COMMON_VERILOG_MODULES_EXCLUDE += $(BOARD_RTL_VERILOG_MODULES)
|
|
COMMON_VERILOG_MODULES_EXCLUDE += $(GATELEVEL_MODULES)
|
|
|
COMMON_RTL_VERILOG_MODULES_DIR_LIST=$(shell ls $(COMMON_RTL_VERILOG_DIR))
|
COMMON_RTL_VERILOG_MODULES_DIR_LIST=$(shell ls $(COMMON_RTL_VERILOG_DIR))
|
COMMON_RTL_VERILOG_MODULES=$(filter-out $(COMMON_VERILOG_MODULES_EXCLUDE), $(COMMON_RTL_VERILOG_MODULES_DIR_LIST))
|
COMMON_RTL_VERILOG_MODULES=$(filter-out $(COMMON_VERILOG_MODULES_EXCLUDE), $(COMMON_RTL_VERILOG_MODULES_DIR_LIST))
|
|
|
|
|
|
# Add these to exclude their RTL directories from being included in scripts
|
|
|
|
|
|
|
# Rule for debugging this script
|
# Rule for debugging this script
|
print-common-modules-exclude:
|
print-common-modules-exclude:
|
@echo echo; echo "\t### Common verilog modules being excluded due to board versions ###"; echo
|
@echo echo; echo "\t### Common verilog modules being excluded due to board versions ###"; echo
|
@echo "$(COMMON_VERILOG_MODULES_EXCLUDE)"
|
@echo "$(COMMON_VERILOG_MODULES_EXCLUDE)"
|
|
|
Line 353... |
Line 368... |
$(Q)echo "+incdir+"$(BOARD_BENCH_VERILOG_INCLUDE_DIR) >> $@;
|
$(Q)echo "+incdir+"$(BOARD_BENCH_VERILOG_INCLUDE_DIR) >> $@;
|
$(Q)echo "+libext+.v" >> $@;
|
$(Q)echo "+libext+.v" >> $@;
|
$(Q)for module in $(BOARD_RTL_VERILOG_MODULES); do if [ -d $(BOARD_RTL_VERILOG_DIR)/$$module ]; then echo "-y " $(BOARD_RTL_VERILOG_DIR)/$$module >> $@; fi; done
|
$(Q)for module in $(BOARD_RTL_VERILOG_MODULES); do if [ -d $(BOARD_RTL_VERILOG_DIR)/$$module ]; then echo "-y " $(BOARD_RTL_VERILOG_DIR)/$$module >> $@; fi; done
|
$(Q)for module in $(COMMON_RTL_VERILOG_MODULES); do if [ -d $(COMMON_RTL_VERILOG_DIR)/$$module ]; then echo "-y " $(COMMON_RTL_VERILOG_DIR)/$$module >> $@; fi; done
|
$(Q)for module in $(COMMON_RTL_VERILOG_MODULES); do if [ -d $(COMMON_RTL_VERILOG_DIR)/$$module ]; then echo "-y " $(COMMON_RTL_VERILOG_DIR)/$$module >> $@; fi; done
|
$(Q)echo "-y " $(BOARD_BACKEND_VERILOG_DIR) >> $@;
|
$(Q)echo "-y " $(BOARD_BACKEND_VERILOG_DIR) >> $@;
|
|
$(Q)if [ ! -z "$$GATELEVEL_MODULES" ]; \
|
|
then echo "-y " $(BOARD_SYN_OUT_DIR) >> $@; \
|
|
echo "+libext+.vm" >> $@; \
|
|
fi
|
$(Q)echo >> $@
|
$(Q)echo >> $@
|
|
|
modelsim_bench.scr: $(BOARD_BENCH_VERILOG_SRC) $(COMMON_BENCH_VERILOG_SRC)
|
modelsim_bench.scr: $(BOARD_BENCH_VERILOG_SRC) $(COMMON_BENCH_VERILOG_SRC)
|
$(Q)echo "+incdir+"$(BOARD_BENCH_VERILOG_INCLUDE_DIR) > $@;
|
$(Q)echo "+incdir+"$(BOARD_BENCH_VERILOG_INCLUDE_DIR) > $@;
|
$(Q)echo "+incdir+"$(COMMON_BENCH_VERILOG_INCLUDE_DIR) >> $@;
|
$(Q)echo "+incdir+"$(COMMON_BENCH_VERILOG_INCLUDE_DIR) >> $@;
|
Line 429... |
Line 448... |
$(Q)./$@
|
$(Q)./$@
|
|
|
# Include the test-defines.v generation rule
|
# Include the test-defines.v generation rule
|
include $(PROJECT_ROOT)/sim/bin/definesgen.inc
|
include $(PROJECT_ROOT)/sim/bin/definesgen.inc
|
|
|
# $(Q)for module in $(GATELEVEL_MODULES); do echo "\`define "$$module"_IS_GATELEVEL " >> $@; done
|
|
# More possible test defines go here
|
|
|
|
#
|
#
|
# Software make rules (called recursively)
|
# Software make rules (called recursively)
|
#
|
#
|
|
|
# Path for the current test
|
# Path for the current test
|
Line 470... |
Line 486... |
endif
|
endif
|
|
|
.PHONY : sw
|
.PHONY : sw
|
sw: $(SIM_SW_IMAGE)
|
sw: $(SIM_SW_IMAGE)
|
|
|
|
|
flash.in: $(SW_TEST_DIR)/$(TEST).flashin
|
flash.in: $(SW_TEST_DIR)/$(TEST).flashin
|
$(Q)if [ -L $@ ]; then unlink $@; fi
|
$(Q)if [ -L $@ ]; then unlink $@; fi
|
$(Q)ln -s $< $@
|
$(Q)ln -s $< $@
|
|
|
sram.vmem: $(SW_TEST_DIR)/$(TEST).vmem
|
sram.vmem: $(SW_TEST_DIR)/$(TEST).vmem
|
Line 488... |
Line 505... |
.PHONY: $(SW_TEST_DIR)/$(TEST).vmem
|
.PHONY: $(SW_TEST_DIR)/$(TEST).vmem
|
$(SW_TEST_DIR)/$(TEST).vmem:
|
$(SW_TEST_DIR)/$(TEST).vmem:
|
$(Q) echo; echo "\t### Compiling software ###"; echo;
|
$(Q) echo; echo "\t### Compiling software ###"; echo;
|
$(Q)$(MAKE) -C $(SW_TEST_DIR) $(TEST).vmem
|
$(Q)$(MAKE) -C $(SW_TEST_DIR) $(TEST).vmem
|
|
|
|
# Create test software disassembly
|
|
|
|
sw-dis: $(SW_TEST_DIR)/$(TEST).dis
|
|
$(Q)cp -v $< .
|
|
|
|
$(SW_TEST_DIR)/$(TEST).dis:
|
|
$(Q)$(MAKE) -C $(SW_TEST_DIR) $(TEST).dis
|
|
|
#
|
#
|
# Cleaning rules
|
# Cleaning rules
|
#
|
#
|
clean: clean-sim clean-sim-test-sw clean-bootrom clean-out clean-sw
|
clean: clean-sim clean-sim-test-sw clean-bootrom clean-out clean-sw
|
|
|