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