// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  name: "keymgr"
  import_testplans: ["hw/dv/tools/dvsim/testplans/csr_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/intr_test_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/alert_test_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/shadow_reg_errors_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/sec_cm_count_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/sec_cm_fsm_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/stress_all_with_reset_testplan.hjson",
                     "keymgr_sec_cm_testplan.hjson"]
  testpoints: [
    {
      name: smoke
      desc: '''
            Smoke test accessing a major datapath within the keymgr.
            Test operations (advance, gen-id and gen-sw-out) in every state

            Stimulus:
            - Go through state from `StReset` to `StDisabled`.
            - Issue gen-id, gen-sw-output operation in each state, including invalid operations in
              states other than normal operating states (`StCreatorRootKey`, `StOwnerIntKey` and
              `StOwnerRootKey`).
            - Randomize `CDI_SEL` and `DEST_SEL`.
            - Use default/fixed values for HW/SW inputs.

            Checks:
            - Check STATUS reg for each operation.
            - Check interrupts `op_done` is triggered when operation is done.
            - Check `err` and alert `recov_operation_err` are triggered after invalid operation.
            - Check KMAC key, KMAC data and output SW data for correctness.
            - For invalid operations, check KMAC key, KMAC data and output SW data don't match to
              any of saved meaningful data, which are collected from valid operations. This
              checking method is also applied to other error cases.
            '''
      stage: V1
      tests: ["keymgr_smoke"]
    }
    {
      name: random
      desc: '''
            Extend from smoke to randomize all SW input data
            - Fully randomize SW inputs: rom_ext_desc_*, software_binding_*, salt_*, max_*_key_ver,
              *_key_ver_regwen.
            - Randomize key_version any value less than max_*_key_ver, to avoid triggerring
              `invalid_kmac_input` error.
            - Fully randomize HW inputs from flash, otp and life cycle.
            - Randomize *sw_binding_regwen. Ensure this gates the *_sw_binding and it will
              be cleared after a successful advance operation.

            Most of other sequences are derived from this to have similar init and sequence.

            Stimulus and checks are the same as smoke.
            '''
      stage: V1
      tests: ["keymgr_random"]
    }
    {
      name: cfgen_during_op
      desc: '''
            `cfg_regwen` is RO reg and it gates bunch of write access of other registers, which is
            not tested in common CSR tests.

            Stimulus and checks:
            Test command and reg access gated by `cfg_regwen` is ignored during operation.
            '''
      stage: V2
      tests: ["keymgr_cfg_regwen"]
    }
    {
      name: sideload
      desc: '''
            Keymgr contains HW sideload interfaces to output keys for KMAC, AES, OTBN.

            Stimulus:
            - Generate a keymgr output to HW sideload interface, exercising all the sideload
              interfaces.
            - Randomly program any value to Sideload_clear after any operation.

            Checks:
            Verify the sideload data and status for correctness.
            '''
      stage: V2
      tests: ["keymgr_sideload", "keymgr_sideload_kmac",
              "keymgr_sideload_aes", "keymgr_sideload_otbn"]
    }
    {
      name: direct_to_disabled_state
      desc: '''
            Stimulus and checks:
            Directly go to `StDisabled` from any state and check `StDisabled` is entered correctly.
            '''
      stage: V2
      tests: ["keymgr_direct_to_disabled"]
    }
    {
      name: lc_disable
      desc: '''
            Life cycle can disable keymgr and let keymgr wipe secret immediately.

            Stimulus:
            Test life cycle disables keymgr in any state.

            Checks:
            - If keymgr is not initialized, check it can't be initialized until life cycle enables
              keymgr.
            - If keymgr is in a valid state after `StReset`, key output to KMAC is wiped immediately
              and SW output will be invalid after OP is done.
            - If keymgr in disabled state, check the behavior is consistent with normal behavior.
            '''
      stage: V2
      tests: ["keymgr_lc_disable"]
    }
    {
      name: kmac_error_response
      desc: '''
            Verify `keymgr` behavior on error response received from `KMAC` after sending data to
            it.

            Stimulus:
            - Drive error from KMAC interface when VALID is high.
            - Or drive all 0s or 1s as KMAC input digest data

            Checks:
            Same as above entry - "invalid_cmd".
            '''
      stage: V2
      tests: ["keymgr_kmac_rsp_err"]
    }
    {
      name: invalid_sw_input
      desc: '''
            Verify `keymgr` behavior with invalid key version.

            Stimulus:
            Randomize KEY_VERSION and MAX_*_VER registers.

            Checks:
            when KEY_VERSION > MAX_*_VER
            - Check interrupts `err` is triggered.
            - Check alert `recov_operation_err` is triggered and err_code is `INVALID_KMAC_INPUT`.
            - Check KMAC output key is corrupted and working state remains the same.
            '''
      stage: V2
      tests: ["keymgr_sw_invalid_input"]
    }
    {
      name: invalid_hw_input
      desc: '''
            Verify `keymgr` behavior with invalid data patterns.

            Stimulus:
            - Drive all 0s or 1s on any of these inputs - flash seeds, otp_key, diversification ID,
            Rom digest etc.
            - Make sure all cases are covered in `csr_debug_cg`.

            Checks:
            - Check interrupts `err` is triggered.
            - Check alert `recov_operation_err` is triggered and err_code is `INVALID_KMAC_DATA`.
            - Check SW output isn't updated and working state remains the same.
            '''
      stage: V2
      tests: ["keymgr_hwsw_invalid_input"]
    }
    {
      name: sync_async_fault_cross
      desc: '''
            Verify `keymgr` behavior with invalid data patterns.

            Stimulus:
            Create these 2 direct tests:
            - Sync (transactional) fault occurs followed by async (non-transactional) fault.
            - Async (non-transactional) fault occurs followed by sync (transactional) fault.

            Checks:
            - Check interrupts `err` is triggered.
            - Check alert `fatal_fault_err` is triggered.
            - Check `fault_status` is updated correctly.
            '''
      stage: V2
      tests: ["keymgr_sync_async_fault_cross"]
    }
    {
      name: stress_all
      desc: '''
            - Combine above sequences in one test to run sequentially, except csr sequence and
              keymgr_cfg_regwen (requires zero_delays).
            - Randomly add reset between each sequence.
            '''
      stage: V2
      tests: ["keymgr_stress_all"]
    }
    {
      name: sec_cm_additional_check
      desc: '''
            Verify the outcome of injecting faults to security countermeasures.

            Stimulus:
            As mentioned in `prim_count_check`, `prim_one_hot_check` and `prim_fsm_check`.

            Checks:
            - Besides checking alert and `fault_status`, issue an operation after injecting faults,
              then ensure that `op_status` is failed and design enters `StInvalid`.
            '''
      stage: V2S
      tests: ["keymgr_sec_cm"]
    }
  ]
  covergroups: [
    {
      name: state_and_op_cg
      desc: '''
            - Cover all operations with `cdi_sel`, `dest_sel` and `op_status` (only fail or success)
            at any of all working_states.
            - This is sampled once an operation is done.'''
    }
    {
      name: lc_disable_cg
      desc: '''
             - Cover LC disable occurs at any of all the states or during any of all the
             operations.
             - This is sampled once LC disables keymgr.'''
    }
    {
      name: sideload_clear_cg
      desc: '''
            - Cover all the `sideload_clear` values are used after any of all the operations and in
            any of all the states.
            - Cover `sideload_clear` with any combination of availability of 3 sideload interfaces.
            - This is sampled once sideload_clear is programmed after an operation.'''
    }
    {
      name: reseed_interval_cg
      desc: '''
            - Cover small values of reseed_interval are used, so that TB can actually check EDN
              request is sent in the right interval.
            - Also Cover some large values to ensure all bits are toggled.'''
    }
    {
      name: keymgr_sw_input_cg
      desc: '''
            - Cover all bits of SW inputs are toggled.
            - SW input includes these CSRS: `*_sw_binding`, `salt`, `key_version`, `max_*_key_ver*`.
            - Cross with the corresponding regwen.'''
    }
    {
      name: err_code_cg
      desc: '''
            - Cover `err_codes` values except `invalid_shadow_update` as that is tested in a common
              direct test.
            - This is sampled when `err_codes` is read.'''
    }
    {
      name: hw_invalid_input_cg
      desc: '''
            Cover all HW invalid inputs, including
            - all ones/zeros on OTP root key.
            - OTP root key valid is low.
            - all ones/zeros on LC keymgr health state.
            - all ones/zeros on ROM degist.
            - ROM degist valid is low.
            - all ones/zeros on flash creator seeds.
            - all ones/zeros on flash owner seeds.'''
    }
    {
      name: key_version_compare_cg
      desc: '''
            - Cover comparison results (equal, less, greater) of key_version and current max value.
            - Cross with state and operation (gen-sw-out or gen-hw-out).'''
    }
    {
      name: fault_status_cg
      desc: '''
            - Cover `fault_status` values except `REGFILE_INTG` and `SHADOW` as they are tested in
              a common direct test.
            - This is sampled when `fault_status` is read.'''
    }
    {
      name: sync_async_fault_cross_cg
      desc: '''
            - Cover sync and async fault cross with each other, including 2 cases - sync fault
              occurs first and async fault occurs first.
            - This is sampled after `fault_status` is read in the sequence.'''
    }
  ]
}
