// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  entries: [
    {
      name: csr_hw_reset
      desc: '''
            Verify the reset values as indicated in the RAL specification.
            - Write all CSRs with a random value.
            - Apply reset to the DUT as well as the RAL model.
            - Read each CSR and compare it against the reset value.
              it is mandatory to replicate this test for each reset that affects
              all or a subset of the CSRs.
            - It is mandatory to run this test for all available interfaces the
              CSRs are accessible from.
            - Shuffle the list of CSRs first to remove the effect of ordering.
            '''
      milestone: V1
      tests: ["{name}{intf}_csr_hw_reset"]
    }
    {
      name: csr_rw
      desc: '''
            Verify accessibility of CSRs as indicated in the RAL specification.
            - Loop through each CSR to write it with a random value.
            - Read the CSR back and check for correctness while adhering to its
              access policies.
            - It is mandatory to run this test for all available interfaces the
              CSRs are accessible from.
            - Shuffle the list of CSRs first to remove the effect of ordering.
            '''
      milestone: V1
      tests: ["{name}{intf}_csr_rw"]
    }
    {
      name: csr_bit_bash
      desc: '''
            Verify no aliasing within individual bits of a CSR.
            - Walk a 1 through each CSR by flipping 1 bit at a time.
            - Read the CSR back and check for correctness while adhering to its
              access policies.
            - This verify that writing a specific bit within the CSR did not affect
              any of the other bits.
            - It is mandatory to run this test for all available interfaces the
              CSRs are accessible from.
            - Shuffle the list of CSRs first to remove the effect of ordering.
            '''
      milestone: V1
      tests: ["{name}{intf}_csr_bit_bash"]
    }
    {
      name: csr_aliasing
      desc: '''
            Verify no aliasing within the CSR address space.
            - Loop through each CSR to write it with a random value
            - Shuffle and read ALL CSRs back.
            - All CSRs except for the one that was written in this iteration should
              read back the previous value.
            - The CSR that was written in this iteration is checked for correctness
              while adhering to its access policies.
            - It is mandatory to run this test for all available interfaces the
              CSRs are accessible from.
            - Shuffle the list of CSRs first to remove the effect of ordering.
            '''
      milestone: V1
      tests: ["{name}{intf}_csr_aliasing"]
    }
    {
      name: csr_mem_rw_with_rand_reset
      desc: '''
            Verify random reset during CSR/memory access.
            - Run csr_rw sequence to randomly access CSRs
            - If memory exists, run mem_partial_access in parallel with csr_rw
            - Randomly issue reset and then use hw_reset sequence to check all CSRs
              are reset to default value
            - It is mandatory to run this test for all available interfaces the
              CSRs are accessible from.
            '''
      milestone: V1
      tests: ["{name}{intf}_csr_mem_rw_with_rand_reset"]
    }
  ]
}

