| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| // Security countermeasures testplan extracted from the IP Hjson using reggen. |
| // |
| // This testplan is auto-generated only the first time it is created. This is |
| // because this testplan needs to be hand-editable. It is possible that these |
| // testpoints can go out of date if the spec is updated with new |
| // countermeasures. When `reggen` is invoked when this testplan already exists, |
| // It checks if the list of testpoints is up-to-date and enforces the user to |
| // make further manual updates. |
| // |
| // These countermeasures and their descriptions can be found here: |
| // .../otp_ctrl/data/otp_ctrl.hjson |
| // |
| // It is possible that the testing of some of these countermeasures may already |
| // be covered as a testpoint in a different testplan. This duplication is ok - |
| // the test would have likely already been developed. We simply map those tests |
| // to the testpoints below using the `tests` key. |
| // |
| // Please ensure that this testplan is imported in: |
| // .../otp_ctrl/data/otp_ctrl_testplan.hjson |
| { |
| testpoints: [ |
| { |
| name: sec_cm_bus_integrity |
| desc: "Verify the countermeasure(s) BUS.INTEGRITY." |
| stage: V2S |
| tests: ["otp_ctrl_tl_intg_err"] |
| } |
| { |
| name: sec_cm_secret_mem_scramble |
| desc: "Verify the countermeasure(s) SECRET.MEM.SCRAMBLE." |
| stage: V2S |
| tests: ["otp_ctrl_smoke"] |
| } |
| { |
| name: sec_cm_part_mem_digest |
| desc: "Verify the countermeasure(s) PART.MEM.DIGEST." |
| stage: V2S |
| tests: ["otp_ctrl_smoke"] |
| } |
| { |
| name: sec_cm_dai_fsm_sparse |
| desc: "Verify the countermeasure(s) DAI.FSM.SPARSE." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_kdi_fsm_sparse |
| desc: "Verify the countermeasure(s) KDI.FSM.SPARSE." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_lci_fsm_sparse |
| desc: "Verify the countermeasure(s) LCI.FSM.SPARSE." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_part_fsm_sparse |
| desc: "Verify the countermeasure(s) PART.FSM.SPARSE." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_scrmbl_fsm_sparse |
| desc: "Verify the countermeasure(s) SCRMBL.FSM.SPARSE." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_timer_fsm_sparse |
| desc: "Verify the countermeasure(s) TIMER.FSM.SPARSE." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_dai_ctr_redun |
| desc: "Verify the countermeasure(s) DAI.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_kdi_seed_ctr_redun |
| desc: "Verify the countermeasure(s) KDI_SEED.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_kdi_entropy_ctr_redun |
| desc: "Verify the countermeasure(s) KDI_ENTROPY.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_lci_ctr_redun |
| desc: "Verify the countermeasure(s) LCI.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_part_ctr_redun |
| desc: "Verify the countermeasure(s) PART.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_scrmbl_ctr_redun |
| desc: "Verify the countermeasure(s) SCRMBL.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_timer_integ_ctr_redun |
| desc: "Verify the countermeasure(s) TIMER_INTEG.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_timer_cnsty_ctr_redun |
| desc: "Verify the countermeasure(s) TIMER_CNSTY.CTR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_timer_lfsr_redun |
| desc: "Verify the countermeasure(s) TIMER.LFSR.REDUN." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_dai_fsm_local_esc |
| desc: "Verify the countermeasure(s) DAI.FSM.LOCAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc", "otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_lci_fsm_local_esc |
| desc: "Verify the countermeasure(s) LCI.FSM.LOCAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc"] |
| } |
| { |
| name: sec_cm_kdi_fsm_local_esc |
| desc: "Verify the countermeasure(s) KDI.FSM.LOCAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc"] |
| } |
| { |
| name: sec_cm_part_fsm_local_esc |
| desc: "Verify the countermeasure(s) PART.FSM.LOCAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc", "otp_ctrl_macro_errs"] |
| } |
| { |
| name: sec_cm_scrmbl_fsm_local_esc |
| desc: "Verify the countermeasure(s) SCRMBL.FSM.LOCAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc"] |
| } |
| { |
| name: sec_cm_timer_fsm_local_esc |
| desc: "Verify the countermeasure(s) TIMER.FSM.LOCAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc", "otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_dai_fsm_global_esc |
| desc: "Verify the countermeasure(s) DAI.FSM.GLOBAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc", "otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_lci_fsm_global_esc |
| desc: "Verify the countermeasure(s) LCI.FSM.GLOBAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc"] |
| } |
| { |
| name: sec_cm_kdi_fsm_global_esc |
| desc: "Verify the countermeasure(s) KDI.FSM.GLOBAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc"] |
| } |
| { |
| name: sec_cm_part_fsm_global_esc |
| desc: "Verify the countermeasure(s) PART.FSM.GLOBAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc", "otp_ctrl_macro_errs"] |
| } |
| { |
| name: sec_cm_scrmbl_fsm_global_esc |
| desc: "Verify the countermeasure(s) SCRMBL.FSM.GLOBAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc"] |
| } |
| { |
| name: sec_cm_timer_fsm_global_esc |
| desc: "Verify the countermeasure(s) TIMER.FSM.GLOBAL_ESC." |
| stage: V2S |
| tests: ["otp_ctrl_parallel_lc_esc", "otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_part_data_reg_integrity |
| desc: "Verify the countermeasure(s) PART.DATA_REG.INTEGRITY." |
| stage: V2S |
| tests: ["otp_ctrl_init_fail"] |
| } |
| { |
| name: sec_cm_part_data_reg_bkgn_chk |
| desc: "Verify the countermeasure(s) PART.DATA_REG.BKGN_CHK." |
| stage: V2S |
| tests: ["otp_ctrl_check_fail"] |
| } |
| { |
| name: sec_cm_part_mem_regren |
| desc: "Verify the countermeasure(s) PART.MEM.REGREN." |
| stage: V2S |
| tests: ["otp_ctrl_dai_lock"] |
| } |
| { |
| name: sec_cm_part_mem_sw_unreadable |
| desc: "Verify the countermeasure(s) PART.MEM.SW_UNREADABLE." |
| stage: V2S |
| tests: ["otp_ctrl_dai_lock"] |
| } |
| { |
| name: sec_cm_part_mem_sw_unwritable |
| desc: "Verify the countermeasure(s) PART.MEM.SW_UNWRITABLE." |
| stage: V2S |
| tests: ["otp_ctrl_dai_lock"] |
| } |
| { |
| name: sec_cm_lc_part_mem_sw_noaccess |
| desc: "Verify the countermeasure(s) LC_PART.MEM.SW_NOACCESS." |
| stage: V2S |
| tests: ["otp_ctrl_dai_lock"] |
| } |
| { |
| name: sec_cm_access_ctrl_mubi |
| desc: "Verify the countermeasure(s) ACCESS.CTRL.MUBI." |
| stage: V2S |
| tests: ["otp_ctrl_dai_lock"] |
| } |
| { |
| name: sec_cm_token_valid_ctrl_mubi |
| desc: "Verify the countermeasure(s) TOKEN_VALID.CTRL.MUBI." |
| stage: V2S |
| tests: ["otp_ctrl_smoke"] |
| } |
| { |
| name: sec_cm_lc_ctrl_intersig_mubi |
| desc: "Verify the countermeasure(s) LC_CTRL.INTERSIG.MUBI." |
| stage: V2S |
| tests: ["otp_ctrl_dai_lock"] |
| } |
| { |
| name: sec_cm_test_bus_lc_gated |
| desc: "Verify the countermeasure(s) TEST.BUS.LC_GATED." |
| stage: V2S |
| tests: ["otp_ctrl_smoke"] |
| } |
| { |
| name: sec_cm_test_tl_lc_gate_fsm_sparse |
| desc: "Verify the countermeasure(s) TEST_TL_LC_GATE.FSM.SPARSE." |
| stage: V2S |
| tests: ["otp_ctrl_sec_cm"] |
| } |
| { |
| name: sec_cm_direct_access_config_regwen |
| desc: "Verify the countermeasure(s) DIRECT_ACCESS.CONFIG.REGWEN." |
| stage: V2S |
| tests: ["otp_ctrl_regwen"] |
| } |
| { |
| name: sec_cm_check_trigger_config_regwen |
| desc: "Verify the countermeasure(s) CHECK_TRIGGER.CONFIG.REGWEN." |
| stage: V2S |
| tests: ["otp_ctrl_smoke"] |
| } |
| { |
| name: sec_cm_check_config_regwen |
| desc: "Verify the countermeasure(s) CHECK.CONFIG.REGWEN." |
| stage: V2S |
| tests: ["otp_ctrl_smoke"] |
| } |
| { |
| name: sec_cm_macro_mem_integrity |
| desc: "Verify the countermeasure(s) MACRO.MEM.INTEGRITY." |
| stage: V2S |
| tests: ["otp_ctrl_macro_errs"] |
| } |
| { |
| name: sec_cm_macro_mem_cm |
| desc: "Verify the countermeasure(s) MACRO.MEM.CM." |
| stage: V2S |
| tests: ["N/A"] |
| } |
| ] |
| } |