Add the "invalidation" icache test sequence

Also move the shared "run_opts" options to top-level in
ibex_icache_sim_cfg.hjson.
This commit is contained in:
Rupert Swarbrick 2020-06-03 15:03:21 +01:00 committed by Rupert Swarbrick
parent 3c35e44301
commit f53d5ac645
5 changed files with 37 additions and 5 deletions

View file

@ -63,7 +63,7 @@
and seed updates for the memory to try and hit any race conditions
between the request tracking logic and the invalidation logic.'''
milestone: V2
tests: []
tests: ["ibex_icache_invalidation"]
}
{

View file

@ -22,6 +22,7 @@ filesets:
- seq_lib/ibex_icache_sanity_vseq.sv: {is_include_file: true}
- seq_lib/ibex_icache_passthru_vseq.sv: {is_include_file: true}
- seq_lib/ibex_icache_caching_vseq.sv: {is_include_file: true}
- seq_lib/ibex_icache_invalidation_vseq.sv: {is_include_file: true}
file_type: systemVerilogSource
targets:

View file

@ -0,0 +1,25 @@
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
class ibex_icache_invalidation_vseq extends ibex_icache_base_vseq;
`uvm_object_utils(ibex_icache_invalidation_vseq)
`uvm_object_new
virtual task pre_start();
super.pre_start();
// Constrain branch targets and force the cache to be enabled
core_seq.constrain_branches = 1'b1;
core_seq.initial_enable = 1'b1;
core_seq.const_enable = 1'b1;
// Invalidate the cache occasionally. This test is all about checking that invalidation works,
// so we don't want it too small, but it only makes sense if we actually have some gaps between
// our "bouts of invalidation".
core_seq.gap_between_seeds = 19;
endtask : pre_start
endclass : ibex_icache_invalidation_vseq

View file

@ -6,3 +6,4 @@
`include "ibex_icache_sanity_vseq.sv"
`include "ibex_icache_passthru_vseq.sv"
`include "ibex_icache_caching_vseq.sv"
`include "ibex_icache_invalidation_vseq.sv"

View file

@ -36,24 +36,28 @@
uvm_test: ibex_icache_base_test
uvm_test_seq: ibex_icache_base_vseq
run_opts: ["+test_timeout_ns=1000000000"]
// List of test specifications.
tests: [
{
name: ibex_icache_sanity
uvm_test_seq: ibex_icache_sanity_vseq
run_opts: ["+test_timeout_ns=1000000000"]
}
{
name: ibex_icache_passthru
uvm_test_seq: ibex_icache_passthru_vseq
run_opts: ["+test_timeout_ns=1000000000"]
}
{
name: ibex_icache_caching
uvm_test_seq: ibex_icache_caching_vseq
run_opts: ["+test_timeout_ns=1000000000"]
}
{
name: ibex_icache_invalidation
uvm_test_seq: ibex_icache_invalidation_vseq
}
]
@ -63,7 +67,8 @@
name: sanity
tests: ["ibex_icache_sanity",
"ibex_icache_passthru",
"ibex_icache_caching"]
"ibex_icache_caching",
"ibex_icache_invalidation"]
}
]
}