diff --git a/.github/workflows/interactive-debugging.yml b/.github/workflows/interactive-debugging.yml
index 570323a50..8415e094d 100644
--- a/.github/workflows/interactive-debugging.yml
+++ b/.github/workflows/interactive-debugging.yml
@@ -315,3 +315,19 @@ jobs:
${CALIPTRA_ROOT}/.github/scripts/openocd_test.sh \
-f board/caliptra-verilator-rst.cfg \
-f ${CALIPTRA_ROOT}/src/integration/test_suites/infinite_loop/peripheral_access.tcl
+
+ - name: Build Verilated simulation
+ run: |
+ export CALIPTRA_ROOT=$(pwd)
+ rm -rf run/*
+ make -C run -f ${CALIPTRA_ROOT}/tools/scripts/Makefile verilator-build TESTNAME=infinite_loop DEBUG_UNLOCKED=1 \
+ OBJCACHE="" CC=gcc CXX=g++ LINK=g++
+ make -C run -f ${CALIPTRA_ROOT}/tools/scripts/Makefile program.hex TESTNAME=infinite_loop
+
+ - name: Test JTAG access with clock gating
+ run: |
+ export CALIPTRA_ROOT=$(pwd)
+ cd run
+ ${CALIPTRA_ROOT}/.github/scripts/openocd_test.sh \
+ -f board/caliptra-verilator.cfg \
+ -f ${CALIPTRA_ROOT}/src/integration/test_suites/infinite_loop/jtag_cg.tcl
diff --git a/README.md b/README.md
index 5b5ade8f8..3c86dc341 100644
--- a/README.md
+++ b/README.md
@@ -41,8 +41,8 @@ Simulation:
- `2022.3`
Synthesis:
- - Synopsys DC
- - `Version 2020.09-SP1`
+ - Synopsys Fusion Compiler
+ - `Version 2022.12-SP3`
GCC:
- RISCV Toolchain for generating memory initialization files
@@ -55,7 +55,7 @@ Other:
- Playbook (Microsoft Internal workflow management tool)
### **RISCV Toolchain installation** ###
-Note that there is significant configurability when installing the RISCV toolchain.
+There is significant configurability when installing the RISCV toolchain.
These instructions may be used to create a RISCV installation that will be compatible
with the provided Makefile for compiling test C programs.
@@ -74,7 +74,7 @@ Required for simulation:
`CALIPTRA_ROOT`: Defines the absolute path to the Project repository root (called "Caliptra" or "caliptra-rtl"). Recommended to define as `${CALIPTRA_WORKSPACE}/Caliptra`.
Required for Firmware (i.e. Test suites) makefile:
- `TESTNAME`: Contains the name of one of the tests listed inside the `src/integration/test_suites` folder
+ `TESTNAME`: Contains the name of one of the tests listed inside the `src/integration/test_suites` folder; only used for `caliptra_top_tb` tests
## **Repository Overview** ##
```
@@ -143,20 +143,28 @@ Verilog file lists are generated via VCS and included in the config directory fo
## **Simulation Flow** ##
-### VCS Steps: ###
+### Caliptra Top VCS Steps: ###
1. Setup tools, add to PATH (ensure riscv64-unknown-elf-gcc is also available)
2. Define all environment variables above
- For the initial test run after downloading repository, `iccm_lock` is recommended for TESTNAME
- See [Regression Tests](#Regression-Tests) for information about available tests.
3. Create a run folder for build outputs (and cd to it)
-4. [OPTIONAL] By default, this run flow will use the riscv64 toolchain to compile test firmware (according to TESTNAME) into program.hex, iccm.hex, dccm.hex, and mailbox.hex. As a first pass, integrators may alternatively use the pre-built hexfiles for convenience (available for `iccm_lock` test). To do this, copy `iccm_lock.hex` to the run directory and rename to `program.hex`. `dccm.hex` should also be copied to the run directory, as-is. Use `touch iccm.hex mailbox.hex` to create empty hex files, as these are unnecessary for `iccm_lock` test.
+4. [OPTIONAL] By default, this run flow will use the riscv64 toolchain to compile test firmware (according to TESTNAME) into program.hex, iccm.hex, dccm.hex, and mailbox.hex. As a first pass, integrators may alternatively use the pre-built hexfiles for convenience (available for [iccm_lock](src/integration/test_suites/iccm_lock) test). To do this, copy [iccm_lock.hex](src/integration/test_suites/iccm_lock/iccm_lock.hex) to the run directory and rename to `program.hex`. [dccm.hex](src/integration/test_suites/iccm_lock/iccm_lock.hex) should also be copied to the run directory, as-is. Use `touch iccm.hex mailbox.hex` to create empty hex files, as these are unnecessary for `iccm_lock` test.
5. Invoke `${CALIPTRA_ROOT}/tools/scripts/Makefile` with target 'program.hex' to produce SRAM initialization files from the firmware found in `src/integration/test_suites/${TESTNAME}`
- E.g.: `make -f ${CALIPTRA_ROOT}/tools/scripts/Makefile program.hex`
- NOTE: TESTNAME may also be overridden in the makefile command line invocation, e.g. `make -f ${CALIPTRA_ROOT}/tools/scripts/Makefile TESTNAME=iccm_lock program.hex`
6. Compile complete project using `src/integration/config/caliptra_top_tb.vf` as a compilation target in VCS. When running the `vcs` command to generate simv, users should ensure that `caliptra_top_tb` is explicitly specified as the top-level component in their command to ensure this is the sole "top" that gets simulated.
-7. Simulate project with `caliptra_top_tb` as the top target
+7. Copy the test generator scripts to the run output directory:
+ - [src/ecc/tb/ecdsa_secp384r1.exe](src/ecc/tb/ecdsa_secp384r1.exe)
+ * Necessary for [randomized_pcr_signing](src/integration/test_suites/randomized_pcr_signing)
+ * OPTIONAL otherwise
+ - [src/doe/tb/doe_test_gen.py](src/doe/tb/doe_test_gen.py)
+ * Allows use of randomized secret field inputs during testing.
+ * Required when using the `+RAND_DOE_VALUES` plusarg during simulation
+ * Also required for several smoke tests that require randomized DOE IV, such as smoke_test_doe_scan, smoke_test_doe_rand, smoke_test_doe_cg
+8. Simulate project with `caliptra_top_tb` as the top target
-### Verilator Steps: ###
+### Caliptra Top Verilator Steps: ###
1. Setup tools, add to PATH (ensure Verilator, GCC, and riscv64-unknown-elf-gcc are available)
2. Define all environment variables above
- For the initial test run after downloading repository, `iccm_lock` is recommended for TESTNAME
@@ -178,6 +186,18 @@ Verilog file lists are generated via VCS and included in the config directory fo
3. NOTE: The script automatically creates run output folders at `${CALIPTRA_WORKSPACE}/scratch/$USER/verilator//` for each test run
4. NOTE: The output folder is populated with a run log that reports the run results and pass/fail status
+### Unit Test VCS Steps: ###
+1. Setup tools, add to PATH
+1. Define all environment variables above
+1. Create a run folder for build outputs (and cd to it)
+1. Compile complete project using `src//config/_tb.vf` as a compilation target in VCS. When running the `vcs` command to generate simv, users should ensure that `_tb` is explicitly specified as the top-level component in their command to ensure this is the sole "top" that gets simulated.
+1. Copy the test generator scripts or test vectors to the run output directory:
+ - [src/ecc/tb/test_vectors/mm_test_vectors\*.hex](src/ecc/tb/test_vectors)
+ * Necessary for [ecc_montgomerymultiplier_tb](src/ecc/tb/ecc_montgomerymultiplier_tb.sv)
+ - [src/sha256/tb/sha256_test_gen.py](src/sha256/tb/sha256_test_gen.py)
+ * Necessary for [sha256_random_test](src/sha256/tb/sha256_random_test.sv)
+1. Simulate project with `_tb` as the top target
+
### UVM Testbench Steps for `caliptra_top`:
**Description**:
@@ -195,15 +215,54 @@ Steps:
1. Compile the UVMF wrapper for APB/AHB in Caliptra/src/libs/uvmf
1. Compile the `verification_ip` provided for `soc_ifc` found in `Caliptra/src/soc_ifc/uvmf_soc_ifc`
1. Compile the `caliptra_top` testbench found in `Caliptra/src/integration/uvmf_caliptra_top`
-1. `Caliptra/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv` is the top-level TB wrapper for the system
+1. ALL compilation steps may be completed by using the file-list found at `src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top.vf`
+1. NOTE: `Caliptra/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv` is the top-level TB wrapper for the system
1. Compile the validation firmware (as described in [Regression Tests](#Regression-Tests)) that will run on Caliptra's embedded RISC-V core
- The expected output products are `program.hex`, `caliptra_fmc.hex`, `caliptra_rt.hex` and must be placed in the simulation run directory
- `make -f ${CALIPTRA_ROOT}/tools/scripts/Makefile TESTNAME=caliptra_top program.hex`
- `make -f ${CALIPTRA_ROOT}/tools/scripts/Makefile TESTNAME=caliptra_fmc caliptra_fmc.hex`
- `make -f ${CALIPTRA_ROOT}/tools/scripts/Makefile TESTNAME=caliptra_rt caliptra_rt.hex`
+1. Copy the test vectors to the run output directory:
+ - [src/sha512/tb/vectors/SHA\*.rsp](src/sha512/tb/vectors/)
+ * Required for SHA512 UVM unittest
1. Select a test to run from the set of tests in `Caliptra/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/tests/src`
1. Provide `+UVM_TESTNAME=` argument to simulation
+### UVM Unit Test Steps:
+
+**Description**:
+The UVM Framework generation tool was used to create the baseline UVM testbench for verification of each IP component inside Caliptra. The following IP blocks have supported UVM testbenches:
+- [ECC](src/ecc/uvmf_ecc)
+- [HMAC](src/hmac/uvmf_2022)
+- [SHA512](src/sha512/uvmf_sha512)
+- [KeyVault](src/keyvault/uvmf_kv)
+- [PCRVault](src/pcrvault/uvmf_pv)
+- [SOC_IFC](src/soc_ifc/uvmf_soc_ifc)
+
+**Prerequisites**:
+- QVIP 2021.2.1 for Mentor Graphics (provides the AHB/APB VIP)
+- UVM 1.1d installation
+- Mentor Graphics UVM-Framework installation
+
+Steps:
+1. Compile UVM 1.1d library
+1. Compile the AHB/APB QVIP source
+1. Compile the Mentor Graphics UVM-Frameworks base library
+1. Compile the UVMF wrapper for APB/AHB in Caliptra/src/libs/uvmf
+1. Compile the `verification_ip` provided for the target testbench
+1. ALL compilation steps may be completed by using the file-list found at `src//uvmf_/config/.vf`
+1. NOTE: `Caliptra/src//uvmf_/uvmf_template_output/project_benches//tb/testbench/hdl_top.sv` is the top-level TB wrapper for the system
+1. Copy the test generator scripts to the run output directory:
+ - [src/ecc/tb/ecdsa_secp384r1.exe](src/ecc/tb/ecdsa_secp384r1.exe)
+ * Necessary for ECC unittest
+ - [src/hmac/tb/test_gen.py](src/hmac/tb/test_gen.py)
+ * Required for uvmf_hmac unittest
+ - [src/sha512/tb/vectors/SHA\*.rsp](src/sha512/tb/vectors/)
+ * Required for SHA512 UVM unittest
+1. Select a test to run from the set of tests in `Caliptra/src//uvmf_/uvmf_template_output/project_benches//tb/tests/src`
+1. Provide `+UVM_TESTNAME=` argument to simulation
+
+
## **Regression Tests** ##
### Standalone SystemVerilog Testbench Regression ###
diff --git a/src/aes/config/aes.vf b/src/aes/config/aes.vf
index 97ae18b1e..9592049a5 100644
--- a/src/aes/config/aes.vf
+++ b/src/aes/config/aes.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
diff --git a/src/aes/config/aes_pkg.vf b/src/aes/config/aes_pkg.vf
index 4ae176a70..5c75eb1af 100644
--- a/src/aes/config/aes_pkg.vf
+++ b/src/aes/config/aes_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
diff --git a/src/ahb_lite_bus/config/ahb_lite_bus.vf b/src/ahb_lite_bus/config/ahb_lite_bus.vf
index 77806285c..86fbbb2e2 100644
--- a/src/ahb_lite_bus/config/ahb_lite_bus.vf
+++ b/src/ahb_lite_bus/config/ahb_lite_bus.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl
diff --git a/src/caliptra_prim/config/caliptra_prim.vf b/src/caliptra_prim/config/caliptra_prim.vf
index 49501fa5e..59740aec8 100644
--- a/src/caliptra_prim/config/caliptra_prim.vf
+++ b/src/caliptra_prim/config/caliptra_prim.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
diff --git a/src/caliptra_prim/config/caliptra_prim_pkg.vf b/src/caliptra_prim/config/caliptra_prim_pkg.vf
index 4d5c4720b..dfed9ddd5 100644
--- a/src/caliptra_prim/config/caliptra_prim_pkg.vf
+++ b/src/caliptra_prim/config/caliptra_prim_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
diff --git a/src/caliptra_prim_generic/config/caliptra_prim_generic.vf b/src/caliptra_prim_generic/config/caliptra_prim_generic.vf
index 29d0649a4..38af67734 100644
--- a/src/caliptra_prim_generic/config/caliptra_prim_generic.vf
+++ b/src/caliptra_prim_generic/config/caliptra_prim_generic.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl
${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_flop_en.sv
${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_flop.sv
diff --git a/src/csrng/config/csrng.vf b/src/csrng/config/csrng.vf
index 06245ddcc..0a1c5d165 100644
--- a/src/csrng/config/csrng.vf
+++ b/src/csrng/config/csrng.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
@@ -103,4 +102,3 @@ ${CALIPTRA_ROOT}/src/csrng/rtl/csrng_block_encrypt.sv
${CALIPTRA_ROOT}/src/csrng/rtl/csrng_state_db.sv
${CALIPTRA_ROOT}/src/csrng/rtl/csrng_cmd_stage.sv
${CALIPTRA_ROOT}/src/csrng/rtl/csrng.sv
-${CALIPTRA_ROOT}/src/csrng/tb/csrng_tb.sv
diff --git a/src/csrng/config/csrng_pkg.vf b/src/csrng/config/csrng_pkg.vf
index 6d0386cb0..6badfdba1 100644
--- a/src/csrng/config/csrng_pkg.vf
+++ b/src/csrng/config/csrng_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
+incdir+${CALIPTRA_ROOT}/src/csrng/rtl
${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_main_sm_pkg.sv
diff --git a/src/csrng/config/csrng_tb.vf b/src/csrng/config/csrng_tb.vf
index b54328edb..4793e52ec 100644
--- a/src/csrng/config/csrng_tb.vf
+++ b/src/csrng/config/csrng_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
diff --git a/src/datavault/config/datavault.vf b/src/datavault/config/datavault.vf
index ef7c7d194..829d888e8 100644
--- a/src/datavault/config/datavault.vf
+++ b/src/datavault/config/datavault.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/datavault/rtl
diff --git a/src/datavault/config/dv_defines_pkg.vf b/src/datavault/config/dv_defines_pkg.vf
index 5caf89c26..e0f236757 100644
--- a/src/datavault/config/dv_defines_pkg.vf
+++ b/src/datavault/config/dv_defines_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/datavault/rtl
${CALIPTRA_ROOT}/src/datavault/rtl/dv_defines_pkg.sv
${CALIPTRA_ROOT}/src/datavault/rtl/dv_defines_pkg.sv
\ No newline at end of file
diff --git a/src/datavault/config/dv_uvm_pkg.vf b/src/datavault/config/dv_uvm_pkg.vf
index d49e18a4d..16b523f56 100644
--- a/src/datavault/config/dv_uvm_pkg.vf
+++ b/src/datavault/config/dv_uvm_pkg.vf
@@ -1,3 +1,2 @@
-
+incdir+${CALIPTRA_ROOT}/src/datavault/rtl
${CALIPTRA_ROOT}/src/datavault/rtl/dv_reg_uvm.sv
\ No newline at end of file
diff --git a/src/doe/config/doe_cbc_tb.vf b/src/doe/config/doe_cbc_tb.vf
index 57c5ab16d..343b1bc45 100644
--- a/src/doe/config/doe_cbc_tb.vf
+++ b/src/doe/config/doe_cbc_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/doe/config/doe_core_cbc_tb.vf b/src/doe/config/doe_core_cbc_tb.vf
index 4f252f2ab..be61bb115 100644
--- a/src/doe/config/doe_core_cbc_tb.vf
+++ b/src/doe/config/doe_core_cbc_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/doe/config/doe_ctrl.vf b/src/doe/config/doe_ctrl.vf
index 0b25365b2..09ff0b298 100644
--- a/src/doe/config/doe_ctrl.vf
+++ b/src/doe/config/doe_ctrl.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/doe/config/doe_defines_pkg.vf b/src/doe/config/doe_defines_pkg.vf
index a2f3e9ab8..2bd3dd260 100644
--- a/src/doe/config/doe_defines_pkg.vf
+++ b/src/doe/config/doe_defines_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/doe/rtl
${CALIPTRA_ROOT}/src/doe/rtl/doe_defines_pkg.sv
${CALIPTRA_ROOT}/src/doe/rtl/doe_defines_pkg.sv
\ No newline at end of file
diff --git a/src/ecc/config/ecc_montgomerymultiplier_tb.vf b/src/ecc/config/ecc_montgomerymultiplier_tb.vf
index 03ff15a97..0754d8f22 100644
--- a/src/ecc/config/ecc_montgomerymultiplier_tb.vf
+++ b/src/ecc/config/ecc_montgomerymultiplier_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/ecc/config/ecc_top.vf b/src/ecc/config/ecc_top.vf
index 2af9e7727..51e02138b 100644
--- a/src/ecc/config/ecc_top.vf
+++ b/src/ecc/config/ecc_top.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/ecc/config/ecc_top_tb.vf b/src/ecc/config/ecc_top_tb.vf
index 7c34bdeb3..ea081512c 100644
--- a/src/ecc/config/ecc_top_tb.vf
+++ b/src/ecc/config/ecc_top_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/ecc/uvmf_ecc/config/uvmf_ecc.vf b/src/ecc/uvmf_ecc/config/uvmf_ecc.vf
new file mode 100644
index 000000000..f53355d1a
--- /dev/null
+++ b/src/ecc/uvmf_ecc/config/uvmf_ecc.vf
@@ -0,0 +1,173 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/ecc/coverage
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/../rtl
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/../../libs/rtl
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_in_pkg
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_in_pkg/src
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_out_pkg
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_out_pkg/src
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/environment_packages/ECC_env_pkg
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/tests
++incdir+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/testbench
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512_masked/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac_drbg/rtl
++incdir+${CALIPTRA_ROOT}/src/ecc/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/ecc/coverage/ecc_top_cov_if.sv
+${CALIPTRA_ROOT}/src/ecc/coverage/ecc_top_cov_bind.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_in_pkg/ECC_in_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_in_pkg/ECC_in_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_in_pkg/src/ECC_in_driver_bfm.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_in_pkg/src/ECC_in_if.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_in_pkg/src/ECC_in_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_out_pkg/ECC_out_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_out_pkg/ECC_out_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_out_pkg/src/ECC_out_driver_bfm.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_out_pkg/src/ECC_out_if.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/interface_packages/ECC_out_pkg/src/ECC_out_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/verification_ip/environment_packages/ECC_env_pkg/ECC_env_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/parameters/ECC_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/sequences/ECC_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/tests/ECC_tests_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/ecc/uvmf_ecc/uvmf_template_output/project_benches/ECC/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_defines_pkg.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_core.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_lfsr.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_param_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_ctrl.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_core.v
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg.sv
+${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg.sv
+${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg_lfsr.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_defines_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_params_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_uop_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_uop_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_top.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_ctrl.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_sequencer.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_scalar_blinding.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_hmac_drbg_interface.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_arith_unit.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_ctrl.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_sequencer.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_ram_tdp_file.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_fau.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_montgomerymultiplier.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_first.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_final.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_mult_dsp.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_add_sub_mod_alter.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_adder.sv
\ No newline at end of file
diff --git a/src/edn/config/edn_pkg.vf b/src/edn/config/edn_pkg.vf
index 3da7239ed..cc750fdb6 100644
--- a/src/edn/config/edn_pkg.vf
+++ b/src/edn/config/edn_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
+incdir+${CALIPTRA_ROOT}/src/edn/rtl
${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_main_sm_pkg.sv
diff --git a/src/entropy_src/config/entropy_src.vf b/src/entropy_src/config/entropy_src.vf
index d27b6f989..f8a916e71 100644
--- a/src/entropy_src/config/entropy_src.vf
+++ b/src/entropy_src/config/entropy_src.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
diff --git a/src/entropy_src/config/entropy_src_pkg.vf b/src/entropy_src/config/entropy_src_pkg.vf
index 21d2f59ff..8d4b48b40 100644
--- a/src/entropy_src/config/entropy_src_pkg.vf
+++ b/src/entropy_src/config/entropy_src_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_main_sm_pkg.sv
${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_ack_sm_pkg.sv
diff --git a/src/entropy_src/config/entropy_src_tb.vf b/src/entropy_src/config/entropy_src_tb.vf
index 895ea5b5d..f0f720b91 100644
--- a/src/entropy_src/config/entropy_src_tb.vf
+++ b/src/entropy_src/config/entropy_src_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
diff --git a/src/hmac/config/hmac_ctrl.vf b/src/hmac/config/hmac_ctrl.vf
index f4b3c6952..666c3371f 100644
--- a/src/hmac/config/hmac_ctrl.vf
+++ b/src/hmac/config/hmac_ctrl.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/hmac/config/hmac_ctrl_tb.vf b/src/hmac/config/hmac_ctrl_tb.vf
index ac588c35c..1ca5eaa69 100644
--- a/src/hmac/config/hmac_ctrl_tb.vf
+++ b/src/hmac/config/hmac_ctrl_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/hmac/formal/model/simulation_model/simulation/hmac_main.cpp b/src/hmac/formal/model/simulation_model/simulation/hmac_main.cpp
index f702df25f..98d68f0ce 100644
--- a/src/hmac/formal/model/simulation_model/simulation/hmac_main.cpp
+++ b/src/hmac/formal/model/simulation_model/simulation/hmac_main.cpp
@@ -1,3 +1,20 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Description:
+//
+
#include "systemc.h"
#include "Interfaces.h"
#include "../../hmac_core.h"
diff --git a/src/hmac/formal/model/simulation_model/simulation/hmac_tests.h b/src/hmac/formal/model/simulation_model/simulation/hmac_tests.h
index f3e73e917..2dc0ba359 100644
--- a/src/hmac/formal/model/simulation_model/simulation/hmac_tests.h
+++ b/src/hmac/formal/model/simulation_model/simulation/hmac_tests.h
@@ -1,3 +1,20 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Description:
+//
+
#ifndef HMAC_CORE_TESTS_H
#define HMAC_CORE_TESTS_H
diff --git a/src/hmac/formal/readme.md b/src/hmac/formal/readme.md
index 82a97de80..2418aef3c 100644
--- a/src/hmac/formal/readme.md
+++ b/src/hmac/formal/readme.md
@@ -1,3 +1,18 @@
+_*SPDX-License-Identifier: Apache-2.0
+
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.*_
+
# HMAC
Date: 28-07-2023 Author: LUBIS EDA
@@ -67,4 +82,4 @@ cut u_sha512_core_h2.digest
The sha512_masked core had been verified separately. By cutting the signal model complexity is drastically reduced.
-Feel free to reach out to contact@lubis-eda.com to request the loadscripts.
\ No newline at end of file
+Feel free to reach out to contact@lubis-eda.com to request the loadscripts.
diff --git a/src/hmac/uvmf_2022/config/uvmf_hmac.vf b/src/hmac/uvmf_2022/config/uvmf_hmac.vf
new file mode 100644
index 000000000..a11f61ac2
--- /dev/null
+++ b/src/hmac/uvmf_2022/config/uvmf_hmac.vf
@@ -0,0 +1,146 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac/coverage
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/../rtl
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/../../libs/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_in_pkg
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_in_pkg/src
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_out_pkg
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_out_pkg/src
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/environment_packages/HMAC_env_pkg
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/tests
++incdir+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/testbench
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512_masked/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/hmac/coverage/hmac_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/hmac/coverage/hmac_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_in_pkg/HMAC_in_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_in_pkg/HMAC_in_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_in_pkg/src/HMAC_in_driver_bfm.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_in_pkg/src/HMAC_in_if.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_in_pkg/src/HMAC_in_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_out_pkg/HMAC_out_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_out_pkg/HMAC_out_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_out_pkg/src/HMAC_out_driver_bfm.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_out_pkg/src/HMAC_out_if.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/interface_packages/HMAC_out_pkg/src/HMAC_out_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/verification_ip/environment_packages/HMAC_env_pkg/HMAC_env_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/parameters/HMAC_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/sequences/HMAC_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/tests/HMAC_tests_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/hmac/uvmf_2022/uvmf_template_output/project_benches/HMAC/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_defines_pkg.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_core.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_lfsr.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_param_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_ctrl.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_core.v
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg.sv
\ No newline at end of file
diff --git a/src/hmac_drbg/config/hmac_drbg.vf b/src/hmac_drbg/config/hmac_drbg.vf
index 1c00130ee..2e7367213 100644
--- a/src/hmac_drbg/config/hmac_drbg.vf
+++ b/src/hmac_drbg/config/hmac_drbg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/hmac_drbg/config/hmac_drbg_tb.vf b/src/hmac_drbg/config/hmac_drbg_tb.vf
index 96d3675d1..9754c6784 100644
--- a/src/hmac_drbg/config/hmac_drbg_tb.vf
+++ b/src/hmac_drbg/config/hmac_drbg_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/integration/asserts/caliptra_top_sva.sv b/src/integration/asserts/caliptra_top_sva.sv
index b25b88d14..cdb92c125 100644
--- a/src/integration/asserts/caliptra_top_sva.sv
+++ b/src/integration/asserts/caliptra_top_sva.sv
@@ -19,12 +19,17 @@
`include "config_defines.svh"
//`include "kv_defines_pkg.sv"
//`include "doe_defines_pkg.sv"
-`define CPTRA_TOP_PATH caliptra_top_tb.caliptra_top_dut
+`ifdef UVMF_CALIPTRA_TOP
+`define CPTRA_TB_TOP_NAME hdl_top
+`else
+`define CPTRA_TB_TOP_NAME caliptra_top_tb
+`endif
+`define CPTRA_TOP_PATH `CPTRA_TB_TOP_NAME.caliptra_top_dut
`define KEYVAULT_PATH `CPTRA_TOP_PATH.key_vault1
`define DOE_INST_PATH `CPTRA_TOP_PATH.doe.doe_inst
`define DOE_PATH `DOE_INST_PATH.doe_fsm1
`define DOE_REG_PATH `DOE_INST_PATH.i_doe_reg
-`define SERVICES_PATH caliptra_top_tb.tb_services_i
+`define SERVICES_PATH `CPTRA_TB_TOP_NAME.tb_services_i
`define SHA512_PATH `CPTRA_TOP_PATH.sha512.sha512_inst
`define HMAC_PATH `CPTRA_TOP_PATH.hmac.hmac_inst
`define ECC_PATH `CPTRA_TOP_PATH.ecc_top1.ecc_dsa_ctrl_i
@@ -35,8 +40,13 @@
`define WDT_PATH `SOC_IFC_TOP_PATH.i_wdt
`define SVA_RDC_CLK `CPTRA_TOP_PATH.rdc_clk_cg
-`define SVA_CLK caliptra_top_tb.core_clk
-`define SVA_RST caliptra_top_tb.cptra_rst_b
+`ifdef UVMF_CALIPTRA_TOP
+ `define SVA_CLK `CPTRA_TB_TOP_NAME.clk
+ `define SVA_RST `CPTRA_TB_TOP_NAME.soc_ifc_subenv_soc_ifc_ctrl_agent_bus.cptra_rst_b
+`else
+ `define SVA_CLK `CPTRA_TB_TOP_NAME.core_clk
+ `define SVA_RST `CPTRA_TB_TOP_NAME.cptra_rst_b
+`endif
module caliptra_top_sva
import doe_defines_pkg::*;
@@ -479,12 +489,14 @@ module caliptra_top_sva
wdt_status_t1_check: assert property (
@(posedge `SVA_RDC_CLK)
+ disable iff (~`SVA_RST)
$rose(`WDT_PATH.t1_timeout) |=> $rose(`SOC_IFC_TOP_PATH.soc_ifc_reg_hwif_out.CPTRA_WDT_STATUS.t1_timeout.value)
)
else $display("SVA ERROR: WDT Status bit not set on t1 expiry!");
wdt_status_t2_check: assert property (
@(posedge `SVA_RDC_CLK)
+ disable iff (~`SVA_RST)
$rose(`WDT_PATH.t2_timeout) |=> $rose(`SOC_IFC_TOP_PATH.soc_ifc_reg_hwif_out.CPTRA_WDT_STATUS.t2_timeout.value)
)
else $display("SVA ERROR: WDT Status bit not set on t2 expiry!");
diff --git a/src/integration/asserts/config/asserts.vf b/src/integration/asserts/config/asserts.vf
index af9a0394b..9e5fd10c5 100644
--- a/src/integration/asserts/config/asserts.vf
+++ b/src/integration/asserts/config/asserts.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
+incdir+${CALIPTRA_ROOT}/src/doe/rtl
+incdir+${CALIPTRA_ROOT}/src/integration/asserts
diff --git a/src/integration/config/caliptra_top.vf b/src/integration/config/caliptra_top.vf
index c25142575..44074db29 100644
--- a/src/integration/config/caliptra_top.vf
+++ b/src/integration/config/caliptra_top.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/integration/config/caliptra_top_defines.vf b/src/integration/config/caliptra_top_defines.vf
index c60a9363b..32aaeaef2 100644
--- a/src/integration/config/caliptra_top_defines.vf
+++ b/src/integration/config/caliptra_top_defines.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
diff --git a/src/integration/config/caliptra_top_tb.vf b/src/integration/config/caliptra_top_tb.vf
index b303a45c9..7848871bc 100644
--- a/src/integration/config/caliptra_top_tb.vf
+++ b/src/integration/config/caliptra_top_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
+incdir+${CALIPTRA_ROOT}/src/doe/rtl
+incdir+${CALIPTRA_ROOT}/src/integration/asserts
diff --git a/src/integration/config/caliptra_top_trng_tb.vf b/src/integration/config/caliptra_top_trng_tb.vf
index de2fbc67c..52c42d8ff 100644
--- a/src/integration/config/caliptra_top_trng_tb.vf
+++ b/src/integration/config/caliptra_top_trng_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
+incdir+${CALIPTRA_ROOT}/src/doe/rtl
+incdir+${CALIPTRA_ROOT}/src/integration/asserts
diff --git a/src/integration/rtl/caliptra_top.sv b/src/integration/rtl/caliptra_top.sv
index b72538605..70713f359 100755
--- a/src/integration/rtl/caliptra_top.sv
+++ b/src/integration/rtl/caliptra_top.sv
@@ -40,7 +40,7 @@ module caliptra_top
input logic jtag_tck, // JTAG clk
input logic jtag_tms, // JTAG TMS
input logic jtag_tdi, // JTAG tdi
- input logic jtag_trst_n, // JTAG Reset //TODO optional needs review
+ input logic jtag_trst_n, // JTAG Reset
output logic jtag_tdo, // JTAG TDO
//APB Interface
@@ -64,15 +64,11 @@ module caliptra_top
output logic [`CALIPTRA_QSPI_IO_WIDTH-1:0] qspi_d_en_o,
//UART Interface
- // TODO: Determine if this should be set behind a ifdef
`ifdef CALIPTRA_INTERNAL_UART
output logic uart_tx,
input logic uart_rx,
`endif
- //I3C Interface
- //TODO update with I3C interface signals
-
// Caliptra Memory Export Interface
el2_mem_if.veer_sram_src el2_mem_export,
@@ -357,16 +353,12 @@ end
// RTL instance
//=========================================================================-
//FIXME TIE OFFS
-logic [31:0] jtag_id;
logic [31:0] reset_vector;
logic [31:0] nmi_vector;
logic nmi_int;
logic soft_int;
logic timer_int;
-assign jtag_id[31:28] = 4'b1;
-assign jtag_id[27:12] = '0;
-assign jtag_id[11:1] = 11'h45;
assign reset_vector = `RV_RESET_VEC;
assign soft_int = 1'b0;
@@ -418,7 +410,6 @@ el2_veer_wrapper rvtop (
.rst_vec ( reset_vector[31:1]),
.nmi_int ( nmi_int ),
.nmi_vec ( nmi_vector[31:1]),
- .jtag_id ( jtag_id[31:1]),
.haddr ( ic_haddr ),
.hburst ( ic_hburst ),
diff --git a/src/integration/tb/caliptra_top_tb.sv b/src/integration/tb/caliptra_top_tb.sv
index ca7f5e21e..66de48009 100755
--- a/src/integration/tb/caliptra_top_tb.sv
+++ b/src/integration/tb/caliptra_top_tb.sv
@@ -165,6 +165,8 @@ module caliptra_top_tb (
logic cptra_error_fatal_dly_p;
logic cptra_error_non_fatal_dly_p;
+ logic rv_dma_resp_error;
+
logic mbox_apb_dataout_read_ooo;
logic mbox_ooo_read_done;
logic mbox_apb_dataout_read_no_lock;
@@ -232,7 +234,15 @@ module caliptra_top_tb (
end
else if (ras_test_ctrl.reset_generic_input_wires) begin
+ `ifdef VERILATOR
+ generic_input_wires <= {32'h72746C76, ERROR_NONE_SET}; /* 32'h72746c76 is the big-endian ASCII representation of 'vltr' (r t l v) */
+ `else
generic_input_wires <= {32'h0, ERROR_NONE_SET};
+ `endif
+ end
+
+ else if (c_state_apb == S_APB_WAIT_ERROR_AXS && rv_dma_resp_error) begin
+ generic_input_wires <= {32'h0, DMA_ERROR_OBSERVED};
end
else if (c_state_apb == S_APB_RD_HW_ERROR_FATAL && apb_xfer_end) begin
@@ -1234,6 +1244,69 @@ caliptra_top_tb_services #(
);
+`define RV_INST caliptra_top_dut.rvtop
+`define RV_IDMA_RESP_INST caliptra_top_dut.responder_inst[`CALIPTRA_SLAVE_SEL_IDMA]
+`define RV_DDMA_RESP_INST caliptra_top_dut.responder_inst[`CALIPTRA_SLAVE_SEL_DDMA]
+task force_ahb_dma_read(input logic [31:0] address);
+ while(`RV_INST.dma_hsel) @(posedge core_clk);
+ force `RV_IDMA_RESP_INST.hreadyout = 1'b0;
+ force `RV_DDMA_RESP_INST.hreadyout = 1'b0;
+
+ force `RV_INST.dma_haddr = address;
+ force `RV_INST.dma_hsize = 3'b010; // 4-bytes
+ force `RV_INST.dma_hwrite = 1'b0;
+ force `RV_INST.dma_hwdata = '0;
+ force `RV_INST.dma_hreadyin = 1'b1;
+ force `RV_INST.dma_hsel = 1'b1;
+ force `RV_INST.dma_htrans = 2'b10;
+
+ // Wait for command to be accepted
+ do @(posedge core_clk); while(!`RV_INST.dma_hreadyout);
+ force `RV_INST.dma_htrans = 2'b00;
+ // Wait for response to be provided
+ do @(posedge core_clk); while(!`RV_INST.dma_hreadyout);
+ $display("[%t] AHB DMA FORCE READ: Address 0x%x Data 0x%x Resp 0x%x", $time, address, `RV_INST.dma_hrdata, `RV_INST.dma_hresp);
+ if (`RV_INST.dma_hresp)
+ rv_dma_resp_error = 1'b1;
+ release `RV_IDMA_RESP_INST.hreadyout;
+ release `RV_DDMA_RESP_INST.hreadyout;
+
+ release `RV_INST.dma_htrans;
+ release `RV_INST.dma_haddr;
+ release `RV_INST.dma_hsize;
+ release `RV_INST.dma_hwrite;
+ release `RV_INST.dma_hwdata;
+ release `RV_INST.dma_hsel;
+ release `RV_INST.dma_hreadyin;
+endtask
+
+task force_ahb_dma_loop_read(input logic [31:0] start_addr, input logic [19:0] count);
+ automatic logic [31:0] addr;
+ addr = start_addr;
+ $display("[%t] AHB DMA FORCE LOOP READ: Start Address 0x%x Count 0x%x", $time, addr, count);
+ if ($isunknown(start_addr) || $isunknown(addr))
+ $error("[%t] Unknown signal found: start_addr 0x%x addr 0x%x", $time, start_addr, addr);
+ repeat(count) begin
+ force_ahb_dma_read(addr);
+ addr += 4;
+ end
+endtask
+
+initial begin
+ fork
+ forever @(posedge core_clk) begin
+ if (ras_test_ctrl.dccm_read_burst.start)
+ force_ahb_dma_loop_read(ras_test_ctrl.dccm_read_burst.addr, ras_test_ctrl.dccm_read_burst.count);
+ if (ras_test_ctrl.iccm_read_burst.start)
+ force_ahb_dma_loop_read(ras_test_ctrl.iccm_read_burst.addr, ras_test_ctrl.iccm_read_burst.count);
+ end
+ forever @(posedge core_clk) begin
+ if (c_state_apb != S_APB_WAIT_ERROR_AXS)
+ rv_dma_resp_error = 1'b0;
+ end
+ join
+end
+
caliptra_top_sva sva();
endmodule
diff --git a/src/integration/tb/caliptra_top_tb_pkg.sv b/src/integration/tb/caliptra_top_tb_pkg.sv
index 8a14afeb7..28f97e6f2 100644
--- a/src/integration/tb/caliptra_top_tb_pkg.sv
+++ b/src/integration/tb/caliptra_top_tb_pkg.sv
@@ -58,6 +58,13 @@ typedef struct packed {
} veer_sram_error_injection_mode_t;
typedef struct packed {
+ logic [31:0] addr;
+ logic [19:0] count;
+ logic start;
+} rv_ccm_read_burst_pkt;
+typedef struct packed {
+ rv_ccm_read_burst_pkt dccm_read_burst;
+ rv_ccm_read_burst_pkt iccm_read_burst;
logic error_injection_seen;
logic reset_generic_input_wires;
logic do_no_lock_access;
@@ -73,6 +80,7 @@ localparam PROT_OOO_NON_FATAL_OBSERVED = 32'h600dcafe;
localparam ICCM_FATAL_OBSERVED = 32'hdeadaca1;
localparam DCCM_FATAL_OBSERVED = 32'hdeadbeef;
localparam NMI_FATAL_OBSERVED = 32'hdeadc0a7;
+localparam DMA_ERROR_OBSERVED = 32'hfadebadd;
localparam ERROR_NONE_SET = 32'hba5eba11; /* default value for a test with no activity observed by TB */
endpackage
diff --git a/src/integration/tb/caliptra_top_tb_services.sv b/src/integration/tb/caliptra_top_tb_services.sv
index 817ae3129..8d167d0e7 100644
--- a/src/integration/tb/caliptra_top_tb_services.sv
+++ b/src/integration/tb/caliptra_top_tb_services.sv
@@ -240,6 +240,8 @@ module caliptra_top_tb_services
// 8'h9a - Inject invalid zero sign_s into ECC
// 8'ha0: 8'ha7 - Inject HMAC_KEY to kv_key register
// 8'hc0: 8'hc7 - Inject SHA_BLOCK to kv_key register
+ // 8'hde - ICCM SRAM force loop read (requires read params written to other bytes of generic wires)
+ // 8'hdf - DCCM SRAM force loop read (requires read params written to other bytes of generic wires)
// 8'he0 - Set random ICCM SRAM single bit error injection
// 8'he1 - Set random ICCM SRAM double bit error injection
// 8'he2 - Set random DCCM SRAM single bit error injection
@@ -339,6 +341,41 @@ module caliptra_top_tb_services
end
end
+ always @(negedge clk or negedge cptra_rst_b) begin
+ if (!cptra_rst_b) begin
+ ras_test_ctrl.iccm_read_burst.start <= 1'b0;
+ ras_test_ctrl.iccm_read_burst.count <= '0;
+ ras_test_ctrl.iccm_read_burst.addr <= '0;
+ ras_test_ctrl.dccm_read_burst.start <= 1'b0;
+ ras_test_ctrl.dccm_read_burst.count <= '0;
+ ras_test_ctrl.dccm_read_burst.addr <= '0;
+ end
+ else if((WriteData[7:0] == 8'hde) && mailbox_write) begin
+ ras_test_ctrl.iccm_read_burst.start <= 1'b1;
+ ras_test_ctrl.iccm_read_burst.count <= WriteData[31:12];
+ ras_test_ctrl.iccm_read_burst.addr <= caliptra_top_dut.soc_ifc_top1.i_soc_ifc_reg.field_storage.CPTRA_GENERIC_OUTPUT_WIRES[1].generic_wires.value;
+ ras_test_ctrl.dccm_read_burst.start <= 1'b0;
+ ras_test_ctrl.dccm_read_burst.count <= '0;
+ ras_test_ctrl.dccm_read_burst.addr <= '0;
+ end
+ else if((WriteData[7:0] == 8'hdf) && mailbox_write) begin
+ ras_test_ctrl.iccm_read_burst.start <= 1'b0;
+ ras_test_ctrl.iccm_read_burst.count <= '0;
+ ras_test_ctrl.iccm_read_burst.addr <= '0;
+ ras_test_ctrl.dccm_read_burst.start <= 1'b1;
+ ras_test_ctrl.dccm_read_burst.count <= WriteData[31:12];
+ ras_test_ctrl.dccm_read_burst.addr <= caliptra_top_dut.soc_ifc_top1.i_soc_ifc_reg.field_storage.CPTRA_GENERIC_OUTPUT_WIRES[1].generic_wires.value;
+ end
+ else begin
+ ras_test_ctrl.iccm_read_burst.start <= 1'b0;
+ ras_test_ctrl.iccm_read_burst.count <= '0;
+ ras_test_ctrl.iccm_read_burst.addr <= '0;
+ ras_test_ctrl.dccm_read_burst.start <= 1'b0;
+ ras_test_ctrl.dccm_read_burst.count <= '0;
+ ras_test_ctrl.dccm_read_burst.addr <= '0;
+ end
+ end
+
initial ras_test_ctrl.error_injection_seen = 1'b0;
always @(negedge clk) begin
if (mailbox_write && WriteData[7:0] == 8'hfd) begin
diff --git a/src/integration/test_suites/caliptra_rt/caliptra_rt.c b/src/integration/test_suites/caliptra_rt/caliptra_rt.c
index 7cbaccef8..b54dc54fc 100644
--- a/src/integration/test_suites/caliptra_rt/caliptra_rt.c
+++ b/src/integration/test_suites/caliptra_rt/caliptra_rt.c
@@ -333,12 +333,13 @@ void caliptra_rt() {
if (fsm_chk == 0xF) {
if (cptra_intr_rcv.soc_ifc_error & SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_CMD_FAIL_STS_MASK) {
CLEAR_INTR_FLAG_SAFELY(cptra_intr_rcv.soc_ifc_error, ~SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_CMD_FAIL_STS_MASK)
- VPRINTF(LOW, "Clearing FW soc_ifc_error intr bit (cmd fail) after servicing\n");
+ VPRINTF(LOW, "Clearing FW soc_ifc_error intr bit (cmd fail) prior to servicing\n");
} else {
- VPRINTF(ERROR, "After finding an error and resetting the mailbox with force unlock, RT firmware has not received an soc_ifc_err_intr!\n");
+ VPRINTF(ERROR, "After finding an error requiring mailbox reset with force unlock, RT firmware has not received an soc_ifc_err_intr!\n");
SEND_STDOUT_CTRL(0x1);
while(1);
}
+ lsu_write_32(CLP_MBOX_CSR_MBOX_UNLOCK, MBOX_CSR_MBOX_UNLOCK_UNLOCK_MASK);
// This oftens occurs alongside the cmd_fail bit in error injection tests...
if (cptra_intr_rcv.soc_ifc_error & SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_INV_DEV_STS_MASK) {
CLEAR_INTR_FLAG_SAFELY(cptra_intr_rcv.soc_ifc_error, ~SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_INV_DEV_STS_MASK)
@@ -362,7 +363,11 @@ void caliptra_rt() {
~SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_INV_DEV_STS_MASK)
// Run the FSM check once more for late-arrival of errors
// that may correlate with the observed error interrupt
- if (soc_ifc_chk_execute_uc()) {
+ fsm_chk = soc_ifc_chk_execute_uc();
+ if (fsm_chk) {
+ if (fsm_chk == 0xF) {
+ lsu_write_32(CLP_MBOX_CSR_MBOX_UNLOCK, MBOX_CSR_MBOX_UNLOCK_UNLOCK_MASK);
+ }
continue;
}
}
@@ -494,12 +499,13 @@ void caliptra_rt() {
if (fsm_chk == 0xF) {
if (cptra_intr_rcv.soc_ifc_error & SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_CMD_FAIL_STS_MASK) {
CLEAR_INTR_FLAG_SAFELY(cptra_intr_rcv.soc_ifc_error, ~SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_CMD_FAIL_STS_MASK)
- VPRINTF(LOW, "Clearing FW soc_ifc_error intr bit (cmd fail) after servicing\n");
+ VPRINTF(LOW, "Clearing FW soc_ifc_error intr bit (cmd fail) prior to servicing\n");
} else {
- VPRINTF(ERROR, "After finding an error and resetting the mailbox with force unlock, RT firmware has not received an soc_ifc_err_intr!\n");
+ VPRINTF(ERROR, "After finding an error requiring mailbox reset with force unlock, RT firmware has not received an soc_ifc_err_intr!\n");
SEND_STDOUT_CTRL(0x1);
while(1);
}
+ lsu_write_32(CLP_MBOX_CSR_MBOX_UNLOCK, MBOX_CSR_MBOX_UNLOCK_UNLOCK_MASK);
}
continue;
}
@@ -536,12 +542,13 @@ void caliptra_rt() {
if (fsm_chk == 0xF) {
if (cptra_intr_rcv.soc_ifc_error & SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_CMD_FAIL_STS_MASK) {
CLEAR_INTR_FLAG_SAFELY(cptra_intr_rcv.soc_ifc_error, ~SOC_IFC_REG_INTR_BLOCK_RF_ERROR_INTERNAL_INTR_R_ERROR_CMD_FAIL_STS_MASK)
- VPRINTF(LOW, "Clearing FW soc_ifc_error intr bit (cmd fail) after servicing\n");
+ VPRINTF(LOW, "Clearing FW soc_ifc_error intr bit (cmd fail) prior to servicing\n");
} else {
- VPRINTF(ERROR, "After finding an error and resetting the mailbox with force unlock, RT firmware has not received an soc_ifc_err_intr!\n");
+ VPRINTF(ERROR, "After finding an error requiring mailbox reset with force unlock, RT firmware has not received an soc_ifc_err_intr!\n");
SEND_STDOUT_CTRL(0x1);
while(1);
}
+ lsu_write_32(CLP_MBOX_CSR_MBOX_UNLOCK, MBOX_CSR_MBOX_UNLOCK_UNLOCK_MASK);
}
continue;
}
diff --git a/src/integration/test_suites/infinite_loop/common.tcl b/src/integration/test_suites/infinite_loop/common.tcl
new file mode 100644
index 000000000..a95351407
--- /dev/null
+++ b/src/integration/test_suites/infinite_loop/common.tcl
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+proc compare {x y} {
+ puts "'$x' vs. '$y'"
+
+ if {[llength $y] != [llength $y]} {
+ puts "length mismatch!"
+ return -1
+ }
+
+ for {set i 0} {$i < [llength $x]} {incr i} {
+ if {[lindex $x $i] != [lindex $y $i]} {
+ puts "item $i mismatch!"
+ return -1
+ }
+ }
+
+ return 0
+}
+
+set STDOUT 0x300300cc
+
+set mbox_clk_gate_en 0xf2
+set mbox_lock_debug 0xf9
+set mbox_unlock_debug 0xfa
+
+set mbox_lock_mem_addr 0x30020000
+set mbox_user_mem_addr 0x30020004
+set mbox_cmd_mem_addr 0x30020008
+set mbox_dlen_mem_addr 0x3002000C
+set mbox_datain_mem_addr 0x30020010
+set mbox_dataout_mem_addr 0x30020014
+set mbox_execute_mem_addr 0x30020018
+set mbox_status_mem_addr 0x3002001C
+set mbox_unlock_mem_addr 0x30020020
+
+set mbox_dlen_dmi_addr 0x50
+set mbox_dout_dmi_addr 0x51
+set mbox_status_dmi_addr 0x52
+
+set dmstatus_addr 0x11
+
diff --git a/src/integration/test_suites/infinite_loop/infinite_loop.s b/src/integration/test_suites/infinite_loop/infinite_loop.s
index 4a3753157..fae20f79c 100644
--- a/src/integration/test_suites/infinite_loop/infinite_loop.s
+++ b/src/integration/test_suites/infinite_loop/infinite_loop.s
@@ -17,6 +17,13 @@
#include "caliptra_defines.h"
.set mfdc, 0x7f9
+.set mfdht, 0x7ce
+.set mstatus, 0x300
+.set mitcnt0, 0x7d2
+.set mitb0, 0x7d3
+.set mitctl0, 0x7d4
+.set mie, 0x304
+.set mpmc, 0x7c6
// Code to execute
.section .text
@@ -39,6 +46,7 @@ _start:
li x6, 0xA0A0A0A0
li x7, 0x00FF00FF
li x8, 0xCC00CC00
+ li s1, 0xFEEDABED // Writing 0 to this register initiates CPU halt
// Simple infinite loop program with inner and outer loop
li t3, 0
@@ -46,9 +54,23 @@ outer:
addi t3, t3, 1
li t4, 123
inner:
+ beq s1, zero, halt_cpu
addi t4, t4, -1
bne t4, zero, inner
- jal x0, outer
+ j outer
+
+halt_cpu:
+ // Set mit0 and halt core
+ li t5, 0xf0
+ li t6, 0x20000800
+ csrwi mitcnt0, 0x00 // Internal timer 0 counter
+ csrw mitb0, t5 // Internal timer 0 boundary
+ csrwi mitctl0, 0x01 // Internal timer 0 enable
+ csrw mie, t6 // Internal timer 0 local interrupt enable
+ csrwi mstatus, 0x08 // Internal timer 0 global interrupt enable
+ csrwi mpmc, 0x03 // Initiate core halt with disable on mit0 interrupt
+ li s1, 0xFEEDABED // Indicate halt init
+ j outer // Return to infinite loop
.section .dccm
.global stdout
diff --git a/src/integration/test_suites/infinite_loop/jtag_cg.tcl b/src/integration/test_suites/infinite_loop/jtag_cg.tcl
new file mode 100644
index 000000000..26d6f6888
--- /dev/null
+++ b/src/integration/test_suites/infinite_loop/jtag_cg.tcl
@@ -0,0 +1,107 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+init
+
+set script_dir [file dirname [info script]]
+source [file join $script_dir common.tcl]
+
+array set data {
+ 0 0x12345678
+ 1 0xABBACDDC
+ 2 0xDEADBEEF
+ 3 0xFEEDBABE
+ 4 0xBEACCAEB
+}
+set dlen_words [array size data]
+set dlen_bytes [expr {$dlen_words * 4}]
+
+puts "Read Debug Module Status Register..."
+set val [riscv dmi_read $dmstatus_addr]
+puts "dmstatus: $val"
+if {($val & 0x00000c00) == 0} {
+ echo "The hart is halted!"
+ shutdown error
+}
+puts ""
+
+riscv set_mem_access sysbus
+puts "Enable clock gating..."
+write_memory $STDOUT 32 $mbox_clk_gate_en phys
+
+puts "Set debug security state to locked..."
+write_memory $STDOUT 32 $mbox_lock_debug phys
+puts ""
+
+puts "Retrieve mailbox lock..."
+set golden {0x0}
+set actual [read_memory $mbox_lock_mem_addr 32 1 phys]
+if {[compare $actual $golden] != 0} {
+ shutdown error
+}
+puts ""
+
+puts "Write few bytes to mailbox..."
+write_memory $mbox_cmd_mem_addr 32 0x12345678 phys
+write_memory $mbox_dlen_mem_addr 32 $dlen_bytes phys
+for {set i 0} {$i < $dlen_words} {incr i} {
+ write_memory $mbox_datain_mem_addr 32 $data($i) phys
+}
+write_memory $mbox_execute_mem_addr 32 1 phys
+puts ""
+
+puts "Read mailbox status..."
+set golden {0x500}
+set actual [read_memory $mbox_status_mem_addr 32 1 phys]
+if {[compare $actual $golden] != 0} {
+ shutdown error
+}
+puts ""
+
+puts "Halt CPU to access its registers..."
+halt
+puts "Initiate firmware halt (set register s1 to 0)..."
+set_reg {s1 0}
+puts "Resume CPU..."
+resume
+puts ""
+
+puts "Read Debug Module Status Register..."
+set val [riscv dmi_read $dmstatus_addr]
+puts "dmstatus: $val"
+if {($val & 0x00000c00) == 0} {
+ echo "The hart is halted!"
+ shutdown error
+}
+puts ""
+
+puts "Read mailbox status and dlen..."
+set golden $dlen_bytes
+set actual [riscv dmi_read $mbox_dlen_dmi_addr]
+if {[compare $actual $golden] != 0} {
+ shutdown error
+}
+puts ""
+
+puts "Read mailbox data..."
+for {set i 0} {$i < $dlen_words} {incr i} {
+ set golden $data($i)
+ set actual [riscv dmi_read $mbox_dout_dmi_addr]
+ if {[compare $actual $golden] != 0} {
+ shutdown error
+ }
+}
+
+# Success
+shutdown
diff --git a/src/integration/test_suites/infinite_loop/peripheral_access.tcl b/src/integration/test_suites/infinite_loop/peripheral_access.tcl
index d6bf70d37..c2dbcbc16 100644
--- a/src/integration/test_suites/infinite_loop/peripheral_access.tcl
+++ b/src/integration/test_suites/infinite_loop/peripheral_access.tcl
@@ -14,28 +14,13 @@
#
init
-proc compare {x y} {
- puts "'$x' vs. '$y'"
-
- if {[llength $y] != [llength $y]} {
- puts "length mismatch!"
- return -1
- }
-
- for {set i 0} {$i < [llength $x]} {incr i} {
- if {[lindex $x $i] != [lindex $y $i]} {
- puts "item $i mismatch!"
- return -1
- }
- }
-
- return 0
-}
+set script_dir [file dirname [info script]]
+source [file join $script_dir common.tcl]
# Manually read dmstatus and check if the core is actually held in external
# reset. In the expected state bits anyunavail allrunning anyrunning allhalted
# and anyhalted should be cleared.
-set val [riscv dmi_read 0x11]
+set val [riscv dmi_read $dmstatus_addr]
puts "dmstatus: $val"
if { ($val & 0x00000F00) != 0 } {
diff --git a/src/integration/test_suites/infinite_loop/regdump_golden.txt b/src/integration/test_suites/infinite_loop/regdump_golden.txt
index 27196e7d5..b1913bb9d 100644
--- a/src/integration/test_suites/infinite_loop/regdump_golden.txt
+++ b/src/integration/test_suites/infinite_loop/regdump_golden.txt
@@ -5,7 +5,7 @@ tp 0xdeadbeef 0xdeadbeef
t0 0x5050505 84215045
t1 0xa0a0a0a0 -1600085856
t2 0xff00ff 16711935
-s1 0x0 0
+s1 0xfeedabed -17978387
a0 0x0 0
a1 0x0 0
a2 0x0 0
diff --git a/src/integration/test_suites/libs/soc_ifc/soc_ifc.c b/src/integration/test_suites/libs/soc_ifc/soc_ifc.c
index f3f26b260..c7270fb2d 100644
--- a/src/integration/test_suites/libs/soc_ifc/soc_ifc.c
+++ b/src/integration/test_suites/libs/soc_ifc/soc_ifc.c
@@ -40,8 +40,7 @@ uint8_t soc_ifc_chk_execute_uc() {
VPRINTF(WARNING,"SOC_IFC: Check mbox_status.mbox_fsm_ps found MBOX_IDLE\n");
return 1;
} else if (state == MBOX_ERROR) {
- VPRINTF(ERROR,"SOC_IFC: Check mbox_status.mbox_fsm_ps found MBOX_ERROR, executing mailbox force-unlock\n");
- lsu_write_32(CLP_MBOX_CSR_MBOX_UNLOCK, MBOX_CSR_MBOX_UNLOCK_UNLOCK_MASK);
+ VPRINTF(ERROR,"SOC_IFC: Check mbox_status.mbox_fsm_ps found MBOX_ERROR, mailbox force-unlock needed\n");
return 0xF;
} else {
VPRINTF(FATAL,"SOC_IFC: Check mbox_status.mbox_fsm_ps found unexpected state 0x%x\n", state);
diff --git a/src/integration/test_suites/smoke_test_ras/smoke_test_ras.c b/src/integration/test_suites/smoke_test_ras/smoke_test_ras.c
index 593b92d3e..80602d475 100644
--- a/src/integration/test_suites/smoke_test_ras/smoke_test_ras.c
+++ b/src/integration/test_suites/smoke_test_ras/smoke_test_ras.c
@@ -72,6 +72,7 @@ enum tb_resp_value {
ICCM_FATAL_OBSERVED = 0xdeadaca1,
DCCM_FATAL_OBSERVED = 0xdeadbeef,
NMI_FATAL_OBSERVED = 0xdeadc0a7,
+ DMA_ERROR_OBSERVED = 0xfadebadd,
ERROR_NONE_SET = 0xba5eba11, /* default value for a test with no activity observed by TB */
};
@@ -80,6 +81,15 @@ enum mask_config {
NO_MASK
};
+enum read_config {
+ FROM_IFU,
+ FROM_LSU,
+};
+enum dccm_read_config {
+ DATA_LOAD,
+ FORCE_DMA
+};
+
enum recovery_config {
WARM_RESET,
FORCE_UNLOCK
@@ -98,6 +108,7 @@ enum test_status {
enum test_progress {
NOT_STARTED,
+ SKIPPED,
RUN_NOT_CHECKED,
RUN_AND_FAILED,
RUN_AND_PASSED
@@ -106,33 +117,44 @@ enum test_progress {
// Used to index into the global array of test progress
// TODO Test the FW FATAL/NON_FATAL regs
enum test_list {
- MBOX_SRAM_ECC_SINGLE_UNMASKED,
- MBOX_SRAM_ECC_DOUBLE_UNMASKED,
- MBOX_SRAM_ECC_SINGLE_MASKED ,
- MBOX_SRAM_ECC_DOUBLE_MASKED ,
- ICCM_SRAM_ECC_SINGLE_UNMASKED,
- ICCM_SRAM_ECC_DOUBLE_UNMASKED,
- ICCM_SRAM_ECC_SINGLE_MASKED ,
- ICCM_SRAM_ECC_DOUBLE_MASKED ,
- DCCM_SRAM_ECC_SINGLE_UNMASKED,
- DCCM_SRAM_ECC_DOUBLE_UNMASKED,
- DCCM_SRAM_ECC_SINGLE_MASKED ,
- DCCM_SRAM_ECC_DOUBLE_MASKED ,
- NMI_UNMASKED ,
- NMI_MASKED ,
- PROT_NO_LOCK_UNMASKED ,
- PROT_NO_LOCK_MASKED ,
- PROT_OOO_UNMASKED ,
- PROT_OOO_MASKED ,
- TEST_COUNT ,
+ MBOX_SRAM_ECC_SINGLE_UNMASKED ,
+ MBOX_SRAM_ECC_DOUBLE_UNMASKED ,
+ MBOX_SRAM_ECC_SINGLE_MASKED ,
+ MBOX_SRAM_ECC_DOUBLE_MASKED ,
+ ICCM_SRAM_ECC_SINGLE_IFU_UNMASKED ,
+ ICCM_SRAM_ECC_DOUBLE_IFU_UNMASKED ,
+ ICCM_SRAM_ECC_SINGLE_IFU_MASKED ,
+ ICCM_SRAM_ECC_DOUBLE_IFU_MASKED ,
+ ICCM_SRAM_ECC_SINGLE_LSU_UNMASKED ,
+ ICCM_SRAM_ECC_DOUBLE_LSU_UNMASKED ,
+ ICCM_SRAM_ECC_SINGLE_LSU_MASKED ,
+ ICCM_SRAM_ECC_DOUBLE_LSU_MASKED ,
+ DCCM_SRAM_ECC_SINGLE_LOAD_UNMASKED,
+ DCCM_SRAM_ECC_DOUBLE_LOAD_UNMASKED,
+ DCCM_SRAM_ECC_SINGLE_LOAD_MASKED ,
+ DCCM_SRAM_ECC_DOUBLE_LOAD_MASKED ,
+ DCCM_SRAM_ECC_SINGLE_DMA_UNMASKED ,
+ DCCM_SRAM_ECC_DOUBLE_DMA_UNMASKED ,
+ DCCM_SRAM_ECC_SINGLE_DMA_MASKED ,
+ DCCM_SRAM_ECC_DOUBLE_DMA_MASKED ,
+ NMI_UNMASKED ,
+ NMI_MASKED ,
+ PROT_NO_LOCK_UNMASKED ,
+ PROT_NO_LOCK_MASKED ,
+ PROT_OOO_UNMASKED ,
+ PROT_OOO_MASKED ,
+ TEST_COUNT ,
};
enum boot_count_list {
BEFORE_FIRST_ICCM_FAILURE = 1,
BEFORE_SECOND_ICCM_FAILURE ,
+ BEFORE_THIRD_ICCM_FAILURE ,
BEFORE_FIRST_DCCM_FAILURE ,
+ BEFORE_SECOND_DCCM_FAILURE ,
BEFORE_FIRST_NMI_FAILURE ,
BEFORE_SECOND_NMI_FAILURE ,
- AFTER_SECOND_NMI_FAILURE ,
+ BEFORE_THIRD_NMI_FAILURE ,
+ AFTER_THIRD_NMI_FAILURE ,
AFTER_FIRST_MBOX_OOO_FAILURE ,
AFTER_SECOND_MBOX_OOO_FAILURE
};
@@ -187,6 +209,18 @@ volatile uint32_t generic_input_wires_0_before_rst __attribute__((section(".dccm
// Track test progress across resets by allocating the variable in DCCM, which
// is initialized only once at time 0
enum test_progress test_progress_g[TEST_COUNT] __attribute__((section(".dccm.persistent"))) = {
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
+ NOT_STARTED,
NOT_STARTED,
NOT_STARTED,
NOT_STARTED,
@@ -213,12 +247,12 @@ uint32_t check_mbox_sram_ecc(enum ecc_error_mode_type type, enum mask_config tes
uint32_t test_mbox_sram_ecc (enum mask_config test_mask);
/* ICCM ECC */
-uint32_t run_iccm_sram_ecc (enum mask_config test_mask);
-uint32_t check_iccm_sram_ecc (enum mask_config test_mask);
+uint32_t run_iccm_sram_ecc (enum mask_config test_mask, enum read_config read_mask);
+uint32_t check_iccm_sram_ecc (enum mask_config test_mask, enum read_config read_mask);
/* DCCM ECC */
-uint32_t run_dccm_sram_ecc (enum mask_config test_mask);
-uint32_t check_dccm_sram_ecc (enum mask_config test_mask);
+uint32_t run_dccm_sram_ecc (enum mask_config test_mask, enum dccm_read_config read_path);
+uint32_t check_dccm_sram_ecc (enum mask_config test_mask, enum dccm_read_config read_path);
/* MBOX PROT */
void run_mbox_no_lock_error (enum mask_config test_mask);
@@ -296,7 +330,7 @@ uint32_t check_mbox_sram_ecc(enum ecc_error_mode_type type, enum mask_config tes
sts |= UNEXP_ARG; }
if (test_progress_g[cur_test] != RUN_NOT_CHECKED) {
- VPRINTF(ERROR, "Mbox chkr hit unexpected state. Idx: %d Prog: %d", cur_test, test_progress_g[cur_test]);
+ VPRINTF(ERROR, "Mbox chkr hit unexpected state. Idx: %d Prog: %d\n", cur_test, test_progress_g[cur_test]);
sts |= INV_STATE;
}
@@ -385,22 +419,26 @@ uint32_t test_mbox_sram_ecc (enum mask_config test_mask) {
check_mbox_sram_ecc(MBOX_DOUBLE, test_mask);
}
-uint32_t run_iccm_sram_ecc (enum mask_config test_mask) {
+uint32_t run_iccm_sram_ecc (enum mask_config test_mask, enum read_config read_mask) {
enum test_list cur_test;
uint32_t * ICCM = (uint32_t *) RV_ICCM_SADR;
uint32_t * code_word = 0;
uint32_t * iccm_dest = ICCM;
void (* iccm_fn) (void) = (void*) ICCM;
+ uint32_t * actual_iccm_code_end = 0;
uint32_t resp;
+ uint32_t tmp_reg;
- VPRINTF(MEDIUM, "\n*** Run ICCM SRAM ECC Err ***\n Masked: %d\n\n", test_mask == WITH_MASK);
+ VPRINTF(MEDIUM, "\n*** Run ICCM SRAM ECC Err ***\n Masked: %d\n IFU: %d\n\n", test_mask == WITH_MASK, read_mask == FROM_IFU);
// Grab test enum
- if (test_mask == WITH_MASK) { cur_test = ICCM_SRAM_ECC_SINGLE_MASKED; }
- else if (test_mask == NO_MASK) { cur_test = ICCM_SRAM_ECC_SINGLE_UNMASKED; }
- else { cur_test = TEST_COUNT; }
+ if (test_mask == WITH_MASK && read_mask == FROM_IFU) { cur_test = ICCM_SRAM_ECC_SINGLE_IFU_MASKED; }
+ else if (test_mask == NO_MASK && read_mask == FROM_IFU) { cur_test = ICCM_SRAM_ECC_SINGLE_IFU_UNMASKED; }
+ else if (test_mask == WITH_MASK && read_mask == FROM_LSU) { cur_test = ICCM_SRAM_ECC_SINGLE_LSU_MASKED; }
+ else if (test_mask == NO_MASK && read_mask == FROM_LSU) { cur_test = ICCM_SRAM_ECC_SINGLE_LSU_UNMASKED; }
+ else { cur_test = TEST_COUNT; }
// Request that TB inject ICCM SRAM single-bit errors
// This should not result in any reset or reporting activity
@@ -413,6 +451,7 @@ uint32_t run_iccm_sram_ecc (enum mask_config test_mask) {
VPRINTF(ALL, "at %x: %x\n", (uintptr_t) code_word, *code_word);
*iccm_dest++ = *code_word++;
}
+ actual_iccm_code_end = iccm_dest;
// Reset the Error Injection Function
SEND_STDOUT_CTRL((uint32_t) ERROR_NONE);
@@ -421,7 +460,18 @@ uint32_t run_iccm_sram_ecc (enum mask_config test_mask) {
test_progress_g[cur_test] = RUN_NOT_CHECKED;
// Run ICCM routine
- iccm_fn();
+ VPRINTF(MEDIUM, "Single-bit:\n");
+ if (read_mask == FROM_IFU) {
+ iccm_fn();
+ // Read from ICCM instead
+ } else if (read_mask == FROM_LSU) {
+ code_word = (uint32_t *) ICCM;
+ VPRINTF(LOW, "Read code from %x [through %x]\n", (uintptr_t) code_word, (uintptr_t) actual_iccm_code_end);
+ while (code_word < actual_iccm_code_end) {
+ tmp_reg ^= *code_word++;
+ }
+ VPRINTF(LOW, "Data in ICCM: 0x%x\n", tmp_reg);
+ }
// Confirm TB reports no observed activity
resp = lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0);
@@ -444,9 +494,11 @@ uint32_t run_iccm_sram_ecc (enum mask_config test_mask) {
// Should return here after encountering single-bit (correctable) ECC errors
// while running ICCM routine
// Set new test enum
- if (test_mask == WITH_MASK) { cur_test = ICCM_SRAM_ECC_DOUBLE_MASKED; }
- else if (test_mask == NO_MASK) { cur_test = ICCM_SRAM_ECC_DOUBLE_UNMASKED; }
- else { cur_test = TEST_COUNT; }
+ if (test_mask == WITH_MASK && read_mask == FROM_IFU) { cur_test = ICCM_SRAM_ECC_DOUBLE_IFU_MASKED; }
+ else if (test_mask == NO_MASK && read_mask == FROM_IFU) { cur_test = ICCM_SRAM_ECC_DOUBLE_IFU_UNMASKED; }
+ else if (test_mask == WITH_MASK && read_mask == FROM_LSU) { cur_test = ICCM_SRAM_ECC_DOUBLE_LSU_MASKED; }
+ else if (test_mask == NO_MASK && read_mask == FROM_LSU) { cur_test = ICCM_SRAM_ECC_DOUBLE_LSU_UNMASKED; }
+ else { cur_test = TEST_COUNT; }
// Now, set the MASK (per arg)
if (test_mask == WITH_MASK) {
@@ -484,27 +536,53 @@ uint32_t run_iccm_sram_ecc (enum mask_config test_mask) {
// Run ICCM routine
// If FATAL error unmasked, this will trigger a reset.
// Else, we'll observe a precise exception, which should do a firmware reset
- iccm_fn();
+ VPRINTF(MEDIUM, "Double-bit:\n");
+ if (read_mask == FROM_IFU) {
+ iccm_fn();
+ // Read from ICCM instead
+ } else if (read_mask == FROM_LSU) {
+ code_word = (uint32_t *) ICCM;
+ VPRINTF(LOW, "Read code from %x [through %x]\n", (uintptr_t) code_word, (uintptr_t) actual_iccm_code_end);
+ while (code_word < actual_iccm_code_end) {
+ tmp_reg = *code_word++;
+ VPRINTF(LOW, "Data in ICCM: 0x%x\n", tmp_reg);
+ }
+ }
// Wait for the reset to occur
if (test_mask == NO_MASK) { VPRINTF(HIGH, "...\n"); while(1); }
}
-uint32_t check_iccm_sram_ecc (enum mask_config test_mask) {
+uint32_t check_iccm_sram_ecc (enum mask_config test_mask, enum read_config read_mask) {
enum test_list cur_test;
uint32_t resp;
uint32_t sts = SUCCESS;
- VPRINTF(MEDIUM, "\n*** Check ICCM SRAM ECC Err ***\n Masked: %d\n\n", test_mask == WITH_MASK);
+ VPRINTF(MEDIUM, "\n*** Check ICCM SRAM ECC Err ***\n Masked: %d\n IFU: %d\n\n", test_mask == WITH_MASK, read_mask == FROM_IFU);
// Get test ID
- if (test_mask == WITH_MASK) { cur_test = ICCM_SRAM_ECC_DOUBLE_MASKED; }
- else { cur_test = ICCM_SRAM_ECC_DOUBLE_UNMASKED; }
-
+ if (test_mask == WITH_MASK && read_mask == FROM_IFU) { cur_test = ICCM_SRAM_ECC_DOUBLE_IFU_MASKED; }
+ else if (test_mask == NO_MASK && read_mask == FROM_IFU ) { cur_test = ICCM_SRAM_ECC_DOUBLE_IFU_UNMASKED; }
+ else if (test_mask == WITH_MASK && read_mask == FROM_LSU) { cur_test = ICCM_SRAM_ECC_DOUBLE_LSU_MASKED; }
+ else if (test_mask == NO_MASK && read_mask == FROM_LSU ) { cur_test = ICCM_SRAM_ECC_DOUBLE_LSU_UNMASKED; }
+ else { cur_test = TEST_COUNT;}
// Verify correct response path was taken
resp = lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0);
- if (test_mask == WITH_MASK) {
+
+ if (test_mask == WITH_MASK && read_mask == FROM_LSU) {
+ // No generic input toggle expected out of reset
+ if ((cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTERNAL_INTR_R_NOTIF_GEN_IN_TOGGLE_STS_MASK) && (lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0) != generic_input_wires_0_before_rst)) {
+ VPRINTF(ERROR, "ERROR: Gen-in tgl with bad val\n");
+ sts |= BAD_CPTRA_SIG;
+ test_progress_g[cur_test] = RUN_AND_FAILED;
+ } else {
+ sts |= SUCCESS;
+ test_progress_g[cur_test] = RUN_AND_PASSED;
+ }
+
+ lsu_write_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL, SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_ICCM_ECC_UNC_MASK);
+ } else if (test_mask == WITH_MASK && read_mask == FROM_IFU) {
// For a MASKED error, we only expect the exception path and no response from TB
if (exc_flag.exception_hit == 0) {
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -534,7 +612,7 @@ uint32_t check_iccm_sram_ecc (enum mask_config test_mask) {
}
// TODO should test both DMA slave and internal DCCM accesses?
-uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
+uint32_t run_dccm_sram_ecc (enum mask_config test_mask, enum dccm_read_config read_path) {
enum test_list cur_test;
uint32_t array_in_dccm [10]; // stack is in DCCM, so this automatically goes there
@@ -542,12 +620,27 @@ uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
uint32_t resp = lsu_read_32(CLP_SOC_IFC_REG_INTERNAL_RV_MTIME_L);
- VPRINTF(MEDIUM, "\n*** Run DCCM SRAM ECC Err ***\n Masked: %d\n\n", test_mask == WITH_MASK);
+ VPRINTF(MEDIUM, "\n*** Run DCCM SRAM ECC Err ***\n Masked: %d\n Path: %s\n\n", test_mask == WITH_MASK, read_path == DATA_LOAD ? "LOAD" : "DMA");
// Grab test enum
- if (test_mask == WITH_MASK) { cur_test = DCCM_SRAM_ECC_SINGLE_MASKED; }
- else if (test_mask == NO_MASK) { cur_test = DCCM_SRAM_ECC_SINGLE_UNMASKED; }
- else { cur_test = TEST_COUNT; }
+ if (test_mask == WITH_MASK && read_path == DATA_LOAD) { cur_test = DCCM_SRAM_ECC_SINGLE_LOAD_MASKED; }
+ else if (test_mask == NO_MASK && read_path == DATA_LOAD) { cur_test = DCCM_SRAM_ECC_SINGLE_LOAD_UNMASKED; }
+ else if (test_mask == WITH_MASK && read_path == FORCE_DMA) { cur_test = DCCM_SRAM_ECC_SINGLE_DMA_MASKED; }
+ else if (test_mask == NO_MASK && read_path == FORCE_DMA) { cur_test = DCCM_SRAM_ECC_SINGLE_DMA_UNMASKED; }
+ else { cur_test = TEST_COUNT; }
+
+ // Skip the FORCE_DMA test if running in Verilator - it's bugged FIXME
+ if (read_path == FORCE_DMA) {
+ SEND_STDOUT_CTRL((uint32_t) ERROR_NONE);
+ if (lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_1) == ('v' | 'l' << 8 | 't' << 16 | 'r' << 24)) {
+ VPRINTF(LOW, "Skipping DMA path in Verilator\n");
+ test_progress_g[cur_test] = SKIPPED;
+ if (test_mask == NO_MASK) {
+ SEND_STDOUT_CTRL(0xf6); // Warm reset
+ }
+ return 0;
+ }
+ }
// Acquire the mailbox lock (to allow direct-mode use of safe_iter)
while((lsu_read_32(CLP_MBOX_CSR_MBOX_LOCK) & MBOX_CSR_MBOX_LOCK_LOCK_MASK) != 0) {
@@ -560,7 +653,7 @@ uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
// Populate array in DCCM (should be corrupted)
*safe_iter = 0;
- while(*safe_iter < 10) {
+ while(*safe_iter < 10) {
resp = (resp << 1) ^ lsu_read_32(CLP_SOC_IFC_REG_INTERNAL_RV_MTIME_L);
array_in_dccm[*safe_iter] = resp;
*safe_iter = (*safe_iter) + 1;
@@ -574,10 +667,17 @@ uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
test_progress_g[cur_test] = RUN_NOT_CHECKED;
// Read-back the array in DCCM
+ VPRINTF(MEDIUM, "Single-bit:\n");
*safe_iter = 0;
- while(*safe_iter < 10) {
- printf("[%d]:%x\n", *safe_iter, array_in_dccm[*safe_iter]); // no verbosity control -- dereferencing the array IS the test
- *safe_iter = (*safe_iter) + 1;
+ if (read_path == DATA_LOAD) {
+ while(*safe_iter < 10) {
+ printf("[%d]:%x\n", *safe_iter, array_in_dccm[*safe_iter]); // no verbosity control -- dereferencing the array IS the test
+ *safe_iter = (*safe_iter) + 1;
+ }
+ } else if (read_path == FORCE_DMA) {
+ VPRINTF(LOW, "Trigger TB to force DMA burst\n");
+ lsu_write_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_OUTPUT_WIRES_1, (uint32_t) &array_in_dccm);
+ lsu_write_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_OUTPUT_WIRES_0, (10 << 12) | 0xdf);
}
// Unlock Mailbox
@@ -604,9 +704,11 @@ uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
// Should return here after encountering single-bit (correctable) ECC errors
// while running DCCM routine
// Set new test enum
- if (test_mask == WITH_MASK) { cur_test = DCCM_SRAM_ECC_DOUBLE_MASKED; }
- else if (test_mask == NO_MASK) { cur_test = DCCM_SRAM_ECC_DOUBLE_UNMASKED; }
- else { cur_test = TEST_COUNT; }
+ if (test_mask == WITH_MASK && read_path == DATA_LOAD) { cur_test = DCCM_SRAM_ECC_DOUBLE_LOAD_MASKED; }
+ else if (test_mask == NO_MASK && read_path == DATA_LOAD) { cur_test = DCCM_SRAM_ECC_DOUBLE_LOAD_UNMASKED; }
+ else if (test_mask == WITH_MASK && read_path == FORCE_DMA) { cur_test = DCCM_SRAM_ECC_DOUBLE_DMA_MASKED; }
+ else if (test_mask == NO_MASK && read_path == FORCE_DMA) { cur_test = DCCM_SRAM_ECC_DOUBLE_DMA_UNMASKED; }
+ else { cur_test = TEST_COUNT; }
// Now, set the MASK (per arg)
if (test_mask == WITH_MASK) {
@@ -629,7 +731,7 @@ uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
// Populate array in DCCM (should be corrupted)
*safe_iter = 0;
- while(*safe_iter < 10) {
+ while(*safe_iter < 10) {
resp = (resp << 1) ^ lsu_read_32(CLP_SOC_IFC_REG_INTERNAL_RV_MTIME_L);
array_in_dccm[*safe_iter] = resp;
*safe_iter = (*safe_iter) + 1;
@@ -651,11 +753,19 @@ uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
// Read-back the array in DCCM
// If FATAL error unmasked, this will trigger a reset.
+ // If FATAL error masked, but using DMA path, this only results in generic input wire value
// Else, we'll observe a precise exception
+ VPRINTF(MEDIUM, "Double-bit:\n");
*safe_iter = 0;
- while(*safe_iter < 10) {
- printf("[%d]:%x\n", *safe_iter, array_in_dccm[*safe_iter]); // no verbosity control -- dereferencing the array IS the test
- *safe_iter = (*safe_iter) + 1;
+ if (read_path == DATA_LOAD) {
+ while(*safe_iter < 10) {
+ printf("[%d]:%x\n", *safe_iter, array_in_dccm[*safe_iter]); // no verbosity control -- dereferencing the array IS the test
+ *safe_iter = (*safe_iter) + 1;
+ }
+ } else if (read_path == FORCE_DMA) {
+ VPRINTF(LOW, "Trigger TB to force DMA burst\n");
+ lsu_write_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_OUTPUT_WIRES_1, (uint32_t) &array_in_dccm);
+ lsu_write_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_OUTPUT_WIRES_0, (10 << 12) | 0xdf);
}
// Unlock Mailbox
@@ -666,20 +776,32 @@ uint32_t run_dccm_sram_ecc (enum mask_config test_mask) {
}
-uint32_t check_dccm_sram_ecc (enum mask_config test_mask) {
+uint32_t check_dccm_sram_ecc (enum mask_config test_mask, enum dccm_read_config read_path) {
enum test_list cur_test;
uint32_t resp;
uint32_t sts = SUCCESS;
- VPRINTF(MEDIUM, "\n*** Check DCCM SRAM ECC Err ***\n Masked: %d\n\n", test_mask == WITH_MASK);
+ VPRINTF(MEDIUM, "\n*** Check DCCM SRAM ECC Err ***\n Masked: %d\n Path: %s\n\n", test_mask == WITH_MASK, read_path == DATA_LOAD ? "LOAD" : "DMA");
// Get test ID
- if (test_mask == WITH_MASK) { cur_test = DCCM_SRAM_ECC_DOUBLE_MASKED; }
- else { cur_test = DCCM_SRAM_ECC_DOUBLE_UNMASKED; }
+ if (test_mask == WITH_MASK && read_path == DATA_LOAD) { cur_test = DCCM_SRAM_ECC_DOUBLE_LOAD_MASKED; }
+ else if (test_mask == NO_MASK && read_path == DATA_LOAD) { cur_test = DCCM_SRAM_ECC_DOUBLE_LOAD_UNMASKED; }
+ else if (test_mask == WITH_MASK && read_path == FORCE_DMA) { cur_test = DCCM_SRAM_ECC_DOUBLE_DMA_MASKED; }
+ else if (test_mask == NO_MASK && read_path == FORCE_DMA) { cur_test = DCCM_SRAM_ECC_DOUBLE_DMA_UNMASKED; }
+ else { cur_test = TEST_COUNT; }
+
+ // Skip the FORCE_DMA test if running in Verilator - it's bugged FIXME
+ if (read_path == FORCE_DMA) {
+ if (lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_1) == ('v' | 'l' << 8 | 't' << 16 | 'r' << 24)) {
+ VPRINTF(LOW, "Skipping DMA path in Verilator\n");
+ test_progress_g[cur_test] = SKIPPED;
+ return sts;
+ }
+ }
// Verify correct response path was taken
resp = lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0);
- if (test_mask == WITH_MASK) {
+ if (test_mask == WITH_MASK && read_path == DATA_LOAD) {
// For a MASKED error, we only expect the exception path and no response from TB
if (exc_flag.exception_hit == 0) {
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -698,6 +820,25 @@ uint32_t check_dccm_sram_ecc (enum mask_config test_mask) {
test_progress_g[cur_test] = RUN_AND_PASSED;
}
lsu_write_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL, SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_DCCM_ECC_UNC_MASK);
+ } else if (test_mask == WITH_MASK && read_path == FORCE_DMA) {
+ // For a MASKED error through the DMA force-access path, expect a TB response
+ // but no reset, no exceptions, and the FATAL error bit should be set
+ if (exc_flag.exception_hit == 1) {
+ test_progress_g[cur_test] = RUN_AND_FAILED;
+ sts |= BAD_EXCP_CODE;
+ VPRINTF(ERROR, "ERROR: Unexpected excpn\n");
+ } else if (resp != DMA_ERROR_OBSERVED) {
+ test_progress_g[cur_test] = RUN_AND_FAILED;
+ sts |= BAD_CPTRA_SIG;
+ VPRINTF(ERROR, "ERROR: Wrong TB resp. Got 0x%x, exp 0x%x\n", resp, DMA_ERROR_OBSERVED);
+ } else if (!(lsu_read_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL) & SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_DCCM_ECC_UNC_MASK)) {
+ test_progress_g[cur_test] = RUN_AND_FAILED;
+ sts |= INV_STATE;
+ VPRINTF(ERROR, "ERROR: DCCM ECC UNC FATAL not set by TB\n");
+ } else {
+ test_progress_g[cur_test] = RUN_AND_PASSED;
+ }
+ lsu_write_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL, SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_DCCM_ECC_UNC_MASK);
} else {
// For an UNMASKED error, we expect DCCM ECC FATAL Error to trigger TB reset and input val
if (resp == DCCM_FATAL_OBSERVED) {
@@ -715,7 +856,7 @@ uint32_t check_dccm_sram_ecc (enum mask_config test_mask) {
void run_nmi_test (enum mask_config test_mask) {
enum test_list cur_test;
VPRINTF(MEDIUM, "\n*** Run Non-Maskable Intr ***\n Masked: %d\n\n", test_mask == WITH_MASK);
-
+
// Get test ID
if (test_mask == WITH_MASK) { cur_test = NMI_MASKED; }
else { cur_test = NMI_UNMASKED; }
@@ -757,7 +898,7 @@ uint32_t check_nmi_test (enum mask_config test_mask) {
if (test_mask == WITH_MASK) {
// No generic input toggle expected out of reset
- if ((cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTR_EN_R_NOTIF_GEN_IN_TOGGLE_EN_MASK) && (lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0) != generic_input_wires_0_before_rst)) {
+ if ((cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTERNAL_INTR_R_NOTIF_GEN_IN_TOGGLE_STS_MASK) && (lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0) != generic_input_wires_0_before_rst)) {
VPRINTF(ERROR, "ERROR: Gen-in tgl with bad val\n");
sts |= BAD_CPTRA_SIG;
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -769,7 +910,7 @@ uint32_t check_nmi_test (enum mask_config test_mask) {
lsu_write_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL, SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_NMI_PIN_MASK);
} else {
// Check for generic_input_wires activity
- if (!(cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTR_EN_R_NOTIF_GEN_IN_TOGGLE_EN_MASK)) {
+ if (!(cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTERNAL_INTR_R_NOTIF_GEN_IN_TOGGLE_STS_MASK)) {
VPRINTF(ERROR, "ERROR: Gen-in did not tgl\n");
sts |= BAD_CPTRA_SIG;
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -860,7 +1001,7 @@ uint32_t check_mbox_no_lock_error(enum mask_config test_mask) {
test_progress_g[cur_test] = RUN_AND_FAILED;
} else if (test_mask == WITH_MASK) {
// Check for generic_input_wires activity
- if (cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTR_EN_R_NOTIF_GEN_IN_TOGGLE_EN_MASK) {
+ if (cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTERNAL_INTR_R_NOTIF_GEN_IN_TOGGLE_STS_MASK) {
VPRINTF(ERROR, "ERROR: Gen-in tgl\n");
sts |= BAD_CPTRA_SIG;
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -871,7 +1012,7 @@ uint32_t check_mbox_no_lock_error(enum mask_config test_mask) {
lsu_write_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_NON_FATAL, SOC_IFC_REG_CPTRA_HW_ERROR_NON_FATAL_MBOX_PROT_NO_LOCK_MASK);
} else {
// Check for generic_input_wires activity
- if (!(cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTR_EN_R_NOTIF_GEN_IN_TOGGLE_EN_MASK)) {
+ if (!(cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTERNAL_INTR_R_NOTIF_GEN_IN_TOGGLE_STS_MASK)) {
VPRINTF(ERROR, "ERROR: Gen-in did not tgl\n");
sts |= BAD_CPTRA_SIG;
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -907,7 +1048,7 @@ uint32_t check_mbox_ooo_error(enum mask_config test_mask) {
test_progress_g[cur_test] = RUN_AND_FAILED;
} else if (test_mask == WITH_MASK) {
// Check for generic_input_wires activity
- if (cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTR_EN_R_NOTIF_GEN_IN_TOGGLE_EN_MASK) {
+ if (cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTERNAL_INTR_R_NOTIF_GEN_IN_TOGGLE_STS_MASK) {
VPRINTF(ERROR, "ERROR: Gen-in tgl\n");
sts |= BAD_CPTRA_SIG;
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -921,7 +1062,7 @@ uint32_t check_mbox_ooo_error(enum mask_config test_mask) {
SEND_STDOUT_CTRL(0xe7);
} else {
// Check for generic_input_wires activity
- if (!(cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTR_EN_R_NOTIF_GEN_IN_TOGGLE_EN_MASK)) {
+ if (!(cptra_intr_rcv.soc_ifc_notif & SOC_IFC_REG_INTR_BLOCK_RF_NOTIF_INTERNAL_INTR_R_NOTIF_GEN_IN_TOGGLE_STS_MASK)) {
VPRINTF(ERROR, "ERROR: Gen-in did not tgl\n");
sts |= BAD_CPTRA_SIG;
test_progress_g[cur_test] = RUN_AND_FAILED;
@@ -969,8 +1110,8 @@ void execute_from_iccm (void) {
// ERROR_FATAL interrupt will only go to TB if running the unmasked
// double-bit error test, so we expect to get here successfully and return
// in other test cases
- if (test_progress_g[ICCM_SRAM_ECC_DOUBLE_UNMASKED] == RUN_NOT_CHECKED &&
- test_progress_g[ICCM_SRAM_ECC_SINGLE_MASKED ] == NOT_STARTED) {
+ if (test_progress_g[ICCM_SRAM_ECC_DOUBLE_IFU_UNMASKED] == RUN_NOT_CHECKED &&
+ test_progress_g[ICCM_SRAM_ECC_SINGLE_IFU_MASKED ] == NOT_STARTED) {
while(1) {
__asm__ volatile ("wfi"); // "Wait for interrupt"
// Continuously loop to allow the ICCM ECC ERROR to trigger system reset
@@ -987,28 +1128,30 @@ void execute_from_iccm (void) {
// In the ROM .text section
void nmi_handler (void) {
VPRINTF(LOW, "**** NMI ****\n");
- if (boot_count != BEFORE_FIRST_NMI_FAILURE && boot_count != BEFORE_SECOND_NMI_FAILURE) {
+ if (boot_count != BEFORE_FIRST_NMI_FAILURE && boot_count != BEFORE_SECOND_NMI_FAILURE && boot_count != BEFORE_THIRD_NMI_FAILURE) {
VPRINTF(ERROR, "ERROR: NMI unexpected. mcause [0x%x]!\n", csr_read_mcause()); // did not expect NMI
VPRINTF(ERROR, " mepc [0x%x]\n", csr_read_mepc());
SEND_STDOUT_CTRL(0x1);
while(1);
}
// If we got here via internal NMI, it's an error - kill the sim
- if ((csr_read_mcause() & MCAUSE_NMI_BIT_MASK) == MCAUSE_NMI_BIT_MASK) {
+ if ((boot_count != BEFORE_THIRD_NMI_FAILURE) && ((csr_read_mcause() & MCAUSE_NMI_BIT_MASK) == MCAUSE_NMI_BIT_MASK)) {
VPRINTF(ERROR, "ERROR: NMI w/ mcause [0x%x]!\n", csr_read_mcause());
VPRINTF(ERROR, " mepc [0x%x]\n", csr_read_mepc());
SEND_STDOUT_CTRL(0x1);
while(1);
}
- // NMI occurred, but was caused by pin-assertion due to Watchdog Timer
- else if (lsu_read_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL) & SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_NMI_PIN_MASK) {
+ // NMI occurred, check if we had a fatal error
+ if (lsu_read_32(CLP_SOC_IFC_REG_CPTRA_HW_ERROR_FATAL) & (SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_ICCM_ECC_UNC_MASK |
+ SOC_IFC_REG_CPTRA_HW_ERROR_FATAL_NMI_PIN_MASK)) {
//Save generic_input_wires value before reset to compare later. This is to avoid flagging the toggle during reset as an error
generic_input_wires_0_before_rst = lsu_read_32(CLP_SOC_IFC_REG_CPTRA_GENERIC_INPUT_WIRES_0);
VPRINTF(MEDIUM, "NMI w/ mcause [0x%x] during NMI test\n", csr_read_mcause());
VPRINTF(MEDIUM, "mepc [0x%x]\n", csr_read_mepc());
- // If the FATAL Error bit for NMI is masked, manually trigger firmware reset
- if (lsu_read_32(CLP_SOC_IFC_REG_INTERNAL_HW_ERROR_FATAL_MASK) & SOC_IFC_REG_INTERNAL_HW_ERROR_FATAL_MASK_MASK_NMI_PIN_MASK) {
- VPRINTF(LOW, "NMI bit masked, no rst exp from TB: rst core manually!\n");
+ // If the FATAL Error bit for ECC UNC or NMI is masked, manually trigger firmware reset
+ if (lsu_read_32(CLP_SOC_IFC_REG_INTERNAL_HW_ERROR_FATAL_MASK) & (SOC_IFC_REG_INTERNAL_HW_ERROR_FATAL_MASK_MASK_NMI_PIN_MASK |
+ SOC_IFC_REG_INTERNAL_HW_ERROR_FATAL_MASK_MASK_ICCM_ECC_UNC_MASK)) {
+ VPRINTF(LOW, "FATAL_ERROR bit is masked, no rst exp from TB: rst core manually!\n");
//lsu_write_32(CLP_SOC_IFC_REG_INTERNAL_FW_UPDATE_RESET, SOC_IFC_REG_INTERNAL_FW_UPDATE_RESET_CORE_RST_MASK);
SEND_STDOUT_CTRL(0xf6);
// Otherwise, wait for core reset
@@ -1044,26 +1187,35 @@ void main(void) {
// No reset expected following MBOX SRAM ECC Error injection
// Test ICCM SRAM ECC
- if (boot_count == BEFORE_FIRST_ICCM_FAILURE) { run_iccm_sram_ecc(NO_MASK ); }
- else if (boot_count == BEFORE_SECOND_ICCM_FAILURE) { check_iccm_sram_ecc(NO_MASK );
- run_iccm_sram_ecc(WITH_MASK); }
- else if (boot_count == BEFORE_FIRST_DCCM_FAILURE) { check_iccm_sram_ecc(WITH_MASK); }
+ if (boot_count == BEFORE_FIRST_ICCM_FAILURE) { run_iccm_sram_ecc(NO_MASK, FROM_IFU); }
+ else if (boot_count == BEFORE_SECOND_ICCM_FAILURE) { check_iccm_sram_ecc(NO_MASK, FROM_IFU);
+ run_iccm_sram_ecc(WITH_MASK, FROM_IFU); }
+ else if (boot_count == BEFORE_THIRD_ICCM_FAILURE) { check_iccm_sram_ecc(WITH_MASK, FROM_IFU);
+ run_iccm_sram_ecc(NO_MASK, FROM_LSU); }
+ else if (boot_count == BEFORE_FIRST_DCCM_FAILURE) { check_iccm_sram_ecc(NO_MASK, FROM_LSU); }
// Test DCCM SRAM ECC
- if (boot_count == BEFORE_FIRST_DCCM_FAILURE){ run_dccm_sram_ecc(NO_MASK ); }
- else if (boot_count == BEFORE_FIRST_NMI_FAILURE) { check_dccm_sram_ecc(NO_MASK );
- run_dccm_sram_ecc(WITH_MASK);
- check_dccm_sram_ecc(WITH_MASK); }
+ if (boot_count == BEFORE_FIRST_DCCM_FAILURE) { run_dccm_sram_ecc(NO_MASK , DATA_LOAD); }
+ else if (boot_count == BEFORE_SECOND_DCCM_FAILURE){ check_dccm_sram_ecc(NO_MASK , DATA_LOAD);
+ run_dccm_sram_ecc(WITH_MASK, DATA_LOAD);
+ check_dccm_sram_ecc(WITH_MASK, DATA_LOAD);
+ run_dccm_sram_ecc(NO_MASK , FORCE_DMA); }
+ else if (boot_count == BEFORE_FIRST_NMI_FAILURE) { check_dccm_sram_ecc(NO_MASK , FORCE_DMA);
+ run_dccm_sram_ecc(WITH_MASK, FORCE_DMA);
+ check_dccm_sram_ecc(WITH_MASK, FORCE_DMA); }
// Test WDT Expiration
- if (boot_count == BEFORE_FIRST_NMI_FAILURE) { run_nmi_test(NO_MASK ); }
- else if (boot_count == BEFORE_SECOND_NMI_FAILURE){ check_nmi_test(NO_MASK );
- run_nmi_test(WITH_MASK); }
- else if (boot_count == AFTER_SECOND_NMI_FAILURE) { check_nmi_test(WITH_MASK); }
+ if (boot_count == BEFORE_FIRST_NMI_FAILURE) { run_nmi_test(NO_MASK ); }
+ else if (boot_count == BEFORE_SECOND_NMI_FAILURE){ check_nmi_test(NO_MASK );
+ run_nmi_test(WITH_MASK); }
+ else if (boot_count == BEFORE_THIRD_NMI_FAILURE) { check_nmi_test(WITH_MASK);
+ // Test NMI from Masked ICCM ECC through LSU
+ run_iccm_sram_ecc(WITH_MASK, FROM_LSU); }
+ else if (boot_count == AFTER_THIRD_NMI_FAILURE) { check_iccm_sram_ecc(WITH_MASK, FROM_LSU); }
// Test Mailbox Protocol Violations (no reset expected)
- if (boot_count == AFTER_SECOND_NMI_FAILURE) { run_mbox_no_lock_error ( NO_MASK);
- check_mbox_no_lock_error ( NO_MASK);
+ if (boot_count == AFTER_THIRD_NMI_FAILURE) { run_mbox_no_lock_error ( NO_MASK);
+ check_mbox_no_lock_error ( NO_MASK);
run_mbox_ooo_error ( NO_MASK);
check_mbox_ooo_error ( NO_MASK);
run_mbox_no_lock_error (WITH_MASK);
@@ -1074,7 +1226,9 @@ void main(void) {
// Final Report
VPRINTF(MEDIUM, "Eval test progress...\n");
for (enum test_list tests = 0; tests < TEST_COUNT; tests++) {
- if (test_progress_g[tests] != RUN_AND_PASSED) {
+ if (test_progress_g[tests] == SKIPPED) {
+ VPRINTF(WARNING, "Test [%d] skipped!\n", tests);
+ } else if (test_progress_g[tests] != RUN_AND_PASSED) {
VPRINTF(ERROR, "Test [%d] failed! Progress: %d\n", tests, test_progress_g[tests]);
test_fail = 1;
}
diff --git a/src/integration/uvmf_caliptra_top/config/compile.yml b/src/integration/uvmf_caliptra_top/config/compile.yml
index 50326aaf1..a2f5c1c7e 100644
--- a/src/integration/uvmf_caliptra_top/config/compile.yml
+++ b/src/integration/uvmf_caliptra_top/config/compile.yml
@@ -15,6 +15,7 @@ provides: [uvmf_caliptra_top]
schema_version: 2.4.0
requires:
- uvmf_caliptra_top_vip
+ - asserts
- caliptra_top
- sha512_coverage
- sha256_coverage
@@ -57,6 +58,7 @@ global:
default:
- '-assert svaext'
- +define+CLP_ASSERT_ON
+ - +define+UVMF_CALIPTRA_TOP
#- '-v2k_generate'
#- '-timescale=1ns/1ps'
- '-noinherit_timescale=1ns/1ps'
@@ -102,6 +104,7 @@ global:
default:
- '-assert svaext'
- +define+CLP_ASSERT_ON
+ - +define+UVMF_CALIPTRA_TOP
- '-noinherit_timescale=1ns/1ps'
- '+define+CALIPTRA_INTERNAL_TRNG'
# Suppress a warning due to calling $fgets as task instead of function
diff --git a/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top.vf b/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top.vf
new file mode 100644
index 000000000..219eb6217
--- /dev/null
+++ b/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top.vf
@@ -0,0 +1,452 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/verification_ip/environment_packages/caliptra_top_env_pkg
++incdir+${CALIPTRA_ROOT}/src/doe/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/asserts
++incdir+${CALIPTRA_ROOT}/src/datavault/rtl
++incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
++incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
++incdir+${CALIPTRA_ROOT}/src/lc_ctrl/rtl
++incdir+${CALIPTRA_ROOT}/src/entropy_src/tb
++incdir+${CALIPTRA_ROOT}/src/csrng/rtl
++incdir+${CALIPTRA_ROOT}/src/spi_host/rtl
++incdir+${CALIPTRA_ROOT}/src/uart/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512/coverage
++incdir+${CALIPTRA_ROOT}/src/sha256/coverage
++incdir+${CALIPTRA_ROOT}/src/hmac/coverage
++incdir+${CALIPTRA_ROOT}/src/ecc/coverage
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/coverage
++incdir+${CALIPTRA_ROOT}/src/pcrvault/coverage
++incdir+${CALIPTRA_ROOT}/src/keyvault/coverage
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/tests
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
++incdir+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl
++incdir+${CALIPTRA_ROOT}/src/sha256/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512_masked/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac_drbg/rtl
++incdir+${CALIPTRA_ROOT}/src/ecc/rtl
++incdir+${CALIPTRA_ROOT}/src/kmac/rtl
++incdir+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl
++incdir+${CALIPTRA_ROOT}/src/edn/rtl
++incdir+${CALIPTRA_ROOT}/src/aes/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_uvm.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_pdef.vh
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/include/el2_def.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/common_defines.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers/soc_ifc_reg_model_top_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/soc_ifc_env_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/verification_ip/environment_packages/caliptra_top_env_pkg/caliptra_top_env_pkg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_defines_pkg.sv
+${CALIPTRA_ROOT}/src/integration/asserts/caliptra_top_sva.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_main_sm_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_ack_sm_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_reg_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_mubi_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_cipher_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sparse_fsm_pkg.sv
+${CALIPTRA_ROOT}/src/lc_ctrl/rtl/lc_ctrl_reg_pkg.sv
+${CALIPTRA_ROOT}/src/lc_ctrl/rtl/lc_ctrl_state_pkg.sv
+${CALIPTRA_ROOT}/src/lc_ctrl/rtl/lc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/tb/physical_rng.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_reg_pkg.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_pkg.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_reg_pkg.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_cmd_pkg.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/coverage/sha512_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/sha512/coverage/sha512_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/sha256/coverage/sha256_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/sha256/coverage/sha256_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/hmac/coverage/hmac_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/hmac/coverage/hmac_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/ecc/coverage/ecc_top_cov_if.sv
+${CALIPTRA_ROOT}/src/ecc/coverage/ecc_top_cov_bind.sv
+${CALIPTRA_ROOT}/src/soc_ifc/coverage/soc_ifc_cov_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/coverage/soc_ifc_cov_bind.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_if.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_props.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_bind.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_if.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_props.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_bind.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/parameters/caliptra_top_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/sequences/caliptra_top_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/tests/caliptra_top_tests_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb/caliptra_top_tb_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb/caliptra_veer_sram_export.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb/caliptra_top_tb_services.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../coverage/caliptra_top_cov_if.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../coverage/caliptra_top_cov_props.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../coverage/caliptra_top_cov_bind.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/beh_lib.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_boot_fsm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_arb.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/wdt.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_dma_ctrl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_pic_ctrl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_veer.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_veer_wrapper.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dbg/el2_dbg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_decode_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_gpr_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_ib_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_tlu_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_trigger.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dmi/dmi_jtag_to_core_sync.v
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dmi/dmi_wrapper.v
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dmi/rvjtag_tap.v
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu_alu_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu_div_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu_mul_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_aln_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_bp_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_compress_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_iccm_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_ic_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_ifc_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_mem_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/ahb_to_axi4.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/axi4_to_ahb.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/el2_lib.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/mem_lib.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/el2_mem_if.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_addrcheck.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_bus_buffer.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_bus_intf.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_clkdomain.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_dccm_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_dccm_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_ecc.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_lsc_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_stbuf.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_trigger.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_bus_inf.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_address_decoder.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_bus.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_2to1_mux.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_ctrl.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_core.v
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_k_constants.v
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_w_mem.v
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_reg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_reg_pkg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_ctrl.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_decipher_block.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_encipher_block.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_inv_sbox.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_key_mem.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_sbox.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_cbc.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_core_cbc.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_reg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_fsm.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_defines_pkg.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_core.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_lfsr.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_param_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_ctrl.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_core.v
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg.sv
+${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg.sv
+${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg_lfsr.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_defines_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_params_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_uop_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_uop_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_top.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_ctrl.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_sequencer.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_scalar_blinding.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_hmac_drbg_interface.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_arith_unit.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_ctrl.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_sequencer.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_ram_tdp_file.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_fau.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_montgomerymultiplier.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_first.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_final.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_mult_dsp.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_add_sub_mod_alter.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_adder.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv_reg.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/sha3_pkg.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/keccak_round.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/keccak_2share.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/sha3pad.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/sha3.sv
+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_flop_en.sv
+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_buf.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop_en.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_cdc_rand_delay.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop_2sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_lfsr.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_mubi4_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_diff_decode.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sec_anchor_buf.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_slicer.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_count.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sparse_fsm_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_dom_and_2share.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sec_anchor_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_reg_we_check.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_packer_fifo.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_max_tree.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_arb.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_intr_hw.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_onehot_check.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_mubi8_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_fifo_sync_cnt.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_buf.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_lc_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_receiver.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_sender.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_fifo_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_arbiter_ppc.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sum_tree.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_ext.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_edge_detector.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_reg_top.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_bucket_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_cntr_reg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_enable_delay.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_markov_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_watermark_reg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_main_sm.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_repcnts_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_adaptp_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_core.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_repcnt_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_ack_sm.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src.sv
+${CALIPTRA_ROOT}/src/edn/rtl/edn_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_reg_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright_masked.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_core.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control_fsm_n.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control_fsm_p.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_lut.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_mix_columns.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_dom.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sub_bytes.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright_masked_noreuse.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sel_buf_chk.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control_fsm.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_shift_rows.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_mix_single_column.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_prng_masking.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_key_expand.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_core.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_main_sm.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_ctr_drbg_upd.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_ctr_drbg_cmd.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_reg_top.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_ctr_drbg_gen.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_block_encrypt.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_state_db.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_cmd_stage.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_byte_merge.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_byte_select.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_command_queue.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_core.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_data_fifos.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_fsm.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_reg_top.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_shift_register.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_tx.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_reg_top.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_rx.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_core.sv
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_top.sv
\ No newline at end of file
diff --git a/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top_itrng.vf b/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top_itrng.vf
new file mode 100644
index 000000000..219eb6217
--- /dev/null
+++ b/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top_itrng.vf
@@ -0,0 +1,452 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/verification_ip/environment_packages/caliptra_top_env_pkg
++incdir+${CALIPTRA_ROOT}/src/doe/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/asserts
++incdir+${CALIPTRA_ROOT}/src/datavault/rtl
++incdir+${CALIPTRA_ROOT}/src/entropy_src/rtl
++incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
++incdir+${CALIPTRA_ROOT}/src/lc_ctrl/rtl
++incdir+${CALIPTRA_ROOT}/src/entropy_src/tb
++incdir+${CALIPTRA_ROOT}/src/csrng/rtl
++incdir+${CALIPTRA_ROOT}/src/spi_host/rtl
++incdir+${CALIPTRA_ROOT}/src/uart/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512/coverage
++incdir+${CALIPTRA_ROOT}/src/sha256/coverage
++incdir+${CALIPTRA_ROOT}/src/hmac/coverage
++incdir+${CALIPTRA_ROOT}/src/ecc/coverage
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/coverage
++incdir+${CALIPTRA_ROOT}/src/pcrvault/coverage
++incdir+${CALIPTRA_ROOT}/src/keyvault/coverage
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/tests
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
++incdir+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl
++incdir+${CALIPTRA_ROOT}/src/sha256/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512_masked/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac/rtl
++incdir+${CALIPTRA_ROOT}/src/hmac_drbg/rtl
++incdir+${CALIPTRA_ROOT}/src/ecc/rtl
++incdir+${CALIPTRA_ROOT}/src/kmac/rtl
++incdir+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl
++incdir+${CALIPTRA_ROOT}/src/edn/rtl
++incdir+${CALIPTRA_ROOT}/src/aes/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_uvm.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_pdef.vh
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/include/el2_def.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/common_defines.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers/soc_ifc_reg_model_top_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/soc_ifc_env_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/verification_ip/environment_packages/caliptra_top_env_pkg/caliptra_top_env_pkg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_defines_pkg.sv
+${CALIPTRA_ROOT}/src/integration/asserts/caliptra_top_sva.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_main_sm_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_ack_sm_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_reg_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_mubi_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_cipher_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sparse_fsm_pkg.sv
+${CALIPTRA_ROOT}/src/lc_ctrl/rtl/lc_ctrl_reg_pkg.sv
+${CALIPTRA_ROOT}/src/lc_ctrl/rtl/lc_ctrl_state_pkg.sv
+${CALIPTRA_ROOT}/src/lc_ctrl/rtl/lc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/entropy_src/tb/physical_rng.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_reg_pkg.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_pkg.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_reg_pkg.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_cmd_pkg.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/coverage/sha512_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/sha512/coverage/sha512_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/sha256/coverage/sha256_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/sha256/coverage/sha256_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/hmac/coverage/hmac_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/hmac/coverage/hmac_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/ecc/coverage/ecc_top_cov_if.sv
+${CALIPTRA_ROOT}/src/ecc/coverage/ecc_top_cov_bind.sv
+${CALIPTRA_ROOT}/src/soc_ifc/coverage/soc_ifc_cov_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/coverage/soc_ifc_cov_bind.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_if.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_props.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_bind.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_if.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_props.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_bind.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/parameters/caliptra_top_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/sequences/caliptra_top_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/tests/caliptra_top_tests_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb/caliptra_top_tb_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb/caliptra_veer_sram_export.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../tb/caliptra_top_tb_services.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../coverage/caliptra_top_cov_if.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../coverage/caliptra_top_cov_props.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/../coverage/caliptra_top_cov_bind.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/beh_lib.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_boot_fsm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_arb.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/wdt.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_dma_ctrl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_pic_ctrl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_veer.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_veer_wrapper.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dbg/el2_dbg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_decode_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_gpr_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_ib_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_tlu_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dec/el2_dec_trigger.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dmi/dmi_jtag_to_core_sync.v
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dmi/dmi_wrapper.v
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/dmi/rvjtag_tap.v
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu_alu_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu_div_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu_mul_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/exu/el2_exu.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_aln_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_bp_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_compress_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_iccm_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_ic_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_ifc_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_mem_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/ifu/el2_ifu.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/ahb_to_axi4.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/axi4_to_ahb.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/el2_lib.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/mem_lib.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/el2_mem_if.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_addrcheck.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_bus_buffer.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_bus_intf.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_clkdomain.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_dccm_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_dccm_mem.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_ecc.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_lsc_ctl.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_stbuf.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lsu/el2_lsu_trigger.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_bus_inf.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_address_decoder.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_bus.sv
+${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_2to1_mux.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_ctrl.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256.sv
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_core.v
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_k_constants.v
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_w_mem.v
+${CALIPTRA_ROOT}/src/sha256/rtl/sha256_reg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_reg_pkg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_ctrl.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_decipher_block.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_encipher_block.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_inv_sbox.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_key_mem.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_sbox.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_cbc.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_core_cbc.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_reg.sv
+${CALIPTRA_ROOT}/src/doe/rtl/doe_fsm.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_defines_pkg.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_core.sv
+${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_lfsr.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_param_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg_pkg.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_ctrl.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac.sv
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_core.v
+${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg.sv
+${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg.sv
+${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg_lfsr.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_defines_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_params_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_uop_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_uop_pkg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_top.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_ctrl.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_sequencer.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_scalar_blinding.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_hmac_drbg_interface.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_arith_unit.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_ctrl.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_sequencer.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_ram_tdp_file.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_fau.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_montgomerymultiplier.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_first.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_final.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_mult_dsp.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_add_sub_mod_alter.sv
+${CALIPTRA_ROOT}/src/ecc/rtl/ecc_adder.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv_reg.sv
+${CALIPTRA_ROOT}/src/datavault/rtl/dv.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/sha3_pkg.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/keccak_round.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/keccak_2share.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/sha3pad.sv
+${CALIPTRA_ROOT}/src/kmac/rtl/sha3.sv
+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_flop_en.sv
+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_buf.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop_en.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_cdc_rand_delay.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop_2sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_lfsr.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_mubi4_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_diff_decode.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sec_anchor_buf.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_slicer.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_count.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sparse_fsm_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_dom_and_2share.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sec_anchor_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_reg_we_check.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_packer_fifo.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_max_tree.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_arb.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_intr_hw.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_onehot_check.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_mubi8_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_fifo_sync_cnt.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_buf.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_lc_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_receiver.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_sender.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_fifo_sync.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_arbiter_ppc.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sum_tree.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_ext.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_edge_detector.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_reg_top.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_bucket_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_cntr_reg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_enable_delay.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_markov_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_watermark_reg.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_main_sm.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_repcnts_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_adaptp_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_core.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_repcnt_ht.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src_ack_sm.sv
+${CALIPTRA_ROOT}/src/entropy_src/rtl/entropy_src.sv
+${CALIPTRA_ROOT}/src/edn/rtl/edn_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_reg_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright_pkg.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright_masked.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_core.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control_fsm_n.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control_fsm_p.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_lut.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_mix_columns.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_dom.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sub_bytes.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sbox_canright_masked_noreuse.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_sel_buf_chk.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control_fsm.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_shift_rows.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_mix_single_column.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_cipher_control.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_prng_masking.sv
+${CALIPTRA_ROOT}/src/aes/rtl/aes_key_expand.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_core.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_main_sm.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_ctr_drbg_upd.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_ctr_drbg_cmd.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_reg_top.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_ctr_drbg_gen.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_block_encrypt.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_state_db.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng_cmd_stage.sv
+${CALIPTRA_ROOT}/src/csrng/rtl/csrng.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_byte_merge.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_byte_select.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_command_queue.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_core.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_data_fifos.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_fsm.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_reg_top.sv
+${CALIPTRA_ROOT}/src/spi_host/rtl/spi_host_shift_register.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_tx.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_reg_top.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_rx.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart.sv
+${CALIPTRA_ROOT}/src/uart/rtl/uart_core.sv
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_top.sv
\ No newline at end of file
diff --git a/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top_vip.vf b/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top_vip.vf
new file mode 100644
index 000000000..28e7f44d0
--- /dev/null
+++ b/src/integration/uvmf_caliptra_top/config/uvmf_caliptra_top_vip.vf
@@ -0,0 +1,168 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers
++incdir+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/verification_ip/environment_packages/caliptra_top_env_pkg
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_uvm.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_pdef.vh
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/include/el2_def.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/common_defines.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers/soc_ifc_reg_model_top_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/soc_ifc_env_pkg.sv
+${CALIPTRA_ROOT}/src/integration/uvmf_caliptra_top/uvmf_template_output/verification_ip/environment_packages/caliptra_top_env_pkg/caliptra_top_env_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/beh_lib.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_boot_fsm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_arb.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/wdt.sv
\ No newline at end of file
diff --git a/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv b/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv
index 3084672f4..ed10cc6da 100644
--- a/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv
+++ b/src/integration/uvmf_caliptra_top/uvmf_template_output/project_benches/caliptra_top/tb/testbench/hdl_top.sv
@@ -372,6 +372,7 @@ import uvmf_base_pkg_hdl::*;
.int_flag(int_flag)
);
+ caliptra_top_sva sva();
// pragma uvmf custom dut_instantiation end
initial begin // tbx vif_binding_block
diff --git a/src/keyvault/config/keyvault.vf b/src/keyvault/config/keyvault.vf
index bbda10b87..40ef426e3 100644
--- a/src/keyvault/config/keyvault.vf
+++ b/src/keyvault/config/keyvault.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/keyvault/config/keyvault_cov.vf b/src/keyvault/config/keyvault_cov.vf
index b3eaabf81..b5d6ed794 100644
--- a/src/keyvault/config/keyvault_cov.vf
+++ b/src/keyvault/config/keyvault_cov.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/keyvault/coverage
${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_if.sv
${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_props.sv
diff --git a/src/keyvault/config/kv_defines_pkg.vf b/src/keyvault/config/kv_defines_pkg.vf
index baa074186..a43072fdf 100644
--- a/src/keyvault/config/kv_defines_pkg.vf
+++ b/src/keyvault/config/kv_defines_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
diff --git a/src/keyvault/config/kv_uvm_pkg.vf b/src/keyvault/config/kv_uvm_pkg.vf
index 4dfee8f5c..994d2f5a3 100644
--- a/src/keyvault/config/kv_uvm_pkg.vf
+++ b/src/keyvault/config/kv_uvm_pkg.vf
@@ -1,3 +1,2 @@
-
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_uvm.sv
\ No newline at end of file
diff --git a/src/keyvault/coverage/keyvault_cov_if.sv b/src/keyvault/coverage/keyvault_cov_if.sv
index 6d5020250..40f3c3548 100644
--- a/src/keyvault/coverage/keyvault_cov_if.sv
+++ b/src/keyvault/coverage/keyvault_cov_if.sv
@@ -25,7 +25,8 @@ interface keyvault_cov_if
input logic rst_b,
input logic core_only_rst_b,
input logic cptra_pwrgood,
- input logic debugUnlock_or_scan_mode_switch
+ input logic debugUnlock_or_scan_mode_switch,
+ input logic cptra_in_debug_scan_mode
);
//Intermediate wires
@@ -64,7 +65,7 @@ interface keyvault_cov_if
covergroup keyvault_top_cov_grp @(posedge clk);
option.per_instance = 1;
- debug: coverpoint debugUnlock_or_scan_mode_switch;
+ debug: coverpoint cptra_in_debug_scan_mode; //debugUnlock_or_scan_mode_switch;
//Note: Bit transitions and values for lock_wr, lock_use and clear are covered
//in UVM reg coverage. This coverpoint bins the 32-bit lock/clear bus so that
@@ -130,8 +131,10 @@ interface keyvault_cov_if
clear_secretsXkv_write: cross kv_write_en, cp_clear_secrets_wr, cp_clear_secrets_sel;
//Cover ahb write/read during crypto write and debug mode unlocked
- ahbXkv_write: cross cp_ahb_write, cp_ahb_read, kv_write_en;
- ahbXdebug: cross cp_ahb_write, cp_ahb_read, debug; //TODO: maybe not a real use case - revisit
+ ahb_writeXkv_write: cross cp_ahb_write, kv_write_en;
+ ahb_writeXdebug: cross cp_ahb_write, debug;
+ ahb_readXkv_write: cross cp_ahb_read, kv_write_en;
+ ahb_readXdebug: cross cp_ahb_read, debug;
endgroup
diff --git a/src/keyvault/coverage/keyvault_cov_props.sv b/src/keyvault/coverage/keyvault_cov_props.sv
index ce8d437e9..91ed7d334 100644
--- a/src/keyvault/coverage/keyvault_cov_props.sv
+++ b/src/keyvault/coverage/keyvault_cov_props.sv
@@ -58,13 +58,13 @@ module keyvault_cov_props
//------------------------------------------------------------------------------
property cover_prop_lock_wr_warmrst;
@(posedge kv.clk)
- (kv.kv_reg_hwif_out.KEY_CTRL[i].lock_wr |-> ##[0:$] !kv.rst_b);
+ ($rose(kv.kv_reg_hwif_out.KEY_CTRL[i].lock_wr) |-> ##[0:$] !kv.rst_b);
endproperty
covprop_lock_wr_warmrst: cover property(cover_prop_lock_wr_warmrst);
property cover_prop_lock_use_warmrst;
@(posedge kv.clk)
- (kv.kv_reg_hwif_out.KEY_CTRL[i].lock_use |-> ##[0:$] !kv.rst_b);
+ ($rose(kv.kv_reg_hwif_out.KEY_CTRL[i].lock_use) |-> ##[0:$] !kv.rst_b);
endproperty
covprop_lock_use_warmrst: cover property(cover_prop_lock_use_warmrst);
@@ -79,13 +79,13 @@ module keyvault_cov_props
//------------------------------------------------------------------------------
property cover_prop_lock_wr_coldrst;
@(posedge kv.clk)
- (kv.kv_reg_hwif_out.KEY_CTRL[i].lock_wr |-> ##[0:$] !kv.cptra_pwrgood);
+ ($rose(kv.kv_reg_hwif_out.KEY_CTRL[i].lock_wr) |-> ##[0:$] !kv.cptra_pwrgood);
endproperty
covprop_lock_wr_coldrst: cover property(cover_prop_lock_wr_coldrst);
property cover_prop_lock_use_coldrst;
@(posedge kv.clk)
- (kv.kv_reg_hwif_out.KEY_CTRL[i].lock_use |-> ##[0:$] !kv.cptra_pwrgood);
+ ($rose(kv.kv_reg_hwif_out.KEY_CTRL[i].lock_use) |-> ##[0:$] !kv.cptra_pwrgood);
endproperty
covprop_lock_use_coldrst: cover property(cover_prop_lock_use_coldrst);
@@ -100,13 +100,13 @@ module keyvault_cov_props
//------------------------------------------------------------------------------
property cover_prop_lock_wr_corerst;
@(posedge kv.clk)
- (kv.kv_reg_hwif_out.KEY_CTRL[i].lock_wr |-> ##[0:$] !kv.core_only_rst_b);
+ ($rose(kv.kv_reg_hwif_out.KEY_CTRL[i].lock_wr) |-> ##[0:$] !kv.core_only_rst_b);
endproperty
covprop_lock_wr_corerst: cover property(cover_prop_lock_wr_corerst);
property cover_prop_lock_use_corerst;
@(posedge kv.clk)
- (kv.kv_reg_hwif_out.KEY_CTRL[i].lock_use |-> ##[0:$] !kv.core_only_rst_b);
+ ($rose(kv.kv_reg_hwif_out.KEY_CTRL[i].lock_use) |-> ##[0:$] !kv.core_only_rst_b);
endproperty
covprop_lock_use_corerst: cover property(cover_prop_lock_use_corerst);
diff --git a/src/keyvault/uvmf_kv/config/uvmf_kv.vf b/src/keyvault/uvmf_kv/config/uvmf_kv.vf
new file mode 100644
index 000000000..5d4fe2ce3
--- /dev/null
+++ b/src/keyvault/uvmf_kv/config/uvmf_kv.vf
@@ -0,0 +1,127 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/coverage
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_read_pkg
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_read_pkg/src
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/tests
++incdir+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/testbench
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_uvm.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_if.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_props.sv
+${CALIPTRA_ROOT}/src/keyvault/coverage/keyvault_cov_bind.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/registers/kv_reg_adapter_functions_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/kv_rst_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/kv_rst_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_driver_bfm.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_if.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_read_pkg/kv_read_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_read_pkg/kv_read_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_read_pkg/src/kv_read_driver_bfm.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_read_pkg/src/kv_read_if.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_read_pkg/src/kv_read_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/kv_write_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/kv_write_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src/kv_write_driver_bfm.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src/kv_write_if.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src/kv_write_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/registers/kv_reg_model_top_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/kv_env_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/parameters/kv_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/sequences/kv_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/tests/kv_tests_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/sequences/src/kv_rand_debug_test_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/sequences/src/kv_rand_debug_test_sequence.svh
index 2735d0063..307257780 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/sequences/src/kv_rand_debug_test_sequence.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/sequences/src/kv_rand_debug_test_sequence.svh
@@ -68,6 +68,15 @@ class kv_rand_debug_test_sequence extends kv_bench_sequence_base;
typedef kv_env_debug_on_sequence #(.CONFIG_T(kv_env_configuration_t)) kv_env_debug_on_sequence_t;
rand kv_env_debug_on_sequence_t kv_env_debug_on_seq;
+ typedef kv_env_debug_off_sequence #(.CONFIG_T(kv_env_configuration_t)) kv_env_debug_off_sequence_t;
+ rand kv_env_debug_off_sequence_t kv_env_debug_off_seq;
+
+ typedef kv_env_scan_on_sequence #(.CONFIG_T(kv_env_configuration_t)) kv_env_scan_on_sequence_t;
+ rand kv_env_scan_on_sequence_t kv_env_scan_on_seq;
+
+ typedef kv_env_scan_off_sequence #(.CONFIG_T(kv_env_configuration_t)) kv_env_scan_off_sequence_t;
+ rand kv_env_scan_off_sequence_t kv_env_scan_off_seq;
+
typedef kv_wr_rd_debug_lock_sequence #(.CONFIG_T(kv_env_configuration_t)) kv_wr_rd_debug_lock_sequence_t;
rand kv_wr_rd_debug_lock_sequence_t kv_wr_rd_debug_lock_seq;
@@ -107,6 +116,9 @@ class kv_rand_debug_test_sequence extends kv_bench_sequence_base;
kv_wr_rd_lock_core_rst_seq = kv_wr_rd_lock_core_rst_sequence_t::type_id::create("kv_wr_rd_lock_core_rst_seq");
kv_wr_rd_debug_seq = kv_wr_rd_debug_sequence_t::type_id::create("kv_wr_rd_debug_seq");
kv_env_debug_on_seq = kv_env_debug_on_sequence_t::type_id::create("kv_env_debug_on_seq");
+ kv_env_debug_off_seq = kv_env_debug_off_sequence_t::type_id::create("kv_env_debug_off_seq");
+ kv_env_scan_on_seq = kv_env_scan_on_sequence_t::type_id::create("kv_env_scan_on_seq");
+ kv_env_scan_off_seq = kv_env_scan_off_sequence_t::type_id::create("kv_env_scan_off_seq");
kv_wr_rd_debug_lock_seq = kv_wr_rd_debug_lock_sequence_t::type_id::create("kv_wr_rd_debug_lock_seq");
kv_wr_rd_debug_lock_clear_rst_seq = kv_wr_rd_debug_lock_clear_rst_sequence_t::type_id::create("kv_wr_rd_debug_lock_clear_rst_seq");
kv_wr_rd_debug_warm_rst_seq = kv_wr_rd_debug_warm_rst_sequence_t::type_id::create("kv_wr_rd_debug_warm_rst_seq");
@@ -130,6 +142,12 @@ class kv_rand_debug_test_sequence extends kv_bench_sequence_base;
`uvm_fatal("KV_AHB_SEQ", "kv_ahb_sequence::body() - kv_ahb_seq randomization failed");
if(!kv_env_debug_on_seq.randomize())
`uvm_fatal("KV_ENV_DEBUG_ON SEQ", "kv_rand_debug_test_sequence::body() - kv_env_debug_on_seq randomization failed");
+ if(!kv_env_debug_off_seq.randomize())
+ `uvm_fatal("KV_ENV_DEBUG_OFF SEQ", "kv_rand_debug_test_sequence::body() - kv_env_debug_off_seq randomization failed");
+ if(!kv_env_scan_on_seq.randomize())
+ `uvm_fatal("KV_ENV_SCAN_ON SEQ", "kv_rand_debug_test_sequence::body() - kv_env_scan_on_seq randomization failed");
+ if(!kv_env_scan_off_seq.randomize())
+ `uvm_fatal("KV_ENV_SCAN_OFF SEQ", "kv_rand_debug_test_sequence::body() - kv_env_scan_off_seq randomization failed");
reg_model.reset();
`uvm_info("TOP", "AHB stop sequences", UVM_MEDIUM)
@@ -142,8 +160,16 @@ class kv_rand_debug_test_sequence extends kv_bench_sequence_base;
`uvm_info("TOP", "DEBUG on sequence", UVM_MEDIUM)
kv_env_debug_on_seq.start(top_configuration.vsqr);
+ `uvm_info("TOP", "DEBUG OFF sequence", UVM_MEDIUM)
+ kv_env_debug_off_seq.start(top_configuration.vsqr);
`uvm_info("TOP", "AHB sequence", UVM_MEDIUM)
kv_ahb_seq.start(top_configuration.vsqr);
+
+ `uvm_info("TOP", "DEBUG + WR/RD sequence",UVM_MEDIUM);
+ kv_wr_rd_debug_seq.start(top_configuration.vsqr); //has internal scan mode controls
+ `uvm_info("TOP", "SCAN on sequence", UVM_MEDIUM)
+ kv_env_scan_on_seq.start(top_configuration.vsqr);
+
`uvm_info("TOP", "DEBUG lock sequence",UVM_MEDIUM);
kv_wr_rd_debug_lock_seq.start(top_configuration.vsqr);
`uvm_info("TOP", "DEBUG warm rst sequence",UVM_MEDIUM);
@@ -155,6 +181,8 @@ class kv_rand_debug_test_sequence extends kv_bench_sequence_base;
`uvm_info("TOP", "DEBUG lock clear rst sequence",UVM_MEDIUM);
kv_wr_rd_debug_lock_clear_rst_seq.start(top_configuration.vsqr);
+ `uvm_info("TOP", "SCAN OFF sequence", UVM_MEDIUM)
+ kv_env_scan_off_seq.start(top_configuration.vsqr);
if(1) $display("** TESTCASE PASSED");
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/tests/src/kv_rand_debug_test.yml b/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/tests/src/kv_rand_debug_test.yml
index 29f7aaa67..3a01eff3f 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/tests/src/kv_rand_debug_test.yml
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/project_benches/kv/tb/tests/src/kv_rand_debug_test.yml
@@ -1,6 +1,6 @@
---
# Random seed desired...
-seed: ${PLAYBOOK_RANDOM_SEED}
+seed: ${PLAYBOOK_RANDOM_SEED}
plusargs:
- '+UVM_TESTNAME=kv_rand_debug_test'
testname: kv_rand_debug_test
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/kv_env_pkg.sv b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/kv_env_pkg.sv
index 5d8d7558e..0d3e10c8a 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/kv_env_pkg.sv
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/kv_env_pkg.sv
@@ -118,6 +118,9 @@ package kv_env_pkg;
`include "src/kv_wr_rd_lock_core_rst_sequence.svh"
`include "src/kv_wr_rd_debug_sequence.svh"
`include "src/kv_env_debug_on_sequence.svh"
+ `include "src/kv_env_debug_off_sequence.svh"
+ `include "src/kv_env_scan_on_sequence.svh"
+ `include "src/kv_env_scan_off_sequence.svh"
`include "src/kv_wr_rd_debug_lock_sequence.svh"
`include "src/kv_wr_rd_debug_lock_clear_rst_sequence.svh"
`include "src/kv_wr_rd_debug_warm_rst_sequence.svh"
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_debug_off_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_debug_off_sequence.svh
new file mode 100644
index 000000000..c0a475505
--- /dev/null
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_debug_off_sequence.svh
@@ -0,0 +1,117 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Performs KV writes and reads while randomly issuing debug unlock
+// via input pin or CLEAR_SECRETS reg.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class kv_env_debug_off_sequence #(
+ type CONFIG_T
+) extends kv_env_sequence_base #(.CONFIG_T(CONFIG_T));
+
+ `uvm_object_param_utils(kv_env_debug_off_sequence #(CONFIG_T));
+
+ typedef kv_rst_poweron_sequence kv_rst_agent_poweron_sequence_t;
+ kv_rst_agent_poweron_sequence_t kv_rst_agent_poweron_seq;
+ kv_rst_agent_poweron_sequence_t kv_rst_agent_poweron_seq_2;
+
+ typedef kv_rst_debug_sequence kv_rst_agent_debug_sequence_t;
+ kv_rst_agent_debug_sequence_t kv_rst_agent_debug_seq;
+ typedef kv_rst_debug_on_sequence kv_rst_agent_debug_on_sequence_t;
+ kv_rst_agent_debug_on_sequence_t kv_rst_agent_debug_on_seq;
+ typedef kv_rst_debug_off_sequence kv_rst_agent_debug_off_sequence_t;
+ kv_rst_agent_debug_off_sequence_t kv_rst_agent_debug_off_seq;
+
+ typedef kv_write_key_entry_sequence kv_write_agent_key_entry_sequence_t;
+ kv_write_agent_key_entry_sequence_t hmac_write_seq;
+ kv_write_agent_key_entry_sequence_t sha512_write_seq;
+ kv_write_agent_key_entry_sequence_t ecc_write_seq;
+ kv_write_agent_key_entry_sequence_t doe_write_seq;
+
+ typedef kv_read_key_entry_sequence kv_read_agent_key_entry_sequence_t;
+ kv_read_agent_key_entry_sequence_t hmac_key_read_seq;
+ kv_read_agent_key_entry_sequence_t hmac_block_read_seq;
+ kv_read_agent_key_entry_sequence_t sha512_block_read_seq;
+ kv_read_agent_key_entry_sequence_t ecc_privkey_read_seq;
+ kv_read_agent_key_entry_sequence_t ecc_seed_read_seq;
+
+ rand reg [KV_ENTRY_ADDR_W-1:0] hmac_write_entry, sha512_write_entry, ecc_write_entry, doe_write_entry;
+ rand int unsigned wait_cycles_from_seq;
+ rand bit debug_type;
+ rand reg [1:0] clear_secrets_data;
+
+ typedef enum {SECURITY_STATE, CLEAR_SECRETS} debug_inputs;
+
+ function new(string name = "");
+ super.new(name);
+ kv_rst_agent_poweron_seq = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV RST poweron seq");
+ kv_rst_agent_poweron_seq_2 = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq_2");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV RST poweron seq");
+
+ kv_rst_agent_debug_seq = kv_rst_agent_debug_sequence_t::type_id::create("kv_rst_agent_debug_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV RST debug seq");
+ kv_rst_agent_debug_on_seq = kv_rst_agent_debug_on_sequence_t::type_id::create("kv_rst_agent_debug_on_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV RST debug on seq");
+ kv_rst_agent_debug_off_seq = kv_rst_agent_debug_off_sequence_t::type_id::create("kv_rst_agent_debug_off_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV RST debug off seq");
+
+ hmac_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("hmac_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV WRITE seq");
+ sha512_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("sha512_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV WRITE seq");
+ ecc_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("ecc_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV WRITE seq");
+ doe_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("doe_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV WRITE seq");
+
+ hmac_key_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("hmac_key_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV READ seq");
+ hmac_block_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("hmac_block_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV READ seq");
+ sha512_block_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("sha512_block_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV READ seq");
+ ecc_privkey_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("ecc_privkey_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV READ seq");
+ ecc_seed_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("ecc_seed_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_debug_off", "Failed to randomize KV READ seq");
+ //kv_rst_agent_poweron_seq_2 = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq_2");
+ endfunction
+
+ virtual task body();
+ uvm_status_e sts;
+ //uvm_reg_data_t rd_data;
+ int write_entry = 0;
+ int write_offset = 0;
+ int read_entry = 0;
+ int read_offset = 0;
+ reg [31:0] wr_data, rd_data;
+ reg_model = configuration.kv_rm;
+
+
+ kv_rst_agent_debug_off_seq.start(configuration.kv_rst_agent_config.sequencer);
+
+ endtask
+endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_debug_on_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_debug_on_sequence.svh
index 08e441629..708b3566f 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_debug_on_sequence.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_debug_on_sequence.svh
@@ -111,38 +111,7 @@ class kv_env_debug_on_sequence #(
reg_model = configuration.kv_rm;
- //Issue and wait for reset
- // if(configuration.kv_rst_agent_config.sequencer != null)
- // kv_rst_agent_poweron_seq.start(configuration.kv_rst_agent_config.sequencer);
- // else
- // `uvm_error("KV_ENV_DEBUG_ON", "kv_rst_agent_config.sequencer is null!")
-
-
- //Unlock debug mode or clear secrets randomly
-
- // std::randomize(debug_type); //0 - security state, 1 - clear secrets
- debug_type = 0;
-
- std::randomize(wait_cycles_from_seq) with {
- wait_cycles_from_seq >= 5;
- wait_cycles_from_seq <= 100;
- };
-
- std::randomize(clear_secrets_data); //wren, debug_value0/1
-
- //Wait for random delay before starting debug txn
- configuration.kv_rst_agent_config.wait_for_num_clocks(wait_cycles_from_seq);
-
- case(debug_type)
- SECURITY_STATE: begin
- //start debug seq on rst agent
- // kv_rst_agent_debug_seq.start(configuration.kv_rst_agent_config.sequencer);
- kv_rst_agent_debug_on_seq.start(configuration.kv_rst_agent_config.sequencer);
- end
- CLEAR_SECRETS: begin
- reg_model.kv_reg_rm.CLEAR_SECRETS.write(sts, clear_secrets_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
- assert(sts == UVM_IS_OK) else `uvm_error("AHB_CLEAR_SECRETS_SET", "Failed when writing to CLEAR_SECRETS reg!")
- end
- endcase
+ kv_rst_agent_debug_on_seq.start(configuration.kv_rst_agent_config.sequencer);
+
endtask
endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_scan_off_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_scan_off_sequence.svh
new file mode 100644
index 000000000..c2530046e
--- /dev/null
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_scan_off_sequence.svh
@@ -0,0 +1,117 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Performs KV writes and reads while randomly issuing debug unlock
+// via input pin or CLEAR_SECRETS reg.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class kv_env_scan_off_sequence #(
+ type CONFIG_T
+) extends kv_env_sequence_base #(.CONFIG_T(CONFIG_T));
+
+ `uvm_object_param_utils(kv_env_scan_off_sequence #(CONFIG_T));
+
+ typedef kv_rst_poweron_sequence kv_rst_agent_poweron_sequence_t;
+ kv_rst_agent_poweron_sequence_t kv_rst_agent_poweron_seq;
+ kv_rst_agent_poweron_sequence_t kv_rst_agent_poweron_seq_2;
+
+ typedef kv_rst_debug_sequence kv_rst_agent_debug_sequence_t;
+ kv_rst_agent_debug_sequence_t kv_rst_agent_debug_seq;
+ typedef kv_rst_debug_on_sequence kv_rst_agent_debug_on_sequence_t;
+ kv_rst_agent_debug_on_sequence_t kv_rst_agent_debug_on_seq;
+ typedef kv_rst_scan_off_sequence kv_rst_agent_scan_off_sequence_t;
+ kv_rst_agent_scan_off_sequence_t kv_rst_agent_scan_off_seq;
+
+ typedef kv_write_key_entry_sequence kv_write_agent_key_entry_sequence_t;
+ kv_write_agent_key_entry_sequence_t hmac_write_seq;
+ kv_write_agent_key_entry_sequence_t sha512_write_seq;
+ kv_write_agent_key_entry_sequence_t ecc_write_seq;
+ kv_write_agent_key_entry_sequence_t doe_write_seq;
+
+ typedef kv_read_key_entry_sequence kv_read_agent_key_entry_sequence_t;
+ kv_read_agent_key_entry_sequence_t hmac_key_read_seq;
+ kv_read_agent_key_entry_sequence_t hmac_block_read_seq;
+ kv_read_agent_key_entry_sequence_t sha512_block_read_seq;
+ kv_read_agent_key_entry_sequence_t ecc_privkey_read_seq;
+ kv_read_agent_key_entry_sequence_t ecc_seed_read_seq;
+
+ rand reg [KV_ENTRY_ADDR_W-1:0] hmac_write_entry, sha512_write_entry, ecc_write_entry, doe_write_entry;
+ rand int unsigned wait_cycles_from_seq;
+ rand bit debug_type;
+ rand reg [1:0] clear_secrets_data;
+
+ typedef enum {SECURITY_STATE, CLEAR_SECRETS} debug_inputs;
+
+ function new(string name = "");
+ super.new(name);
+ kv_rst_agent_poweron_seq = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV RST poweron seq");
+ kv_rst_agent_poweron_seq_2 = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq_2");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV RST poweron seq");
+
+ kv_rst_agent_debug_seq = kv_rst_agent_debug_sequence_t::type_id::create("kv_rst_agent_debug_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV RST debug seq");
+ kv_rst_agent_debug_on_seq = kv_rst_agent_debug_on_sequence_t::type_id::create("kv_rst_agent_debug_on_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV RST debug on seq");
+ kv_rst_agent_scan_off_seq = kv_rst_agent_scan_off_sequence_t::type_id::create("kv_rst_agent_scan_off_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV RST debug off seq");
+
+ hmac_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("hmac_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV WRITE seq");
+ sha512_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("sha512_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV WRITE seq");
+ ecc_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("ecc_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV WRITE seq");
+ doe_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("doe_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV WRITE seq");
+
+ hmac_key_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("hmac_key_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV READ seq");
+ hmac_block_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("hmac_block_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV READ seq");
+ sha512_block_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("sha512_block_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV READ seq");
+ ecc_privkey_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("ecc_privkey_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV READ seq");
+ ecc_seed_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("ecc_seed_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_scan_off", "Failed to randomize KV READ seq");
+ //kv_rst_agent_poweron_seq_2 = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq_2");
+ endfunction
+
+ virtual task body();
+ uvm_status_e sts;
+ //uvm_reg_data_t rd_data;
+ int write_entry = 0;
+ int write_offset = 0;
+ int read_entry = 0;
+ int read_offset = 0;
+ reg [31:0] wr_data, rd_data;
+ reg_model = configuration.kv_rm;
+
+
+ kv_rst_agent_scan_off_seq.start(configuration.kv_rst_agent_config.sequencer);
+
+ endtask
+endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_scan_on_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_scan_on_sequence.svh
new file mode 100644
index 000000000..7c58aac19
--- /dev/null
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_scan_on_sequence.svh
@@ -0,0 +1,108 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Performs KV writes and reads while randomly issuing debug unlock
+// via input pin or CLEAR_SECRETS reg.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class kv_env_scan_on_sequence #(
+ type CONFIG_T
+) extends kv_env_sequence_base #(.CONFIG_T(CONFIG_T));
+
+ `uvm_object_param_utils(kv_env_scan_on_sequence #(CONFIG_T));
+
+ typedef kv_rst_poweron_sequence kv_rst_agent_poweron_sequence_t;
+ kv_rst_agent_poweron_sequence_t kv_rst_agent_poweron_seq;
+ kv_rst_agent_poweron_sequence_t kv_rst_agent_poweron_seq_2;
+
+ typedef kv_rst_debug_sequence kv_rst_agent_debug_sequence_t;
+ kv_rst_agent_debug_sequence_t kv_rst_agent_debug_seq;
+ typedef kv_rst_scan_on_sequence kv_rst_agent_scan_on_sequence_t;
+ kv_rst_agent_scan_on_sequence_t kv_rst_agent_scan_on_seq;
+ typedef kv_rst_debug_off_sequence kv_rst_agent_debug_off_sequence_t;
+ kv_rst_agent_debug_off_sequence_t kv_rst_agent_debug_off_seq;
+
+ typedef kv_write_key_entry_sequence kv_write_agent_key_entry_sequence_t;
+ kv_write_agent_key_entry_sequence_t hmac_write_seq;
+ kv_write_agent_key_entry_sequence_t sha512_write_seq;
+ kv_write_agent_key_entry_sequence_t ecc_write_seq;
+ kv_write_agent_key_entry_sequence_t doe_write_seq;
+
+ typedef kv_read_key_entry_sequence kv_read_agent_key_entry_sequence_t;
+ kv_read_agent_key_entry_sequence_t hmac_key_read_seq;
+ kv_read_agent_key_entry_sequence_t hmac_block_read_seq;
+ kv_read_agent_key_entry_sequence_t sha512_block_read_seq;
+ kv_read_agent_key_entry_sequence_t ecc_privkey_read_seq;
+ kv_read_agent_key_entry_sequence_t ecc_seed_read_seq;
+
+ rand reg [KV_ENTRY_ADDR_W-1:0] hmac_write_entry, sha512_write_entry, ecc_write_entry, doe_write_entry;
+ rand int unsigned wait_cycles_from_seq;
+ rand bit debug_type;
+ rand reg [1:0] clear_secrets_data;
+
+ typedef enum {SECURITY_STATE, CLEAR_SECRETS} debug_inputs;
+
+ function new(string name = "");
+ super.new(name);
+ kv_rst_agent_poweron_seq = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV RST poweron seq");
+ kv_rst_agent_poweron_seq_2 = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq_2");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV RST poweron seq");
+
+ kv_rst_agent_debug_seq = kv_rst_agent_debug_sequence_t::type_id::create("kv_rst_agent_debug_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV RST debug seq");
+ kv_rst_agent_scan_on_seq = kv_rst_agent_scan_on_sequence_t::type_id::create("kv_rst_agent_scan_on_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV RST debug on seq");
+ kv_rst_agent_debug_off_seq = kv_rst_agent_debug_off_sequence_t::type_id::create("kv_rst_agent_debug_off_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV RST debug off seq");
+
+ hmac_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("hmac_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV WRITE seq");
+ sha512_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("sha512_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV WRITE seq");
+ ecc_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("ecc_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV WRITE seq");
+ doe_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("doe_write_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV WRITE seq");
+
+ hmac_key_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("hmac_key_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV READ seq");
+ hmac_block_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("hmac_block_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV READ seq");
+ sha512_block_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("sha512_block_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV READ seq");
+ ecc_privkey_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("ecc_privkey_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV READ seq");
+ ecc_seed_read_seq = kv_read_agent_key_entry_sequence_t::type_id::create("ecc_seed_read_seq");
+ if(!this.randomize()) `uvm_error("KV_ENV_SCAN_ON", "Failed to randomize KV READ seq");
+ //kv_rst_agent_poweron_seq_2 = kv_rst_agent_poweron_sequence_t::type_id::create("kv_rst_agent_poweron_seq_2");
+ endfunction
+
+ virtual task body();
+
+ kv_rst_agent_scan_on_seq.start(configuration.kv_rst_agent_config.sequencer);
+
+ endtask
+endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_sequence_base.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_sequence_base.svh
index 66b1b7d84..9af627d82 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_sequence_base.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_env_sequence_base.svh
@@ -35,10 +35,18 @@ class kv_env_sequence_base #(
CONFIG_T
) );
+ parameter int HMAC_WRITE = 0;
+ parameter int SHA512_WRITE = 1;
+ parameter int ECC_WRITE = 2;
+ parameter int DOE_WRITE = 3;
+
// Handle to the environments register model
// This handle needs to be set before use.
kv_reg_model_top reg_model;
+ rand reg [KV_ENTRY_ADDR_W-1:0] hmac_write_entry, sha512_write_entry, ecc_write_entry, doe_write_entry;
+ rand reg [KV_NUM_WRITE-1:0] wr_clients;
+
// This kv_env_sequence_base contains a handle to a kv_env_configuration object
// named configuration. This configuration variable contains a handle to each
// sequencer within each agent within this environment and any sub-environments.
@@ -65,17 +73,11 @@ class kv_env_sequence_base #(
typedef kv_rst_random_sequence kv_rst_agent_random_sequence_t;
kv_rst_agent_random_sequence_t kv_rst_agent_rand_seq;
- typedef kv_write_random_sequence kv_hmac_write_agent_random_sequence_t;
- kv_hmac_write_agent_random_sequence_t kv_hmac_write_agent_rand_seq;
-
- typedef kv_write_random_sequence kv_sha512_write_agent_random_sequence_t;
- kv_sha512_write_agent_random_sequence_t kv_sha512_write_agent_rand_seq;
-
- typedef kv_write_random_sequence kv_ecc_write_agent_random_sequence_t;
- kv_ecc_write_agent_random_sequence_t kv_ecc_write_agent_rand_seq;
-
- typedef kv_write_random_sequence kv_doe_write_agent_random_sequence_t;
- kv_doe_write_agent_random_sequence_t kv_doe_write_agent_rand_seq;
+ typedef kv_write_key_entry_sequence kv_write_agent_key_entry_sequence_t;
+ kv_write_agent_key_entry_sequence_t hmac_write_seq;
+ kv_write_agent_key_entry_sequence_t sha512_write_seq;
+ kv_write_agent_key_entry_sequence_t ecc_write_seq;
+ kv_write_agent_key_entry_sequence_t doe_write_seq;
typedef kv_read_random_sequence kv_hmac_key_read_agent_random_sequence_t;
kv_hmac_key_read_agent_random_sequence_t kv_hmac_key_read_agent_rand_seq;
@@ -101,10 +103,14 @@ class kv_env_sequence_base #(
function new(string name = "" );
super.new(name);
kv_rst_agent_rand_seq = kv_rst_agent_random_sequence_t::type_id::create("kv_rst_agent_rand_seq");
- kv_hmac_write_agent_rand_seq = kv_hmac_write_agent_random_sequence_t::type_id::create("kv_hmac_write_agent_rand_seq");
- kv_sha512_write_agent_rand_seq = kv_sha512_write_agent_random_sequence_t::type_id::create("kv_sha512_write_agent_rand_seq");
- kv_ecc_write_agent_rand_seq = kv_ecc_write_agent_random_sequence_t::type_id::create("kv_ecc_write_agent_rand_seq");
- kv_doe_write_agent_rand_seq = kv_doe_write_agent_random_sequence_t::type_id::create("kv_doe_write_agent_rand_seq");
+ hmac_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("hmac_write_seq");
+ if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV WRITE seq");
+ sha512_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("sha512_write_seq");
+ if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV WRITE seq");
+ ecc_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("ecc_write_seq");
+ if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV WRITE seq");
+ doe_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("doe_write_seq");
+ if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV WRITE seq");
kv_hmac_key_read_agent_rand_seq = kv_hmac_key_read_agent_random_sequence_t::type_id::create("kv_hmac_key_read_agent_rand_seq");
kv_hmac_block_read_agent_rand_seq = kv_hmac_block_read_agent_random_sequence_t::type_id::create("kv_hmac_block_read_agent_rand_seq");
kv_sha512_block_read_agent_rand_seq = kv_sha512_block_read_agent_random_sequence_t::type_id::create("kv_sha512_block_read_agent_rand_seq");
@@ -114,18 +120,89 @@ class kv_env_sequence_base #(
endfunction
+virtual task gen_rand_entries();
+ std::randomize(hmac_write_entry) with {
+ hmac_write_entry != sha512_write_entry;
+ hmac_write_entry != ecc_write_entry;
+ hmac_write_entry != doe_write_entry;
+ };
+
+ std::randomize(sha512_write_entry) with {
+ sha512_write_entry != hmac_write_entry;
+ sha512_write_entry != ecc_write_entry;
+ sha512_write_entry != doe_write_entry;
+ };
+
+ std::randomize(ecc_write_entry) with {
+ ecc_write_entry != hmac_write_entry;
+ ecc_write_entry != sha512_write_entry;
+ ecc_write_entry != doe_write_entry;
+ };
+
+ std::randomize(doe_write_entry) with {
+ doe_write_entry != hmac_write_entry;
+ doe_write_entry != sha512_write_entry;
+ doe_write_entry != ecc_write_entry;
+ };
+
+endtask
+
+virtual task queue_writes();
+
+ repeat(20) begin
+ gen_rand_entries();
+ std::randomize(wr_clients);
+
+ fork
+ begin
+ if (wr_clients[HMAC_WRITE]) begin
+ `uvm_info("QUEUE_HMAC_WRITE", $sformatf("hmac write with entry = %h", hmac_write_entry), UVM_HIGH)
+ uvm_config_db#(reg [KV_ENTRY_ADDR_W-1:0])::set(null, "uvm_test_top.environment.kv_hmac_write_agent.sequencer.hmac_write_seq", "local_write_entry",hmac_write_entry);
+ hmac_write_seq.start(configuration.kv_hmac_write_agent_config.sequencer);
+ end
+ end
+ begin
+ if (wr_clients[SHA512_WRITE]) begin
+ `uvm_info("QUEUE_SHA512_WRITE", $sformatf("sha512 write with entry = %h", sha512_write_entry), UVM_HIGH)
+ uvm_config_db#(reg [KV_ENTRY_ADDR_W-1:0])::set(null, "uvm_test_top.environment.kv_sha512_write_agent.sequencer.sha512_write_seq", "local_write_entry",sha512_write_entry);
+ sha512_write_seq.start(configuration.kv_sha512_write_agent_config.sequencer);
+ end
+ end
+ begin
+ if (wr_clients[DOE_WRITE]) begin
+ `uvm_info("QUEUE_DOE_WRITE", $sformatf("doe write with entry = %h", doe_write_entry), UVM_HIGH)
+ uvm_config_db#(reg [KV_ENTRY_ADDR_W-1:0])::set(null, "uvm_test_top.environment.kv_doe_write_agent.sequencer.doe_write_seq", "local_write_entry",doe_write_entry);
+ doe_write_seq.start(configuration.kv_doe_write_agent_config.sequencer);
+ end
+ end
+ begin
+ if (wr_clients[ECC_WRITE]) begin
+ `uvm_info("QUEUE_ECC_WRITE", $sformatf("ecc write with entry = %h", ecc_write_entry), UVM_HIGH)
+ uvm_config_db#(reg [KV_ENTRY_ADDR_W-1:0])::set(null, "uvm_test_top.environment.kv_ecc_write_agent.sequencer.ecc_write_seq", "local_write_entry",ecc_write_entry);
+ ecc_write_seq.start(configuration.kv_ecc_write_agent_config.sequencer);
+ end
+ end
+ join
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(100);
+ end
+ endtask
+
virtual task body();
if ( configuration.kv_rst_agent_config.sequencer != null )
repeat (25) kv_rst_agent_rand_seq.start(configuration.kv_rst_agent_config.sequencer);
if ( configuration.kv_hmac_write_agent_config.sequencer != null )
- repeat (25) kv_hmac_write_agent_rand_seq.start(configuration.kv_hmac_write_agent_config.sequencer);
+ repeat (25) hmac_write_seq.start(configuration.kv_hmac_write_agent_config.sequencer);
if ( configuration.kv_sha512_write_agent_config.sequencer != null )
- repeat (25) kv_sha512_write_agent_rand_seq.start(configuration.kv_sha512_write_agent_config.sequencer);
+ repeat (25) sha512_write_seq.start(configuration.kv_sha512_write_agent_config.sequencer);
if ( configuration.kv_ecc_write_agent_config.sequencer != null )
- repeat (25) kv_ecc_write_agent_rand_seq.start(configuration.kv_ecc_write_agent_config.sequencer);
+ repeat (25) ecc_write_seq.start(configuration.kv_ecc_write_agent_config.sequencer);
if ( configuration.kv_doe_write_agent_config.sequencer != null )
- repeat (25) kv_doe_write_agent_rand_seq.start(configuration.kv_doe_write_agent_config.sequencer);
+ repeat (25) doe_write_seq.start(configuration.kv_doe_write_agent_config.sequencer);
+
if ( configuration.kv_hmac_key_read_agent_config.sequencer != null )
repeat (25) kv_hmac_key_read_agent_rand_seq.start(configuration.kv_hmac_key_read_agent_config.sequencer);
if ( configuration.kv_hmac_block_read_agent_config.sequencer != null )
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_predictor.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_predictor.svh
index 4f787c534..d17b1a2ac 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_predictor.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_predictor.svh
@@ -212,6 +212,11 @@ class kv_predictor #(
// bit send_hmac_write_txn = 0;
bit set_val_ctrl_derived = 0;
logic [KV_NUM_KEYS-1:0] val_ctrl_derived_data = 0;
+ logic [KV_NUM_KEYS-1:0] key_entry_ctrl_we = 0;
+
+ //Set when lock_wr/lock_use is 0 and set by AHB txn. Reset only during reset
+ logic [KV_NUM_KEYS-1:0] key_ctrl_lock_wr = 0;
+ logic [KV_NUM_KEYS-1:0] key_ctrl_lock_use = 0;
extern function void populate_expected_kv_read_txn(ref kv_sb_ap_output_transaction_t t_expected, kv_read_transaction t_received, string client);
extern function void populate_expected_kv_write_txn(ref kv_sb_ap_output_transaction_write_t t_expected, kv_write_transaction t_received);
@@ -319,12 +324,15 @@ class kv_predictor #(
for(entry = 0; entry < KV_NUM_KEYS; entry++) begin
last_dword_written[entry] = 'h0; //Clear last dword on hard rst
end
+ key_ctrl_lock_wr = 'h0;
+ key_ctrl_lock_use = 'h0;
end
else if (t.debug_mode | t.scan_mode) begin
//Set val_reg to 1 for use in reg predictor
p_kv_rm.val_reg.debug_mode_unlocked.set(1'b1);
p_kv_rm.val_reg.cptra_in_debug_scan_mode.set(1'b1);
+ `uvm_info("PRED", "Clear_secrets reg is set in debug/scan mode. Flushing KV", UVM_MEDIUM)
if (clear_secrets_data[p_kv_rm.kv_reg_rm.CLEAR_SECRETS.sel_debug_value.get_lsb_pos()] == 'h1) begin
for(entry = 0; entry < KV_NUM_KEYS; entry++) begin
//Debug mode should flush all regs inspite of locks
@@ -368,6 +376,8 @@ class kv_predictor #(
kv_reg = p_kv_rm.get_reg_by_name($sformatf("KEY_CTRL[%0d]",entry));
kv_reg_data = kv_reg.get_mirrored_value();
end
+ key_ctrl_lock_wr = 'h0;
+ key_ctrl_lock_use = 'h0;
end
//If debug mode was unlocked, set a val register to let reg predictor know
@@ -645,6 +655,7 @@ class kv_predictor #(
//Only allow clear operation if in debug mode
//if (data_active[1:0] == 'h1) begin
if (data_active [p_kv_rm.kv_reg_rm.CLEAR_SECRETS.wr_debug_values.get_lsb_pos()] && !data_active[p_kv_rm.kv_reg_rm.CLEAR_SECRETS.sel_debug_value.get_lsb_pos()]) begin
+ `uvm_info("PRED", "Clear_secrets reg is set in debug/scan mode. Flushing KV with DEBUG0 values", UVM_MEDIUM)
for(entry = 0; entry < KV_NUM_KEYS; entry++) begin
//Read locks before clearing - do not clear if locked
kv_reg = p_kv_rm.get_reg_by_name($sformatf("KEY_CTRL[%0d]",entry));
@@ -659,6 +670,7 @@ class kv_predictor #(
end
//else if(data_active[1:0] == 'h3) begin
else if (data_active [p_kv_rm.kv_reg_rm.CLEAR_SECRETS.wr_debug_values.get_lsb_pos()] && data_active[p_kv_rm.kv_reg_rm.CLEAR_SECRETS.sel_debug_value.get_lsb_pos()]) begin
+ `uvm_info("PRED", "Clear_secrets reg is set in debug/scan mode. Flushing KV with DEBUG1 values", UVM_MEDIUM)
for(entry = 0; entry < KV_NUM_KEYS; entry++) begin
//Read locks before clearing
kv_reg = p_kv_rm.get_reg_by_name($sformatf("KEY_CTRL[%0d]",entry));
@@ -684,15 +696,26 @@ class kv_predictor #(
val_ctrl = p_kv_rm.get_reg_by_name("val_ctrl");
val_ctrl_data = val_ctrl.get();
- if(data_active[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].clear.get_lsb_pos()] && !kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].lock_wr.get_lsb_pos()] && !kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].lock_use.get_lsb_pos()] && !val_reg_data[p_kv_rm.val_reg.cptra_in_debug_scan_mode.get_lsb_pos()]) begin
+ //Once set, keep lock_wr set until a reset is issued. AHB txn with lock_wr = 0 should not have any effect on the reg
+ if (data_active[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].lock_wr.get_lsb_pos()]) begin
+ key_ctrl_lock_wr[entry] = 'b1;
+ end
+
+ //Once set, keep lock_use set until a reset is issued. AHB txn with lock_use = 0 should not have any effect on the reg
+ if (data_active[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].lock_use.get_lsb_pos()]) begin
+ key_ctrl_lock_use[entry] = 'b1;
+ end
+
+ // if(data_active[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].clear.get_lsb_pos()] && !kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].lock_wr.get_lsb_pos()] && !kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].lock_use.get_lsb_pos()] && !val_reg_data[p_kv_rm.val_reg.cptra_in_debug_scan_mode.get_lsb_pos()]) begin
+ if (data_active[p_kv_rm.kv_reg_rm.KEY_CTRL[entry].clear.get_lsb_pos()] && !key_ctrl_lock_wr[entry] && !key_ctrl_lock_use[entry] && !val_reg_data[p_kv_rm.val_reg.cptra_in_debug_scan_mode.get_lsb_pos()]) begin
val_ctrl_data[entry] = 'b1; //In design, clear is a single pulse reg. This val_ctrl[*] will be reset in kv_reg_predictor
// for (int i = 0; i < KV_NUM_KEYS; i++) begin
this.val_ctrl_derived_data[entry] = 'b1;
+ last_dword_written[entry] = 'h0; //clear last dword of that entry
// this.val_ctrl_derived_data[i] = (i == entry);
// end
// this.set_val_ctrl_derived = 'b1;
//p_kv_rm.kv_reg_rm.kv_val_ctrl.predict(val_ctrl_data);
- `uvm_info("PRED", "Setting clear field of val_ctrl register", UVM_MEDIUM)
p_kv_rm.val_ctrl.set(val_ctrl_data);
//`uvm_info("PRED", "Setting clear field of val_ctrl_derived register", UVM_MEDIUM)
@@ -793,9 +816,11 @@ endclass
t_expected.error = 'b0;
end
- if (val_ctrl_data[t_received.read_entry]) begin
- last_dword_written[t_received.read_entry] = 'h0;
- end
+ // if (val_ctrl_data[t_received.read_entry]) begin
+ // if (val_ctrl_derived_data[t_received.read_entry]) begin
+ // `uvm_info("KNU_DBG","Resetting last_dword because val_ctrl_data is set!", UVM_FULL)
+ // last_dword_written[t_received.read_entry] = 'h0;
+ // end
t_expected.last = (last_dword_written[t_received.read_entry] == t_received.read_offset);
t_expected.read_entry = t_received.read_entry;
@@ -803,8 +828,8 @@ endclass
endfunction
function void kv_predictor::populate_expected_kv_write_txn (ref kv_sb_ap_output_transaction_write_t t_expected, kv_write_transaction t_received);
- uvm_reg kv_reg, val_ctrl_derived;
- uvm_reg_data_t kv_reg_data, val_ctrl_derived_data;
+ uvm_reg kv_reg, val_ctrl_derived, val_ctrl;
+ uvm_reg_data_t kv_reg_data, val_ctrl_derived_data, val_ctrl_data;
logic lock_use;
logic lock_wr;
logic clear;
@@ -815,12 +840,17 @@ endclass
kv_reg = p_kv_rm.get_reg_by_name($sformatf("KEY_CTRL[%0d]",t_received.write_entry));
kv_reg_data = kv_reg.get_mirrored_value();
- lock_wr = kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[t_received.write_entry].lock_wr.get_lsb_pos()];
- lock_use = kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[t_received.write_entry].lock_use.get_lsb_pos()];
+ // lock_wr = kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[t_received.write_entry].lock_wr.get_lsb_pos()];
+ // lock_use = kv_reg_data[p_kv_rm.kv_reg_rm.KEY_CTRL[t_received.write_entry].lock_use.get_lsb_pos()];
+ lock_wr = key_ctrl_lock_wr[t_received.write_entry];
+ lock_use = key_ctrl_lock_use[t_received.write_entry];
val_ctrl_derived = p_kv_rm.get_reg_by_name("val_ctrl_derived");
val_ctrl_derived_data = val_ctrl_derived.get();
+ val_ctrl = p_kv_rm.get_reg_by_name("val_ctrl");
+ val_ctrl_data = val_ctrl.get();
+
//Copy received txn
// t_expected = t_received;
t_expected.write_en = t_received.write_en;
@@ -835,19 +865,28 @@ endclass
t_expected.error = 1'b1;
`uvm_info("PRED", "Trying to write to a locked reg", UVM_MEDIUM)
end
- else if (/*this.write_in_progress[t_received.write_entry] &&*/ val_ctrl_derived_data[t_received.write_entry]) begin
- t_expected.error = 1'b1;
- `uvm_info("PRED","Attempts to clear a reg while write is in progress results in an err", UVM_MEDIUM)
- `uvm_info("PRED", $sformatf("Write entry = %0d, val_ctrl_derived_data = %b", t_received.write_entry, val_ctrl_derived_data), UVM_MEDIUM)
- end
else begin
- t_expected.error = 1'b0;
- //Keep track of last dword written
- last_dword_written[t_received.write_entry] = t_received.write_offset;
+ key_entry_ctrl_we[t_received.write_entry] = 1'b1;
+ if (/*this.write_in_progress[t_received.write_entry] &&*/ val_ctrl_derived_data[t_received.write_entry]) begin
+ t_expected.error = 1'b1;
+ `uvm_info("PRED","Attempts to clear a reg while write is in progress results in an err", UVM_MEDIUM)
+ end
+ else begin
+ t_expected.error = 1'b0;
+ //Keep track of last dword written
+ last_dword_written[t_received.write_entry] = t_received.write_offset;
+ end
end
end
else begin
t_expected.error = 1'b0;
+ //Reset all bits of val_ctrl_derived except current entry irrespective of locks
+ this.set_val_ctrl_derived = 'b1;
+ for (int i = 0; i < KV_NUM_KEYS; i++) begin
+ this.val_ctrl_derived_data[i] = 0;
+ key_entry_ctrl_we[i] = 1'b0;
+ end
+
end
@@ -908,14 +947,23 @@ endclass
task kv_predictor::poll_and_run_delay_jobs();
forever begin
- while (this.set_val_ctrl_derived) begin
+ if (this.set_val_ctrl_derived) begin
// fork
- configuration.kv_hmac_write_agent_config.wait_for_num_clocks(2);
- `uvm_info("PRED", "Setting clear field of val_ctrl_derived register", UVM_MEDIUM)
+ //Delay by 2 clks to match the clear txn reaching predictor by then
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(2); //2
+ `uvm_info("PRED", $sformatf("Setting clear field of val_ctrl_derived register from %b to %b",p_kv_rm.val_ctrl_derived.get(), this.val_ctrl_derived_data), UVM_FULL)
p_kv_rm.val_ctrl_derived.set(this.val_ctrl_derived_data);
this.set_val_ctrl_derived = 'b0;
// join_none
end
+ else begin
+ for (int i = 0; i < KV_NUM_KEYS; i++) begin
+ if (!key_entry_ctrl_we[i]) begin
+ this.val_ctrl_derived_data[i] = 'b0; //reset clear bit if there's no write_en for it
+ end
+ this.set_val_ctrl_derived = 'b1; //update in next clk
+ end
+ end
configuration.kv_hmac_write_agent_config.wait_for_num_clocks(1);
end
endtask
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_debug_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_debug_sequence.svh
index 1e7bb375a..319fb1c02 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_debug_sequence.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_debug_sequence.svh
@@ -44,6 +44,11 @@ class kv_wr_rd_debug_sequence #(
typedef kv_rst_debug_off_sequence kv_rst_agent_debug_off_sequence_t;
kv_rst_agent_debug_off_sequence_t kv_rst_agent_debug_off_seq;
+ typedef kv_rst_scan_on_sequence kv_rst_agent_scan_on_sequence_t;
+ kv_rst_agent_scan_on_sequence_t kv_rst_agent_scan_on_seq;
+ typedef kv_rst_scan_off_sequence kv_rst_agent_scan_off_sequence_t;
+ kv_rst_agent_scan_off_sequence_t kv_rst_agent_scan_off_seq;
+
typedef kv_write_key_entry_sequence kv_write_agent_key_entry_sequence_t;
kv_write_agent_key_entry_sequence_t hmac_write_seq;
kv_write_agent_key_entry_sequence_t sha512_write_seq;
@@ -77,6 +82,11 @@ class kv_wr_rd_debug_sequence #(
if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV RST debug on seq");
kv_rst_agent_debug_off_seq = kv_rst_agent_debug_off_sequence_t::type_id::create("kv_rst_agent_debug_off_seq");
if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV RST debug off seq");
+
+ kv_rst_agent_scan_on_seq = kv_rst_agent_scan_on_sequence_t::type_id::create("kv_rst_agent_scan_on_seq");
+ if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV RST scan on seq");
+ kv_rst_agent_scan_off_seq = kv_rst_agent_scan_off_sequence_t::type_id::create("kv_rst_agent_scan_off_seq");
+ if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV RST scan off seq");
hmac_write_seq = kv_write_agent_key_entry_sequence_t::type_id::create("hmac_write_seq");
if(!this.randomize()) `uvm_error("KV WR RD", "Failed to randomize KV WRITE seq");
@@ -110,41 +120,30 @@ class kv_wr_rd_debug_sequence #(
reg [31:0] wr_data, rd_data;
reg_model = configuration.kv_rm;
+ //Unlock debug mode or clear secrets randomly
+ std::randomize(debug_type); //0 - security state, 1 - clear secrets
+ // debug_type = 0;
+
+ std::randomize(wait_cycles_from_seq) with {
+ wait_cycles_from_seq >= 5;
+ wait_cycles_from_seq <= 100;
+ };
+ std::randomize(clear_secrets_data); //wren, debug_value0/1
+ //Wait for random delay before starting debug txn
+ configuration.kv_rst_agent_config.wait_for_num_clocks(wait_cycles_from_seq);
+ case(debug_type)
+ SECURITY_STATE: begin
+ //start debug seq on rst agent
+ // kv_rst_agent_debug_seq.start(configuration.kv_rst_agent_config.sequencer);
+ kv_rst_agent_debug_on_seq.start(configuration.kv_rst_agent_config.sequencer);
+ kv_rst_agent_debug_off_seq.start(configuration.kv_rst_agent_config.sequencer);
+ end
+ CLEAR_SECRETS: begin
+ reg_model.kv_reg_rm.CLEAR_SECRETS.write(sts, clear_secrets_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
+ assert(sts == UVM_IS_OK) else `uvm_error("AHB_CLEAR_SECRETS_SET", "Failed when writing to CLEAR_SECRETS reg!")
+ end
+ endcase
- //Issue and wait for reset
- // if(configuration.kv_rst_agent_config.sequencer != null)
- // kv_rst_agent_poweron_seq.start(configuration.kv_rst_agent_config.sequencer);
- // else
- // `uvm_error("KV WR RD", "kv_rst_agent_config.sequencer is null!")
-
-
- //Unlock debug mode or clear secrets randomly
-
- // std::randomize(debug_type); //0 - security state, 1 - clear secrets
- debug_type = 0;
-
- std::randomize(wait_cycles_from_seq) with {
- wait_cycles_from_seq >= 5;
- wait_cycles_from_seq <= 100;
- };
-
- std::randomize(clear_secrets_data); //wren, debug_value0/1
-
- //Wait for random delay before starting debug txn
- configuration.kv_rst_agent_config.wait_for_num_clocks(wait_cycles_from_seq);
-
- case(debug_type)
- SECURITY_STATE: begin
- //start debug seq on rst agent
- // kv_rst_agent_debug_seq.start(configuration.kv_rst_agent_config.sequencer);
- kv_rst_agent_debug_on_seq.start(configuration.kv_rst_agent_config.sequencer);
- end
- CLEAR_SECRETS: begin
- reg_model.kv_reg_rm.CLEAR_SECRETS.write(sts, clear_secrets_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
- assert(sts == UVM_IS_OK) else `uvm_error("AHB_CLEAR_SECRETS_SET", "Failed when writing to CLEAR_SECRETS reg!")
- end
- endcase
-
fork
begin
//Write to all entries
@@ -166,7 +165,9 @@ class kv_wr_rd_debug_sequence #(
end
end
end
- join
+ join
+
+ `uvm_info("DEBUG_WR_RD", "Waiting for sha512 write/read to finish", UVM_FULL)
configuration.kv_rst_agent_config.wait_for_num_clocks(1000);
configuration.kv_hmac_write_agent_config.wait_for_num_clocks(1000);
configuration.kv_sha512_write_agent_config.wait_for_num_clocks(1000);
@@ -177,5 +178,45 @@ class kv_wr_rd_debug_sequence #(
configuration.kv_sha512_block_read_agent_config.wait_for_num_clocks(1000);
configuration.kv_ecc_privkey_read_agent_config.wait_for_num_clocks(1000);
configuration.kv_ecc_seed_read_agent_config.wait_for_num_clocks(1000);
+
+ `uvm_info("DEBUG_WR_RD", "Scan mode and queue writes", UVM_FULL)
+ fork //debug mode
+ begin
+ kv_rst_agent_scan_on_seq.start(configuration.kv_rst_agent_config.sequencer);
+ end
+ begin
+ queue_writes();
+ //Wait for these writes to finish before setting next CTRL reg to avoid collision (test trying to write to CTRL and predictor trying to read from CTRL)
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(100);
+ end
+ join
+
+ `uvm_info("DEBUG_WR_RD", "clear_secrets and queue writes", UVM_FULL)
+ fork //clear secrets
+ begin
+ repeat(20) begin
+ std::randomize(clear_secrets_data); //wren, debug_value0/1
+
+ reg_model.kv_reg_rm.CLEAR_SECRETS.write(sts, clear_secrets_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
+ assert(sts == UVM_IS_OK) else `uvm_error("AHB_CLEAR_SECRETS_SET", "Failed when writing to CLEAR_SECRETS reg!")
+
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(2);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(2);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(2);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(2);
+ end //repeat
+ end
+ begin
+ queue_writes();
+ //Wait for these writes to finish before setting next CTRL reg to avoid collision (test trying to write to CTRL and predictor trying to read from CTRL)
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(100);
+ end
+ join
endtask
endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_lock_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_lock_sequence.svh
index 630079dc5..7305ec891 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_lock_sequence.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_lock_sequence.svh
@@ -49,13 +49,14 @@ class kv_wr_rd_lock_sequence #(
kv_read_agent_key_entry_sequence_t ecc_privkey_read_seq;
kv_read_agent_key_entry_sequence_t ecc_seed_read_seq;
- rand reg [KV_ENTRY_ADDR_W-1:0] hmac_write_entry, sha512_write_entry, ecc_write_entry, doe_write_entry;
- rand reg[2:0] lock_data;
+ rand reg[2:0] lock_data;
+ rand reg [1:0] clear_secrets_data;
rand reg [1:0] write_id;
rand reg [2:0] read_id;
typedef enum {HMAC, SHA512, ECC, DOE} write_agents;
typedef enum {HMAC_KEY, HMAC_BLOCK, SHA512_BLOCK, ECC_PRIVKEY, ECC_SEED} read_agents;
+ // rand reg [KV_NUM_WRITE-1:0] wr_clients;
function new(string name = "");
@@ -95,29 +96,7 @@ class kv_wr_rd_lock_sequence #(
reg [31:0] wr_data, rd_data;
reg_model = configuration.kv_rm;
- std::randomize(hmac_write_entry) with {
- hmac_write_entry != sha512_write_entry;
- hmac_write_entry != ecc_write_entry;
- hmac_write_entry != doe_write_entry;
- };
-
- std::randomize(sha512_write_entry) with {
- sha512_write_entry != hmac_write_entry;
- sha512_write_entry != ecc_write_entry;
- sha512_write_entry != doe_write_entry;
- };
-
- std::randomize(ecc_write_entry) with {
- ecc_write_entry != hmac_write_entry;
- ecc_write_entry != sha512_write_entry;
- ecc_write_entry != doe_write_entry;
- };
-
- std::randomize(doe_write_entry) with {
- doe_write_entry != hmac_write_entry;
- doe_write_entry != sha512_write_entry;
- doe_write_entry != ecc_write_entry;
- };
+ gen_rand_entries();
//Issue and wait for reset
if(configuration.kv_rst_agent_config.sequencer != null)
@@ -207,22 +186,74 @@ class kv_wr_rd_lock_sequence #(
kv_rst_agent_poweron_seq.start(configuration.kv_rst_agent_config.sequencer);
else
`uvm_error("KV_WR_RD_LOCK", "kv_rst_agent_config.sequencer is null!")
-
- //Set each CTRL reg with random lock data
- for(int write_entry_temp = 0; write_entry_temp < KV_NUM_KEYS; write_entry_temp++) begin
- lock_data = $urandom_range(1,7); //Can set one of lock_wr, lock_use, clear or all together
- reg_model.kv_reg_rm.KEY_CTRL[write_entry_temp].write(sts, lock_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
- assert(sts == UVM_IS_OK) else `uvm_error("AHB_LOCK_SET", $sformatf("Failed when writing to KEY_CTRL[%d]",write_entry_temp))
-
- for (int write_offset_temp = 0; write_offset_temp < KV_NUM_DWORDS; write_offset_temp++) begin
- // Construct the transaction
- uvm_config_db#(reg [KV_ENTRY_ADDR_W-1:0])::set(null, "uvm_test_top.environment.kv_hmac_write_agent.sequencer.hmac_write_seq", "local_write_entry",write_entry_temp);
- uvm_config_db#(reg [KV_ENTRY_SIZE_W-1:0])::set(null, "uvm_test_top.environment.kv_hmac_write_agent.sequencer.hmac_write_seq", "local_write_offset",write_offset_temp);
- hmac_write_seq.start(configuration.kv_hmac_write_agent_config.sequencer);
+ fork
+ begin
+ repeat(20) begin
+ //Set each CTRL reg with random lock data
+ for(int write_entry_temp = 0; write_entry_temp < KV_NUM_KEYS; write_entry_temp++) begin
+ lock_data = $urandom_range(1,7); //Can set one of lock_wr, lock_use, clear or all together
+ reg_model.kv_reg_rm.KEY_CTRL[write_entry_temp].write(sts, lock_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
+ assert(sts == UVM_IS_OK) else `uvm_error("AHB_LOCK_SET", $sformatf("Failed when writing to KEY_CTRL[%d]",write_entry_temp))
+
+ //Wait for lock settings to go through - design is updated after 1 clk, predictor receives txn after 2 additional clks and flags are updated accordingly
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(100);//(3);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(100);//(3);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(100);//(3);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(100);//(3);
end
-
+ end //repeat
end
+ begin
+ queue_writes();
+ //Wait for these writes to finish before setting next CTRL reg to avoid collision (test trying to write to CTRL and predictor trying to read from CTRL)
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(100);
+
+ end
+ join
+
+ fork
+ begin
+ repeat(20) begin
+ //Set each CTRL reg with random lock data
+ for(int write_entry_temp = 0; write_entry_temp < KV_NUM_KEYS; write_entry_temp++) begin
+ lock_data = $urandom_range(1,7); //Can set one of lock_wr, lock_use, clear or all together
+ reg_model.kv_reg_rm.KEY_CTRL[write_entry_temp].write(sts, lock_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
+ assert(sts == UVM_IS_OK) else `uvm_error("AHB_LOCK_SET", $sformatf("Failed when writing to KEY_CTRL[%d]",write_entry_temp))
+
+ //Wait for lock settings to go through - design is updated after 1 clk, predictor receives txn after 2 additional clks and flags are updated accordingly
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(3);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(3);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(3);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(3);
+ end
+ end //repeat
+ end
+ begin
+ repeat(20) begin
+ std::randomize(clear_secrets_data); //wren, debug_value0/1
+
+ reg_model.kv_reg_rm.CLEAR_SECRETS.write(sts, clear_secrets_data, UVM_FRONTDOOR, reg_model.kv_AHB_map, this);
+ assert(sts == UVM_IS_OK) else `uvm_error("AHB_CLEAR_SECRETS_SET", "Failed when writing to CLEAR_SECRETS reg!")
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(2);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(2);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(2);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(2);
+ end //repeat
+ end
+ begin
+ queue_writes();
+ //Wait for these writes to finish before setting next CTRL reg to avoid collision (test trying to write to CTRL and predictor trying to read from CTRL)
+ configuration.kv_hmac_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_sha512_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_ecc_write_agent_config.wait_for_num_clocks(100);
+ configuration.kv_doe_write_agent_config.wait_for_num_clocks(100);
+
+ end
+ join
endtask
endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_sequence.svh
index 180059e7f..e12a1ac9f 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_sequence.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/environment_packages/kv_env_pkg/src/kv_wr_rd_sequence.svh
@@ -49,12 +49,6 @@ class kv_wr_rd_sequence #(
kv_read_agent_key_entry_sequence_t ecc_privkey_read_seq;
kv_read_agent_key_entry_sequence_t ecc_seed_read_seq;
- rand reg [KV_ENTRY_ADDR_W-1:0] hmac_write_entry, sha512_write_entry, ecc_write_entry, doe_write_entry;
- //constraint valid_entry {hmac_write_entry != sha512_write_entry != ecc_write_entry != doe_write_entry;}
-
-
-
-
function new(string name = "");
super.new(name);
@@ -93,29 +87,7 @@ class kv_wr_rd_sequence #(
int offset = 0;
reg [31:0] wr_data, rd_data;
- std::randomize(hmac_write_entry) with {
- hmac_write_entry != sha512_write_entry;
- hmac_write_entry != ecc_write_entry;
- hmac_write_entry != doe_write_entry;
- };
-
- std::randomize(sha512_write_entry) with {
- sha512_write_entry != hmac_write_entry;
- sha512_write_entry != ecc_write_entry;
- sha512_write_entry != doe_write_entry;
- };
-
- std::randomize(ecc_write_entry) with {
- ecc_write_entry != hmac_write_entry;
- ecc_write_entry != sha512_write_entry;
- ecc_write_entry != doe_write_entry;
- };
-
- std::randomize(doe_write_entry) with {
- doe_write_entry != hmac_write_entry;
- doe_write_entry != sha512_write_entry;
- doe_write_entry != ecc_write_entry;
- };
+ gen_rand_entries();
//Issue and wait for reset
if(configuration.kv_rst_agent_config.sequencer != null)
@@ -193,6 +165,8 @@ class kv_wr_rd_sequence #(
end
join
+
+ queue_writes();
endtask
endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/kv_rst_pkg.sv b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/kv_rst_pkg.sv
index 87a6a8f8b..bbdc826c9 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/kv_rst_pkg.sv
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/kv_rst_pkg.sv
@@ -81,6 +81,8 @@ package kv_rst_pkg;
`include "src/kv_rst_debug_sequence.svh"
`include "src/kv_rst_debug_on_sequence.svh"
`include "src/kv_rst_debug_off_sequence.svh"
+ `include "src/kv_rst_scan_on_sequence.svh"
+ `include "src/kv_rst_scan_off_sequence.svh"
`include "src/kv_rst_agent.svh"
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_scan_off_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_scan_off_sequence.svh
new file mode 100644
index 000000000..8e0bea9ec
--- /dev/null
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_scan_off_sequence.svh
@@ -0,0 +1,69 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the soc_ifc_ctrl transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a soc_ifc_ctrl_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class kv_rst_scan_off_sequence extends kv_rst_sequence_base;
+
+ `uvm_object_utils( kv_rst_scan_off_sequence )
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+
+ task body();
+
+ // Assert debug mode
+ req=kv_rst_transaction::type_id::create("pwr_req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("KV_RST_SCAN_OFF", "kv_rst_scan_off_sequence::body()-kv_rst_transaction randomization failed")
+ `uvm_info("KV_RST_SCAN_OFF", "Disabling scan mode", UVM_MEDIUM)
+ req.set_pwrgood = 1'b1;
+ req.assert_rst = 1'b0;
+ req.assert_core_rst = 1'b0;
+ req.debug_mode = 1'b0;
+ req.scan_mode = 1'b0;
+
+ finish_item(req);
+ `uvm_info("KV_RST_SCAN_OFF", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+
+
+
+endtask
+
+endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_scan_on_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_scan_on_sequence.svh
new file mode 100644
index 000000000..960931259
--- /dev/null
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_rst_pkg/src/kv_rst_scan_on_sequence.svh
@@ -0,0 +1,84 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the soc_ifc_ctrl transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a soc_ifc_ctrl_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class kv_rst_scan_on_sequence extends kv_rst_sequence_base;
+
+ `uvm_object_utils( kv_rst_scan_on_sequence )
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+
+ task body();
+
+ // Assert scan mode, debugUnlock_or_scan_mode_switch
+ req=kv_rst_transaction::type_id::create("dbg_on_req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("KV_RST_SCAN_ON", "kv_rst_scan_on_sequence::body()-kv_rst_transaction randomization failed")
+ `uvm_info("KV_RST_SCAN_ON", "Enabling scan mode, emulate pulse on debug_mode input", UVM_MEDIUM)
+ req.set_pwrgood = 1'b1;
+ req.assert_rst = 1'b0;
+ req.assert_core_rst = 1'b0;
+ req.debug_mode = 1'b1;
+ req.scan_mode = 1'b1;
+
+ finish_item(req);
+ `uvm_info("KV_RST_SCAN_ON", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ // Assert scan mode, deassert debugUnlock_or_scan_mode_switch
+ req=kv_rst_transaction::type_id::create("dbg_off_req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("KV_RST_SCAN_ON", "kv_rst_scan_on_sequence::body()-kv_rst_transaction randomization failed")
+ `uvm_info("KV_RST_SCAN_ON", "Reset debug_mode input", UVM_MEDIUM)
+ req.set_pwrgood = 1'b1;
+ req.assert_rst = 1'b0;
+ req.assert_core_rst = 1'b0;
+ req.debug_mode = 1'b0;
+ req.scan_mode = 1'b1;
+
+ finish_item(req);
+ `uvm_info("KV_RST_SCAN_ON", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+
+
+
+endtask
+
+endclass
\ No newline at end of file
diff --git a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src/kv_write_key_entry_sequence.svh b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src/kv_write_key_entry_sequence.svh
index a202578d5..fb0b28b66 100644
--- a/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src/kv_write_key_entry_sequence.svh
+++ b/src/keyvault/uvmf_kv/uvmf_template_output/verification_ip/interface_packages/kv_write_pkg/src/kv_write_key_entry_sequence.svh
@@ -69,6 +69,7 @@ task body();
if((local_write_entry !== 'x) && (local_write_offset !== 'x)) begin
//Use write_entry and write_offset passed in from top level sequence
+ `uvm_info("KV_WRITE_KEY_ENTRY_SEQ", "Write entry and write offset were set by top level seq", UVM_HIGH)
`uvm_do_with(req, {
req.write_entry == local_write_entry;
req.write_offset == local_write_offset;
@@ -76,18 +77,21 @@ task body();
end
else if((local_write_entry !== 'x)) begin
//Use write entry passed in from top level sequence
+ `uvm_info("KV_WRITE_KEY_ENTRY_SEQ", "Write entry was set by top level seq", UVM_HIGH)
`uvm_do_with(req, {
req.write_entry == local_write_entry;
})
end
else if ((local_write_offset !== 'x)) begin
//Use write offset passed in from top level sequence
+ `uvm_info("KV_WRITE_KEY_ENTRY_SEQ", "Write offset was set by top level seq", UVM_HIGH)
`uvm_do_with(req, {
req.write_offset == local_write_offset;
})
end
else begin
//Use randomized transaction write entry
+ `uvm_info("KV_WRITE_KEY_ENTRY_SEQ", "Write entry and write offset were not set by top level seq, randomizing in kv_write_key_entry_seq", UVM_HIGH)
`uvm_do(req);
end
diff --git a/src/kmac/config/kmac.vf b/src/kmac/config/kmac.vf
index b0da634ae..21bfb92e0 100644
--- a/src/kmac/config/kmac.vf
+++ b/src/kmac/config/kmac.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
+incdir+${CALIPTRA_ROOT}/src/lc_ctrl/rtl
+incdir+${CALIPTRA_ROOT}/src/kmac/rtl
diff --git a/src/kmac/config/kmac_pkg.vf b/src/kmac/config/kmac_pkg.vf
index 00f6c16cf..acf975fa5 100644
--- a/src/kmac/config/kmac_pkg.vf
+++ b/src/kmac/config/kmac_pkg.vf
@@ -1,3 +1,2 @@
-
+incdir+${CALIPTRA_ROOT}/src/kmac/rtl
${CALIPTRA_ROOT}/src/kmac/rtl/sha3_pkg.sv
\ No newline at end of file
diff --git a/src/lc_ctrl/config/lc_ctrl_pkg.vf b/src/lc_ctrl/config/lc_ctrl_pkg.vf
index e7120d98c..e41a7f442 100644
--- a/src/lc_ctrl/config/lc_ctrl_pkg.vf
+++ b/src/lc_ctrl/config/lc_ctrl_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
+incdir+${CALIPTRA_ROOT}/src/lc_ctrl/rtl
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
diff --git a/src/libs/config/libs.vf b/src/libs/config/libs.vf
index 90d291bb7..7c0d4c77b 100644
--- a/src/libs/config/libs.vf
+++ b/src/libs/config/libs.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
diff --git a/src/libs/config/mvc_lib.vf b/src/libs/config/mvc_lib.vf
new file mode 100644
index 000000000..a9d638c24
--- /dev/null
+++ b/src/libs/config/mvc_lib.vf
@@ -0,0 +1,18 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
\ No newline at end of file
diff --git a/src/libs/config/uvm_lib.vf b/src/libs/config/uvm_lib.vf
new file mode 100644
index 000000000..c12fb083e
--- /dev/null
+++ b/src/libs/config/uvm_lib.vf
@@ -0,0 +1,3 @@
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
+${UVM_HOME}/src/uvm_pkg.sv
\ No newline at end of file
diff --git a/src/libs/config/uvmf_lib.vf b/src/libs/config/uvmf_lib.vf
new file mode 100644
index 000000000..6f0182070
--- /dev/null
+++ b/src/libs/config/uvmf_lib.vf
@@ -0,0 +1,64 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
\ No newline at end of file
diff --git a/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/ahb_lite_slave_0_config_policy.svh b/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/ahb_lite_slave_0_config_policy.svh
index c242da515..1057eb119 100644
--- a/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/ahb_lite_slave_0_config_policy.svh
+++ b/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/ahb_lite_slave_0_config_policy.svh
@@ -121,7 +121,7 @@ class ahb_lite_slave_0_config_policy;
// // If true, drives previous address when bus is IDLE
// cfg.m_bfm.config_address_on_idle = 1'b0;
// // Maximum number of successive wait states
- cfg.m_bfm.config_max_wait_states_count = 33;
+ cfg.m_bfm.config_max_wait_states_count = 34;
// // Data endianness
// cfg.m_bfm.config_endianness = AHB_LITTLE_ENDIAN;
// // Sets the domain
diff --git a/src/pcrvault/config/pcrvault.vf b/src/pcrvault/config/pcrvault.vf
index 673bab586..5e59b1772 100644
--- a/src/pcrvault/config/pcrvault.vf
+++ b/src/pcrvault/config/pcrvault.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
diff --git a/src/pcrvault/config/pcrvault_cov.vf b/src/pcrvault/config/pcrvault_cov.vf
index 4cf22e5dc..e8172adeb 100644
--- a/src/pcrvault/config/pcrvault_cov.vf
+++ b/src/pcrvault/config/pcrvault_cov.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/pcrvault/coverage
${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_if.sv
${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_props.sv
diff --git a/src/pcrvault/config/pv_defines_pkg.vf b/src/pcrvault/config/pv_defines_pkg.vf
index 7e4f67eea..ab7aa0fd0 100644
--- a/src/pcrvault/config/pv_defines_pkg.vf
+++ b/src/pcrvault/config/pv_defines_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
diff --git a/src/pcrvault/config/pv_uvm_pkg.vf b/src/pcrvault/config/pv_uvm_pkg.vf
index cb4b5df57..8fb32e123 100644
--- a/src/pcrvault/config/pv_uvm_pkg.vf
+++ b/src/pcrvault/config/pv_uvm_pkg.vf
@@ -1,3 +1,2 @@
-
+incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_uvm.sv
\ No newline at end of file
diff --git a/src/pcrvault/uvmf_pv/config/uvmf_pv.vf b/src/pcrvault/uvmf_pv/config/uvmf_pv.vf
new file mode 100644
index 000000000..4092d085e
--- /dev/null
+++ b/src/pcrvault/uvmf_pv/config/uvmf_pv.vf
@@ -0,0 +1,125 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/coverage
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_rst_pkg
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_rst_pkg/src
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_read_pkg
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_read_pkg/src
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_write_pkg
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_write_pkg/src
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/environment_packages/pv_env_pkg
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/tests
++incdir+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/testbench
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_uvm.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_if.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_props.sv
+${CALIPTRA_ROOT}/src/pcrvault/coverage/pcrvault_cov_bind.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/environment_packages/pv_env_pkg/registers/pv_reg_adapter_functions_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_rst_pkg/pv_rst_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_rst_pkg/pv_rst_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_rst_pkg/src/pv_rst_driver_bfm.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_rst_pkg/src/pv_rst_if.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_rst_pkg/src/pv_rst_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_read_pkg/pv_read_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_read_pkg/pv_read_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_read_pkg/src/pv_read_driver_bfm.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_read_pkg/src/pv_read_if.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_read_pkg/src/pv_read_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_write_pkg/pv_write_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_write_pkg/pv_write_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_write_pkg/src/pv_write_driver_bfm.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_write_pkg/src/pv_write_if.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/interface_packages/pv_write_pkg/src/pv_write_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/environment_packages/pv_env_pkg/registers/pv_reg_model_top_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/verification_ip/environment_packages/pv_env_pkg/pv_env_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/parameters/pv_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/sequences/pv_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/tests/pv_tests_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/pcrvault/uvmf_pv/uvmf_template_output/project_benches/pv/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
\ No newline at end of file
diff --git a/src/riscv_core/veer_el2/config/compile.yml b/src/riscv_core/veer_el2/config/compile.yml
index ee025269a..dad981819 100755
--- a/src/riscv_core/veer_el2/config/compile.yml
+++ b/src/riscv_core/veer_el2/config/compile.yml
@@ -24,8 +24,6 @@ targets:
rtl:
directories: [$COMPILE_ROOT/rtl]
files:
- - $COMPILE_ROOT/rtl/pic_map_auto.h
- - $COMPILE_ROOT/rtl/el2_param.vh
- $COMPILE_ROOT/rtl/el2_mem.sv
- $COMPILE_ROOT/rtl/el2_dma_ctrl.sv
- $COMPILE_ROOT/rtl/el2_pic_ctrl.sv
diff --git a/src/riscv_core/veer_el2/config/el2_veer_pkg.vf b/src/riscv_core/veer_el2/config/el2_veer_pkg.vf
index 95f06cacf..3e3824be2 100644
--- a/src/riscv_core/veer_el2/config/el2_veer_pkg.vf
+++ b/src/riscv_core/veer_el2/config/el2_veer_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
+incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
diff --git a/src/riscv_core/veer_el2/config/el2_veer_wrapper.vf b/src/riscv_core/veer_el2/config/el2_veer_wrapper.vf
index 7bcf4091e..da326a7e7 100644
--- a/src/riscv_core/veer_el2/config/el2_veer_wrapper.vf
+++ b/src/riscv_core/veer_el2/config/el2_veer_wrapper.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
+incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
diff --git a/src/riscv_core/veer_el2/config/el2_veer_wrapper_tb.vf b/src/riscv_core/veer_el2/config/el2_veer_wrapper_tb.vf
index 594ea3a70..146b42520 100644
--- a/src/riscv_core/veer_el2/config/el2_veer_wrapper_tb.vf
+++ b/src/riscv_core/veer_el2/config/el2_veer_wrapper_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
+incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
diff --git a/src/riscv_core/veer_el2/rtl/dmi/dmi_wrapper.v b/src/riscv_core/veer_el2/rtl/dmi/dmi_wrapper.v
index d9fd74104..39fdccde2 100644
--- a/src/riscv_core/veer_el2/rtl/dmi/dmi_wrapper.v
+++ b/src/riscv_core/veer_el2/rtl/dmi/dmi_wrapper.v
@@ -34,7 +34,6 @@ module dmi_wrapper(
// Processor Signals
input core_rst_n, // Core reset
input core_clk, // Core clock
- input [31:1] jtag_id, // JTAG ID
input [31:0] rd_data, // 32 bit Read data from Processor
output [31:0] reg_wr_data, // 32 bit Write data to Processor
output [6:0] reg_wr_addr, // 7 bit reg address to Processor
@@ -70,7 +69,6 @@ module dmi_wrapper(
.idle(3'h0), // no need to wait to sample data
.dmi_stat(2'b0), // no need to wait or error possible
.version(4'h1), // debug spec 0.13 compliant
- .jtag_id(jtag_id),
.dmi_hard_reset(dmi_hard_reset),
.dmi_reset(dmireset)
);
diff --git a/src/riscv_core/veer_el2/rtl/dmi/rvjtag_tap.v b/src/riscv_core/veer_el2/rtl/dmi/rvjtag_tap.v
index 2553575ff..ef872999f 100644
--- a/src/riscv_core/veer_el2/rtl/dmi/rvjtag_tap.v
+++ b/src/riscv_core/veer_el2/rtl/dmi/rvjtag_tap.v
@@ -37,13 +37,6 @@ output reg dmi_hard_reset,
input [2:0] idle,
input [1:0] dmi_stat,
-/*
--- revisionCode : 4'h0;
--- manufacturersIdCode : 11'h45;
--- deviceIdCode : 16'h0001;
--- order MSB .. LSB -> [4 bit version or revision] [16 bit part number] [11 bit manufacturer id] [value of 1'b1 in LSB]
-*/
-input [31:1] jtag_id,
input [3:0] version
);
@@ -67,7 +60,6 @@ wire pause_ir ;
wire update_ir ;
wire capture_ir;
wire[1:0] dr_en;
-wire devid_sel;
wire [5:0] abits;
assign abits = AWIDTH[5:0];
@@ -143,7 +135,6 @@ always @ (negedge tck or negedge trst) begin
end
-assign devid_sel = ir == 5'b00001;
assign dr_en[0] = ir == 5'b10000;
assign dr_en[1] = ir == 5'b10001;
@@ -166,9 +157,7 @@ always_comb begin
shift_dr: begin
case(1)
dr_en[1]: nsr = {tdi, sr[USER_DR_LENGTH-1:1]};
-
- dr_en[0],
- devid_sel: nsr = {{USER_DR_LENGTH-32{1'b0}},tdi, sr[31:1]};
+ dr_en[0]: nsr = {{USER_DR_LENGTH-32{1'b0}},tdi, sr[31:1]};
default: nsr = {{USER_DR_LENGTH-1{1'b0}},tdi}; // bypass
endcase
end
@@ -177,7 +166,6 @@ always_comb begin
case(1)
dr_en[0]: nsr = {{USER_DR_LENGTH-15{1'b0}}, idle, dmi_stat, abits, version};
dr_en[1]: nsr = {{AWIDTH{1'b0}}, rd_data, rd_status};
- devid_sel: nsr = {{USER_DR_LENGTH-32{1'b0}}, jtag_id, 1'b1};
endcase
end
shift_ir: nsr = {{USER_DR_LENGTH-5{1'b0}},tdi, sr[4:1]};
diff --git a/src/riscv_core/veer_el2/rtl/el2_veer.sv b/src/riscv_core/veer_el2/rtl/el2_veer.sv
index 1ade17502..39590a63e 100644
--- a/src/riscv_core/veer_el2/rtl/el2_veer.sv
+++ b/src/riscv_core/veer_el2/rtl/el2_veer.sv
@@ -400,6 +400,7 @@ import el2_pkg::*;
logic ifu_pmu_instr_aligned;
logic ifu_ic_error_start;
logic ifu_iccm_rd_ecc_single_err;
+ logic cptra_iccm_dma_rd_ecc_single_err;
logic cptra_iccm_rd_ecc_double_err;
logic lsu_axi_awready_ahb;
@@ -884,7 +885,7 @@ import el2_pkg::*;
.*
);
- assign cptra_iccm_ecc_single_error = ifu_iccm_rd_ecc_single_err;
+ assign cptra_iccm_ecc_single_error = ifu_iccm_rd_ecc_single_err || cptra_iccm_dma_rd_ecc_single_err;
assign cptra_iccm_ecc_double_error = cptra_iccm_rd_ecc_double_err;
diff --git a/src/riscv_core/veer_el2/rtl/el2_veer_wrapper.sv b/src/riscv_core/veer_el2/rtl/el2_veer_wrapper.sv
index cec4d24cf..d7d1d3841 100755
--- a/src/riscv_core/veer_el2/rtl/el2_veer_wrapper.sv
+++ b/src/riscv_core/veer_el2/rtl/el2_veer_wrapper.sv
@@ -33,7 +33,6 @@ import soc_ifc_pkg::*;
input logic [31:1] rst_vec,
input logic nmi_int,
input logic [31:1] nmi_vec,
- input logic [31:1] jtag_id,
output logic [31:0] trace_rv_i_insn_ip,
@@ -724,7 +723,6 @@ import soc_ifc_pkg::*;
// Processor Signals
.core_rst_n (dbg_rst_l), // Debug reset, active low
.core_clk (clk), // Core clock
- .jtag_id (jtag_id), // JTAG ID
.rd_data (dmi_reg_rdata_PostQ), // Read data from Processor
.reg_wr_data (dmi_reg_wdata), // Write data to Processor
.reg_wr_addr (dmi_reg_addr), // Write address to Processor
diff --git a/src/riscv_core/veer_el2/rtl/ifu/el2_ifu.sv b/src/riscv_core/veer_el2/rtl/ifu/el2_ifu.sv
index ddd429b1d..0c1ed5f18 100644
--- a/src/riscv_core/veer_el2/rtl/ifu/el2_ifu.sv
+++ b/src/riscv_core/veer_el2/rtl/ifu/el2_ifu.sv
@@ -150,6 +150,7 @@ import el2_pkg::*;
input logic [77:0] iccm_rd_data_ecc, // Data + ECC read from ICCM.
output logic ifu_iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc error.
+ output logic cptra_iccm_dma_rd_ecc_single_err, // Active DMA access has a single ICCM ecc error.
output logic cptra_iccm_rd_ecc_double_err, // Output added for Caliptra reporting
// Perf counter sigs
@@ -248,6 +249,8 @@ import el2_pkg::*;
logic ifc_fetch_req_f;
logic ifc_fetch_req_f_raw;
logic [1:0] iccm_rd_ecc_double_err; // This fetch has an iccm double error.
+ logic iccm_dma_rd_ecc_single_err; // Active DMA access has a single ICCM ecc error.
+ logic iccm_dma_rd_ecc_double_err; // Active DMA access has a double ICCM ecc error.
logic ifu_async_error_start;
@@ -282,7 +285,8 @@ import el2_pkg::*;
assign ifu_bp_inst_mask_f = 1'b1;
end
- assign cptra_iccm_rd_ecc_double_err = |iccm_rd_ecc_double_err;
+ assign cptra_iccm_dma_rd_ecc_single_err = iccm_dma_rd_ecc_single_err;
+ assign cptra_iccm_rd_ecc_double_err = |iccm_rd_ecc_double_err || |iccm_dma_rd_ecc_double_err;
// aligner
diff --git a/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_mem_ctl.sv b/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_mem_ctl.sv
index 0d267f27e..99d537696 100644
--- a/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_mem_ctl.sv
+++ b/src/riscv_core/veer_el2/rtl/ifu/el2_ifu_mem_ctl.sv
@@ -164,6 +164,8 @@ import el2_pkg::*;
output logic [1:0] ic_access_fault_type_f, // Access fault types
output logic iccm_rd_ecc_single_err, // This fetch has a single ICCM ecc error.
output logic [1:0] iccm_rd_ecc_double_err, // This fetch has a double ICCM ecc error.
+ output logic iccm_dma_rd_ecc_single_err, // Active DMA access has a single ICCM ecc error.
+ output logic iccm_dma_rd_ecc_double_err, // Active DMA access has a double ICCM ecc error.
output logic ic_error_start, // This has any I$ errors ( data/tag/ecc/parity )
output logic ifu_async_error_start, // Or of the sb iccm, and all the icache errors sent to aligner to stop
@@ -1275,6 +1277,8 @@ ifc_dma_access_ok_prev,dma_iccm_req_f})
assign iccm_rw_addr[pt.ICCM_BITS-1:1] = ( ifc_dma_access_q_ok & dma_iccm_req & ~iccm_correct_ecc) ? dma_mem_addr[pt.ICCM_BITS-1:1] :
(~(ifc_dma_access_q_ok & dma_iccm_req) & iccm_correct_ecc) ? {iccm_ecc_corr_index_ff[pt.ICCM_BITS-1:2],1'b0} : ifc_fetch_addr_bf[pt.ICCM_BITS-1:1] ;
+ assign iccm_dma_rd_ecc_single_err = iccm_dma_sb_error;
+ assign iccm_dma_rd_ecc_double_err = iccm_dma_rvalid && iccm_dma_ecc_error;
diff --git a/src/riscv_core/veer_el2/tb/el2_veer_wrapper_tb.sv b/src/riscv_core/veer_el2/tb/el2_veer_wrapper_tb.sv
index d979631e8..889c3735a 100755
--- a/src/riscv_core/veer_el2/tb/el2_veer_wrapper_tb.sv
+++ b/src/riscv_core/veer_el2/tb/el2_veer_wrapper_tb.sv
@@ -28,7 +28,6 @@ module el2_veer_wrapper_tb ( input bit core_clk );
logic [31:0] reset_vector;
logic [31:0] nmi_vector;
- logic [31:1] jtag_id;
logic [31:0] ic_haddr ;
logic [2:0] ic_hburst ;
@@ -411,9 +410,6 @@ module el2_veer_wrapper_tb ( input bit core_clk );
abi_reg[30] = "t5";
abi_reg[31] = "t6";
// tie offs
- jtag_id[31:28] = 4'b1;
- jtag_id[27:12] = '0;
- jtag_id[11:1] = 11'h45;
reset_vector = `RV_RESET_VEC;
nmi_vector = 32'hee000000;
nmi_int = 0;
@@ -448,7 +444,6 @@ el2_veer_wrapper rvtop (
.rst_vec ( reset_vector[31:1]),
.nmi_int ( nmi_int ),
.nmi_vec ( nmi_vector[31:1]),
- .jtag_id ( jtag_id[31:1]),
`ifdef RV_BUILD_AHB_LITE
.haddr ( ic_haddr ),
diff --git a/src/sha256/config/sha256_ctrl.vf b/src/sha256/config/sha256_ctrl.vf
index f8413b0e9..1a53cf1eb 100644
--- a/src/sha256/config/sha256_ctrl.vf
+++ b/src/sha256/config/sha256_ctrl.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/sha256/rtl
diff --git a/src/sha256/config/sha256_ctrl_tb.vf b/src/sha256/config/sha256_ctrl_tb.vf
index 9bc3eb6fd..7889eaad5 100644
--- a/src/sha256/config/sha256_ctrl_tb.vf
+++ b/src/sha256/config/sha256_ctrl_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/sha256/coverage
diff --git a/src/sha256/config/sha256_random_test.vf b/src/sha256/config/sha256_random_test.vf
index 0820eeec7..1d5ed66c8 100644
--- a/src/sha256/config/sha256_random_test.vf
+++ b/src/sha256/config/sha256_random_test.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/sha256/coverage
diff --git a/src/sha512/config/sha512_ctrl.vf b/src/sha512/config/sha512_ctrl.vf
index 0f4ae2e2c..71a30643d 100644
--- a/src/sha512/config/sha512_ctrl.vf
+++ b/src/sha512/config/sha512_ctrl.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/sha512/config/sha512_ctrl_32bit_tb.vf b/src/sha512/config/sha512_ctrl_32bit_tb.vf
index 9e274b18d..621c83d2e 100644
--- a/src/sha512/config/sha512_ctrl_32bit_tb.vf
+++ b/src/sha512/config/sha512_ctrl_32bit_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/sha512/uvmf_sha512/config/uvmf_sha512.vf b/src/sha512/uvmf_sha512/config/uvmf_sha512.vf
new file mode 100644
index 000000000..595312dde
--- /dev/null
+++ b/src/sha512/uvmf_sha512/config/uvmf_sha512.vf
@@ -0,0 +1,135 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512/coverage
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/../rtl
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/../../libs/rtl
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_in_pkg
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_in_pkg/src
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_out_pkg
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_out_pkg/src
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/environment_packages/SHA512_env_pkg
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/tests
++incdir+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/testbench
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/sha512/coverage/sha512_ctrl_cov_if.sv
+${CALIPTRA_ROOT}/src/sha512/coverage/sha512_ctrl_cov_bind.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_in_pkg/SHA512_in_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_in_pkg/SHA512_in_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_in_pkg/src/SHA512_in_driver_bfm.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_in_pkg/src/SHA512_in_if.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_in_pkg/src/SHA512_in_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_out_pkg/SHA512_out_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_out_pkg/SHA512_out_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_out_pkg/src/SHA512_out_driver_bfm.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_out_pkg/src/SHA512_out_if.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/interface_packages/SHA512_out_pkg/src/SHA512_out_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/verification_ip/environment_packages/SHA512_env_pkg/SHA512_env_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/parameters/SHA512_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/sequences/SHA512_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/tests/SHA512_tests_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/sha512/uvmf_sha512/uvmf_template_output/project_benches/SHA512/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
\ No newline at end of file
diff --git a/src/sha512_masked/config/sha512_masked_core.vf b/src/sha512_masked/config/sha512_masked_core.vf
index 9816a2017..e9d04af99 100644
--- a/src/sha512_masked/config/sha512_masked_core.vf
+++ b/src/sha512_masked/config/sha512_masked_core.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/sha512_masked/config/sha512_masked_core_tb.vf b/src/sha512_masked/config/sha512_masked_core_tb.vf
index 10d6ce690..b9fa2a419 100644
--- a/src/sha512_masked/config/sha512_masked_core_tb.vf
+++ b/src/sha512_masked/config/sha512_masked_core_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
diff --git a/src/soc_ifc/config/soc_ifc_pkg.vf b/src/soc_ifc/config/soc_ifc_pkg.vf
index c8c03c8da..0ba5a33ba 100644
--- a/src/soc_ifc/config/soc_ifc_pkg.vf
+++ b/src/soc_ifc/config/soc_ifc_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_pkg.sv
diff --git a/src/soc_ifc/config/soc_ifc_tb.vf b/src/soc_ifc/config/soc_ifc_tb.vf
index 0f6d2c09c..55dbfb700 100644
--- a/src/soc_ifc/config/soc_ifc_tb.vf
+++ b/src/soc_ifc/config/soc_ifc_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
diff --git a/src/soc_ifc/config/soc_ifc_top.vf b/src/soc_ifc/config/soc_ifc_top.vf
index 2367cc6f8..4e1965ce5 100644
--- a/src/soc_ifc/config/soc_ifc_top.vf
+++ b/src/soc_ifc/config/soc_ifc_top.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
diff --git a/src/soc_ifc/config/soc_ifc_uvm_pkg.vf b/src/soc_ifc/config/soc_ifc_uvm_pkg.vf
index ca9cf8b7e..ef4ec886b 100644
--- a/src/soc_ifc/config/soc_ifc_uvm_pkg.vf
+++ b/src/soc_ifc/config/soc_ifc_uvm_pkg.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_uvm.sv
diff --git a/src/soc_ifc/rtl/caliptra_top_reg.h b/src/soc_ifc/rtl/caliptra_top_reg.h
index e2c597f16..553225858 100644
--- a/src/soc_ifc/rtl/caliptra_top_reg.h
+++ b/src/soc_ifc/rtl/caliptra_top_reg.h
@@ -15,6 +15,7 @@
#ifndef CALIPTRA_TOP_REG_HEADER
#define CALIPTRA_TOP_REG_HEADER
+
#define CALIPTRA_TOP_REG_BASE_ADDR (0x0)
#define CALIPTRA_TOP_REG_MBOX_CSR_BASE_ADDR (0x30020000)
#define CALIPTRA_TOP_REG_MBOX_CSR_MBOX_LOCK (0x30020000)
@@ -542,4 +543,3 @@
#endif
-
diff --git a/src/soc_ifc/uvmf_soc_ifc/config/uvmf_soc_ifc.vf b/src/soc_ifc/uvmf_soc_ifc/config/uvmf_soc_ifc.vf
new file mode 100644
index 000000000..46168ac64
--- /dev/null
+++ b/src/soc_ifc/uvmf_soc_ifc/config/uvmf_soc_ifc.vf
@@ -0,0 +1,178 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/coverage
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/parameters
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/sequences
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/tests
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/testbench
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_uvm.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_pdef.vh
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/include/el2_def.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/common_defines.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers/soc_ifc_reg_model_top_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/soc_ifc_env_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/coverage/soc_ifc_cov_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/coverage/soc_ifc_cov_bind.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/parameters/soc_ifc_parameters_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/sequences/soc_ifc_sequences_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/tests/soc_ifc_tests_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/testbench/hdl_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/project_benches/soc_ifc/tb/testbench/hvl_top.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/beh_lib.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_boot_fsm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_arb.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/wdt.sv
\ No newline at end of file
diff --git a/src/soc_ifc/uvmf_soc_ifc/config/uvmf_soc_ifc_vip.vf b/src/soc_ifc/uvmf_soc_ifc/config/uvmf_soc_ifc_vip.vf
new file mode 100644
index 000000000..8f85c734a
--- /dev/null
+++ b/src/soc_ifc/uvmf_soc_ifc/config/uvmf_soc_ifc_vip.vf
@@ -0,0 +1,166 @@
++define+MAP_PROT_ATTR
++incdir+${UVM_HOME}/src
++incdir+${UVM_HOME}/src/dpi
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3
++incdir+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules
++incdir+${UVMF_HOME}/common/mgc_vip/ahb
++incdir+${UVMF_HOME}/common/mgc_vip/apb
++incdir+${UVMF_HOME}/common/modules
++incdir+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload
++incdir+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset
++incdir+${UVMF_HOME}/uvmf_base_pkg
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf
++incdir+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/rtl
++incdir+${CALIPTRA_ROOT}/src/integration/rtl
++incdir+${CALIPTRA_ROOT}/src/libs/rtl
++incdir+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl
++incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
++incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg
++incdir+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers
++incdir+${CALIPTRA_ROOT}/src/sha512/rtl
+${UVM_HOME}/src/uvm_pkg.sv
+${QUESTA_MVC_HOME}/include/questa_mvc_svapi.svh
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/mvc_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/mgc_apb3_v1_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/mgc_ahb_v2_0_pkg.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_slave.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/ahb/modules/ahb_lite_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_master.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb_monitor.sv
+${QUESTA_MVC_HOME}/questa_mvc_src/sv/apb3/modules/apb5_monitor.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg_hdl.sv
+${UVMF_HOME}/uvmf_base_pkg/uvmf_base_pkg.sv
+${UVMF_HOME}/common/utility_packages/qvip_utils_pkg/qvip_utils_pkg.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_master_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_module_hvl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_signal_if.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hdl.sv
+${UVMF_HOME}/common/mgc_vip/ahb/mgc_ahb_slave_hvl.sv
+${UVMF_HOME}/common/modules/ahb_master.v
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hdl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module_hvl.sv
+${UVMF_HOME}/common/modules/ahb_memory_slave_module.sv
+${UVMF_HOME}/common/modules/ahb_slave.v
+${UVMF_HOME}/common/modules/apb3_memory_slave_module.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_master_hvl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hdl_wrapper.sv
+${UVMF_HOME}/common/mgc_vip/apb/apb_monitor_hvl_wrapper.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/clock/clock_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/memload/memload_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/reset_pkg.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/async_reset_bfm.sv
+${UVMF_HOME}/common/uvm_co_emulation_utilities/uvm_co-emulation_utilities/utils/reset/sync_reset_bfm.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/config_policies/qvip_ahb_lite_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/qvip_ahb_lite_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/hdl_qvip_ahb_lite_slave.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_clk_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_ahb_lite_slave_dir/uvmf/default_reset_gen.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/config_policies/qvip_apb5_slave_params_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/qvip_apb5_slave_pkg.sv
+${CALIPTRA_ROOT}/src/libs/uvmf/qvip_apb5_slave_dir/uvmf/hdl_qvip_apb5_slave.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_uvm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_uvm.sv
+${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
+${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
+${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
+${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/el2_pdef.vh
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/include/el2_def.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/common_defines.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/soc_ifc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_ctrl_pkg/src/soc_ifc_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/cptra_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_ctrl_pkg/src/cptra_ctrl_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/soc_ifc_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/soc_ifc_status_pkg/src/soc_ifc_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/cptra_status_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/cptra_status_pkg/src/cptra_status_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg_hdl.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/mbox_sram_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_driver_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_if.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/interface_packages/mbox_sram_pkg/src/mbox_sram_monitor_bfm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/registers/soc_ifc_reg_model_top_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/soc_ifc_env_pkg.sv
+${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr_pkg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr_pkg.sv
+${CALIPTRA_ROOT}/src/riscv_core/veer_el2/rtl/lib/beh_lib.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
+${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
+${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
+${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_boot_fsm.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_arb.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/soc_ifc_reg.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/mbox_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_top.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/sha512_acc_csr.sv
+${CALIPTRA_ROOT}/src/soc_ifc/rtl/wdt.sv
\ No newline at end of file
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_handler_sequence.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_handler_sequence.svh
index 87fad7657..028f82379 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_handler_sequence.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_handler_sequence.svh
@@ -454,6 +454,7 @@ task soc_ifc_env_cptra_mbox_handler_sequence::report_reg_sts(uvm_status_e reg_st
// This prevents further bus transfers from being initiated, so the AHB
// sequencer is in a clean state when we kill the ALL_TIME_CONSUMING_TASKS
// process.
+ `uvm_info("CPTRA_MBOX_HANDLER", "in report_reg_sts: waiting due to seq_done = 1", UVM_DEBUG)
in_report_reg_sts.wait_off();
end
endtask
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_interference_handler_sequence.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_interference_handler_sequence.svh
index 76a06bec8..8bb5490d6 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_interference_handler_sequence.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_interference_handler_sequence.svh
@@ -141,7 +141,7 @@ task soc_ifc_env_cptra_mbox_interference_handler_sequence::mbox_wait_and_force_u
if (inject_force_unlock) begin
configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks(force_unlock_delay_cycles);
halt_rand_reg_accesses.trigger();
- while(rand_reg_axs_proc.status() != process::WAITING)
+ while(halt_rand_reg_accesses.get_num_waiters() == 0)
configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks(1);
end
else begin
@@ -151,7 +151,7 @@ task soc_ifc_env_cptra_mbox_interference_handler_sequence::mbox_wait_and_force_u
`uvm_info("CPTRA_MBOX_HANDLER", "Received soc_ifc_err_intr, clearing and (if needed) proceeding to mbox_unlock", UVM_MEDIUM)
// Pause rand reg accesses while servicing interrupt
halt_rand_reg_accesses.trigger();
- while(rand_reg_axs_proc.status() != process::WAITING)
+ while(halt_rand_reg_accesses.get_num_waiters() == 0)
configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks(1);
// Read and clear any error interrupts
reg_model.soc_ifc_reg_rm.intr_block_rf_ext.error_internal_intr_r.read(reg_sts, data, UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
@@ -271,7 +271,7 @@ task soc_ifc_env_cptra_mbox_interference_handler_sequence::burst_random_reg_acce
`uvm_error("CPTRA_MBOX_HANDLER", "Failed to randomize reg AHB transfer in burst_random_reg_accesses")
end
else begin
- `uvm_info("CPTRA_MBOX_HANDLER", $sformatf("Doing random AHB access of type %p to %s, which has is_busy(): %d", rand_RnW, regs[reg_select].get_name(), regs[reg_select].is_busy()), UVM_DEBUG)
+ `uvm_info("CPTRA_MBOX_HANDLER", $sformatf("Doing random AHB access of type %p to %s, which has is_busy(): %d", rand_RnW, regs[reg_select].get_name(), regs[reg_select].is_busy()), UVM_FULL)
if (rand_RnW == AHB_READ) regs[reg_select].read (rand_sts, rand_data, UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
else regs[reg_select].write(rand_sts, rand_data, UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
report_reg_sts(rand_sts, regs[reg_select].get_name());
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_req_sequence_base.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_req_sequence_base.svh
index 46863df42..3b720ac5e 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_req_sequence_base.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/cptra/soc_ifc_env_cptra_mbox_req_sequence_base.svh
@@ -40,6 +40,7 @@ class soc_ifc_env_cptra_mbox_req_sequence_base extends soc_ifc_env_sequence_base
int sts_rsp_count;
uvm_status_e reg_sts;
bit mbox_sts_is_error = 0;
+ bit mbox_sts_exp_error = 0; // Indicates the SoC handler sequence will inject an error, which this sequence should expect to observe
rand bit do_ahb_lock_check;
rand bit retry_failed_reg_axs;
// Certain random sequences force the command to be outside of the defined
@@ -391,6 +392,9 @@ task soc_ifc_env_cptra_mbox_req_sequence_base::mbox_poll_status();
if (data == DATA_READY) begin
`uvm_info("CPTRA_MBOX_SEQ", $sformatf("Received status %p when not expecting any bytes of response data!", data), UVM_LOW)
end
+ else if (data == CMD_FAILURE && !mbox_sts_exp_error) begin
+ `uvm_error("CPTRA_MBOX_SEQ", $sformatf("Received unexpected mailbox status %p", data))
+ end
else if (data == CMD_FAILURE) begin
`uvm_info("CPTRA_MBOX_SEQ", $sformatf("Received unexpected mailbox status %p", data), UVM_LOW)
end
@@ -410,31 +414,79 @@ endtask
//==========================================
task soc_ifc_env_cptra_mbox_req_sequence_base::mbox_clr_execute();
uvm_reg_data_t data;
+ bit error_intr_cmd_fail = 0;
// We have to stall a couple clocks to allow interrupts to assert in case
// we read the MBOX_ERROR status, since there is a small delay as the signal
// propagates through registers.
configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks(2);
- // Now, check for the expected error interrupt
+
+ // Catch the possibility that MBOX_ERROR was not yet observed by waiting for
+ // the associated interrupt to arrive (the SoC sequence may have a delay
+ // before injecting the error)
+ // If Caliptra already detected a MBOX_ERROR state, but did not see an
+ // error interrupt, that's an error condition that will be reported
+ // later on in the sequence with uvm_error
+ if (mbox_sts_exp_error && !mbox_sts_is_error) begin
+ fork
+ begin: WAIT_ERR_INTR
+ wait(sts_rsp_count > 0 && cptra_status_agent_rsp_seq.rsp.soc_ifc_err_intr_pending);
+ disable WAIT_ERR_INTR_TIMEOUT;
+ end
+ begin: WAIT_ERR_INTR_TIMEOUT
+ configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks(131072);
+ disable WAIT_ERR_INTR;
+ end
+ join
+ end
+
+ // Now, do some error checking and handling
if (sts_rsp_count > 0 && cptra_status_agent_rsp_seq.rsp.soc_ifc_err_intr_pending) begin
reg_model.soc_ifc_reg_rm.intr_block_rf_ext.error_internal_intr_r.read(reg_sts, data, UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
report_reg_sts(reg_sts, "error_internal_intr_r");
reg_model.soc_ifc_reg_rm.intr_block_rf_ext.error_internal_intr_r.write(reg_sts, data, UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
report_reg_sts(reg_sts, "error_internal_intr_r");
- if (data[reg_model.soc_ifc_reg_rm.intr_block_rf_ext.error_internal_intr_r.error_cmd_fail_sts.get_lsb_pos()]) begin
- // Force unlock to recover from error and reset mailbox to IDLE state
- reg_model.mbox_csr_rm.mbox_unlock.write(reg_sts, uvm_reg_data_t'(1 << reg_model.mbox_csr_rm.mbox_unlock.unlock.get_lsb_pos()), UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
- report_reg_sts(reg_sts, "mbox_unlock");
- return; /* force unlock trumps the write to mbox_execute, so we're done at this point */
+ error_intr_cmd_fail = data[reg_model.soc_ifc_reg_rm.intr_block_rf_ext.error_internal_intr_r.error_cmd_fail_sts.get_lsb_pos()];
+ if (error_intr_cmd_fail) begin
+ if (!mbox_sts_is_error) begin
+ mbox_status_e data;
+ mbox_fsm_state_e state;
+ // Re-check mbox_status to see if FSM has changed to MBOX_ERROR since last check
+ mbox_check_status(data, state);
+ if (state == MBOX_ERROR)
+ mbox_sts_is_error = 1;
+ end
end
else if (mbox_sts_is_error) begin
`uvm_error("CPTRA_MBOX_SEQ", "Error interrupt following cmd failure does not have cmd_fail bit set!")
end
end
- else if (mbox_sts_is_error) begin
- `uvm_error("CPTRA_MBOX_SEQ", "Error encountered but no interrupt received")
+
+ // Error reporting based on sequence configuration and outcome
+ case ({mbox_sts_is_error,mbox_sts_exp_error,error_intr_cmd_fail}) inside
+ 3'b111: `uvm_info("CPTRA_MBOX_SEQ", "MBOX_ERROR state encountered as expected, along with the required error_interrupt", UVM_MEDIUM)
+ 3'b110: `uvm_error("CPTRA_MBOX_SEQ", "Mailbox error state encountered but no interrupt received")
+ 3'b10?: `uvm_error("CPTRA_MBOX_SEQ", "Mailbox error state encountered unexpectedly (the test case should not have an error injection)")
+ 3'b011: `uvm_error("CPTRA_MBOX_SEQ", "Invalid register access injection was expected for the test case, and error_interrupt was received, but MBOX_ERROR state was not observed")
+ // This case is acceptable, as the 'expected error' (such as invalid register accesses in the
+ // soc_ifc_env_soc_mbox_reg_axs_invalid_handler_sequence) might either be clobbered in
+ // arb, or be an actual legal access (like a duplicate dataout read),
+ // neither of which will actually cause the MBOX_ERROR transition/error_interrupt combo.
+ 3'b010: `uvm_info("CPTRA_MBOX_SEQ", "Invalid register access injection was expected for the test case but MBOX_ERROR state was not observed - this might be OK", UVM_LOW)
+ 3'b001: `uvm_error("CPTRA_MBOX_SEQ", "Test case did not expect any error injection, but observed a command failure interrupt")
+ 3'b000: `uvm_info("CPTRA_MBOX_SEQ", "Test case completed normally as expected, with no observed failures or error_interrupt", UVM_MEDIUM)
+ endcase
+
+ // Cmd failure interrupt triggers the force unlock, and
+ // force unlock trumps the write to mbox_execute
+ if (error_intr_cmd_fail && mbox_sts_is_error) begin
+ // Force unlock to recover from error and reset mailbox to IDLE state
+ reg_model.mbox_csr_rm.mbox_unlock.write(reg_sts, uvm_reg_data_t'(1 << reg_model.mbox_csr_rm.mbox_unlock.unlock.get_lsb_pos()), UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
+ report_reg_sts(reg_sts, "mbox_unlock");
+ end
+ else begin
+ reg_model.mbox_csr_rm.mbox_execute.write(reg_sts, uvm_reg_data_t'(0), UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
+ report_reg_sts(reg_sts, "mbox_execute");
end
- reg_model.mbox_csr_rm.mbox_execute.write(reg_sts, uvm_reg_data_t'(0), UVM_FRONTDOOR, reg_model.soc_ifc_AHB_map, this);
- report_reg_sts(reg_sts, "mbox_execute");
endtask
//==========================================
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_reg_axs_invalid_sequence.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_reg_axs_invalid_sequence.svh
index e0112ea05..2cde1d81f 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_reg_axs_invalid_sequence.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_reg_axs_invalid_sequence.svh
@@ -70,7 +70,7 @@ class soc_ifc_env_mbox_reg_axs_invalid_sequence extends soc_ifc_env_mbox_sequenc
mbox_set_cmd(mbox_op_rand); if (rand_delay_en) do_rand_delay(1, step_delay);
mbox_push_datain(); if (rand_delay_en) do_rand_delay(1, step_delay);
mbox_execute(); if (rand_delay_en) do_rand_delay(1, step_delay);
- mbox_poll_status(); if (rand_delay_en) do_rand_delay(1, step_delay);
+ mbox_poll_status();
end
begin: ERR_INJECT_FLOW
wait(mbox_flow_proc != null);
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_sequence_base.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_sequence_base.svh
index 2e7d04680..ceaee7f2a 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_sequence_base.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_mbox_sequence_base.svh
@@ -527,7 +527,7 @@ task soc_ifc_env_mbox_sequence_base::mbox_read_resp_data();
reg_model.mbox_csr_rm.mbox_dataout.read(reg_sts, data, UVM_FRONTDOOR, reg_model.soc_ifc_APB_map, this, .extension(get_rand_user(FORCE_VALID_PAUSER)));
report_reg_sts(reg_sts, "mbox_dataout");
end
- if (rand_delay_en) do_rand_delay(1, data_delay);
+ if (rand_delay_en && (ii+4) < dlen) do_rand_delay(1, data_delay);
end
endtask
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_handler_sequence.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_handler_sequence.svh
index 028e280af..0a9217136 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_handler_sequence.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_handler_sequence.svh
@@ -156,8 +156,10 @@ task soc_ifc_env_soc_mbox_handler_sequence::mbox_setup();
end
// Pick a user and use throughout sequence
- // FIXME randomize?
- apb_user_obj.set_addr_user(mbox_valid_users[0]);
+ if (!apb_user_obj.randomize() with {addr_user inside {mbox_valid_users};})
+ `uvm_error("SOC_MBOX_HANDLER", "Failed to randomize APB PAUSER override value")
+ else
+ `uvm_info("SOC_MBOX_HANDLER", $sformatf("Randomized APB PAUSER override value to 0x%x", apb_user_obj.addr_user), UVM_HIGH)
endtask
@@ -251,9 +253,6 @@ endtask
task soc_ifc_env_soc_mbox_handler_sequence::mbox_set_status();
mbox_status_e status;
uvm_reg_data_t data;
- // Set mbox_dlen to resp size of 0
- reg_model.mbox_csr_rm.mbox_dlen.write(reg_sts, uvm_reg_data_t'(0), UVM_FRONTDOOR, reg_model.soc_ifc_APB_map, this, .extension(apb_user_obj));
- report_reg_sts(reg_sts,"mbox_dlen");
// Determine which status to set and perform the write
status = CMD_COMPLETE;
data = uvm_reg_data_t'(status) << reg_model.mbox_csr_rm.mbox_status.status.get_lsb_pos();
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_reg_axs_invalid_handler_sequence.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_reg_axs_invalid_handler_sequence.svh
index 9c5b1a209..16f79abe4 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_reg_axs_invalid_handler_sequence.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc/soc_ifc_env_soc_mbox_reg_axs_invalid_handler_sequence.svh
@@ -120,9 +120,19 @@ task soc_ifc_env_soc_mbox_reg_axs_invalid_handler_sequence::mbox_do_random_reg_w
if (!std::randomize(rand_idx) with {rand_idx < mbox_regs.size(); })
`uvm_fatal("SOC_MBOX_HANDLER", "Failed to randomize reg idx")
- // Wait to do the reg write at some random point in the sequence
+ // Wait to do the reg write at some random point in the sequence, or do it
+ // very soon after the normal operation ends
std::randomize(rand_delay) with {rand_delay dist {[1:255] :/ 5, [256:1023] :/ 3, [1024:65535] :/ 1};};
- configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks(rand_delay);
+ fork
+ automatic int unsigned dly = rand_delay;
+ begin
+ configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks(dly);
+ end
+ begin
+ mainline.await();
+ configuration.soc_ifc_ctrl_agent_config.wait_for_num_clocks((dly % 25)+1);
+ end
+ join_any
// Data used depends on which reg is being accessed to force invalid contents
rand_wr_data = get_rand_wr_data(mbox_regs[rand_idx]);
diff --git a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence.svh b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence.svh
index e97196520..f2370c915 100644
--- a/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence.svh
+++ b/src/soc_ifc/uvmf_soc_ifc/uvmf_template_output/verification_ip/environment_packages/soc_ifc_env_pkg/sequences/mbox/soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence.svh
@@ -32,6 +32,7 @@ class soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence extends soc_ifc_
`uvm_object_utils( soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence )
extern virtual function create_seqs();
+ extern virtual function randomize_seqs();
endclass
@@ -42,3 +43,11 @@ function soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence::create_seqs(
obj = soc_ifc_env_soc_mbox_reg_axs_invalid_handler_sequence_t::get_type().create_object("soc_ifc_env_soc_handler_seq");
if(!$cast(soc_ifc_env_soc_handler_seq,obj)) `uvm_fatal("SOC_IFC_TOP_MBOX_REG_AXS_INVALID_SMALL", "soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence::create_seqs() - .create_object() failed")
endfunction
+
+function soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence::randomize_seqs();
+ if(!soc_ifc_env_cptra_mbox_seq.randomize())
+ `uvm_fatal("SOC_IFC_TOP_MBOX_REG_AXS_INVALID_SMALL", $sformatf("soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence::body() - %s randomization failed", soc_ifc_env_cptra_mbox_seq.get_type_name()));
+ soc_ifc_env_cptra_mbox_seq.mbox_sts_exp_error = 1;
+ if(!soc_ifc_env_soc_handler_seq.randomize())
+ `uvm_fatal("SOC_IFC_TOP_MBOX_REG_AXS_INVALID_SMALL", $sformatf("soc_ifc_env_top_cptra_mbox_reg_axs_invalid_small_sequence::body() - %s randomization failed", soc_ifc_env_soc_handler_seq.get_type_name()));
+endfunction
diff --git a/src/spi_host/config/spi_host.vf b/src/spi_host/config/spi_host.vf
index 6d7b740ad..1b0661420 100644
--- a/src/spi_host/config/spi_host.vf
+++ b/src/spi_host/config/spi_host.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
diff --git a/src/spi_host/config/spi_host_tb.vf b/src/spi_host/config/spi_host_tb.vf
index 9e426f787..687e76aca 100644
--- a/src/spi_host/config/spi_host_tb.vf
+++ b/src/spi_host/config/spi_host_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
diff --git a/src/spi_host/config/spiflash.vf b/src/spi_host/config/spiflash.vf
index d08a0f326..6821ad3d0 100644
--- a/src/spi_host/config/spiflash.vf
+++ b/src/spi_host/config/spiflash.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
diff --git a/src/uart/config/uart.vf b/src/uart/config/uart.vf
index e352155c7..5fb62f4db 100644
--- a/src/uart/config/uart.vf
+++ b/src/uart/config/uart.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
@@ -64,7 +63,6 @@ ${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sum_tree.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_ext.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_edge_detector.sv
${CALIPTRA_ROOT}/src/uart/rtl/uart_tx.sv
-${CALIPTRA_ROOT}/src/uart/rtl/uart_reg_pkg.sv
${CALIPTRA_ROOT}/src/uart/rtl/uart_reg_top.sv
${CALIPTRA_ROOT}/src/uart/rtl/uart_rx.sv
${CALIPTRA_ROOT}/src/uart/rtl/uart.sv
diff --git a/src/uart/config/uart_tb.vf b/src/uart/config/uart_tb.vf
index 78eb779e6..4332da0e6 100644
--- a/src/uart/config/uart_tb.vf
+++ b/src/uart/config/uart_tb.vf
@@ -1,4 +1,3 @@
-
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
diff --git a/tools/scripts/Makefile b/tools/scripts/Makefile
old mode 100755
new mode 100644
index 3a629eb77..03c9b10c5
--- a/tools/scripts/Makefile
+++ b/tools/scripts/Makefile
@@ -16,9 +16,6 @@
PLAYBOOK_RANDOM_SEED ?= $(shell date +%s)
BUILD_CFLAGS ?=
TEST_CFLAGS = -g -O3 -DMY_RANDOM_SEED=$(PLAYBOOK_RANDOM_SEED) $(BUILD_CFLAGS)
-
-ABI = -mabi=ilp32 -march=rv32imc
-
VERILATOR = verilator
GCC_PREFIX = riscv64-unknown-elf
BUILD_DIR = $(CURDIR)
@@ -70,6 +67,9 @@ HEADER_FILES := $(INCLUDES_DIR)/caliptra_defines.h \
$(ISR_DIR)/veer-csr.h \
$(foreach comp_lib, $(COMP_LIBS), $(wildcard $(comp_lib)/*.h))
+TEST_GEN_FILES := $(CALIPTRA_ROOT)/src/ecc/tb/ecdsa_secp384r1.exe \
+ $(CALIPTRA_ROOT)/src/doe/tb/doe_test_gen.py
+
# Separate OFILE variable since this is not used to build remote images
# (i.e. FMC or RunTime)
ifeq (0,$(shell test -e $(TEST_DIR)/$(TESTNAME).c && echo $$?))
@@ -166,33 +166,35 @@ CFLAGS += -std=c++17
# compiles), or -O for balance.
VERILATOR_MAKE_FLAGS = OPT_FAST="-Os"
-# Testbench libs
-VERILATOR_TB_LIBS = jtagdpi/jtagdpi.c \
- tcp_server/tcp_server.c
+# Testbench DPI sources
+TB_DPI_SRCS = jtagdpi/jtagdpi.c \
+ tcp_server/tcp_server.c
+
+TB_DPI_INCS := $(addprefix -I$(CALIPTRA_ROOT)/src/integration/test_suites/libs/,$(dir $(TB_DPI_SRCS)))
+TB_DPI_SRCS := $(addprefix $(CALIPTRA_ROOT)/src/integration/test_suites/libs/,$(TB_DPI_SRCS))
# Testbench sources
-VERILATOR_TB_SRCS = $(TBDIR)/test_caliptra_top_tb.cpp \
- $(addprefix $(CALIPTRA_ROOT)/src/integration/test_suites/libs/,$(VERILATOR_TB_LIBS))
+TB_VERILATOR_SRCS = $(TBDIR)/test_caliptra_top_tb.cpp $(TB_DPI_SRCS)
# Testbench defs
-VERILATOR_TB_DEFS = +define+CALIPTRA_INTERNAL_QSPI+CALIPTRA_INTERNAL_TRNG+CALIPTRA_INTERNAL_UART
+TB_DEFS = +define+CALIPTRA_INTERNAL_QSPI+CALIPTRA_INTERNAL_TRNG+CALIPTRA_INTERNAL_UART
# By default debugging (JTAG) is locked in Caliptra. Add "DEBUG_UNLOCKED=1" to
# enable it.
ifdef DEBUG_UNLOCKED
- VERILATOR_TB_DEFS += +define+CALIPTRA_DEBUG_UNLOCKED
+ TB_DEFS += +define+CALIPTRA_DEBUG_UNLOCKED
endif
# To enforce holding the RISC-V core in reset add "FORCE_CPU_RESET=1".
ifdef FORCE_CPU_RESET
- VERILATOR_TB_DEFS += +define+CALIPTRA_FORCE_CPU_RESET
+ TB_DEFS += +define+CALIPTRA_FORCE_CPU_RESET
endif
# Run time arguments from command line
VERILATOR_RUN_ARGS ?= ""
# Add testbench lib include paths
-CFLAGS += $(addprefix -I$(CALIPTRA_ROOT)/src/integration/test_suites/libs/,$(dir $(VERILATOR_TB_LIBS)))
+CFLAGS += $(TB_DPI_INCS)
# Targets
all: clean verilator
@@ -208,8 +210,8 @@ clean_fw:
############ Model Builds ###############################
-verilator-build: $(TBFILES) $(INCLUDES_DIR)/defines.h $(VERILATOR_TB_SRCS)
- $(VERILATOR) $(VERILATOR_TB_SRCS) --cc -CFLAGS "$(CFLAGS)" \
+verilator-build: $(TBFILES) $(INCLUDES_DIR)/defines.h $(TB_VERILATOR_SRCS)
+ $(VERILATOR) $(TB_VERILATOR_SRCS) --cc -CFLAGS "$(CFLAGS)" \
+libext+.v+.sv +define+RV_OPENSOURCE \
--timescale 1ns/1ps \
--timing \
@@ -218,16 +220,16 @@ verilator-build: $(TBFILES) $(INCLUDES_DIR)/defines.h $(VERILATOR_TB_SRCS)
-f $(TBDIR)/../config/caliptra_top_tb.vf --top-module caliptra_top_tb \
-f $(TBDIR)/../config/caliptra_top_tb.vlt \
-exe test_caliptra_top_tb.cpp --autoflush $(VERILATOR_DEBUG) \
- $(VERILATOR_TB_DEFS)
+ $(TB_DEFS)
$(MAKE) -j`nproc` -e -C obj_dir/ -f Vcaliptra_top_tb.mk $(VERILATOR_MAKE_FLAGS) VM_PARALLEL_BUILDS=1
touch verilator-build
-vcs-build: $(TBFILES) $(INCLUDES_DIR)/defines.h
+vcs-build: $(TBFILES) $(INCLUDES_DIR)/defines.h $(TB_DPI_SRCS)
vlogan -full64 -sverilog -kdb -incr_vlogan +lint=IA_CHECKFAIL -assert svaext \
- +define+CLP_ASSERT_ON -noinherit_timescale=1ns/1ps \
+ +define+CLP_ASSERT_ON $(TB_DEFS) -noinherit_timescale=1ns/1ps \
-f $(TBDIR)/../config/caliptra_top_tb.vf
vcs -full64 -kdb -lca -debug_access+all -j8 +vcs+lic+wait -partcomp -fastpartcomp=j8 \
- -assert enable_hier caliptra_top_tb -o simv.caliptra_top_tb
+ -assert enable_hier caliptra_top_tb -o simv.caliptra_top_tb +dpi -cflags "$(TB_DPI_INCS)" $(TB_DPI_SRCS)
############ TEST Simulation ###############################
@@ -235,6 +237,7 @@ verilator: program.hex verilator-build
./obj_dir/Vcaliptra_top_tb $(VERILATOR_RUN_ARGS)
vcs: program.hex vcs-build
+ cp $(TEST_GEN_FILES) $(BUILD_DIR)
./simv.caliptra_top_tb
############ TEST build ###############################
diff --git a/tools/scripts/openocd/target/veer-el2-rst.cfg b/tools/scripts/openocd/target/veer-el2-rst.cfg
index 0f4c86fde..c90f24266 100644
--- a/tools/scripts/openocd/target/veer-el2-rst.cfg
+++ b/tools/scripts/openocd/target/veer-el2-rst.cfg
@@ -4,13 +4,7 @@ if { [info exists CHIPNAME] } {
set _CHIPNAME riscv
}
-if { [info exists CPUTAPID ] } {
- set _CPUTAPID $CPUTAPID
-} else {
- set _CPUTAPID 0x1000008b
-}
-
-jtag newtap $_CHIPNAME tap -irlen 5 -expected-id $_CPUTAPID
+jtag newtap $_CHIPNAME tap -irlen 5
set _TARGETNAME $_CHIPNAME.tap
target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME -rtos hwthread
diff --git a/tools/scripts/openocd/target/veer-el2.cfg b/tools/scripts/openocd/target/veer-el2.cfg
index 45374886d..a8c092f2a 100644
--- a/tools/scripts/openocd/target/veer-el2.cfg
+++ b/tools/scripts/openocd/target/veer-el2.cfg
@@ -4,13 +4,7 @@ if { [info exists CHIPNAME] } {
set _CHIPNAME riscv
}
-if { [info exists CPUTAPID ] } {
- set _CPUTAPID $CPUTAPID
-} else {
- set _CPUTAPID 0x1000008b
-}
-
-jtag newtap $_CHIPNAME tap -irlen 5 -expected-id $_CPUTAPID
+jtag newtap $_CHIPNAME tap -irlen 5
set _TARGETNAME $_CHIPNAME.tap
target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME -rtos hwthread