| # 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 |