Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added wfe wakeup uvm agent #2097

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 20 additions & 14 deletions cv32e40s/env/uvme/uvme_cv32e40s_cfg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -52,26 +52,27 @@ class uvme_cv32e40s_cfg_c extends uvma_core_cntrl_cfg_c;
rand uvma_interrupt_cfg_c interrupt_cfg;
rand uvma_clic_cfg_c clic_cfg;
rand uvma_debug_cfg_c debug_cfg;
rand uvma_wfe_wu_cfg_c wfe_wu_cfg;
rand uvma_obi_memory_cfg_c obi_memory_instr_cfg;
rand uvma_obi_memory_cfg_c obi_memory_data_cfg;
rand uvma_fencei_cfg_c fencei_cfg;
rand uvma_rvfi_cfg_c#(ILEN,XLEN) rvfi_cfg;
rand uvma_pma_cfg_c#(ILEN,XLEN) pma_cfg;

`uvm_object_utils_begin(uvme_cv32e40s_cfg_c)
`uvm_field_int ( enabled , UVM_DEFAULT )
`uvm_field_enum(uvm_active_passive_enum, is_active , UVM_DEFAULT )
`uvm_field_int ( cov_model_enabled , UVM_DEFAULT )
`uvm_field_int ( trn_log_enabled , UVM_DEFAULT )
`uvm_field_int ( buserr_scoreboarding_enabled, UVM_DEFAULT )
`uvm_field_int ( sys_clk_period , UVM_DEFAULT | UVM_DEC)
`uvm_field_enum (b_ext_e, b_ext , UVM_DEFAULT )
`uvm_field_int ( obi_memory_instr_random_err_enabled, UVM_DEFAULT )
`uvm_field_int ( obi_memory_instr_one_shot_err_enabled, UVM_DEFAULT )
`uvm_field_int ( obi_memory_data_random_err_enabled, UVM_DEFAULT )
`uvm_field_int ( obi_memory_data_one_shot_err_enabled, UVM_DEFAULT )
`uvm_field_int ( iss_suppress_invalid_msg, UVM_DEFAULT )
`uvm_field_int ( fetch_toggle_initial_delay, UVM_DEFAULT )
`uvm_field_int ( enabled, UVM_DEFAULT )
`uvm_field_enum(uvm_active_passive_enum, is_active, UVM_DEFAULT )
`uvm_field_int ( cov_model_enabled, UVM_DEFAULT )
`uvm_field_int ( trn_log_enabled, UVM_DEFAULT )
`uvm_field_int ( buserr_scoreboarding_enabled, UVM_DEFAULT )
`uvm_field_int ( sys_clk_period, UVM_DEFAULT | UVM_DEC )
`uvm_field_enum (b_ext_e, b_ext, UVM_DEFAULT )
`uvm_field_int ( obi_memory_instr_random_err_enabled, UVM_DEFAULT )
`uvm_field_int ( obi_memory_instr_one_shot_err_enabled, UVM_DEFAULT )
`uvm_field_int ( obi_memory_data_random_err_enabled, UVM_DEFAULT )
`uvm_field_int ( obi_memory_data_one_shot_err_enabled, UVM_DEFAULT )
`uvm_field_int ( iss_suppress_invalid_msg, UVM_DEFAULT )
`uvm_field_int ( fetch_toggle_initial_delay, UVM_DEFAULT )
`uvm_field_int ( nmi_timeout_instr, UVM_DEFAULT | UVM_DEC )
`uvm_field_int ( single_step_min_limit, UVM_DEFAULT | UVM_DEC )
`uvm_field_int ( irq_min_limit, UVM_DEFAULT | UVM_DEC )
Expand All @@ -82,6 +83,7 @@ class uvme_cv32e40s_cfg_c extends uvma_core_cntrl_cfg_c;
`uvm_field_object(interrupt_cfg , UVM_DEFAULT)
`uvm_field_object(clic_cfg , UVM_DEFAULT)
`uvm_field_object(debug_cfg , UVM_DEFAULT)
`uvm_field_object(wfe_wu_cfg , UVM_DEFAULT)
`uvm_field_object(obi_memory_instr_cfg , UVM_DEFAULT)
`uvm_field_object(obi_memory_data_cfg , UVM_DEFAULT)
`uvm_field_object(rvfi_cfg , UVM_DEFAULT)
Expand Down Expand Up @@ -189,6 +191,7 @@ class uvme_cv32e40s_cfg_c extends uvma_core_cntrl_cfg_c;
interrupt_cfg.enabled == basic_interrupt_enable;
clic_cfg.enabled == clic_interrupt_enable;
debug_cfg.enabled == 1;
wfe_wu_cfg.enabled == 1;
rvfi_cfg.enabled == 1;
obi_memory_instr_cfg.enabled == 1;
obi_memory_data_cfg.enabled == 1;
Expand Down Expand Up @@ -259,6 +262,7 @@ class uvme_cv32e40s_cfg_c extends uvma_core_cntrl_cfg_c;
clknrst_cfg.is_active == UVM_ACTIVE;
interrupt_cfg.is_active == UVM_ACTIVE;
clic_cfg.is_active == UVM_ACTIVE;
wfe_wu_cfg.is_active == UVM_ACTIVE;
debug_cfg.is_active == UVM_ACTIVE;
obi_memory_instr_cfg.is_active == UVM_ACTIVE;
obi_memory_data_cfg.is_active == UVM_ACTIVE;
Expand All @@ -272,6 +276,7 @@ class uvme_cv32e40s_cfg_c extends uvma_core_cntrl_cfg_c;
debug_cfg.trn_log_enabled == 0;
interrupt_cfg.trn_log_enabled == 0;
clic_cfg.trn_log_enabled == 0;
wfe_wu_cfg.trn_log_enabled == 0;
isacov_cfg.trn_log_enabled == 0;
obi_memory_data_cfg.trn_log_enabled == 1;
obi_memory_instr_cfg.trn_log_enabled == 1;
Expand All @@ -281,6 +286,7 @@ class uvme_cv32e40s_cfg_c extends uvma_core_cntrl_cfg_c;
debug_cfg.trn_log_enabled == 0;
interrupt_cfg.trn_log_enabled == 0;
clic_cfg.trn_log_enabled == 0;
wfe_wu_cfg.trn_log_enabled == 0;
isacov_cfg.trn_log_enabled == 0;
obi_memory_data_cfg.trn_log_enabled == 0;
obi_memory_instr_cfg.trn_log_enabled == 0;
Expand Down Expand Up @@ -409,7 +415,6 @@ function uvme_cv32e40s_cfg_c::new(string name="uvme_cv32e40s_cfg");
single_step_min_limit.rand_mode(0);
end


if ($test$plusargs("enable_clic")) begin
clic_interrupt_enable = 1;
basic_interrupt_enable = 0;
Expand All @@ -426,6 +431,7 @@ function uvme_cv32e40s_cfg_c::new(string name="uvme_cv32e40s_cfg");
interrupt_cfg = uvma_interrupt_cfg_c::type_id::create("interrupt_cfg");
clic_cfg = uvma_clic_cfg_c::type_id::create("clic_cfg");
debug_cfg = uvma_debug_cfg_c::type_id::create("debug_cfg");
wfe_wu_cfg = uvma_wfe_wu_cfg_c::type_id::create("wfe_wu_cfg");
obi_memory_instr_cfg = uvma_obi_memory_cfg_c::type_id::create("obi_memory_instr_cfg");
obi_memory_data_cfg = uvma_obi_memory_cfg_c::type_id::create("obi_memory_data_cfg" );
rvfi_cfg = uvma_rvfi_cfg_c#(ILEN,XLEN)::type_id::create("rvfi_cfg");
Expand Down
4 changes: 4 additions & 0 deletions cv32e40s/env/uvme/uvme_cv32e40s_cntxt.sv
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,15 @@ class uvme_cv32e40s_cntxt_c extends uvm_object;
virtual uvmt_cv32e40s_vp_status_if_t vp_status_vif; ///< Virtual interface for Virtual Peripherals
virtual uvma_interrupt_if_t intr_vif; ///< Virtual interface for interrupts
virtual uvma_clic_if_t#(CORE_PARAM_CLIC_ID_WIDTH) clic_vif; ///< Virtual interface for clic interrupts
virtual uvma_wfe_wu_if_t wfe_wu_vif;
virtual uvma_debug_if_t debug_vif; ///< Virtual interface for debug

// Agent context handles
uvma_cv32e40s_core_cntrl_cntxt_c core_cntrl_cntxt;
uvma_clknrst_cntxt_c clknrst_cntxt;
uvma_interrupt_cntxt_c interrupt_cntxt;
uvma_clic_cntxt_c#(CORE_PARAM_CLIC_ID_WIDTH) clic_cntxt;
uvma_wfe_wu_cntxt_c wfe_wu_cntxt;
uvma_debug_cntxt_c debug_cntxt;
uvma_obi_memory_cntxt_c#(
.AUSER_WIDTH(ENV_PARAM_INSTR_AUSER_WIDTH),
Expand Down Expand Up @@ -74,6 +76,7 @@ class uvme_cv32e40s_cntxt_c extends uvm_object;
`uvm_field_object(interrupt_cntxt, UVM_DEFAULT)
`uvm_field_object(clic_cntxt, UVM_DEFAULT)
`uvm_field_object(debug_cntxt , UVM_DEFAULT)
`uvm_field_object(wfe_wu_cntxt , UVM_DEFAULT)
`uvm_field_object(obi_memory_instr_cntxt, UVM_DEFAULT)
`uvm_field_object(obi_memory_data_cntxt , UVM_DEFAULT)
`uvm_field_object(rvfi_cntxt, UVM_DEFAULT)
Expand Down Expand Up @@ -105,6 +108,7 @@ function uvme_cv32e40s_cntxt_c::new(string name="uvme_cv32e40s_cntxt");
fencei_cntxt = uvma_fencei_cntxt_c::type_id::create("fencei_cntxt");
interrupt_cntxt = uvma_interrupt_cntxt_c::type_id::create("interrupt_cntxt");
clic_cntxt = uvma_clic_cntxt_c#(CORE_PARAM_CLIC_ID_WIDTH)::type_id::create("clic_cntxt");
wfe_wu_cntxt = uvma_wfe_wu_cntxt_c::type_id::create("wfe_wu_cntxt");
obi_memory_data_cntxt = uvma_obi_memory_cntxt_c#(
.AUSER_WIDTH(ENV_PARAM_INSTR_AUSER_WIDTH),
.WUSER_WIDTH(ENV_PARAM_INSTR_WUSER_WIDTH),
Expand Down
2 changes: 2 additions & 0 deletions cv32e40s/env/uvme/uvme_cv32e40s_core_cntrl_if.sv
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ interface uvme_cv32e40s_core_cntrl_if_t

logic clk;
logic fetch_en;
logic wu_wfe;

logic scan_cg_en;
logic [31:0] boot_addr;
Expand All @@ -31,6 +32,7 @@ interface uvme_cv32e40s_core_cntrl_if_t

clocking drv_cb @(posedge clk);
output fetch_en;
output wu_wfe;
endclocking : drv_cb

endinterface : uvme_cv32e40s_core_cntrl_if_t
12 changes: 12 additions & 0 deletions cv32e40s/env/uvme/uvme_cv32e40s_env.sv
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class uvme_cv32e40s_env_c extends uvm_env;
uvma_clknrst_agent_c clknrst_agent;
uvma_interrupt_agent_c interrupt_agent;
uvma_clic_agent_c#(CORE_PARAM_CLIC_ID_WIDTH) clic_agent;
uvma_wfe_wu_agent_c wfe_wu_agent;
uvma_debug_agent_c debug_agent;
uvma_obi_memory_agent_c#(
.AUSER_WIDTH(ENV_PARAM_INSTR_AUSER_WIDTH),
Expand Down Expand Up @@ -360,6 +361,13 @@ function void uvme_cv32e40s_env_c::retrieve_vifs();
`uvm_info("VIF", $sformatf("Found clic_vif handle of type %s in uvm_config_db", $typename(cntxt.clic_vif)), UVM_DEBUG)
end

if (!uvm_config_db#(virtual uvma_wfe_wu_if_t)::get(this, "", "wfe_wu_vif", cntxt.wfe_wu_vif)) begin
`uvm_fatal("VIF", $sformatf("Could not find wfe_wu_vif handle of type %s in uvm_config_db", $typename(cntxt.wfe_wu_vif)))
end
else begin
`uvm_info("VIF", $sformatf("Found wfe_wu_vif handle of type %s in uvm_config_db", $typename(cntxt.wfe_wu_vif)), UVM_DEBUG)
end

if (!uvm_config_db#(virtual uvma_debug_if_t)::get(this, "", "debug_vif", cntxt.debug_vif)) begin
`uvm_fatal("VIF", $sformatf("Could not find debug_vif handle of type %s in uvm_config_db", $typename(cntxt.debug_vif)))
end
Expand All @@ -384,6 +392,7 @@ function void uvme_cv32e40s_env_c::assign_cfg();
uvm_config_db#(uvma_fencei_cfg_c)::set(this, "fencei_agent", "cfg", cfg.fencei_cfg);
uvm_config_db#(uvma_interrupt_cfg_c)::set(this, "*interrupt_agent", "cfg", cfg.interrupt_cfg);
uvm_config_db#(uvma_clic_cfg_c)::set(this, "*clic_agent", "cfg", cfg.clic_cfg);
uvm_config_db#(uvma_wfe_wu_cfg_c)::set(this, "*wfe_wu_agent", "cfg", cfg.wfe_wu_cfg);
uvm_config_db#(uvma_isacov_cfg_c)::set(this, "*isacov_agent", "cfg", cfg.isacov_cfg);
uvm_config_db#(uvma_obi_memory_cfg_c)::set(this, "obi_memory_data_agent", "cfg", cfg.obi_memory_data_cfg);
uvm_config_db#(uvma_obi_memory_cfg_c)::set(this, "obi_memory_instr_agent", "cfg", cfg.obi_memory_instr_cfg);
Expand All @@ -403,6 +412,7 @@ function void uvme_cv32e40s_env_c::assign_cntxt();
uvm_config_db#(uvma_fencei_cntxt_c)::set(this, "fencei_agent", "cntxt", cntxt.fencei_cntxt);
uvm_config_db#(uvma_interrupt_cntxt_c)::set(this, "interrupt_agent", "cntxt", cntxt.interrupt_cntxt);
uvm_config_db#(uvma_clic_cntxt_c#(CORE_PARAM_CLIC_ID_WIDTH))::set(this, "clic_agent", "cntxt", cntxt.clic_cntxt);
uvm_config_db#(uvma_wfe_wu_cntxt_c)::set(this, "wfe_wu_agent", "cntxt", cntxt.wfe_wu_cntxt);
uvm_config_db#(uvma_obi_memory_cntxt_c#(
.AUSER_WIDTH(ENV_PARAM_DATA_AUSER_WIDTH),
.WUSER_WIDTH(ENV_PARAM_DATA_WUSER_WIDTH),
Expand Down Expand Up @@ -435,6 +445,7 @@ function void uvme_cv32e40s_env_c::create_agents();
clknrst_agent = uvma_clknrst_agent_c::type_id::create("clknrst_agent", this);
interrupt_agent = uvma_interrupt_agent_c::type_id::create("interrupt_agent", this);
clic_agent = uvma_clic_agent_c#(CORE_PARAM_CLIC_ID_WIDTH)::type_id::create("clic_agent", this);
wfe_wu_agent = uvma_wfe_wu_agent_c::type_id::create("wfe_wu_agent", this);
debug_agent = uvma_debug_agent_c::type_id::create("debug_agent", this);
obi_memory_instr_agent = uvma_obi_memory_agent_c#(
.AUSER_WIDTH(ENV_PARAM_INSTR_AUSER_WIDTH),
Expand Down Expand Up @@ -536,6 +547,7 @@ function void uvme_cv32e40s_env_c::assemble_vsequencer();
vsequencer.clknrst_sequencer = clknrst_agent.sequencer;
vsequencer.interrupt_sequencer = interrupt_agent.sequencer;
vsequencer.clic_sequencer = clic_agent.sequencer;
vsequencer.wfe_wu_sequencer = wfe_wu_agent.sequencer;
vsequencer.debug_sequencer = debug_agent.sequencer;
vsequencer.obi_memory_instr_sequencer = obi_memory_instr_agent.sequencer;
vsequencer.obi_memory_data_sequencer = obi_memory_data_agent.sequencer;
Expand Down
2 changes: 2 additions & 0 deletions cv32e40s/env/uvme/uvme_cv32e40s_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ package uvme_cv32e40s_pkg;
import uvma_isacov_pkg::*;
import uvma_clknrst_pkg::*;
import uvma_clic_pkg::*;
import uvma_wfe_wu_pkg::*;
import uvma_interrupt_pkg::*;
import uvma_debug_pkg::*;
import uvma_obi_memory_pkg::*;
Expand Down Expand Up @@ -82,6 +83,7 @@ package uvme_cv32e40s_pkg;
`include "uvme_cv32e40s_vseq_lib.sv"
`include "uvme_cv32e40s_core_cntrl_base_seq.sv"
`include "uvme_cv32e40s_core_cntrl_fetch_toggle_seq.sv"
`include "uvme_cv32e40s_wu_wfe_noise_vseq.sv"
`include "uvme_cv32e40s_random_debug_vseq.sv"
`include "uvme_cv32e40s_random_debug_reset_vseq.sv"
`include "uvme_cv32e40s_random_debug_bootset_vseq.sv"
Expand Down
1 change: 1 addition & 0 deletions cv32e40s/env/uvme/uvme_cv32e40s_vsqr.sv
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class uvme_cv32e40s_vsqr_c extends uvm_sequencer#(
uvma_clknrst_sqr_c clknrst_sequencer;
uvma_interrupt_sqr_c interrupt_sequencer;
uvma_clic_sqr_c#(CORE_PARAM_CLIC_ID_WIDTH) clic_sequencer;
uvma_wfe_wu_sqr_c wfe_wu_sequencer;
uvma_debug_sqr_c debug_sequencer;
uvma_obi_memory_sqr_c#(
.AUSER_WIDTH(ENV_PARAM_INSTR_AUSER_WIDTH),
Expand Down
10 changes: 5 additions & 5 deletions cv32e40s/env/uvme/vseq/uvme_cv32e40s_clic_noise_vseq.sv
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ task uvme_cv32e40s_clic_noise_c::body();

repeat (initial_delay_assert_until_ack) @(cntxt.clic_cntxt.vif.drv_cb);

while(1) begin
forever begin
uvma_clic_seq_item_c irq_req;

`uvm_create_on(irq_req, p_sequencer.clic_sequencer);
Expand All @@ -117,11 +117,11 @@ task uvme_cv32e40s_clic_noise_c::body();

repeat (initial_delay_assert) @(cntxt.clic_cntxt.vif.drv_cb);

while(1) begin
forever begin
uvma_clic_seq_item_c irq_req;

`uvm_do_on_with(irq_req, p_sequencer.clic_sequencer, {
action == UVMA_CLIC_SEQ_ITEM_ACTION_DEASSERT;
action == UVMA_CLIC_SEQ_ITEM_ACTION_ASSERT;
silabs-robin marked this conversation as resolved.
Show resolved Hide resolved
})

rand_delay();
Expand All @@ -133,11 +133,11 @@ task uvme_cv32e40s_clic_noise_c::body();

repeat (initial_delay_deassert) @(cntxt.clic_cntxt.vif.drv_cb);

while(1) begin
forever begin
uvma_clic_seq_item_c irq_req;

`uvm_do_on_with(irq_req, p_sequencer.clic_sequencer, {
action == UVMA_CLIC_SEQ_ITEM_ACTION_ASSERT;
action == UVMA_CLIC_SEQ_ITEM_ACTION_DEASSERT;
})

rand_delay();
Expand Down
120 changes: 120 additions & 0 deletions cv32e40s/env/uvme/vseq/uvme_cv32e40s_wu_wfe_noise_vseq.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
// Copyright 2023 Silicon Labs. Inc.
//
// Licensed under the Solderpad Hardware Licence, 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
//
// https://solderpad.org/licenses/
//
// 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.


`ifndef __UVME_CV32E40S_WU_WFE_NOISE_VSEQ_C__
`define __UVME_CV32E40S_WU_WFE_NOISE_VSEQ_C__

/**
*
*/
class uvme_cv32e40s_wu_wfe_noise_vseq_c extends uvme_cv32e40s_base_vseq_c;

rand int unsigned initial_delay_assert;
rand int unsigned initial_delay_deassert;

rand int unsigned short_delay_wgt;
rand int unsigned medium_delay_wgt;
rand int unsigned long_delay_wgt;

semaphore asserted_wu;
semaphore deasserted_wu;
`uvm_object_utils_begin(uvme_cv32e40s_wu_wfe_noise_vseq_c);
`uvm_object_utils_end

constraint default_delay_c {
soft short_delay_wgt == 2;
soft medium_delay_wgt == 5;
soft long_delay_wgt == 3;
silabs-robin marked this conversation as resolved.
Show resolved Hide resolved
}

constraint valid_initial_delay_assert_c {
initial_delay_assert dist { 0 :/ 2,
[10:500] :/ 4,
[500:1000] :/ 3};
}

constraint valid_initial_delay_deassert_c {
initial_delay_deassert dist { 0 :/ 2,
[10:500] :/ 4,
[500:1000] :/ 3};
}

extern function new(string name = "");

extern virtual task body();

extern virtual task rand_delay();

endclass : uvme_cv32e40s_wu_wfe_noise_vseq_c

function uvme_cv32e40s_wu_wfe_noise_vseq_c::new(string name = "");
super.new(name);
endfunction : new

task uvme_cv32e40s_wu_wfe_noise_vseq_c::rand_delay();
randcase
short_delay_wgt: repeat($urandom_range(100, 1)) @(cntxt.wfe_wu_cntxt.vif.drv_cb);
medium_delay_wgt: repeat($urandom_range(500, 100)) @(cntxt.wfe_wu_cntxt.vif.drv_cb);
long_delay_wgt: repeat($urandom_range(10_000, 5000)) @(cntxt.wfe_wu_cntxt.vif.drv_cb);
endcase
endtask : rand_delay

task uvme_cv32e40s_wu_wfe_noise_vseq_c::body();
asserted_wu = new(1);
deasserted_wu = new(1);

// start with deasserted
void'(asserted_wu.put(1));

fork
begin : gen_assert
repeat (initial_delay_assert) @(cntxt.wfe_wu_cntxt.vif.drv_cb);

forever begin
@(cntxt.wfe_wu_cntxt.vif.drv_cb)
if (deasserted_wu.try_get(1)) begin
uvma_wfe_wu_seq_item_c wfe_req;

`uvm_do_on_with(wfe_req, p_sequencer.wfe_wu_sequencer, {
action == UVMA_WFE_WU_SEQ_ITEM_ACTION_ASSERT;
})
rand_delay();
asserted_wu.put(1);
end
end
end

begin : gen_deassert
repeat (initial_delay_deassert) @(cntxt.wfe_wu_cntxt.vif.drv_cb);

forever begin
@(cntxt.wfe_wu_cntxt.vif.drv_cb)
if (asserted_wu.try_get(1)) begin
uvma_wfe_wu_seq_item_c wfe_req;

`uvm_do_on_with(wfe_req, p_sequencer.wfe_wu_sequencer, {
action == UVMA_WFE_WU_SEQ_ITEM_ACTION_DEASSERT;
})
rand_delay();
deasserted_wu.put(1);
end
end
end
join

endtask : body

`endif // __UVME_CV32E40S_WU_WFE_NOISE_VSEQ_C__

1 change: 1 addition & 0 deletions cv32e40s/tb/uvmt/uvmt_cv32e40s.flist
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ ${FILE_LIST_IDV_DEPS}
-f ${DV_UVMA_CLIC_PATH}/uvma_clic_pkg.flist
-f ${DV_UVMA_DEBUG_PATH}/uvma_debug_pkg.flist
-f ${DV_UVMA_FENCEI_PATH}/uvma_fencei_pkg.flist
-f ${DV_UVMA_WFE_WU_PATH}/uvma_wfe_wu_pkg.flist


// CV32E40S test bench Directories
Expand Down
Loading