####################################################################################################
## 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  := xbar_main
export TB_TOP   := tb
FUSESOC_CORE    := lowrisc:ip:xbar_dv:0.1
COMPILE_KEY     ?= default

####################################################################################################
##                     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       ?= xbar_sanity
UVM_TEST        ?= xbar_base_test
UVM_TEST_SEQ    ?= xbar_base_vseq

ifeq (${TEST_NAME},xbar_sanity)
  UVM_TEST_SEQ   = xbar_sanity_vseq
endif

ifeq (${TEST_NAME},xbar_sanity_zero_delays)
  UVM_TEST_SEQ   = xbar_sanity_vseq
  RUN_OPTS      += +zero_delays=1
endif

ifeq (${TEST_NAME},xbar_sanity_large_delays)
  UVM_TEST_SEQ   = xbar_sanity_vseq
  RUN_OPTS      += +min_req_delay=0
  RUN_OPTS      += +max_req_delay=1000
  RUN_OPTS      += +min_rsp_delay=0
  RUN_OPTS      += +max_rsp_delay=1000
endif

ifeq (${TEST_NAME},xbar_sanity_slow_rsp)
  UVM_TEST_SEQ   = xbar_sanity_vseq
  RUN_OPTS      += +min_req_delay=0
  RUN_OPTS      += +max_req_delay=10
  RUN_OPTS      += +min_rsp_delay=0
  RUN_OPTS      += +max_rsp_delay=1000
endif

ifeq (${TEST_NAME},xbar_random)
  UVM_TEST_SEQ   = xbar_random_vseq
endif

ifeq (${TEST_NAME},xbar_random_zero_delays)
  UVM_TEST_SEQ   = xbar_random_vseq
  RUN_OPTS      += +zero_delays=1
endif

ifeq (${TEST_NAME},xbar_random_large_delays)
  UVM_TEST_SEQ   = xbar_random_vseq
  RUN_OPTS      += +min_req_delay=0
  RUN_OPTS      += +max_req_delay=1000
  RUN_OPTS      += +min_rsp_delay=0
  RUN_OPTS      += +max_rsp_delay=1000
endif

ifeq (${TEST_NAME},xbar_random_slow_rsp)
  UVM_TEST_SEQ   = xbar_random_vseq
  RUN_OPTS      += +min_req_delay=0
  RUN_OPTS      += +max_req_delay=10
  RUN_OPTS      += +min_rsp_delay=0
  RUN_OPTS      += +max_rsp_delay=1000
endif

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