| // 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"] | 
 |     } | 
 |   ] | 
 | } | 
 |  |