| // Copyright lowRISC contributors. | |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. | |
| // SPDX-License-Identifier: Apache-2.0 | |
| { | |
| name: "aes" | |
| import_testplans: ["hw/dv/tools/dvsim/testplans/csr_testplan.hjson", | |
| "hw/dv/tools/dvsim/testplans/shadow_reg_errors_testplan.hjson", | |
| "hw/dv/tools/dvsim/testplans/alert_test_testplan.hjson", | |
| "hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson"] | |
| entries: [ | |
| // { | |
| // name: default_setting | |
| // desc: ''' | |
| // ''' | |
| // milestone: V1 | |
| // tests: [] | |
| // } | |
| { | |
| name: wake_up | |
| desc: ''' | |
| Basic hello world, encrypt a plain text read it back - decrypt and compare to input.''' | |
| milestone: V1 | |
| tests: ["aes_wake_up"] | |
| } | |
| { | |
| name: smoke | |
| desc: ''' | |
| Encrypt a plain text read it back - decrypt and compare to input but use reference model to compare after both encryption and decryption.''' | |
| milestone: V1 | |
| tests: ["aes_smoke"] | |
| } | |
| { | |
| name: algorithm | |
| desc: ''' | |
| Compare cypher text from DUT with the output of a C model using same key and data.''' | |
| milestone: V2 | |
| tests: ["aes_smoke", "aes_config_error"] | |
| } | |
| { | |
| name: key_length | |
| desc: ''' | |
| Randomly select key length to verify all supported key lengths are working.''' | |
| milestone: V2 | |
| tests: ["aes_stress", "aes_smoke", "aes_config_error"] | |
| } | |
| { | |
| name: back2back | |
| desc: ''' | |
| Randomly select the spacing between consecutive messages and blocks from 0 - n clock cycles. | |
| The distribution will be weighted toward no and small gaps (0-10 cycles) but will also cover larger gaps.''' | |
| milestone: V2 | |
| tests: ["aes_b2b", "aes_stress"] | |
| } | |
| { | |
| name: backpressure | |
| desc: ''' | |
| Try to write data to registers without offloading the DUT output to verify Stall functionality.''' | |
| milestone: V2 | |
| tests: ["aes_stress"] | |
| } | |
| { | |
| name: multi_message | |
| desc: ''' | |
| Run multiple messages in a random mix of encryption / decryption. | |
| Each message should select its mode randomly.''' | |
| milestone: V2 | |
| tests: ["aes_stress", "aes_smoke", "aes_config_error"] | |
| } | |
| { | |
| name: failure_test | |
| desc: ''' | |
| - Tests what happens if a register is written a the wrong time? | |
| If a key does not match the key setting etc. | |
| Will the DUT ignore or fail gracefully. | |
| - Enter a 256bit key but set DUT to use 128bit for encryption. | |
| Then enter the 128bit of the key and use for decryption. | |
| Will result match plain text and vice. | |
| - Write unsupported configurations (Key length and mode are 1 hot, what happens if more than one bit is set.)''' | |
| milestone: V2 | |
| tests: ["aes_config_error"] | |
| } | |
| { | |
| name: trigger_clear_test | |
| desc: ''' | |
| Exercise trigger and clear registers at random times to make sure we handle the different cornercases correctly. | |
| Example of a cornercases clearing data input or data output before the data is consumed or the DUT finishes an operation.''' | |
| milestone: V2 | |
| tests: [] | |
| } | |
| { | |
| name: nist_test_vectors | |
| desc: ''' | |
| Verify that the DUT handles the NIST test vectors correctly.''' | |
| milestone: V2 | |
| tests: [] | |
| } | |
| { | |
| name: performance | |
| desc: ''' | |
| Verify that the DUT performs as specified for each key length in terms of latency and throughput. | |
| This testpoint will use automode (this will feed input data and offload output data as fast as the DUT can support it.)''' | |
| milestone: V2 | |
| tests: [] | |
| } | |
| { | |
| name: reset_recovery | |
| desc: ''' | |
| Pull reset at random times, make sure DUT recover/resets correctly and there is no residual data left in the registers.''' | |
| milestone: V2 | |
| tests: [] | |
| } | |
| { | |
| name: stress | |
| desc: ''' | |
| This will combine the other individual testpoints to ensure we stress test everything across the board.''' | |
| milestone: V2 | |
| tests: ["aes_stress"] | |
| } | |
| { | |
| name: deinitialization | |
| desc: ''' | |
| Make sure that there is no residual data from latest operation. ''' | |
| milestone: V2 | |
| tests: [] | |
| } | |
| ] | |
| } |