|  | // 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 | 
|  | entries: [ | 
|  | { | 
|  | name: xbar_smoke | 
|  | desc: '''Sequentially test each host to access any device''' | 
|  | milestone: V1 | 
|  | tests: ["xbar_{name}_smoke"] | 
|  | } | 
|  | { | 
|  | name: xbar_base_random_sequence | 
|  | desc: '''Enable all hosts to randomly send transactions to any device''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_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''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_smoke_zero_delays", "xbar_{name}_smoke_large_delays", "xbar_{name}_smoke_slow_rsp", | 
|  | "xbar_{name}_random_zero_delays", "xbar_{name}_random_large_delays", "xbar_{name}_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''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_unmapped_addr", "xbar_{name}_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''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_error_random", "xbar_{name}_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''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_access_same_device", "xbar_{name}_access_same_device_slow_rsp"] | 
|  | } | 
|  | { | 
|  | name: xbar_all_hosts_use_same_source_id | 
|  | desc: '''Test all hosts use same ID at the same same''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_same_source"] | 
|  | } | 
|  | { | 
|  | name: xbar_stress_all | 
|  | desc: ''' | 
|  | - Combine all sequences and run in parallel | 
|  | - Add random reset between each iteration''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_stress_all", "xbar_{name}_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''' | 
|  | milestone: V2 | 
|  | tests: ["xbar_{name}_stress_all_with_rand_reset", "xbar_{name}_stress_all_with_reset_error"] | 
|  | } | 
|  | ] | 
|  | } |