| # Copyright lowRISC contributors. |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| .DEFAULT_GOAL := all |
| |
| all: build run |
| |
| ############################### |
| ## sim build and run targets ## |
| ############################### |
| build: compile_result |
| |
| pre_compile: |
| mkdir -p ${BUILD_DIR} && \ |
| env > ${BUILD_DIR}/env_vars |
| |
| gen_sv_flist: pre_compile |
| cd ${BUILD_DIR} && ${SV_FLIST_GEN_TOOL} ${SV_FLIST_GEN_OPTS} |
| |
| compile: gen_sv_flist |
| cd ${SV_FLIST_GEN_DIR} && $(BUILD_JOB_OPTS) ${SIMCC} ${BUILD_OPTS} ${CL_BUILD_OPTS} |
| |
| post_compile: compile |
| |
| compile_result: post_compile |
| |
| run: run_result |
| |
| pre_run: |
| rm -rf ${RUN_PATH}/latest |
| mkdir -p ${RUN_DIR} |
| ln -s ${RUN_DIR} ${RUN_PATH}/latest |
| /bin/bash ${MAKE_ROOT}/run_dir_limiter ${RUN_PATH} ${RUN_DIR_LIMIT} |
| env > ${RUN_DIR}/env_vars |
| |
| sw_build: pre_run |
| ifneq (${SW_NAME},) |
| # NOTE: Pass -f, since we're going to be re-building everything every time, |
| # anyways. |
| cd $(PROJ_ROOT) && \ |
| BUILD_ROOT=$(SW_BUILD_DIR) $(PROJ_ROOT)/meson_init.sh -f |
| # NOTE: We're using the fpga platform for now, because there is no |
| # such thing as a DV platform yet (nor does any code do anything |
| # special for DV yet). |
| ninja -C $(SW_BUILD_DIR)/build-out sw/device/boot_rom/boot_rom_export_$(SW_BUILD_DEVICE) |
| ninja -C $(SW_BUILD_DIR)/build-out sw/device/$(SW_DIR)/$(SW_NAME)_export_$(SW_BUILD_DEVICE) |
| |
| mkdir -p $(SW_BUILD_DIR)/sw $(SW_BUILD_DIR)/rom |
| cp $(SW_BUILD_DIR)/build-out/sw/device/boot_rom/boot_rom_$(SW_BUILD_DEVICE).vmem \ |
| $(SW_BUILD_DIR)/rom/rom.vmem |
| cp $(SW_BUILD_DIR)/build-out/sw/device/$(SW_DIR)/$(SW_NAME)_$(SW_BUILD_DEVICE).vmem \ |
| $(SW_BUILD_DIR)/sw/sw.vmem |
| endif |
| |
| simulate: sw_build |
| cd ${RUN_DIR} && $(RUN_JOB_OPTS) ${SIMX} ${RUN_OPTS} ${CL_RUN_OPTS} |
| |
| post_run: simulate |
| |
| run_result: post_run |
| /bin/bash ${MAKE_ROOT}/pass_fail ${RUN_LOG} ${MAKE_ROOT}/pass_patterns ${MAKE_ROOT}/fail_patterns |
| |
| ############################ |
| ## coverage rated targets ## |
| ############################ |
| cov_merge: |
| # TODO: add script to merge coverage in scratch scope |
| |
| # open coverage tool to review and create report or exclusion file |
| cov_analyze: |
| cd ${SCRATCH_PATH} && ${COV_ANALYZE_TOOL} ${COV_ANALYZE_OPTS} |
| |
| # generate coverage report directly |
| cov_report: |
| cd ${SCRATCH_PATH} && ${COV_REPORT_TOOL} ${COV_REPORT_OPTS} |
| |
| clean: |
| rm -rf ${SCRATCH_PATH}/* |
| |
| .PHONY: ral \ |
| build \ |
| run \ |
| reg \ |
| pre_compile \ |
| compile \ |
| post_compile \ |
| compile_result \ |
| sw_build \ |
| pre_run \ |
| simulate \ |
| post_run \ |
| run_result \ |
| cov_merge \ |
| cov_analyze \ |
| cov_report \ |
| clean |