Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
H
HDL
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RTSD
HDL
Commits
5d52637d
Commit
5d52637d
authored
2 years ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
Verify total counts.
parent
4d49388d
No related branches found
Branches containing commit
No related tags found
1 merge request
!288
Resolve L2SDP-836
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
libraries/io/eth/tb/vhdl/tb_eth_tester.vhd
+131
-89
131 additions, 89 deletions
libraries/io/eth/tb/vhdl/tb_eth_tester.vhd
with
131 additions
and
89 deletions
libraries/io/eth/tb/vhdl/tb_eth_tester.vhd
+
131
−
89
View file @
5d52637d
-------------------------------------------------------------------------------
--
-- Copyright 202
0
-- Copyright 202
2
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
--
...
...
@@ -20,7 +20,8 @@
-- AUthor: E. Kooistra
-- Purpose: Test bench for eth_tester
-- Description: See detailed design in [1]
-- The g_nof_streams >= 1 are tested independently.
-- The g_nof_streams >= 1 are tested independently, using g_bg_ctrl_first for
-- BG in stream 0 and g_bg_ctrl_others for all other streams.
-- Usage:
-- > as 8
-- > run -a
...
...
@@ -44,19 +45,20 @@ USE work.tb_eth_tester_pkg.ALL;
ENTITY
tb_eth_tester
IS
GENERIC
(
g_tb_str
:
STRING
:
=
""
;
g_nof_streams
:
NATURAL
:
=
2
;
-- sl: enable
-- sl: enable_sync
-- nat: samples_per_packet
-- nat: blocks_per_sync
-- nat: gapsize
-- nat: mem_low_adrs
-- nat: mem_high_adrs
-- nat: bsn_init
g_bg_ctrl_first
:
t_diag_block_gen_integer
:
=
(
'1'
,
'1'
,
50
,
8
,
100
,
0
,
30
,
0
);
-- for first stream
g_bg_ctrl_others
:
t_diag_block_gen_integer
:
=
(
'1'
,
'1'
,
30
,
8
,
10
,
0
,
30
,
0
)
-- for other streams
g_tb_str
:
STRING
:
=
""
;
-- use to distinguish logging from tb instances in tb_tb
g_nof_streams
:
NATURAL
:
=
1
;
-- t_diag_block_gen_integer =
-- sl: enable
-- sl: enable_sync
-- nat: samples_per_packet
-- nat: blocks_per_sync
-- nat: gapsize
-- nat: mem_low_adrs
-- nat: mem_high_adrs
-- nat: bsn_init
g_bg_ctrl_first
:
t_diag_block_gen_integer
:
=
(
'1'
,
'1'
,
50
,
8
,
100
,
0
,
c_diag_bg_mem_max_adr
,
0
);
-- for first stream
g_bg_ctrl_others
:
t_diag_block_gen_integer
:
=
(
'1'
,
'1'
,
30
,
8
,
10
,
0
,
c_diag_bg_mem_max_adr
,
0
)
-- for other streams
);
END
tb_eth_tester
;
...
...
@@ -71,15 +73,18 @@ ARCHITECTURE tb OF tb_eth_tester IS
CONSTANT
c_sync_period_first
:
NATURAL
:
=
c_slot_len_first
*
g_bg_ctrl_first
.
blocks_per_sync
;
CONSTANT
c_sync_period_others
:
NATURAL
:
=
c_slot_len_others
*
g_bg_ctrl_others
.
blocks_per_sync
;
CONSTANT
c_sync_period_max
:
NATURAL
:
=
largest
(
c_sync_period_first
,
c_sync_period_others
);
CONSTANT
c_nof_sync
:
NATURAL
:
=
3
;
CONSTANT
c_run_time
:
NATURAL
:
=
c_nof_sync
*
largest
(
c_sync_period_
first
,
c_sync_period_others
)
;
CONSTANT
c_run_time
:
NATURAL
:
=
c_nof_sync
*
c_sync_period_
max
;
CONSTANT
c_nof_sync_first
:
NATURAL
:
=
c_run_time
/
c_sync_period_first
;
CONSTANT
c_nof_sync_others
:
NATURAL
:
=
c_run_time
/
c_sync_period_others
;
CONSTANT
c_nof_sop_first
:
NATURAL
:
=
g_bg_ctrl_first
.
blocks_per_sync
;
CONSTANT
c_nof_sop_others
:
NATURAL
:
=
g_bg_ctrl_others
.
blocks_per_sync
;
CONSTANT
c_nof_valid_first
:
NATURAL
:
=
c_nof_sop_first
*
ceil_div
(
g_bg_ctrl_first
.
samples_per_packet
*
c_octet_w
,
c_word_w
);
CONSTANT
c_nof_valid_others
:
NATURAL
:
=
c_nof_sop_others
*
ceil_div
(
g_bg_ctrl_others
.
samples_per_packet
*
c_octet_w
,
c_word_w
);
CONSTANT
c_mon_nof_sop_first
:
NATURAL
:
=
g_bg_ctrl_first
.
blocks_per_sync
;
CONSTANT
c_mon_nof_sop_others
:
NATURAL
:
=
g_bg_ctrl_others
.
blocks_per_sync
;
CONSTANT
c_mon_nof_valid_first_tx
:
NATURAL
:
=
c_mon_nof_sop_first
*
ceil_div
(
g_bg_ctrl_first
.
samples_per_packet
*
c_octet_w
,
c_word_w
);
CONSTANT
c_mon_nof_valid_first_rx
:
NATURAL
:
=
c_mon_nof_sop_first
*
g_bg_ctrl_first
.
samples_per_packet
;
CONSTANT
c_mon_nof_valid_others_tx
:
NATURAL
:
=
c_mon_nof_sop_others
*
ceil_div
(
g_bg_ctrl_others
.
samples_per_packet
*
c_octet_w
,
c_word_w
);
CONSTANT
c_mon_nof_valid_others_rx
:
NATURAL
:
=
c_mon_nof_sop_others
*
g_bg_ctrl_others
.
samples_per_packet
;
-- Use sim default src MAC, IP, UDP port from eth_tester_pkg.vhd and based on c_gn_index
CONSTANT
c_gn_index
:
NATURAL
:
=
17
;
-- global node index
...
...
@@ -93,10 +98,8 @@ ARCHITECTURE tb OF tb_eth_tester IS
SIGNAL
st_rst
:
STD_LOGIC
:
=
'1'
;
SIGNAL
st_clk
:
STD_LOGIC
:
=
'1'
;
SIGNAL
st_pps
:
STD_LOGIC
:
=
'0'
;
SIGNAL
stimuli_end
:
STD_LOGIC
:
=
'0'
;
SIGNAL
tb_end
:
STD_LOGIC
:
=
'0'
;
SIGNAL
first_end
:
STD_LOGIC
:
=
'0'
;
SIGNAL
others_end
:
STD_LOGIC
:
=
'0'
;
-- Use same bg_ctrl for all streams, this provides sufficient test coverage
SIGNAL
bg_ctrl_arr
:
t_diag_block_gen_integer_arr
(
g_nof_streams
-1
DOWNTO
0
);
...
...
@@ -122,17 +125,31 @@ ARCHITECTURE tb OF tb_eth_tester IS
SIGNAL
reg_strobe_total_count_rx_cipo
:
t_mem_cipo
;
-- . reg_strobe_total_count
SIGNAL
tx_count_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_count_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
exp_count_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
tx_total_count_nof_packets_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_total_count_nof_packets_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
exp_total_count_nof_packets_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
-- same for both tx and rx
SIGNAL
rx_total_count_nof_valids_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_exp_total_count_nof_valids_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_total_count_nof_corrupted_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_exp_total_count_nof_corrupted_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
-- . reg_bsn_monitor_v2
SIGNAL
tx_nof_sop_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
tx_nof_valid_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
tx_latency_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_nof_sop_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_nof_valid_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_latency_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
tx_mon_nof_sop_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
tx_mon_nof_valid_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
tx_mon_latency_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_mon_nof_sop_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_mon_nof_valid_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_mon_latency_arr
:
t_natural_arr
(
g_nof_streams
-1
DOWNTO
0
);
-- View in Wave window
SIGNAL
dbg_c_mon_nof_sop_first
:
NATURAL
:
=
c_mon_nof_sop_first
;
SIGNAL
dbg_c_mon_nof_sop_others
:
NATURAL
:
=
c_mon_nof_sop_others
;
SIGNAL
dbg_c_mon_nof_valid_first_tx
:
NATURAL
:
=
c_mon_nof_valid_first_tx
;
SIGNAL
dbg_c_mon_nof_valid_first_rx
:
NATURAL
:
=
c_mon_nof_valid_first_rx
;
SIGNAL
dbg_c_mon_nof_valid_others_tx
:
NATURAL
:
=
c_mon_nof_valid_others_tx
;
SIGNAL
dbg_c_mon_nof_valid_others_rx
:
NATURAL
:
=
c_mon_nof_valid_others_rx
;
BEGIN
...
...
@@ -142,7 +159,7 @@ BEGIN
st_rst
<=
'1'
,
'0'
AFTER
st_clk_period
*
5
;
-- Using
--SIGNAL exp_
count
_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
--SIGNAL exp_
total_count_nof_packets
_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
-- (g_nof_streams-1 DOWNTO 1 => c_nof_sync * g_bg_ctrl_others.blocks_per_sync,
-- 0 => c_nof_sync * g_bg_ctrl_first.blocks_per_sync);
-- yields verror 1074, verror 1048, therefor use p_init instead, and
...
...
@@ -152,25 +169,13 @@ BEGIN
bg_ctrl_arr
<=
(
OTHERS
=>
g_bg_ctrl_others
);
bg_ctrl_arr
(
0
)
<=
g_bg_ctrl_first
;
exp_count_arr
<=
(
OTHERS
=>
c_nof_sync_others
*
g_bg_ctrl_others
.
blocks_per_sync
);
exp_count_arr
(
0
)
<=
c_nof_sync_first
*
g_bg_ctrl_first
.
blocks_per_sync
;
WAIT
;
END
PROCESS
;
exp_total_count_nof_packets_arr
<=
(
OTHERS
=>
c_nof_sync_others
*
g_bg_ctrl_others
.
blocks_per_sync
);
exp_total_count_nof_packets_arr
(
0
)
<=
c_nof_sync_first
*
g_bg_ctrl_first
.
blocks_per_sync
;
-- Timing signals to run each BG for c_nof_sync periods
p_first_end
:
PROCESS
BEGIN
proc_common_wait_until_high
(
st_clk
,
st_pps
);
proc_common_wait_some_cycles
(
st_clk
,
c_sync_period_first
*
c_nof_sync
);
first_end
<=
'1'
;
WAIT
;
END
PROCESS
;
rx_exp_total_count_nof_valids_arr
<=
(
OTHERS
=>
c_nof_sync_others
*
g_bg_ctrl_others
.
blocks_per_sync
*
g_bg_ctrl_others
.
samples_per_packet
);
rx_exp_total_count_nof_valids_arr
(
0
)
<=
c_nof_sync_first
*
g_bg_ctrl_first
.
blocks_per_sync
*
g_bg_ctrl_first
.
samples_per_packet
;
p_others_end
:
PROCESS
BEGIN
proc_common_wait_until_high
(
st_clk
,
st_pps
);
proc_common_wait_some_cycles
(
st_clk
,
c_sync_period_others
*
c_nof_sync
);
others_end
<=
'1'
;
rx_exp_total_count_nof_corrupted_arr
<=
(
OTHERS
=>
0
);
-- default no Rx errors
WAIT
;
END
PROCESS
;
...
...
@@ -212,31 +217,69 @@ BEGIN
-- Disable the other BG
proc_mem_mm_bus_wr
(
v_offset
+
0
,
0
,
mm_clk
,
reg_bg_ctrl_copi
);
END
LOOP
;
proc_common_wait_some_cycles
(
mm_clk
,
100
);
proc_common_wait_some_cycles
(
st_clk
,
c_sync_period_max
);
stimuli_end
<=
'1'
;
-------------------------------------------------------------------------
-- Verification: Total nof Tx packets = total nof Rx packets
-------------------------------------------------------------------------
FOR
I
IN
g_nof_streams
-1
DOWNTO
0
LOOP
-- . read low part, ignore high part (= 0) of two word total counts
v_offset
:
=
I
*
c_dp_strobe_total_count_reg_adr_span
;
-- . read low part, ignore high part (= 0)
-- . Tx
-- Tx total nof packets
proc_mem_mm_bus_rd
(
v_offset
+
0
,
mm_clk
,
reg_strobe_total_count_tx_cipo
,
reg_strobe_total_count_tx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
tx_count_arr
(
I
)
<=
TO_UINT
(
reg_strobe_total_count_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
-- . Rx
tx_total_count_nof_packets_arr
(
I
)
<=
TO_UINT
(
reg_strobe_total_count_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_common_wait_some_cycles
(
mm_clk
,
1
);
ASSERT
tx_total_count_nof_packets_arr
(
I
)
=
exp_total_count_nof_packets_arr
(
I
)
REPORT
g_tb_str
&
"Wrong Tx total nof packets count("
&
NATURAL
'IMAGE
(
I
)
&
"), Tx count = "
&
NATURAL
'IMAGE
(
tx_total_count_nof_packets_arr
(
I
))
&
" /= "
&
NATURAL
'IMAGE
(
exp_total_count_nof_packets_arr
(
I
))
&
" = Expected count"
SEVERITY
ERROR
;
-- Rx total nof packets
proc_mem_mm_bus_rd
(
v_offset
+
0
,
mm_clk
,
reg_strobe_total_count_rx_cipo
,
reg_strobe_total_count_rx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rx_count_arr
(
I
)
<=
TO_UINT
(
reg_strobe_total_count_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
rx_total_count_nof_packets_arr
(
I
)
<=
TO_UINT
(
reg_strobe_total_count_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_common_wait_some_cycles
(
mm_clk
,
1
);
ASSERT
rx_total_count_nof_packets_arr
(
I
)
=
exp_total_count_nof_packets_arr
(
I
)
REPORT
g_tb_str
&
"Wrong Rx total nof packets count("
&
NATURAL
'IMAGE
(
I
)
&
"), Rx count = "
&
NATURAL
'IMAGE
(
rx_total_count_nof_packets_arr
(
I
))
&
" /= "
&
NATURAL
'IMAGE
(
exp_total_count_nof_packets_arr
(
I
))
&
" = Expected count"
SEVERITY
ERROR
;
-- Rx total nof valids
proc_mem_mm_bus_rd
(
v_offset
+
2
,
mm_clk
,
reg_strobe_total_count_rx_cipo
,
reg_strobe_total_count_rx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rx_total_count_nof_valids_arr
(
I
)
<=
TO_UINT
(
reg_strobe_total_count_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_common_wait_some_cycles
(
mm_clk
,
1
);
ASSERT
rx_total_count_nof_valids_arr
(
I
)
=
rx_exp_total_count_nof_valids_arr
(
I
)
REPORT
g_tb_str
&
"Wrong Rx total nof valids count("
&
NATURAL
'IMAGE
(
I
)
&
"), Rx count = "
&
NATURAL
'IMAGE
(
rx_total_count_nof_valids_arr
(
I
))
&
" /= "
&
NATURAL
'IMAGE
(
rx_exp_total_count_nof_valids_arr
(
I
))
&
" = Expected count"
SEVERITY
ERROR
;
-- Rx total nof corrupted
proc_mem_mm_bus_rd
(
v_offset
+
4
,
mm_clk
,
reg_strobe_total_count_rx_cipo
,
reg_strobe_total_count_rx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rx_total_count_nof_corrupted_arr
(
I
)
<=
TO_UINT
(
reg_strobe_total_count_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_common_wait_some_cycles
(
mm_clk
,
1
);
ASSERT
rx_count_arr
(
I
)
=
tx_count_arr
(
I
)
REPORT
g_tb_str
&
"Wrong total block count("
&
NATURAL
'IMAGE
(
I
)
&
"), Rx count = "
&
NATURAL
'IMAGE
(
rx_count_arr
(
I
))
&
" /= "
&
NATURAL
'IMAGE
(
tx_count_arr
(
I
))
&
" = Tx count"
SEVERITY
ERROR
;
ASSERT
rx_count_arr
(
I
)
=
exp_count_arr
(
I
)
REPORT
g_tb_str
&
"Wrong total block count("
&
NATURAL
'IMAGE
(
I
)
&
"), Rx count = "
&
NATURAL
'IMAGE
(
rx_count_arr
(
I
))
&
" /= "
&
NATURAL
'IMAGE
(
exp_count_arr
(
I
))
&
" = Expected count"
SEVERITY
ERROR
;
ASSERT
rx_total_count_nof_corrupted_arr
(
I
)
=
rx_exp_total_count_nof_corrupted_arr
(
I
)
REPORT
g_tb_str
&
"Wrong Rx total nof corrupted count("
&
NATURAL
'IMAGE
(
I
)
&
"), Rx count = "
&
NATURAL
'IMAGE
(
rx_total_count_nof_corrupted_arr
(
I
))
&
" /= "
&
NATURAL
'IMAGE
(
rx_exp_total_count_nof_corrupted_arr
(
I
))
&
" = Expected count"
SEVERITY
ERROR
;
print_str
(
g_tb_str
&
"Tx total counts monitor("
&
NATURAL
'IMAGE
(
I
)
&
") :"
&
" nof_packets = "
&
NATURAL
'IMAGE
(
tx_total_count_nof_packets_arr
(
I
)));
print_str
(
g_tb_str
&
"Rx total counts monitor("
&
NATURAL
'IMAGE
(
I
)
&
") :"
&
" nof_packets = "
&
NATURAL
'IMAGE
(
rx_total_count_nof_packets_arr
(
I
))
&
", nof_valids = "
&
NATURAL
'IMAGE
(
rx_total_count_nof_valids_arr
(
I
))
&
", nof_corrupted = "
&
NATURAL
'IMAGE
(
rx_total_count_nof_corrupted_arr
(
I
)));
END
LOOP
;
-------------------------------------------------------------------------
...
...
@@ -250,53 +293,52 @@ BEGIN
-- . Tx
proc_mem_mm_bus_rd
(
v_offset
+
3
,
mm_clk
,
reg_bsn_monitor_v2_tx_cipo
,
reg_bsn_monitor_v2_tx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
tx_nof_sop_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
tx_
mon_
nof_sop_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_mem_mm_bus_rd
(
v_offset
+
4
,
mm_clk
,
reg_bsn_monitor_v2_tx_cipo
,
reg_bsn_monitor_v2_tx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
tx_nof_valid_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
tx_
mon_
nof_valid_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_mem_mm_bus_rd
(
v_offset
+
6
,
mm_clk
,
reg_bsn_monitor_v2_tx_cipo
,
reg_bsn_monitor_v2_tx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
tx_latency_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
tx_
mon_
latency_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_tx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
-- . Rx
proc_mem_mm_bus_rd
(
v_offset
+
3
,
mm_clk
,
reg_bsn_monitor_v2_rx_cipo
,
reg_bsn_monitor_v2_rx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rx_nof_sop_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
rx_
mon_
nof_sop_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_mem_mm_bus_rd
(
v_offset
+
4
,
mm_clk
,
reg_bsn_monitor_v2_rx_cipo
,
reg_bsn_monitor_v2_rx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rx_nof_valid_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
rx_
mon_
nof_valid_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_mem_mm_bus_rd
(
v_offset
+
6
,
mm_clk
,
reg_bsn_monitor_v2_rx_cipo
,
reg_bsn_monitor_v2_rx_copi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rx_latency_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
rx_
mon_
latency_arr
(
I
)
<=
TO_UINT
(
reg_bsn_monitor_v2_rx_cipo
.
rddata
(
c_word_w
-1
DOWNTO
0
));
proc_common_wait_some_cycles
(
mm_clk
,
1
);
print_str
(
g_tb_str
&
"Tx BSN monitor("
&
NATURAL
'IMAGE
(
I
)
&
") :"
&
",
nof_sop = "
&
NATURAL
'IMAGE
(
tx_nof_sop_arr
(
I
))
&
", nof_valid = "
&
NATURAL
'IMAGE
(
tx_nof_valid_arr
(
I
))
&
", latency = "
&
NATURAL
'IMAGE
(
tx_latency_arr
(
I
)));
"Tx BSN monitor("
&
NATURAL
'IMAGE
(
I
)
&
") :"
&
"
nof_sop = "
&
NATURAL
'IMAGE
(
tx_
mon_
nof_sop_arr
(
I
))
&
", nof_valid = "
&
NATURAL
'IMAGE
(
tx_
mon_
nof_valid_arr
(
I
))
&
", latency = "
&
NATURAL
'IMAGE
(
tx_
mon_
latency_arr
(
I
)));
print_str
(
g_tb_str
&
"Rx BSN monitor("
&
NATURAL
'IMAGE
(
I
)
&
") :"
&
",
nof_sop = "
&
NATURAL
'IMAGE
(
rx_nof_sop_arr
(
I
))
&
", nof_valid = "
&
NATURAL
'IMAGE
(
rx_nof_valid_arr
(
I
))
&
", latency = "
&
NATURAL
'IMAGE
(
rx_latency_arr
(
I
)));
"Rx BSN monitor("
&
NATURAL
'IMAGE
(
I
)
&
") :"
&
"
nof_sop = "
&
NATURAL
'IMAGE
(
rx_
mon_
nof_sop_arr
(
I
))
&
", nof_valid = "
&
NATURAL
'IMAGE
(
rx_
mon_
nof_valid_arr
(
I
))
&
", latency = "
&
NATURAL
'IMAGE
(
rx_
mon_
latency_arr
(
I
)));
IF
I
=
0
THEN
ASSERT
tx_nof_sop_arr
(
I
)
=
g_bg_ctrl_first
.
blocks_per_sync
REPORT
g_tb_str
&
"Wrong tx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_nof_sop_arr
(
I
)
=
g_bg_ctrl_first
.
blocks_per_sync
REPORT
g_tb_str
&
"Wrong rx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_nof_valid_arr
(
I
)
=
c_nof_valid_first
REPORT
g_tb_str
&
"Wrong tx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_nof_valid_arr
(
I
)
=
c_nof_valid_first
REPORT
g_tb_str
&
"Wrong rx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_latency_arr
(
I
)
=
0
REPORT
g_tb_str
&
"Wrong tx latency for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_
mon_
nof_sop_arr
(
I
)
=
c_mon_nof_sop_first
REPORT
g_tb_str
&
"Wrong tx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_
mon_
nof_sop_arr
(
I
)
=
c_mon_nof_sop_first
REPORT
g_tb_str
&
"Wrong rx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_
mon_
nof_valid_arr
(
I
)
=
c_
mon_
nof_valid_first
_tx
REPORT
g_tb_str
&
"Wrong tx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_
mon_
nof_valid_arr
(
I
)
=
c_
mon_
nof_valid_first
_rx
REPORT
g_tb_str
&
"Wrong rx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_
mon_
latency_arr
(
I
)
=
0
REPORT
g_tb_str
&
"Wrong tx latency for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ELSE
ASSERT
tx_nof_sop_arr
(
I
)
=
g_bg_ctrl_others
.
blocks_per_sync
REPORT
g_tb_str
&
"Wrong tx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_nof_sop_arr
(
I
)
=
g_bg_ctrl_others
.
blocks_per_sync
REPORT
g_tb_str
&
"Wrong rx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_nof_valid_arr
(
I
)
=
c_nof_valid_others
REPORT
g_tb_str
&
"Wrong tx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_nof_valid_arr
(
I
)
=
c_nof_valid_others
REPORT
g_tb_str
&
"Wrong rx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_latency_arr
(
I
)
=
22
REPORT
g_tb_str
&
"Wrong rx latency for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_
mon_
nof_sop_arr
(
I
)
=
c_mon_nof_sop_others
REPORT
g_tb_str
&
"Wrong tx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_
mon_
nof_sop_arr
(
I
)
=
c_mon_nof_sop_others
REPORT
g_tb_str
&
"Wrong rx nof_sop for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
tx_
mon_
nof_valid_arr
(
I
)
=
c_
mon_
nof_valid_others
_tx
REPORT
g_tb_str
&
"Wrong tx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_
mon_
nof_valid_arr
(
I
)
=
c_
mon_
nof_valid_others
_rx
REPORT
g_tb_str
&
"Wrong rx nof_valid for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
ASSERT
rx_
mon_
latency_arr
(
I
)
=
22
REPORT
g_tb_str
&
"Wrong rx latency for stream ("
&
NATURAL
'IMAGE
(
I
)
&
")"
SEVERITY
ERROR
;
END
IF
;
END
LOOP
;
-------------------------------------------------------------------------
-- End of test
-------------------------------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment