Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
##########################################################
## user configuration
##########################################################
##############################
# Project-specific configuration
##############################
export BP_DIR ?= $(TOP)
export BP_WORK_DIR ?= $(BP_DIR)/work
# Use meta-installation if available
ifeq (1,$(IS_SUBMODULE))
BP_INSTALL_DIR ?= $(BP_DIR)/../install
BP_SDK_INSTALL_DIR ?= $(BP_INSTALL_DIR)
BP_TOOLS_INSTALL_DIR ?= $(BP_INSTALL_DIR)
BP_RISCV_DIR ?= $(BP_DIR)/../riscv
# Use adjacent repos if available
else
BP_INSTALL_DIR ?= $(BP_DIR)/install
BP_TOOLS_INSTALL_DIR ?= $(BP_DIR)/../black-parrot-tools/install
BP_SDK_INSTALL_DIR ?= $(BP_DIR)/../black-parrot-sdk/install
BP_RISCV_DIR ?= $(BP_DIR)/../black-parrot-sdk/riscv
endif
# toplevel subdirectories
BP_PATCH_DIR = $(BP_DIR)/patches
BP_DOCKER_DIR = $(BP_DIR)/docker
BP_MK_DIR = $(BP_DIR)/mk
BP_TCL_DIR = $(BP_DIR)/tcl
BP_COMMON_DIR = $(BP_DIR)/bp_common
BP_FE_DIR = $(BP_DIR)/bp_fe
BP_BE_DIR = $(BP_DIR)/bp_be
BP_ME_DIR = $(BP_DIR)/bp_me
BP_TOP_DIR = $(BP_DIR)/bp_top
BP_EXTERNAL_DIR = $(BP_DIR)/external
# toplevel submodules
BASEJUMP_STL_DIR = $(BP_EXTERNAL_DIR)/basejump_stl
HARDFLOAT_DIR = $(BP_EXTERNAL_DIR)/HardFloat
BEDROCK_DIR = $(BP_EXTERNAL_DIR)/bedrock
# installation subdirectories
BP_BIN_DIR = $(BP_INSTALL_DIR)/bin
BP_LIB_DIR = $(BP_INSTALL_DIR)/lib
BP_INCLUDE_DIR = $(BP_INSTALL_DIR)/include
BP_SHARE_DIR = $(BP_INSTALL_DIR)/share
BP_TOUCH_DIR = $(BP_INSTALL_DIR)/touchfiles
END_PATH = $(CURDIR)/..
TB_PATH = $(END_PATH)/test/tb/$(TB)
DUT_TAG = $(TB).$(CFG)$(addprefix .,$(TAG))
SIM_TAG = $(DUT_TAG)/$(basename $(notdir $(SIM_PROG)))
DUT_PATH = $(CURDIR)/results/$(DUT_TAG)
SIM_PATH = $(CURDIR)/results/$(SIM_TAG)
export PATH := $(BP_SDK_INSTALL_DIR)/bin:$(PATH)
export PATH := $(BP_TOOLS_INSTALL_DIR)/bin:$(PATH)
export PATH := $(BP_INSTALL_DIR)/bin:$(PATH)
export LD_LIBRARY_PATH := $(BP_SDK_INSTALL_DIR)/lib:$(LD_LIBRARY_PATH)
export LD_LIBRARY_PATH := $(BP_TOOLS_INSTALL_DIR)/lib:$(LD_LIBRARY_PATH)
export LD_LIBRARY_PATH := $(BP_INSTALL_DIR)/lib:$(LD_LIBRARY_PATH)
export LIBRARY_PATH := $(BP_SDK_INSTALL_DIR)/lib:$(LIBRARY_PATH)
export LIBRARY_PATH := $(BP_TOOLS_INSTALL_DIR)/lib:$(LIBRARY_PATH)
export LIBRARY_PATH := $(BP_INSTALL_DIR)/lib:$(LIBRARY_PATH)
export CPATH := $(BP_SDK_INSTALL_DIR)/include:$(CPATH)
export CPATH := $(BP_TOOLS_INSTALL_DIR)/include:$(CPATH)
export CPATH := $(BP_INSTALL_DIR)/include:$(CPATH)
##############################
# Project-specific functions
##############################
define bsg_fn_fail_search
$(eval log := $(1))
$(eval rpt := $(2))
$(eval term := "\[BSG-FAIL\]")
$(eval depth := 1)
grep -A$(depth) -s $(term) $(log) && echo FAILED >> $(rpt) || true
endef
define bsg_fn_pass_search
$(eval log := $(1))
$(eval rpt := $(2))
$(eval term := "\[BSG-PASS\]")
$(eval depth := 1)
grep -A$(depth) -s $(term) $(log) || echo NOPASS >> $(rpt) || true
endef
define bsg_fn_sentinal_search
$(eval log := $(1))
$(eval rpt := $(2))
$(eval term := $(3))
$(eval depth := 1)
grep -A$(depth) -s $(term) $(log) || echo MISSING: $(term) >> $(rpt) || true
endef
define bsg_fn_stat_search
$(eval log := $(1))
$(eval rpt := $(2))
$(eval term := "\[BSG-STAT\]")
$(eval regex := "\[BSG-STAT\]\[(\d+)\]:")
N=`grep -oP $(regex) $(log) | grep -oP "\d+" | head -1`; \
if [ -n "$$N" ]; then \
grep -A$$N $(term) $(log) | tail -n +2 >> $(rpt); \
fi
endef
define bsg_fn_info_search
$(eval log := $(1))
$(eval rpt := $(2))
$(eval term := $(3))
$(eval depth := $(4))
grep -A$(depth) $(term) $(log) >> $(rpt) || true
endef
define bsg_fn_declare_log_rpt
$(eval export MAKEFLAGS := "")
$(eval $@_TOOL := $(subst .,,$(suffix $(@F))))
$(eval $@_CMD := $(basename $(@F)))
$(eval $@_FLATTAG := $(subst /,.,$($@_CMD).$(1)))
$(eval LOG_FILE := $(CURDIR)/logs/$($@_FLATTAG).log)
$(eval RPT_FILE := $(CURDIR)/reports/$($@_FLATTAG).rpt)
$(eval ERR_FILE := $(CURDIR)/reports/$($@_FLATTAG).err)
mkdir -p $(dir $(LOG_FILE) $(RPT_FILE) $(ERR_FILE))
mkdir -p $(CURDIR)/results/$(1)
endef
##########################################################
## Utilities
##########################################################
AUTORECONF ?= autoreconf
AUTOCONF ?= autoconf
AWK ?= awk
BASENAME ?= basename
CAT ?= cat
CD ?= cd
CP ?= cp
CURL ?= curl
CUT ?= cut
DIFF ?= diff
DOCKER ?= docker
ECHO ?= echo
ENVSUBST ?= envsubst
EXIT ?= exit
FILE ?= file
FIND ?= find
GCC ?= gcc
GIT ?= git
GREP ?= grep
MKDIR ?= mkdir
MKDIRP ?= mkdir -p
MV ?= mv
OBJCOPY ?= objcopy
PRINTF ?= printf
RM ?= rm
RMRF ?= rm -rf
SED ?= sed
STTY ?= stty
STRIP ?= strip
SYMLINK ?= ln -nsf
TAIL ?= tail
TAR ?= tar
TEE ?= tee
TEST ?= test
TOUCH ?= touch
TR ?= tr
WCOUNT ?= wc -l
WGET ?= wget
XXD ?= xxd
SURFER ?= surfer
GTKWAVE ?= gtkwave
DROMAJO ?= dromajo
SPIKE ?= spike
BSG_SV2V_BIN = bsg_sv2v_run.sh
RISCV_OBJCOPY ?= riscv64-unknown-elf-objcopy
RISCV_OBJDUMP ?= riscv64-unknown-elf-objdump
clean::
@$(RMRF) results
@$(RMRF) logs
@$(RMRF) reports
#############################
# Hooks
#############################
## Probably don't need to change, but here's the hook anyway
HOOK_REPO_NAME = black-parrot
## All local directories to create during checkout
HOOK_CHECKOUT_DIRS = \
$(BP_WORK_DIR) \
$(BP_INSTALL_DIR)
## Long checkouts to disable
HOOK_DISABLE_SUBMODULES = \
external/basejump_stl/imports/ramulator
563ab6561This file is pinned to the selected release. Download the original to open it in your design tool.