diff --git a/hw/ip_templates/ac_range_check/dv/doc/tb.svg b/hw/ip_templates/ac_range_check/dv/doc/tb.svg
new file mode 100644
index 0000000000000..e5cf5400c4ae3
--- /dev/null
+++ b/hw/ip_templates/ac_range_check/dv/doc/tb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env.sv b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env.sv
index ab3fc70d125d2..87aeb1c394f30 100644
--- a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env.sv
+++ b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env.sv
@@ -10,7 +10,6 @@ class ac_range_check_env extends cip_base_env #(
);
`uvm_component_utils(ac_range_check_env)
- tl_agent tl_csr_agt;
tl_agent tl_unfilt_agt;
tl_agent tl_filt_agt;
@@ -28,11 +27,6 @@ endfunction : new
function void ac_range_check_env::build_phase(uvm_phase phase);
super.build_phase(phase);
- // Create CSR TL agent
- tl_csr_agt = tl_agent::type_id::create("tl_csr_agt", this);
- uvm_config_db#(tl_agent_cfg)::set(this, "tl_csr_agt*", "cfg", cfg.tl_csr_agt_cfg);
- cfg.tl_csr_agt_cfg.en_cov = cfg.en_cov;
-
// Create Unfiltered TL agent
tl_unfilt_agt = tl_agent::type_id::create("tl_unfilt_agt", this);
uvm_config_db#(tl_agent_cfg)::set(this, "tl_unfilt_agt*", "cfg", cfg.tl_unfilt_agt_cfg);
@@ -47,13 +41,9 @@ endfunction : build_phase
function void ac_range_check_env::connect_phase(uvm_phase phase);
super.connect_phase(phase);
if (cfg.en_scb) begin
- tl_csr_agt.monitor.analysis_port.connect(scoreboard.tl_csr_fifo.analysis_export);
tl_unfilt_agt.monitor.analysis_port.connect(scoreboard.tl_unfilt_fifo.analysis_export);
tl_filt_agt.monitor.analysis_port.connect(scoreboard.tl_filt_fifo.analysis_export);
end
- if (cfg.is_active && cfg.tl_csr_agt_cfg.is_active) begin
- virtual_sequencer.tl_csr_sqr = tl_csr_agt.sequencer;
- end
if (cfg.is_active && cfg.tl_unfilt_agt_cfg.is_active) begin
virtual_sequencer.tl_unfilt_sqr = tl_unfilt_agt.sequencer;
end
diff --git a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env_cfg.sv b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env_cfg.sv
index b4e1f6a6872bb..f7992498ed4a4 100644
--- a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env_cfg.sv
+++ b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_env_cfg.sv
@@ -5,12 +5,10 @@
class ac_range_check_env_cfg extends cip_base_env_cfg #(.RAL_T(ac_range_check_reg_block));
// External component config objects
- rand tl_agent_cfg tl_csr_agt_cfg;
rand tl_agent_cfg tl_unfilt_agt_cfg;
rand tl_agent_cfg tl_filt_agt_cfg;
`uvm_object_utils_begin(ac_range_check_env_cfg)
- `uvm_field_object(tl_csr_agt_cfg, UVM_DEFAULT)
`uvm_field_object(tl_unfilt_agt_cfg, UVM_DEFAULT)
`uvm_field_object(tl_filt_agt_cfg, UVM_DEFAULT)
`uvm_object_utils_end
@@ -30,12 +28,15 @@ endfunction : new
function void ac_range_check_env_cfg::initialize(bit [31:0] csr_base_addr = '1);
list_of_alerts = ac_range_check_env_pkg::LIST_OF_ALERTS;
super.initialize(csr_base_addr);
- // Create tl_csr agent config obj
- tl_csr_agt_cfg = tl_agent_cfg::type_id::create("tl_csr_agt_cfg");
+
+ // TL Agent Configuration objects - Non RAL
// Create tl_unfilt agent config obj
tl_unfilt_agt_cfg = tl_agent_cfg::type_id::create("tl_unfilt_agt_cfg");
+ tl_unfilt_agt_cfg.if_mode = dv_utils_pkg::Host;
+
// Create tl_filt agent config obj
tl_filt_agt_cfg = tl_agent_cfg::type_id::create("tl_filt_agt_cfg");
+ tl_filt_agt_cfg.if_mode = dv_utils_pkg::Device;
// Set num_interrupts
begin
diff --git a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_scoreboard.sv b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_scoreboard.sv
index b2bd178e1a487..2c828449357ac 100644
--- a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_scoreboard.sv
+++ b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_scoreboard.sv
@@ -12,12 +12,10 @@ class ac_range_check_scoreboard extends cip_base_scoreboard #(
// Local variables
// TLM agent fifos
- uvm_tlm_analysis_fifo #(tl_seq_item) tl_csr_fifo;
uvm_tlm_analysis_fifo #(tl_seq_item) tl_unfilt_fifo;
uvm_tlm_analysis_fifo #(tl_seq_item) tl_filt_fifo;
// Local queues to hold incoming packets pending comparison
- tl_seq_item tl_csr_q[$];
tl_seq_item tl_unfilt_q[$];
tl_seq_item tl_filt_q[$];
@@ -29,7 +27,6 @@ class ac_range_check_scoreboard extends cip_base_scoreboard #(
extern function void check_phase(uvm_phase phase);
// Class specific methods
- extern task process_tl_csr_fifo();
extern task process_tl_unfilt_fifo();
extern task process_tl_filt_fifo();
extern task process_tl_access(tl_seq_item item, tl_channels_e channel, string ral_name);
@@ -43,7 +40,6 @@ endfunction : new
function void ac_range_check_scoreboard::build_phase(uvm_phase phase);
super.build_phase(phase);
- tl_csr_fifo = new("tl_csr_fifo", this);
tl_unfilt_fifo = new("tl_unfilt_fifo", this);
tl_filt_fifo = new("tl_filt_fifo", this);
// TODO: remove once support alert checking
@@ -65,7 +61,6 @@ task ac_range_check_scoreboard::run_phase(uvm_phase phase);
fork
begin : main_thread
fork
- process_tl_csr_fifo();
process_tl_unfilt_fifo();
process_tl_filt_fifo();
join
@@ -80,14 +75,6 @@ task ac_range_check_scoreboard::run_phase(uvm_phase phase);
end
endtask : run_phase
-task ac_range_check_scoreboard::process_tl_csr_fifo();
- tl_seq_item item;
- forever begin
- tl_csr_fifo.get(item);
- `uvm_info(`gfn, $sformatf("received tl_csr item:\n%0s", item.sprint()), UVM_HIGH)
- end
-endtask : process_tl_csr_fifo
-
task ac_range_check_scoreboard::process_tl_unfilt_fifo();
tl_seq_item item;
forever begin
diff --git a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv
index 2f022b0c6debe..096537e329141 100644
--- a/hw/ip_templates/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv
+++ b/hw/ip_templates/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv
@@ -8,7 +8,6 @@ class ac_range_check_virtual_sequencer extends cip_base_virtual_sequencer #(
);
`uvm_component_utils(ac_range_check_virtual_sequencer)
- tl_sequencer tl_csr_sqr;
tl_sequencer tl_unfilt_sqr;
tl_sequencer tl_filt_sqr;
diff --git a/hw/ip_templates/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv b/hw/ip_templates/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv
index 2a3dbb5072c73..1a10920ce1c45 100644
--- a/hw/ip_templates/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv
+++ b/hw/ip_templates/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv
@@ -34,5 +34,8 @@ task ac_range_check_base_vseq::dut_init(string reset_kind = "HARD");
endtask : dut_init
task ac_range_check_base_vseq::ac_range_check_init();
- `uvm_error(`gfn, "FIXME")
+ bit [TL_DW-1:0] tmp_test;
+ csr_wr(.ptr(ral.range_base[0]), .value(32'hABCD_1234));
+ csr_rd(.ptr(ral.range_base[0]), .value(tmp_test));
+ `uvm_info(`gfn, $sformatf("tmp_test=%0h", tmp_test), UVM_LOW)
endtask : ac_range_check_init
diff --git a/hw/ip_templates/ac_range_check/dv/tb/tb.sv.tpl b/hw/ip_templates/ac_range_check/dv/tb/tb.sv.tpl
index e7e1119bd1235..2042bf3b03aea 100644
--- a/hw/ip_templates/ac_range_check/dv/tb/tb.sv.tpl
+++ b/hw/ip_templates/ac_range_check/dv/tb/tb.sv.tpl
@@ -76,9 +76,9 @@ module tb;
uvm_config_db#(virtual clk_rst_if)::set(null, "*.env", "clk_rst_vif", clk_rst_if);
uvm_config_db#(virtual rst_shadowed_if)::set(null, "*.env", "rst_shadowed_vif", rst_shad_if);
uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
- uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_csr_agt*", "tl_csr_vif", tl_csr_if);
- uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_unfilt_agt*", "tl_unfilt_vif", tl_unfilt_if);
- uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_filt_agt*", "tl_filt_vif", tl_filt_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.m_tl_agent*", "vif", tl_csr_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_unfilt_agt*", "vif", tl_unfilt_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_filt_agt*", "vif", tl_filt_if);
$timeformat(-12, 0, " ps", 12);
run_test();
end
diff --git a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/doc/tb.svg b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/doc/tb.svg
new file mode 100644
index 0000000000000..e5cf5400c4ae3
--- /dev/null
+++ b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/doc/tb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env.sv b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env.sv
index ab3fc70d125d2..87aeb1c394f30 100644
--- a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env.sv
+++ b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env.sv
@@ -10,7 +10,6 @@ class ac_range_check_env extends cip_base_env #(
);
`uvm_component_utils(ac_range_check_env)
- tl_agent tl_csr_agt;
tl_agent tl_unfilt_agt;
tl_agent tl_filt_agt;
@@ -28,11 +27,6 @@ endfunction : new
function void ac_range_check_env::build_phase(uvm_phase phase);
super.build_phase(phase);
- // Create CSR TL agent
- tl_csr_agt = tl_agent::type_id::create("tl_csr_agt", this);
- uvm_config_db#(tl_agent_cfg)::set(this, "tl_csr_agt*", "cfg", cfg.tl_csr_agt_cfg);
- cfg.tl_csr_agt_cfg.en_cov = cfg.en_cov;
-
// Create Unfiltered TL agent
tl_unfilt_agt = tl_agent::type_id::create("tl_unfilt_agt", this);
uvm_config_db#(tl_agent_cfg)::set(this, "tl_unfilt_agt*", "cfg", cfg.tl_unfilt_agt_cfg);
@@ -47,13 +41,9 @@ endfunction : build_phase
function void ac_range_check_env::connect_phase(uvm_phase phase);
super.connect_phase(phase);
if (cfg.en_scb) begin
- tl_csr_agt.monitor.analysis_port.connect(scoreboard.tl_csr_fifo.analysis_export);
tl_unfilt_agt.monitor.analysis_port.connect(scoreboard.tl_unfilt_fifo.analysis_export);
tl_filt_agt.monitor.analysis_port.connect(scoreboard.tl_filt_fifo.analysis_export);
end
- if (cfg.is_active && cfg.tl_csr_agt_cfg.is_active) begin
- virtual_sequencer.tl_csr_sqr = tl_csr_agt.sequencer;
- end
if (cfg.is_active && cfg.tl_unfilt_agt_cfg.is_active) begin
virtual_sequencer.tl_unfilt_sqr = tl_unfilt_agt.sequencer;
end
diff --git a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env_cfg.sv b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env_cfg.sv
index b4e1f6a6872bb..f7992498ed4a4 100644
--- a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env_cfg.sv
+++ b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_env_cfg.sv
@@ -5,12 +5,10 @@
class ac_range_check_env_cfg extends cip_base_env_cfg #(.RAL_T(ac_range_check_reg_block));
// External component config objects
- rand tl_agent_cfg tl_csr_agt_cfg;
rand tl_agent_cfg tl_unfilt_agt_cfg;
rand tl_agent_cfg tl_filt_agt_cfg;
`uvm_object_utils_begin(ac_range_check_env_cfg)
- `uvm_field_object(tl_csr_agt_cfg, UVM_DEFAULT)
`uvm_field_object(tl_unfilt_agt_cfg, UVM_DEFAULT)
`uvm_field_object(tl_filt_agt_cfg, UVM_DEFAULT)
`uvm_object_utils_end
@@ -30,12 +28,15 @@ endfunction : new
function void ac_range_check_env_cfg::initialize(bit [31:0] csr_base_addr = '1);
list_of_alerts = ac_range_check_env_pkg::LIST_OF_ALERTS;
super.initialize(csr_base_addr);
- // Create tl_csr agent config obj
- tl_csr_agt_cfg = tl_agent_cfg::type_id::create("tl_csr_agt_cfg");
+
+ // TL Agent Configuration objects - Non RAL
// Create tl_unfilt agent config obj
tl_unfilt_agt_cfg = tl_agent_cfg::type_id::create("tl_unfilt_agt_cfg");
+ tl_unfilt_agt_cfg.if_mode = dv_utils_pkg::Host;
+
// Create tl_filt agent config obj
tl_filt_agt_cfg = tl_agent_cfg::type_id::create("tl_filt_agt_cfg");
+ tl_filt_agt_cfg.if_mode = dv_utils_pkg::Device;
// Set num_interrupts
begin
diff --git a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_scoreboard.sv b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_scoreboard.sv
index b2bd178e1a487..2c828449357ac 100644
--- a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_scoreboard.sv
+++ b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_scoreboard.sv
@@ -12,12 +12,10 @@ class ac_range_check_scoreboard extends cip_base_scoreboard #(
// Local variables
// TLM agent fifos
- uvm_tlm_analysis_fifo #(tl_seq_item) tl_csr_fifo;
uvm_tlm_analysis_fifo #(tl_seq_item) tl_unfilt_fifo;
uvm_tlm_analysis_fifo #(tl_seq_item) tl_filt_fifo;
// Local queues to hold incoming packets pending comparison
- tl_seq_item tl_csr_q[$];
tl_seq_item tl_unfilt_q[$];
tl_seq_item tl_filt_q[$];
@@ -29,7 +27,6 @@ class ac_range_check_scoreboard extends cip_base_scoreboard #(
extern function void check_phase(uvm_phase phase);
// Class specific methods
- extern task process_tl_csr_fifo();
extern task process_tl_unfilt_fifo();
extern task process_tl_filt_fifo();
extern task process_tl_access(tl_seq_item item, tl_channels_e channel, string ral_name);
@@ -43,7 +40,6 @@ endfunction : new
function void ac_range_check_scoreboard::build_phase(uvm_phase phase);
super.build_phase(phase);
- tl_csr_fifo = new("tl_csr_fifo", this);
tl_unfilt_fifo = new("tl_unfilt_fifo", this);
tl_filt_fifo = new("tl_filt_fifo", this);
// TODO: remove once support alert checking
@@ -65,7 +61,6 @@ task ac_range_check_scoreboard::run_phase(uvm_phase phase);
fork
begin : main_thread
fork
- process_tl_csr_fifo();
process_tl_unfilt_fifo();
process_tl_filt_fifo();
join
@@ -80,14 +75,6 @@ task ac_range_check_scoreboard::run_phase(uvm_phase phase);
end
endtask : run_phase
-task ac_range_check_scoreboard::process_tl_csr_fifo();
- tl_seq_item item;
- forever begin
- tl_csr_fifo.get(item);
- `uvm_info(`gfn, $sformatf("received tl_csr item:\n%0s", item.sprint()), UVM_HIGH)
- end
-endtask : process_tl_csr_fifo
-
task ac_range_check_scoreboard::process_tl_unfilt_fifo();
tl_seq_item item;
forever begin
diff --git a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv
index 2f022b0c6debe..096537e329141 100644
--- a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv
+++ b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/ac_range_check_virtual_sequencer.sv
@@ -8,7 +8,6 @@ class ac_range_check_virtual_sequencer extends cip_base_virtual_sequencer #(
);
`uvm_component_utils(ac_range_check_virtual_sequencer)
- tl_sequencer tl_csr_sqr;
tl_sequencer tl_unfilt_sqr;
tl_sequencer tl_filt_sqr;
diff --git a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv
index 2a3dbb5072c73..1a10920ce1c45 100644
--- a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv
+++ b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/env/seq_lib/ac_range_check_base_vseq.sv
@@ -34,5 +34,8 @@ task ac_range_check_base_vseq::dut_init(string reset_kind = "HARD");
endtask : dut_init
task ac_range_check_base_vseq::ac_range_check_init();
- `uvm_error(`gfn, "FIXME")
+ bit [TL_DW-1:0] tmp_test;
+ csr_wr(.ptr(ral.range_base[0]), .value(32'hABCD_1234));
+ csr_rd(.ptr(ral.range_base[0]), .value(tmp_test));
+ `uvm_info(`gfn, $sformatf("tmp_test=%0h", tmp_test), UVM_LOW)
endtask : ac_range_check_init
diff --git a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/tb/tb.sv b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/tb/tb.sv
index 2fbd85cfe43dd..7c0465adcf555 100644
--- a/hw/top_darjeeling/ip_autogen/ac_range_check/dv/tb/tb.sv
+++ b/hw/top_darjeeling/ip_autogen/ac_range_check/dv/tb/tb.sv
@@ -76,9 +76,9 @@ module tb;
uvm_config_db#(virtual clk_rst_if)::set(null, "*.env", "clk_rst_vif", clk_rst_if);
uvm_config_db#(virtual rst_shadowed_if)::set(null, "*.env", "rst_shadowed_vif", rst_shad_if);
uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
- uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_csr_agt*", "tl_csr_vif", tl_csr_if);
- uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_unfilt_agt*", "tl_unfilt_vif", tl_unfilt_if);
- uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_filt_agt*", "tl_filt_vif", tl_filt_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.m_tl_agent*", "vif", tl_csr_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_unfilt_agt*", "vif", tl_unfilt_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.tl_filt_agt*", "vif", tl_filt_if);
$timeformat(-12, 0, " ps", 12);
run_test();
end