####################################################################################################
## Copyright lowRISC contributors.                                                                ##
## Licensed under the Apache License, Version 2.0, see LICENSE for details.                       ##
## SPDX-License-Identifier: Apache-2.0                                                            ##
####################################################################################################
## Entry point test Makefile forr building and running tests.                                     ##
## These are generic set of option groups that apply to all testbenches.                          ##
## This flow requires the following options to be set:                                            ##
## DV_DIR       - current dv directory that contains the test Makefile                            ##
## DUT_TOP      - top level dut module name                                                       ##
## TB_TOP       - top level tb module name                                                        ##
## DOTF         - .f file used for compilation                                                    ##
## COMPILE_KEY  - compile option set                                                              ##
## TEST_NAME    - name of the test to run - this is supplied on the command line                  ##
####################################################################################################
DV_DIR          := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
export DUT_TOP  := uart
export TB_TOP   := tb
FUSESOC_CORE    := lowrisc:dv:uart_sim:0.1
COMPILE_KEY     ?= default

UVM_TEST        ?= uart_base_test
UVM_TEST_SEQ    ?= uart_base_vseq

####################################################################################################
##                     A D D    I N D I V I D U A L    T E S T S    B E L O W                     ##
####################################################################################################
TEST_NAME       ?= uart_sanity
UVM_TEST        ?= uart_base_test
UVM_TEST_SEQ    ?= uart_base_vseq

ifeq (${TEST_NAME},uart_sanity)
  UVM_TEST_SEQ   = uart_sanity_vseq
endif

ifeq (${TEST_NAME},uart_random)
  UVM_TEST_SEQ   = uart_tx_rx_vseq
endif

ifeq (${TEST_NAME},uart_fifo_full)
  UVM_TEST_SEQ   = uart_fifo_full_vseq
endif

ifeq (${TEST_NAME},uart_fifo_overflow)
  UVM_TEST_SEQ   = uart_fifo_overflow_vseq
endif

ifeq (${TEST_NAME},uart_fifo_reset)
  UVM_TEST_SEQ   = uart_fifo_reset_vseq
endif

ifeq (${TEST_NAME},uart_intr_test)
  UVM_TEST_SEQ   = uart_common_vseq
  RUN_OPTS      += +run_intr_test
endif

ifeq (${TEST_NAME},uart_rx_oversample)
  UVM_TEST_SEQ   = uart_rx_oversample_vseq
  RUN_OPTS      += +zero_delays=1
endif

ifeq (${TEST_NAME},uart_intr)
  RUN_OPTS      += +test_timeout_ns=3000_000_000
  UVM_TEST_SEQ   = uart_intr_vseq
endif

ifeq (${TEST_NAME},uart_noise_filter)
  UVM_TEST_SEQ   = uart_noise_filter_vseq
endif

ifeq (${TEST_NAME},uart_rx_start_bit_filter)
  UVM_TEST_SEQ   = uart_rx_start_bit_filter_vseq
endif

ifeq (${TEST_NAME},uart_rx_parity_err)
  UVM_TEST_SEQ   = uart_rx_parity_err_vseq
endif

ifeq (${TEST_NAME},uart_tx_ovrd)
  UVM_TEST_SEQ   = uart_tx_ovrd_vseq
endif

ifeq (${TEST_NAME},uart_loopback)
  UVM_TEST_SEQ   = uart_loopback_vseq
endif

ifeq (${TEST_NAME},uart_perf)
  UVM_TEST_SEQ   = uart_perf_vseq
  RUN_OPTS      += +zero_delays=1
endif

ifeq (${TEST_NAME},uart_stress_all)
  RUN_OPTS      += +test_timeout_ns=10_000_000_000
  UVM_TEST_SEQ   = uart_stress_all_vseq
endif

ifeq (${TEST_NAME},uart_csr_hw_reset)
  UVM_TEST_SEQ   = uart_common_vseq
  RUN_OPTS      += +csr_hw_reset
  RUN_OPTS      += +en_scb=0
endif

ifeq (${TEST_NAME},uart_csr_rw)
  UVM_TEST_SEQ   = uart_common_vseq
  RUN_OPTS      += +csr_rw
  RUN_OPTS      += +en_scb=0
endif

ifeq (${TEST_NAME},uart_csr_bit_bash)
  UVM_TEST_SEQ   = uart_common_vseq
  RUN_OPTS      += +csr_bit_bash
  RUN_OPTS      += +en_scb=0
endif

ifeq (${TEST_NAME},uart_csr_aliasing)
  UVM_TEST_SEQ   = uart_common_vseq
  RUN_OPTS      += +csr_aliasing
  RUN_OPTS      += +en_scb=0
endif

####################################################################################################
## Include the tool Makefile below                                                                ##
## Dont add anything else below it!                                                               ##
####################################################################################################
include ${DV_DIR}/../../../dv/tools/Makefile
