blob: 8b0327e325c15c0a542b0e4ac1c5aaf2cd01c4c4 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// This batch cfg script contains IPs that already have a DV testbench.
// FPV only verifies the security countermeasure assertions.
// So this batch cfg file does not collect FPV coverage.
{
flow: formal
sub_flow: fpv
name: top_earlgrey_sec_cm_fpv
import_cfgs: [// common server configuration for results upload
"{proj_root}/hw/data/common_project_cfg.hjson"]
rel_path: "hw/top_earlgrey/formal/sec_cm/summary"
cov: false
use_cfgs: [
{
name: aes_masked_sec_cm
dut: aes
fusesoc_core: lowrisc:dv:aes_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/aes/masking/{sub_flow}/{tool}"
defines: "EN_MASKING=1"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: aes_unmasked_sec_cm
dut: aes
fusesoc_core: lowrisc:dv:aes_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/aes/unmasked/{sub_flow}/{tool}"
defines: "EN_MASKING=0"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: alert_handler_sec_cm
dut: alert_handler
fusesoc_core: lowrisc:opentitan:top_earlgrey_alert_handler_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/top_earlgrey/ip_autogen/alert_handler/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: clkmgr_sec_cm
dut: clkmgr
fusesoc_core: lowrisc:dv:clkmgr_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/clkmgr/{sub_flow}/{tool}"
task: "FpvSecCm"
}
{
name: csrng_sec_cm
dut: csrng
fusesoc_core: lowrisc:dv:csrng_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/csrng/{sub_flow}/{tool}"
stopats: ["*u_*state_regs.state_o"]
task: "FpvSecCm"
}
{
name: edn_sec_cm
dut: edn
fusesoc_core: lowrisc:dv:edn_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/edn/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: entropy_src_sec_cm
dut: entropy_src
fusesoc_core: lowrisc:dv:entropy_src_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/entropy_src/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: flash_ctrl_sec_cm
dut: flash_ctrl
fusesoc_core: lowrisc:dv:flash_ctrl_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/flash_ctrl/{sub_flow}/{tool}"
overrides: [
{
name: design_level
value: "top"
}
]
stopats: ["*u_state_regs.state_o", "*u_rma_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: keymgr_sec_cm
dut: keymgr
fusesoc_core: lowrisc:dv:keymgr_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/keymgr/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: kmac_sec_cm
dut: kmac
fusesoc_core: lowrisc:dv:kmac_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/kmac/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: lc_ctrl_sec_cm
dut: lc_ctrl
fusesoc_core: lowrisc:dv:lc_ctrl_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/lc_ctrl/{sub_flow}/{tool}"
stopats: ["*u_lc_ctrl_fsm.u_fsm_state_regs.state_o",
"*u_lc_ctrl_fsm.u_state_regs.state_o",
"*u_lc_ctrl_fsm.u_cnt_regs.state_o",
"*u_lc_ctrl_kmac_if.u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: otp_ctrl_sec_cm
dut: otp_ctrl
fusesoc_core: lowrisc:dv:otp_ctrl_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/otp_ctrl/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: otbn_sec_cm
dut: otbn
fusesoc_core: lowrisc:dv:otbn_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/otbn/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: pwrmgr_sec_cm
dut: pwrmgr
fusesoc_core: lowrisc:dv:pwrmgr_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/pwrmgr/{sub_flow}/{tool}"
overrides: [
{
name: design_level
value: "top"
}
]
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: rom_ctrl_sec_cm
dut: rom_ctrl
fusesoc_core: lowrisc:dv:rom_ctrl_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/rom_ctrl/{sub_flow}/{tool}"
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: rstmgr_sec_cm
dut: rstmgr
fusesoc_core: lowrisc:dv:rstmgr_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/rstmgr/{sub_flow}/{tool}"
overrides: [
{
name: design_level
value: "top"
}
]
stopats: ["*u_state_regs.state_o"]
task: "FpvSecCm"
}
{
name: rv_core_ibex_sec_cm
dut: rv_core_ibex
fusesoc_core: lowrisc:dv:rv_core_ibex_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/otbn/{sub_flow}/{tool}"
stopats: ["*if_stage_i.pc_mismatch_alert_o",
"*icache_i.ecc_error_o",
"*gen_regfile_ecc.rf_ecc_err_a",
"*gen_regfile_ecc.rf_ecc_err_b"]
task: "FpvSecCm"
}
{
name: sram_ctrl_sec_cm
dut: sram_ctrl
fusesoc_core: lowrisc:dv:sram_ctrl_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/sram_ctrl/{sub_flow}/{tool}"
task: "FpvSecCm"
stopats: ["*u_state_regs.state_o"]
}
// These IPs do not have a block level DV testbench, so use FPV to verify common
// one-hot security countermeasure.
{
name: pinmux_sec_cm
dut: pinmux
fusesoc_core: lowrisc:ip:pinmux
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/top_earlgrey/ip/pinmux/{sub_flow}/{tool}/sec_cm"
task: "FpvSecCm"
overrides: [
{
name: design_level
value: "top"
}
]
}
{
name: rv_plic_sec_cm
dut: rv_plic
fusesoc_core: lowrisc:opentitan:top_earlgrey_rv_plic_fpv
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/top_earlgrey/ip/rv_plic/{sub_flow}/{tool}/sec_cm"
task: "FpvSecCm"
overrides: [
{
name: design_level
value: "top"
}
]
}
// Other non-standard countermeasure checks.
//
// This testbench verifies once LC_CTRL goes to terminal state, there is no way to
// revert back to functional states.
{
name: lc_ctrl_sec_cm_fsm
dut: lc_ctrl_fsm
fusesoc_core: lowrisc:ip:lc_ctrl
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/lc_ctrl/fsm/{sub_flow}/{tool}"
}
// This testbench verifies once keymgr goes to terminal state, there is no way to
// revert back to functional states.
{
name: keymgr_sec_cm_fsm
dut: keymgr_ctrl
fusesoc_core: lowrisc:ip:keymgr
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/keymgr/fsm/{sub_flow}/{tool}"
cov: false
}
// This testbench verifies once esc request is received, it should always trigger a
// reset request.
{
name: pwrmgr_esc_unstoppable
dut: pwrmgr
fusesoc_core: lowrisc:dv:pwrmgr_sva
import_cfgs: ["{proj_root}/hw/formal/tools/dvsim/common_fpv_cfg.hjson"]
rel_path: "hw/ip/pwrmgr/{sub_flow}/{tool}"
overrides: [
{
name: design_level
value: "top"
}
]
task: "PwrmgrSecCmEsc"
}
]
}