[rom_ctrl, dv] Added rom_ctrl_stress_all testcase
Added necessary changes in common files and rom_ctrl_stress_all_vseq
to execute rom_ctrl_stress_all
Signed-off-by: Prajwala Puttappa <prajwalaputtappa@lowrisc.org>
diff --git a/hw/ip/rom_ctrl/data/rom_ctrl_testplan.hjson b/hw/ip/rom_ctrl/data/rom_ctrl_testplan.hjson
index e4b52cd..e3135cb 100644
--- a/hw/ip/rom_ctrl/data/rom_ctrl_testplan.hjson
+++ b/hw/ip/rom_ctrl/data/rom_ctrl_testplan.hjson
@@ -45,20 +45,6 @@
}
{
- name: multiple_reset
- desc: '''
- Test where the design is reset many times and the rom is re-checked
-
- **Stimulus**:
- - Periodically reset the device to restart the rom check
-
- **Checks**:
- - Check that the digest csrs are not corrupted
- '''
- milestone: V2
- tests: []
- }
- {
name: corrupt_sig_fatal_chk
desc: '''
Corrupt integrity of signals like the select signal to addr mux.
@@ -69,6 +55,14 @@
milestone: V2S
tests: []
}
+ {
+ name: stress_all
+ desc: '''
+ - Combine above sequences in one test to run sequentially.
+ - Randomly add reset between each sequence'''
+ milestone: V2
+ tests: ["rom_ctrl_stress_all"]
+ }
]
covergroups: [
{
diff --git a/hw/ip/rom_ctrl/dv/env/rom_ctrl_env.core b/hw/ip/rom_ctrl/dv/env/rom_ctrl_env.core
index fef0aab..b6ee91e 100644
--- a/hw/ip/rom_ctrl/dv/env/rom_ctrl_env.core
+++ b/hw/ip/rom_ctrl/dv/env/rom_ctrl_env.core
@@ -27,6 +27,7 @@
- seq_lib/rom_ctrl_common_vseq.sv: {is_include_file: true}
- seq_lib/rom_ctrl_smoke_vseq.sv: {is_include_file: true}
- seq_lib/rom_ctrl_chk_successful_vseq.sv: {is_include_file: true}
+ - seq_lib/rom_ctrl_stress_all_vseq.sv: {is_include_file: true}
file_type: systemVerilogSource
generate:
diff --git a/hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_stress_all_vseq.sv b/hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_stress_all_vseq.sv
new file mode 100644
index 0000000..a390625
--- /dev/null
+++ b/hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_stress_all_vseq.sv
@@ -0,0 +1,41 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+// combine all rom seqs in one seq to run sequentially
+class rom_ctrl_stress_all_vseq extends rom_ctrl_base_vseq;
+ `uvm_object_utils(rom_ctrl_stress_all_vseq)
+
+ `uvm_object_new
+
+ constraint num_trans_c {
+ num_trans inside {[3:6]};
+ }
+
+ task body();
+ string seq_names[] = {"rom_ctrl_smoke_vseq",
+ "rom_ctrl_common_vseq",
+ "rom_ctrl_chk_successful_vseq"};
+ for (int i = 1; i <= num_trans; i++) begin
+ uvm_sequence seq;
+ rom_ctrl_base_vseq rom_ctrl_vseq;
+ uint seq_idx = $urandom_range(0, seq_names.size - 1);
+ seq = create_seq_by_name(seq_names[seq_idx]);
+ `downcast(rom_ctrl_vseq, seq)
+
+ // if upper seq disables do_apply_reset for this seq, then can't issue reset
+ // as upper seq may drive reset
+ if (do_apply_reset) rom_ctrl_vseq.do_apply_reset = $urandom_range(0, 1);
+ else rom_ctrl_vseq.do_apply_reset = 0;
+ rom_ctrl_vseq.set_sequencer(p_sequencer);
+ `DV_CHECK_RANDOMIZE_FATAL(rom_ctrl_vseq)
+ if (seq_names[seq_idx] == "rom_ctrl_common_vseq") begin
+ rom_ctrl_common_vseq common_vseq;
+ `downcast(common_vseq, rom_ctrl_vseq);
+ common_vseq.common_seq_type = "intr_test";
+ end
+ rom_ctrl_vseq.start(p_sequencer);
+ end
+ endtask : body
+
+endclass
diff --git a/hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_vseq_list.sv b/hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_vseq_list.sv
index f97a39b..cbf10e7 100644
--- a/hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_vseq_list.sv
+++ b/hw/ip/rom_ctrl/dv/env/seq_lib/rom_ctrl_vseq_list.sv
@@ -6,3 +6,4 @@
`include "rom_ctrl_smoke_vseq.sv"
`include "rom_ctrl_common_vseq.sv"
`include "rom_ctrl_chk_successful_vseq.sv"
+`include "rom_ctrl_stress_all_vseq.sv"
diff --git a/hw/ip/rom_ctrl/dv/rom_ctrl_sim_cfg.hjson b/hw/ip/rom_ctrl/dv/rom_ctrl_sim_cfg.hjson
index ef3b04e..d7d4319 100644
--- a/hw/ip/rom_ctrl/dv/rom_ctrl_sim_cfg.hjson
+++ b/hw/ip/rom_ctrl/dv/rom_ctrl_sim_cfg.hjson
@@ -58,7 +58,11 @@
name: successful_rom_chk
uvm_test_seq: rom_ctrl_chk_successful_vseq
}
-
+ {
+ name: rom_ctrl_stress_all
+ uvm_test_seq: rom_ctrl_stress_all_vseq
+ }
+
// TODO: add more tests here
]