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
2c2c7df8
Commit
2c2c7df8
authored
10 years ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
Added tb_diag_pkg.vhd and multi tb_tb_mms_diag_seq.vhd
parent
5476475b
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
libraries/base/diag/tb/vhdl/tb_diag_pkg.vhd
+308
-0
308 additions, 0 deletions
libraries/base/diag/tb/vhdl/tb_diag_pkg.vhd
libraries/base/diag/tb/vhdl/tb_tb_mms_diag_seq.vhd
+45
-0
45 additions, 0 deletions
libraries/base/diag/tb/vhdl/tb_tb_mms_diag_seq.vhd
with
353 additions
and
0 deletions
libraries/base/diag/tb/vhdl/tb_diag_pkg.vhd
0 → 100644
+
308
−
0
View file @
2c2c7df8
--------------------------------------------------------------------------------
--
-- Copyright (C) 2015
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/>
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
--------------------------------------------------------------------------------
-- Purpose: Test bench package for diag library
LIBRARY
IEEE
,
common_lib
,
dp_lib
;
USE
IEEE
.
std_logic_1164
.
ALL
;
USE
IEEE
.
numeric_std
.
ALL
;
USE
common_lib
.
common_pkg
.
ALL
;
USE
common_lib
.
common_mem_pkg
.
ALL
;
USE
common_lib
.
tb_common_mem_pkg
.
ALL
;
USE
common_lib
.
tb_common_pkg
.
ALL
;
USE
dp_lib
.
dp_stream_pkg
.
ALL
;
USE
dp_lib
.
tb_dp_pkg
.
ALL
;
USE
work
.
diag_pkg
.
ALL
;
PACKAGE
tb_diag_pkg
IS
-- Test modes for diag seq
TYPE
t_tb_diag_seq_mode_enum
IS
(
s_off
,
s_expect_ok
,
s_expect_error
,
s_expect_no_result
);
PROCEDURE
proc_diag_seq_read_all
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
);
-- read all MM reg
PROCEDURE
proc_diag_seq_tx_enable
(
CONSTANT
c_stream
:
IN
NATURAL
;
CONSTANT
c_pattern
:
IN
STRING
;
-- "PSRG", "CNTR"
CONSTANT
c_tx_init
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
);
-- read all MM reg
PROCEDURE
proc_diag_seq_rx_enable
(
CONSTANT
c_stream
:
IN
NATURAL
;
CONSTANT
c_pattern
:
IN
STRING
;
-- "PSRG", "CNTR"
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
);
-- read all MM reg
PROCEDURE
proc_diag_seq_tx_disable
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
);
-- read all MM reg
PROCEDURE
proc_diag_seq_rx_disable
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
);
-- read all MM reg
PROCEDURE
proc_diag_seq_verify
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
tb_mode
:
INOUT
t_tb_diag_seq_mode_enum
;
SIGNAL
tb_verify
:
OUT
STD_LOGIC
;
SIGNAL
rd_reg
:
INOUT
t_diag_seq_mm_reg
);
-- read all MM reg
END
tb_diag_pkg
;
PACKAGE
BODY
tb_diag_pkg
IS
PROCEDURE
proc_diag_seq_read_all
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
)
IS
-- read all MM reg
CONSTANT
c_tx_offset
:
NATURAL
:
=
c_stream
*
2
**
c_diag_seq_tx_reg_adr_w
;
CONSTANT
c_rx_offset
:
NATURAL
:
=
c_stream
*
2
**
c_diag_seq_rx_reg_adr_w
;
BEGIN
---------------------------------------------------------------------------
-- Readback ctrl
---------------------------------------------------------------------------
-- . read back Tx data init
proc_mem_mm_bus_rd
(
c_tx_offset
+
1
,
mm_clk
,
tx_miso
,
tx_mosi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rd_reg
.
tx_init
<=
tx_miso
.
rddata
(
c_word_w
-1
DOWNTO
0
);
-- . read back Tx control
proc_mem_mm_bus_rd
(
c_tx_offset
+
0
,
mm_clk
,
tx_miso
,
tx_mosi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rd_reg
.
tx_ctrl
<=
tx_miso
.
rddata
(
c_word_w
-1
DOWNTO
0
);
-- . read back Rx control
proc_mem_mm_bus_rd
(
c_rx_offset
+
0
,
mm_clk
,
rx_miso
,
rx_mosi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rd_reg
.
rx_ctrl
<=
rx_miso
.
rddata
(
c_word_w
-1
DOWNTO
0
);
---------------------------------------------------------------------------
-- Read cnt and stat
---------------------------------------------------------------------------
-- . read rx_stat
proc_mem_mm_bus_rd
(
c_rx_offset
+
1
,
mm_clk
,
rx_miso
,
rx_mosi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rd_reg
.
rx_stat
<=
rx_miso
.
rddata
(
c_word_w
-1
DOWNTO
0
);
-- . read rx_cnt
proc_mem_mm_bus_rd
(
c_rx_offset
+
2
,
mm_clk
,
rx_miso
,
rx_mosi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rd_reg
.
rx_cnt
<=
rx_miso
.
rddata
(
c_word_w
-1
DOWNTO
0
);
-- . read tx_cnt
proc_mem_mm_bus_rd
(
c_tx_offset
+
2
,
mm_clk
,
tx_miso
,
tx_mosi
);
proc_mem_mm_bus_rd_latency
(
1
,
mm_clk
);
rd_reg
.
tx_cnt
<=
tx_miso
.
rddata
(
c_word_w
-1
DOWNTO
0
);
END
proc_diag_seq_read_all
;
PROCEDURE
proc_diag_seq_tx_enable
(
CONSTANT
c_stream
:
IN
NATURAL
;
CONSTANT
c_pattern
:
IN
STRING
;
-- "PSRG", "CNTR"
CONSTANT
c_tx_init
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
)
IS
-- read all MM reg
CONSTANT
c_tx_offset
:
NATURAL
:
=
c_stream
*
2
**
c_diag_seq_tx_reg_adr_w
;
CONSTANT
c_en
:
NATURAL
:
=
1
;
VARIABLE
v_sel
:
NATURAL
;
VARIABLE
v_ctlr
:
NATURAL
;
BEGIN
IF
c_pattern
=
"PSRG"
THEN
v_sel
:
=
0
;
-- pseudo random data
ELSE
v_sel
:
=
1
;
-- counter data
END
IF
;
v_ctlr
:
=
v_sel
*
2
+
c_en
;
-- bits [1:0]
-- Enable Tx
proc_mem_mm_bus_wr
(
c_tx_offset
+
0
,
v_ctlr
,
mm_clk
,
tx_miso
,
tx_mosi
);
proc_mem_mm_bus_wr
(
c_tx_offset
+
1
,
c_tx_init
,
mm_clk
,
tx_miso
,
tx_mosi
);
proc_common_wait_some_cycles
(
mm_clk
,
dp_clk
,
10
);
-- wait for clock domain crossing
proc_diag_seq_read_all
(
c_stream
,
mm_clk
,
tx_miso
,
tx_mosi
,
rx_miso
,
rx_mosi
,
rd_reg
);
END
proc_diag_seq_tx_enable
;
PROCEDURE
proc_diag_seq_rx_enable
(
CONSTANT
c_stream
:
IN
NATURAL
;
CONSTANT
c_pattern
:
IN
STRING
;
-- "PSRG", "CNTR"
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
)
IS
-- read all MM reg
CONSTANT
c_rx_offset
:
NATURAL
:
=
c_stream
*
2
**
c_diag_seq_rx_reg_adr_w
;
CONSTANT
c_en
:
NATURAL
:
=
1
;
VARIABLE
v_sel
:
NATURAL
;
VARIABLE
v_ctlr
:
NATURAL
;
BEGIN
IF
c_pattern
=
"PSRG"
THEN
v_sel
:
=
0
;
-- pseudo random data
ELSE
v_sel
:
=
1
;
-- counter data
END
IF
;
v_ctlr
:
=
v_sel
*
2
+
c_en
;
-- bits [1:0]
proc_mem_mm_bus_wr
(
c_rx_offset
+
0
,
v_ctlr
,
mm_clk
,
rx_miso
,
rx_mosi
);
proc_common_wait_some_cycles
(
mm_clk
,
dp_clk
,
10
);
-- wait for clock domain crossing
proc_diag_seq_read_all
(
c_stream
,
mm_clk
,
tx_miso
,
tx_mosi
,
rx_miso
,
rx_mosi
,
rd_reg
);
END
proc_diag_seq_rx_enable
;
PROCEDURE
proc_diag_seq_tx_disable
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
)
IS
-- read all MM reg
CONSTANT
c_tx_offset
:
NATURAL
:
=
c_stream
*
2
**
c_diag_seq_tx_reg_adr_w
;
BEGIN
proc_mem_mm_bus_wr
(
c_tx_offset
+
0
,
0
,
mm_clk
,
tx_miso
,
tx_mosi
);
proc_common_wait_some_cycles
(
mm_clk
,
dp_clk
,
10
);
-- wait for clock domain crossing
proc_diag_seq_read_all
(
c_stream
,
mm_clk
,
tx_miso
,
tx_mosi
,
rx_miso
,
rx_mosi
,
rd_reg
);
END
proc_diag_seq_tx_disable
;
PROCEDURE
proc_diag_seq_rx_disable
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
dp_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
-- tx ctrl
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
-- rx ctrl
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rd_reg
:
OUT
t_diag_seq_mm_reg
)
IS
-- read all MM reg
CONSTANT
c_rx_offset
:
NATURAL
:
=
c_stream
*
2
**
c_diag_seq_rx_reg_adr_w
;
BEGIN
proc_mem_mm_bus_wr
(
c_rx_offset
+
0
,
0
,
mm_clk
,
rx_miso
,
rx_mosi
);
proc_common_wait_some_cycles
(
mm_clk
,
dp_clk
,
10
);
-- wait for clock domain crossing
proc_diag_seq_read_all
(
c_stream
,
mm_clk
,
tx_miso
,
tx_mosi
,
rx_miso
,
rx_mosi
,
rd_reg
);
END
proc_diag_seq_rx_disable
;
PROCEDURE
proc_diag_seq_verify
(
CONSTANT
c_stream
:
IN
NATURAL
;
SIGNAL
mm_clk
:
IN
STD_LOGIC
;
SIGNAL
tx_miso
:
IN
t_mem_miso
;
SIGNAL
tx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
rx_miso
:
IN
t_mem_miso
;
SIGNAL
rx_mosi
:
OUT
t_mem_mosi
;
SIGNAL
tb_mode
:
INOUT
t_tb_diag_seq_mode_enum
;
SIGNAL
tb_verify
:
OUT
STD_LOGIC
;
SIGNAL
rd_reg
:
INOUT
t_diag_seq_mm_reg
)
IS
-- read all MM reg
VARIABLE
v_rx_stat
:
STD_LOGIC_VECTOR
(
c_word_w
-1
DOWNTO
0
);
VARIABLE
v_rx_cnt
:
NATURAL
;
VARIABLE
v_tx_cnt
:
NATURAL
;
BEGIN
-- Read all
proc_diag_seq_read_all
(
c_stream
,
mm_clk
,
tx_miso
,
tx_mosi
,
rx_miso
,
rx_mosi
,
rd_reg
);
proc_common_wait_some_cycles
(
mm_clk
,
1
);
v_rx_stat
:
=
rd_reg
.
rx_stat
;
v_rx_cnt
:
=
TO_UINT
(
rd_reg
.
rx_cnt
);
v_tx_cnt
:
=
TO_UINT
(
rd_reg
.
tx_cnt
);
-- Issue tb_verify pulse eg. to easy recognition in Wave window
tb_verify
<=
'1'
;
proc_common_wait_some_cycles
(
mm_clk
,
1
);
tb_verify
<=
'0'
;
-- Verify
IF
tb_mode
=
s_expect_ok
THEN
IF
v_rx_stat
(
1
)
/=
'0'
THEN
REPORT
"Wrong diag result: no valid result."
SEVERITY
ERROR
;
ELSIF
v_rx_stat
(
0
)
/=
'0'
THEN
REPORT
"Wrong diag result: one or more data errors."
SEVERITY
ERROR
;
END
IF
;
-- Read rx_cnt and tx_cnt again after some cycles
proc_diag_seq_read_all
(
c_stream
,
mm_clk
,
tx_miso
,
tx_mosi
,
rx_miso
,
rx_mosi
,
rd_reg
);
proc_common_wait_some_cycles
(
mm_clk
,
1
);
IF
v_rx_cnt
=
0
THEN
REPORT
"Wrong diag result: rx_cnt = 0."
SEVERITY
ERROR
;
ELSIF
v_rx_cnt
>=
TO_UINT
(
rd_reg
.
rx_cnt
)
THEN
REPORT
"Wrong diag result: rx_cnt did not increase."
SEVERITY
ERROR
;
END
IF
;
IF
v_tx_cnt
=
0
THEN
REPORT
"Wrong diag result: tx_cnt = 0."
SEVERITY
ERROR
;
ELSIF
v_tx_cnt
>=
TO_UINT
(
rd_reg
.
tx_cnt
)
THEN
REPORT
"Wrong diag result: tx_cnt did not increase."
SEVERITY
ERROR
;
END
IF
;
ELSIF
tb_mode
=
s_expect_error
THEN
IF
v_rx_stat
(
1
)
/=
'0'
THEN
REPORT
"Wrong diag result: no valid result."
SEVERITY
ERROR
;
ELSIF
v_rx_stat
(
0
)
/=
'1'
THEN
REPORT
"Wrong diag result: must detect data errors."
SEVERITY
ERROR
;
END
IF
;
IF
v_rx_cnt
=
0
THEN
REPORT
"Wrong diag result: rx_cnt = 0."
SEVERITY
ERROR
;
END
IF
;
IF
v_tx_cnt
=
0
THEN
REPORT
"Wrong diag result: tx_cnt = 0."
SEVERITY
ERROR
;
END
IF
;
ELSIF
tb_mode
=
s_expect_no_result
THEN
IF
v_rx_stat
(
1
)
/=
'1'
THEN
REPORT
"Wrong diag result: must indicate no valid result."
SEVERITY
ERROR
;
END
IF
;
IF
v_rx_cnt
/=
0
THEN
REPORT
"Wrong diag result: rx_cnt /= 0."
SEVERITY
ERROR
;
END
IF
;
ELSIF
tb_mode
=
s_off
THEN
IF
v_rx_cnt
/=
0
THEN
REPORT
"Wrong diag result: rx_cnt /= 0."
SEVERITY
ERROR
;
END
IF
;
IF
v_tx_cnt
/=
0
THEN
REPORT
"Wrong diag result: tx_cnt /= 0."
SEVERITY
ERROR
;
END
IF
;
ELSE
REPORT
"Unknown verify mode"
SEVERITY
FAILURE
;
END
IF
;
END
proc_diag_seq_verify
;
END
tb_diag_pkg
;
This diff is collapsed.
Click to expand it.
libraries/base/diag/tb/vhdl/tb_tb_mms_diag_seq.vhd
0 → 100644
+
45
−
0
View file @
2c2c7df8
-------------------------------------------------------------------------------
--
-- Copyright (C) 2014
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/>
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-------------------------------------------------------------------------------
LIBRARY
IEEE
,
dp_lib
;
USE
IEEE
.
std_logic_1164
.
ALL
;
USE
dp_lib
.
tb_dp_pkg
.
ALL
;
ENTITY
tb_tb_mms_diag_seq
IS
END
tb_tb_mms_diag_seq
;
ARCHITECTURE
tb
OF
tb_tb_mms_diag_seq
IS
BEGIN
-- g_flow_control_verify : t_dp_flow_control_enum := e_active; -- always active or random flow control
-- g_nof_streams : NATURAL := 2;
-- g_mm_broadcast_tx : BOOLEAN := TRUE;
-- g_data_w : NATURAL := 40; -- >= g_seq_dat_w
-- g_seq_dat_w : NATURAL := 32
u_1_mm_equal_dat_w
:
ENTITY
work
.
tb_mms_diag_seq
GENERIC
MAP
(
e_active
,
1
,
FALSE
,
32
,
32
);
u_1_mm_random
:
ENTITY
work
.
tb_mms_diag_seq
GENERIC
MAP
(
e_random
,
1
,
FALSE
,
40
,
32
);
u_2_mm_broadcast
:
ENTITY
work
.
tb_mms_diag_seq
GENERIC
MAP
(
e_active
,
2
,
TRUE
,
40
,
32
);
u_2_mm_multiplex
:
ENTITY
work
.
tb_mms_diag_seq
GENERIC
MAP
(
e_active
,
2
,
FALSE
,
40
,
32
);
END
tb
;
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