blob: 60ef257c600c6ef4f9963171ad1ff4a22da1562c [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
// Name of the sim cfg - typically same as the name of the DUT.
name: aes
// Top level dut name (sv module).
dut: aes
// Top level testbench name (sv module).
tb: tb
// Simulator used to sign off this block
tool: xcelium
// Fusesoc core file used for building the file list.
fusesoc_core: lowrisc:dv:aes_sim:0.1
// Testplan hjson file.
testplan: "{proj_root}/hw/ip/aes/data/aes_testplan.hjson"
// RAL spec - used to generate the RAL model.
ral_spec: "{proj_root}/hw/ip/aes/data/aes.hjson"
// Import additional common sim cfg files.
import_cfgs: [// Project wide common sim cfg file
"{proj_root}/hw/dv/tools/dvsim/common_sim_cfg.hjson",
// Enable C compilation of AES model for DPI-C
"{proj_root}/hw/ip/aes/model/aes_model_sim_opts.hjson",
// Common CIP test lists
"{proj_root}/hw/dv/tools/dvsim/tests/alert_test.hjson",
"{proj_root}/hw/dv/tools/dvsim/tests/csr_tests.hjson",
"{proj_root}/hw/dv/tools/dvsim/tests/shadow_reg_errors_tests.hjson",
"{proj_root}/hw/dv/tools/dvsim/tests/tl_access_tests.hjson",
"{proj_root}/hw/dv/tools/dvsim/tests/sec_cm_tests.hjson"]
// TODO: enable stress tests later.
// "{proj_root}/hw/dv/tools/dvsim/tests/stress_tests.hjson"]
// Add additional tops for simulation.
sim_tops: [ "aes_bind",
"aes_cov_bind",
"sec_cm_prim_sparse_fsm_flop_bind",
"sec_cm_prim_onehot_check_bind",
"aes_err_injection_bind"]
xcelium_cov_refine_files: []
// Default iterations for all tests - each test entry can override this.
reseed: 50
// Need to override the default output directory
overrides: [
{
name: scratch_path
value: "{scratch_base_path}/{name}_{variant}-{flow}-{tool}"
}
{
name: rel_path
value: "hw/ip/{name}_{variant}/dv"
}
]
build_modes: [
{
name: aes_unmasked
build_opts: ["+define+EN_MASKING=0",
"+define+SBOX_IMPL=aes_pkg::SBoxImplCanright" ]
}
{
name: aes_masked
build_opts: ["+define+EN_MASKING=1",
"+define+SBOX_IMPL=aes_pkg::SBoxImplDom" ]
}
]
// Default UVM test and seq class name.
uvm_test: aes_base_test
uvm_test_seq: aes_wake_up_vseq
// Update all builds to add options specific to AES C model compilation.
en_build_modes: ["{tool}_aes_model_build_opts"]
component_a: "uvm_test_top.env.scoreboard"
id_a: _ALL_
verbosity_a: UVM_MEDIUM
phase_a: run
run_modes: [
{
name: set_verbosity_comp_a_uvm_debug
run_opts: ["+uvm_set_verbosity={component_a},{id_a},{verbosity_a},{phase_a}"]
}
]
run_opts: ["+uvm_set_verbosity={component_a},{id_a},{verbosity_a},{phase_a}"]
// List of test specifications.
tests: [
{
name: aes_wake_up
uvm_test: aes_wake_up_test
uvm_test_seq: aes_wake_up_vseq
reseed: 1
}
{
name: aes_nist_vectors
uvm_test: aes_wake_up_test
uvm_test_seq: aes_nist_vectors_vseq
reseed: 1
}
{
name: aes_smoke
uvm_test: aes_smoke_test
uvm_test_seq: aes_stress_vseq
}
{
name: aes_config_error
uvm_test: aes_config_error_test
uvm_test_seq: aes_stress_vseq
}
{
name: aes_stress
uvm_test: aes_stress_test
uvm_test_seq: aes_stress_vseq
}
{
name: aes_b2b
uvm_test: aes_b2b_test
uvm_test_seq: aes_stress_vseq
}
{
name: aes_clear
uvm_test: aes_clear_test
uvm_test_seq: aes_stress_vseq
}
{
name: aes_alert_reset
uvm_test: aes_alert_reset_test
uvm_test_seq: aes_alert_reset_vseq
}
{
name: aes_sideload
uvm_test: aes_sideload_test
uvm_test_seq: aes_stress_vseq
}
{
name: aes_deinit
uvm_test: aes_deinit_test
uvm_test_seq: aes_deinit_vseq
}
{
name: aes_man_cfg_err
uvm_test: aes_manual_config_err_test
uvm_test_seq: aes_manual_config_err_vseq
}
{
name: aes_reseed
uvm_test: aes_reseed_test
uvm_test_seq: aes_reseed_vseq
}
{
name: aes_fi
uvm_test: aes_alert_reset_test
uvm_test_seq: aes_fi_vseq
}
{
name: aes_control_fi
uvm_test: aes_fi_test
uvm_test_seq: aes_control_fi_vseq
reseed: 300 // Test must cover 150 bins. Overseed by 2x to get reasonable coverage.
run_timeout_mins: 1 // Short test; if not done within 1 min, something's wrong.
}
{
name: aes_cipher_fi
uvm_test: aes_fi_test
uvm_test_seq: aes_cipher_fi_vseq
reseed: 350 // Test must cover 175 bins. Overseed by 2x to get reasonable coverage.
run_timeout_mins: 1 // Short test; if not done within 1 min, something's wrong.
}
{
name: aes_ctr_fi
uvm_test: aes_fi_test
uvm_test_seq: aes_ctr_fi_vseq
run_timeout_mins: 1 // Short test; if not done within 1 min, something's wrong.
}
{
name: aes_core_fi
uvm_test: aes_fi_test
uvm_test_seq: aes_core_fi_vseq
reseed: 70 // Test must cover 35 bins. Overseed by 2x to get reasonable coverage.
}
{
name: aes_readability
uvm_test: aes_fi_test
uvm_test_seq: aes_readability_vseq
}
]
// List of regressions.
regressions: [
{
name: smoke
tests: ["aes_smoke"]
}
{
name: failure
tests: ["aes_config_error", "aes_alert_reset"]
}
{
name: stress
tests: ["aes_stress","aes_b2b", "aes_clear", "aes_config_error", "aes_smoke",
"aes_alert_reset"]
}
]
}