Skip to content

Commit a26c3ec

Browse files
data_offload: Fixed verification environment
Signed-off-by: Istvan-Zsolt Szekely <istvan.szekely@analog.com>
1 parent dd73d64 commit a26c3ec

File tree

8 files changed

+72
-35
lines changed

8 files changed

+72
-35
lines changed

library/drivers/common/scoreboard.sv

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,12 @@ package scoreboard_pkg;
6161

6262
virtual function void update(input data_type data [$]);
6363
this.info($sformatf("Data received: %d", data.size()), ADI_VERBOSITY_MEDIUM);
64-
while (data.size()) begin
65-
this.byte_stream.push_back(data.pop_front());
66-
end
6764

6865
if (this.scoreboard_ref.get_enabled()) begin
66+
while (data.size()) begin
67+
this.byte_stream.push_back(data.pop_front());
68+
end
69+
6970
this.scoreboard_ref.compare_transaction();
7071
end
7172
endfunction: update

library/utilities/test_harness_env.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ package test_harness_env_pkg;
4343
import adi_axi_agent_pkg::*;
4444

4545

46-
class test_harness_env #(int `AXI_VIP_PARAM_ORDER(mng), int `AXI_VIP_PARAM_ORDER(ddr)) extends adi_environment;
46+
class test_harness_env #(`AXI_VIP_PARAM_DECL(mng), `AXI_VIP_PARAM_DECL(ddr)) extends adi_environment;
4747

4848
// Agents
4949
adi_axi_master_agent #(`AXI_VIP_PARAM_ORDER(mng)) mng;

testbenches/ip/data_offload/environment.sv

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,15 @@ package environment_pkg;
1818
import scoreboard_pkg::*;
1919

2020

21-
class scoreboard_environment #(`AXIS_VIP_PARAM_DECL(adc_src), `AXIS_VIP_PARAM_DECL(dac_dst)) extends adi_environment;
21+
class scoreboard_environment #(
22+
`AXIS_VIP_PARAM_DECL(adc_src), `AXI_VIP_PARAM_DECL(adc_dst),
23+
`AXI_VIP_PARAM_DECL(dac_src), `AXIS_VIP_PARAM_DECL(dac_dst)) extends adi_environment;
2224

2325
// Agents
2426
adi_axis_master_agent #(`AXIS_VIP_PARAM_ORDER(adc_src)) adc_src_axis_agent;
27+
adi_axi_passthrough_mem_agent #(`AXI_VIP_PARAM_ORDER(adc_dst)) adc_dst_axi_agent;
28+
29+
adi_axi_passthrough_mem_agent #(`AXI_VIP_PARAM_ORDER(dac_src)) dac_src_axi_agent;
2530
adi_axis_slave_agent #(`AXIS_VIP_PARAM_ORDER(dac_dst)) dac_dst_axis_agent;
2631

2732
scoreboard #(logic [7:0]) scoreboard_tx;
@@ -34,12 +39,18 @@ package environment_pkg;
3439
input string name,
3540

3641
virtual interface axi4stream_vip_if #(`AXIS_VIP_IF_PARAMS(adc_src)) adc_src_axis_vip_if,
42+
virtual interface axi_vip_if #(`AXI_VIP_IF_PARAMS(adc_dst)) adc_dst_if,
43+
44+
virtual interface axi_vip_if #(`AXI_VIP_IF_PARAMS(dac_src)) dac_src_if,
3745
virtual interface axi4stream_vip_if #(`AXIS_VIP_IF_PARAMS(dac_dst)) dac_dst_axis_vip_if);
3846

3947
// creating the agents
4048
super.new(name);
4149

4250
this.adc_src_axis_agent = new("ADC Source AXI Stream Agent", adc_src_axis_vip_if, this);
51+
this.adc_dst_axi_agent = new("ADC Destination AXI Agent", adc_dst_if, this);
52+
53+
this.dac_src_axi_agent = new("DAC Source AXI Agent", dac_src_if, this);
4354
this.dac_dst_axis_agent = new("DAC Destination AXI Stream Agent", dac_dst_axis_vip_if, this);
4455

4556
this.scoreboard_tx = new("Data Offload TX Scoreboard", this);
@@ -66,11 +77,16 @@ package environment_pkg;
6677
//============================================================================
6778
task start();
6879
this.adc_src_axis_agent.start_master();
80+
this.adc_dst_axi_agent.start_monitor();
81+
82+
this.dac_src_axi_agent.start_monitor();
6983
this.dac_dst_axis_agent.start_slave();
7084

85+
this.dac_src_axi_agent.monitor.publisher_rx.subscribe(this.scoreboard_tx.subscriber_source);
7186
this.dac_dst_axis_agent.monitor.publisher.subscribe(this.scoreboard_tx.subscriber_sink);
7287

7388
this.adc_src_axis_agent.monitor.publisher.subscribe(this.scoreboard_rx.subscriber_source);
89+
this.adc_dst_axi_agent.monitor.publisher_tx.subscribe(this.scoreboard_rx.subscriber_sink);
7490
endtask
7591

7692
//============================================================================
@@ -88,6 +104,9 @@ package environment_pkg;
88104
//============================================================================
89105
task stop();
90106
this.adc_src_axis_agent.stop_master();
107+
this.adc_dst_axi_agent.stop_monitor();
108+
109+
this.dac_src_axi_agent.stop_monitor();
91110
this.dac_dst_axis_agent.stop_slave();
92111
endtask
93112

testbenches/ip/data_offload/system_bd.tcl

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ ad_ip_instance axi4stream_vip adc_src_axis [list \
131131
]
132132
adi_sim_add_define "ADC_SRC_AXIS=adc_src_axis"
133133

134+
ad_ip_instance axi_vip adc_dst_axi
135+
adi_sim_add_define "ADC_DST_AXI=adc_dst_axi"
136+
134137
ad_connect adc_src_axis/m_axis RX_DUT/s_axis
135138
ad_connect RX_DUT/m_axis i_rx_dmac/s_axis
136139

@@ -149,7 +152,11 @@ ad_connect sys_mem_resetn i_rx_dmac/m_dest_axi_aresetn
149152
ad_connect i_rx_dmac/s_axis_xfer_req RX_DUT/init_req
150153
ad_connect gnd RX_DUT/sync_ext
151154

152-
ad_mem_hp0_interconnect sys_mem_clk i_rx_dmac/m_dest_axi
155+
ad_connect sys_mem_clk adc_dst_axi/aclk
156+
ad_connect sys_mem_resetn adc_dst_axi/aresetn
157+
ad_connect adc_dst_axi/S_AXI i_rx_dmac/m_dest_axi
158+
159+
ad_mem_hp0_interconnect sys_mem_clk adc_dst_axi/M_AXI
153160

154161
ad_ip_instance axi4stream_vip dac_dst_axis [list \
155162
INTERFACE_MODE {SLAVE} \
@@ -159,6 +166,9 @@ ad_ip_instance axi4stream_vip dac_dst_axis [list \
159166
]
160167
adi_sim_add_define "DAC_DST_AXIS=dac_dst_axis"
161168

169+
ad_ip_instance axi_vip dac_src_axi
170+
adi_sim_add_define "DAC_SRC_AXI=dac_src_axi"
171+
162172
ad_connect sys_dma_clk dac_dst_axis/aclk
163173
ad_connect sys_dma_resetn dac_dst_axis/aresetn
164174

@@ -177,7 +187,11 @@ ad_connect TX_DUT/s_axis i_tx_dmac/m_axis
177187
ad_connect i_tx_dmac/m_axis_xfer_req TX_DUT/init_req
178188
ad_connect gnd TX_DUT/sync_ext
179189

180-
ad_mem_hp0_interconnect sys_mem_clk i_tx_dmac/m_src_axi
190+
ad_connect sys_mem_clk dac_src_axi/aclk
191+
ad_connect sys_mem_resetn dac_src_axi/aresetn
192+
ad_connect dac_src_axi/S_AXI i_tx_dmac/m_src_axi
193+
194+
ad_mem_hp0_interconnect sys_mem_clk dac_src_axi/M_AXI
181195

182196
if {$adc_offload_mem_type} {
183197
set plddr_iname "RX_DUT"

testbenches/ip/data_offload/tests/test_program.sv

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ import `PKGIFY(test_harness, mng_axi_vip)::*;
4646
import `PKGIFY(test_harness, ddr_axi_vip)::*;
4747

4848
import `PKGIFY(test_harness, adc_src_axis)::*;
49+
import `PKGIFY(test_harness, adc_dst_axi)::*;
50+
import `PKGIFY(test_harness, dac_src_axi)::*;
4951
import `PKGIFY(test_harness, dac_dst_axis)::*;
5052

5153
`define ADC_TRANSFER_LENGTH 32'h600
@@ -54,7 +56,9 @@ program test_program;
5456

5557
// declare the class instances
5658
test_harness_env #(`AXI_VIP_PARAMS(test_harness, mng_axi_vip), `AXI_VIP_PARAMS(test_harness, ddr_axi_vip)) base_env;
57-
scoreboard_environment #(`AXIS_VIP_PARAMS(test_harness, adc_src_axis), `AXIS_VIP_PARAMS(test_harness, dac_dst_axis)) scb_env;
59+
scoreboard_environment #(
60+
`AXIS_VIP_PARAMS(test_harness, adc_src_axis), `AXI_VIP_PARAMS(test_harness, adc_dst_axi),
61+
`AXI_VIP_PARAMS(test_harness, dac_src_axi), `AXIS_VIP_PARAMS(test_harness, dac_dst_axis)) scb_env;
5862

5963
dmac_api dmac_tx;
6064
dmac_api dmac_rx;
@@ -75,6 +79,8 @@ program test_program;
7579

7680
scb_env = new("Scoreboard Environment 0",
7781
`TH.`ADC_SRC_AXIS.inst.IF,
82+
`TH.`ADC_DST_AXI.inst.IF,
83+
`TH.`DAC_SRC_AXI.inst.IF,
7884
`TH.`DAC_DST_AXIS.inst.IF);
7985

8086
dmac_tx = new("DMAC TX 0", base_env.mng.master_sequencer, `TX_DMA_BA);
@@ -94,9 +100,6 @@ program test_program;
94100
base_env.start();
95101
scb_env.start();
96102

97-
base_env.ddr.monitor.publisher_rx.subscribe(scb_env.scoreboard_tx.subscriber_source);
98-
base_env.ddr.monitor.publisher_tx.subscribe(scb_env.scoreboard_rx.subscriber_sink);
99-
100103
base_env.sys_reset();
101104

102105
// configure environment sequencers

testbenches/ip/data_offload/waves/cfg2.wcfg

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@
6363
<obj_property name="label">RX_DO</obj_property>
6464
<obj_property name="DisplayName">label</obj_property>
6565
<obj_property name="isExpanded"></obj_property>
66-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT_0/s_axis">
66+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT/s_axis">
6767
<obj_property name="ElementShortName">s_axis</obj_property>
6868
<obj_property name="ObjectShortName">s_axis</obj_property>
6969
</wvobject>
70-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT_0/m_axis">
70+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT/m_axis">
7171
<obj_property name="ElementShortName">m_axis</obj_property>
7272
<obj_property name="ObjectShortName">m_axis</obj_property>
7373
</wvobject>
@@ -76,11 +76,11 @@
7676
<obj_property name="label">RX_DMA</obj_property>
7777
<obj_property name="DisplayName">label</obj_property>
7878
<obj_property name="isExpanded"></obj_property>
79-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac_0/s_axis">
79+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac/s_axis">
8080
<obj_property name="ElementShortName">s_axis</obj_property>
8181
<obj_property name="ObjectShortName">s_axis</obj_property>
8282
</wvobject>
83-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac_0/m_dest_axi">
83+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac/m_dest_axi">
8484
<obj_property name="ElementShortName">m_dest_axi</obj_property>
8585
<obj_property name="ObjectShortName">m_dest_axi</obj_property>
8686
</wvobject>
@@ -93,11 +93,11 @@
9393
<obj_property name="label">TX_DMA</obj_property>
9494
<obj_property name="DisplayName">label</obj_property>
9595
<obj_property name="isExpanded"></obj_property>
96-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac_0/m_src_axi">
96+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac/m_src_axi">
9797
<obj_property name="ElementShortName">m_src_axi</obj_property>
9898
<obj_property name="ObjectShortName">m_src_axi</obj_property>
9999
</wvobject>
100-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac_0/m_axis">
100+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac/m_axis">
101101
<obj_property name="ElementShortName">m_axis</obj_property>
102102
<obj_property name="ObjectShortName">m_axis</obj_property>
103103
</wvobject>
@@ -106,11 +106,11 @@
106106
<obj_property name="label">TX_DO</obj_property>
107107
<obj_property name="DisplayName">label</obj_property>
108108
<obj_property name="isExpanded"></obj_property>
109-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT_0/s_axis">
109+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT/s_axis">
110110
<obj_property name="ElementShortName">s_axis</obj_property>
111111
<obj_property name="ObjectShortName">s_axis</obj_property>
112112
</wvobject>
113-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT_0/m_axis">
113+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT/m_axis">
114114
<obj_property name="ElementShortName">m_axis</obj_property>
115115
<obj_property name="ObjectShortName">m_axis</obj_property>
116116
</wvobject>

testbenches/ip/data_offload/waves/cfg3.wcfg

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@
6363
<obj_property name="label">RX_DO</obj_property>
6464
<obj_property name="DisplayName">label</obj_property>
6565
<obj_property name="isExpanded"></obj_property>
66-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT_0/s_axis">
66+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT/s_axis">
6767
<obj_property name="ElementShortName">s_axis</obj_property>
6868
<obj_property name="ObjectShortName">s_axis</obj_property>
6969
</wvobject>
70-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT_0/m_axis">
70+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT/m_axis">
7171
<obj_property name="ElementShortName">m_axis</obj_property>
7272
<obj_property name="ObjectShortName">m_axis</obj_property>
7373
</wvobject>
@@ -76,11 +76,11 @@
7676
<obj_property name="label">RX_DMA</obj_property>
7777
<obj_property name="DisplayName">label</obj_property>
7878
<obj_property name="isExpanded"></obj_property>
79-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac_0/s_axis">
79+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac/s_axis">
8080
<obj_property name="ElementShortName">s_axis</obj_property>
8181
<obj_property name="ObjectShortName">s_axis</obj_property>
8282
</wvobject>
83-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac_0/m_dest_axi">
83+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac/m_dest_axi">
8484
<obj_property name="ElementShortName">m_dest_axi</obj_property>
8585
<obj_property name="ObjectShortName">m_dest_axi</obj_property>
8686
</wvobject>
@@ -93,11 +93,11 @@
9393
<obj_property name="label">TX_DMA</obj_property>
9494
<obj_property name="DisplayName">label</obj_property>
9595
<obj_property name="isExpanded"></obj_property>
96-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac_0/m_src_axi">
96+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac/m_src_axi">
9797
<obj_property name="ElementShortName">m_src_axi</obj_property>
9898
<obj_property name="ObjectShortName">m_src_axi</obj_property>
9999
</wvobject>
100-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac_0/m_axis">
100+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac/m_axis">
101101
<obj_property name="ElementShortName">m_axis</obj_property>
102102
<obj_property name="ObjectShortName">m_axis</obj_property>
103103
</wvobject>
@@ -106,11 +106,11 @@
106106
<obj_property name="label">TX_DO</obj_property>
107107
<obj_property name="DisplayName">label</obj_property>
108108
<obj_property name="isExpanded"></obj_property>
109-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT_0/s_axis">
109+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT/s_axis">
110110
<obj_property name="ElementShortName">s_axis</obj_property>
111111
<obj_property name="ObjectShortName">s_axis</obj_property>
112112
</wvobject>
113-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT_0/m_axis">
113+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT/m_axis">
114114
<obj_property name="ElementShortName">m_axis</obj_property>
115115
<obj_property name="ObjectShortName">m_axis</obj_property>
116116
</wvobject>

testbenches/ip/data_offload/waves/cfg7_internal_memory.wcfg

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@
6363
<obj_property name="label">RX_DO</obj_property>
6464
<obj_property name="DisplayName">label</obj_property>
6565
<obj_property name="isExpanded"></obj_property>
66-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT_0/s_axis">
66+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT/s_axis">
6767
<obj_property name="ElementShortName">s_axis</obj_property>
6868
<obj_property name="ObjectShortName">s_axis</obj_property>
6969
</wvobject>
70-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT_0/m_axis">
70+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/RX_DUT/m_axis">
7171
<obj_property name="ElementShortName">m_axis</obj_property>
7272
<obj_property name="ObjectShortName">m_axis</obj_property>
7373
</wvobject>
@@ -76,11 +76,11 @@
7676
<obj_property name="label">RX_DMA</obj_property>
7777
<obj_property name="DisplayName">label</obj_property>
7878
<obj_property name="isExpanded"></obj_property>
79-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac_0/s_axis">
79+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac/s_axis">
8080
<obj_property name="ElementShortName">s_axis</obj_property>
8181
<obj_property name="ObjectShortName">s_axis</obj_property>
8282
</wvobject>
83-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac_0/m_dest_axi">
83+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_rx_dmac/m_dest_axi">
8484
<obj_property name="ElementShortName">m_dest_axi</obj_property>
8585
<obj_property name="ObjectShortName">m_dest_axi</obj_property>
8686
</wvobject>
@@ -93,11 +93,11 @@
9393
<obj_property name="label">TX_DMA</obj_property>
9494
<obj_property name="DisplayName">label</obj_property>
9595
<obj_property name="isExpanded"></obj_property>
96-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac_0/m_src_axi">
96+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac/m_src_axi">
9797
<obj_property name="ElementShortName">m_src_axi</obj_property>
9898
<obj_property name="ObjectShortName">m_src_axi</obj_property>
9999
</wvobject>
100-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac_0/m_axis">
100+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/i_tx_dmac/m_axis">
101101
<obj_property name="ElementShortName">m_axis</obj_property>
102102
<obj_property name="ObjectShortName">m_axis</obj_property>
103103
</wvobject>
@@ -106,11 +106,11 @@
106106
<obj_property name="label">TX_DO</obj_property>
107107
<obj_property name="DisplayName">label</obj_property>
108108
<obj_property name="isExpanded"></obj_property>
109-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT_0/s_axis">
109+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT/s_axis">
110110
<obj_property name="ElementShortName">s_axis</obj_property>
111111
<obj_property name="ObjectShortName">s_axis</obj_property>
112112
</wvobject>
113-
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT_0/m_axis">
113+
<wvobject type="protoinst" fp_name="/system_tb/test_harness/TX_DUT/m_axis">
114114
<obj_property name="ElementShortName">m_axis</obj_property>
115115
<obj_property name="ObjectShortName">m_axis</obj_property>
116116
</wvobject>

0 commit comments

Comments
 (0)