// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  // Use the name 'main' for this generic testplan. The actual testplan that imports
  // this file can override the name if needed.
  name: main
  testpoints: [
    {
      name: xbar_smoke
      desc: '''Sequentially test each host to access any device'''
      stage: V1
      tests: ["xbar_smoke"]
    }
    {
      name: xbar_base_random_sequence
      desc: '''Enable all hosts to randomly send transactions to any device'''
      stage: V2
      tests: ["xbar_random"]
    }
    {
      name: xbar_random_delay
      desc: '''Control delays through plusargs to create tests for below types of delay
            - Zero delay for sending a/d_valid and a/d_ready
            - Large delay from 0 ~ 1000 cycles
            - Small delay (0-10 cycles) for a_channel, large delay (0-1000 cycles) for d_channel'''
      stage: V2
      tests: ["xbar_smoke_zero_delays", "xbar_smoke_large_delays", "xbar_smoke_slow_rsp",
              "xbar_random_zero_delays", "xbar_random_large_delays", "xbar_random_slow_rsp"]
    }
    {
      name: xbar_unmapped_address
      desc: '''
            - Host randomly drives transactions with mapped and unmapped address
            - Ensure DUT returns d_error=1 if address is unmapped and transaction isn't passed down
              to any device'''
      stage: V2
      tests: ["xbar_unmapped_addr", "xbar_error_and_unmapped_addr"]
    }
    {
      name: xbar_error_cases
      desc: '''
            - Drive any random value on size, mask, opcode in both channels
            - Ensure everything just pass through host to device or device to host'''
      stage: V2
      tests: ["xbar_error_random", "xbar_error_and_unmapped_addr"]
    }
    {
      name: xbar_all_access_same_device
      desc: '''
            - Randomly pick a device, make all hosts to access this device
            - If the device isn't accessible for the host, let the host randomly access the other
              devices'''
      stage: V2
      tests: ["xbar_access_same_device", "xbar_access_same_device_slow_rsp"]
    }
    {
      name: xbar_all_hosts_use_same_source_id
      desc: '''Test all hosts use same ID at the same same'''
      stage: V2
      tests: ["xbar_same_source"]
    }
    {
      name: xbar_stress_all
      desc: '''
            - Combine all sequences and run in parallel
            - Add random reset between each iteration'''
      stage: V2
      tests: ["xbar_stress_all", "xbar_stress_all_with_error"]
    }
    {
      name: xbar_stress_with_reset
      desc: '''
            - Inject reset while stress_all is running, after reset is completed, kill the
              stress seq and then start a new stress seq
            - Run a few iteration to ensure reset doesn't break the design'''
      stage: V2
      tests: ["xbar_stress_all_with_rand_reset", "xbar_stress_all_with_reset_error"]
    }
  ]
}
