[dv/rv_timer] fix nighly regression failure
1.Constraints the cfg settings to avoid timeout
2.Fix update timer_v on the fly, need to reset counter once the value is
updated
Signed-off-by: Cindy Chen <chencindy@google.com>
diff --git a/hw/ip/rv_timer/dv/env/rv_timer_scoreboard.sv b/hw/ip/rv_timer/dv/env/rv_timer_scoreboard.sv
index 77bcc94..1641e0e 100644
--- a/hw/ip/rv_timer/dv/env/rv_timer_scoreboard.sv
+++ b/hw/ip/rv_timer/dv/env/rv_timer_scoreboard.sv
@@ -93,12 +93,14 @@
for (int i = 0; i < NUM_HARTS; i++) begin
timer_val[i][31:0] = get_reg_fld_mirror_value(
ral, $sformatf("timer_v_lower%0d", i), "v");
+ num_clk_update_due[i] = 1'b1;
end
end
(!uvm_re_match("timer_v_upper*", csr_name)): begin
for (int i = 0; i < NUM_HARTS; i++) begin
timer_val[i][63:32] = get_reg_fld_mirror_value(
ral, $sformatf("timer_v_upper%0d", i), "v");
+ num_clk_update_due[i] = 1'b1;
end
end
(!uvm_re_match("compare_lower*", csr_name)): begin
diff --git a/hw/ip/rv_timer/dv/env/seq_lib/rv_timer_cfg_update_on_fly_vseq.sv b/hw/ip/rv_timer/dv/env/seq_lib/rv_timer_cfg_update_on_fly_vseq.sv
index c3cae09..5550bbe 100644
--- a/hw/ip/rv_timer/dv/env/seq_lib/rv_timer_cfg_update_on_fly_vseq.sv
+++ b/hw/ip/rv_timer/dv/env/seq_lib/rv_timer_cfg_update_on_fly_vseq.sv
@@ -30,6 +30,11 @@
num_trans inside {[1:4]};
}
+ function void pre_randomize();
+ super.pre_randomize();
+ max_clks_until_expiry = 1_000_000; // Redefining max clock to avoid timeout
+ endfunction
+
task body();
for (int trans = 1; trans <= num_trans; trans++) begin
`uvm_info(`gfn, $sformatf("Running test iteration %0d/%0d", trans, num_trans), UVM_LOW)