// 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/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: sanity
      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_sanity"]
    }
    {
      name: algorithm
      desc: '''
           Compare cypher text from DUT with the output of a C model using same key and data.'''
           milestone: V2
      tests: ["aes_sanity", "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_sanity", "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_sanity", "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: []
    }
  ]
}
