blob: 87452f4edb231d30477b1e50738d3be54c25d2bd [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
class xbar_base_test extends dv_base_test #(.ENV_T(xbar_env), .CFG_T(xbar_env_cfg));
`uvm_component_utils(xbar_base_test)
`uvm_component_new
virtual function void build_phase(uvm_phase phase);
max_quit_count = 50;
test_timeout_ns = 600_000_000; // 600ms
super.build_phase(phase);
if (cfg.zero_delays) begin
cfg.min_host_req_delay = 0;
cfg.max_host_req_delay = 0;
cfg.min_host_rsp_delay = 0;
cfg.max_host_rsp_delay = 0;
cfg.min_device_req_delay = 0;
cfg.max_device_req_delay = 0;
cfg.min_device_rsp_delay = 0;
cfg.max_device_rsp_delay = 0;
end
void'($value$plusargs("min_host_req_delay=%d", cfg.min_host_req_delay));
void'($value$plusargs("max_host_req_delay=%d", cfg.max_host_req_delay));
void'($value$plusargs("min_host_rsp_delay=%d", cfg.min_host_rsp_delay));
void'($value$plusargs("max_host_rsp_delay=%d", cfg.max_host_rsp_delay));
void'($value$plusargs("min_device_req_delay=%d", cfg.min_device_req_delay));
void'($value$plusargs("max_device_req_delay=%d", cfg.max_device_req_delay));
void'($value$plusargs("min_device_rsp_delay=%d", cfg.min_device_rsp_delay));
void'($value$plusargs("max_device_rsp_delay=%d", cfg.max_device_rsp_delay));
void'($value$plusargs("num_enabled_hosts=%d", cfg.num_enabled_hosts));
foreach (cfg.host_agent_cfg[i]) begin
cfg.host_agent_cfg[i].a_valid_delay_min = cfg.min_host_req_delay;
cfg.host_agent_cfg[i].a_valid_delay_max = cfg.max_host_req_delay;
cfg.host_agent_cfg[i].d_ready_delay_min = cfg.min_host_rsp_delay;
cfg.host_agent_cfg[i].d_ready_delay_max = cfg.max_host_rsp_delay;
end
foreach (cfg.device_agent_cfg[i]) begin
cfg.device_agent_cfg[i].d_valid_delay_min = cfg.min_device_req_delay;
cfg.device_agent_cfg[i].d_valid_delay_max = cfg.max_device_req_delay;
cfg.device_agent_cfg[i].a_ready_delay_min = cfg.min_device_rsp_delay;
cfg.device_agent_cfg[i].a_ready_delay_max = cfg.max_device_rsp_delay;
end
endfunction : build_phase
endclass : xbar_base_test