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
d1e0547b
Commit
d1e0547b
authored
10 years ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
Define g_dp_data_w as generic to be able to select mixed width or equal width FIFO.
parent
ac1d2c4c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd
+18
-14
18 additions, 14 deletions
libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd
libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd
+8
-5
8 additions, 5 deletions
libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd
with
26 additions
and
19 deletions
libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd
+
18
−
14
View file @
d1e0547b
...
@@ -50,6 +50,7 @@ ENTITY tb_io_ddr IS
...
@@ -50,6 +50,7 @@ ENTITY tb_io_ddr IS
g_ctlr_ref_clk_period
:
TIME
:
=
5
ns
;
-- 200 MHz
g_ctlr_ref_clk_period
:
TIME
:
=
5
ns
;
-- 200 MHz
g_dvr_clk_period
:
TIME
:
=
5
ns
;
-- 50 ns
g_dvr_clk_period
:
TIME
:
=
5
ns
;
-- 50 ns
g_dp_clk_period
:
TIME
:
=
5000
ps
;
-- 200 MHz
g_dp_clk_period
:
TIME
:
=
5000
ps
;
-- 200 MHz
g_dp_data_w
:
NATURAL
:
=
32
;
-- 32 for mixed width and 256 for equal width FIFO
g_nof_repeat
:
NATURAL
:
=
2
;
g_nof_repeat
:
NATURAL
:
=
2
;
g_wr_flush_mode
:
STRING
:
=
"SYN"
-- "VAL", "SOP", "SYN"
g_wr_flush_mode
:
STRING
:
=
"SYN"
-- "VAL", "SOP", "SYN"
);
);
...
@@ -75,9 +76,7 @@ ARCHITECTURE str of tb_io_ddr IS
...
@@ -75,9 +76,7 @@ ARCHITECTURE str of tb_io_ddr IS
CONSTANT
c_wr_not_rd_arr
:
STD_LOGIC_VECTOR
:
=
(
'1'
,
'1'
,
'0'
,
'1'
,
'1'
,
'0'
,
'0'
,
'0'
,
'0'
,
'1'
,
'0'
);
CONSTANT
c_wr_not_rd_arr
:
STD_LOGIC_VECTOR
:
=
(
'1'
,
'1'
,
'0'
,
'1'
,
'1'
,
'0'
,
'0'
,
'0'
,
'0'
,
'1'
,
'0'
);
CONSTANT
c_ctlr_data_w
:
NATURAL
:
=
func_tech_ddr_ctlr_data_w
(
c_tech_ddr
);
CONSTANT
c_ctlr_data_w
:
NATURAL
:
=
func_tech_ddr_ctlr_data_w
(
c_tech_ddr
);
--CONSTANT c_dp_data_w : NATURAL := 32;
CONSTANT
c_dp_factor
:
NATURAL
:
=
c_ctlr_data_w
/
g_dp_data_w
;
CONSTANT
c_dp_data_w
:
NATURAL
:
=
256
;
CONSTANT
c_dp_factor
:
NATURAL
:
=
c_ctlr_data_w
/
c_dp_data_w
;
CONSTANT
c_wr_fifo_depth
:
NATURAL
:
=
128
;
CONSTANT
c_wr_fifo_depth
:
NATURAL
:
=
128
;
CONSTANT
c_rd_fifo_depth
:
NATURAL
:
=
256
;
CONSTANT
c_rd_fifo_depth
:
NATURAL
:
=
256
;
...
@@ -104,16 +103,17 @@ ARCHITECTURE str of tb_io_ddr IS
...
@@ -104,16 +103,17 @@ ARCHITECTURE str of tb_io_ddr IS
SIGNAL
dvr_done
:
STD_LOGIC
;
SIGNAL
dvr_done
:
STD_LOGIC
;
SIGNAL
dvr_wr_not_rd
:
STD_LOGIC
;
SIGNAL
dvr_wr_not_rd
:
STD_LOGIC
;
SIGNAL
dvr_wr_flush_en
:
STD_LOGIC
;
SIGNAL
dvr_wr_flush_en
:
STD_LOGIC
;
SIGNAL
dvr_wr_fifo_usedw
:
STD_LOGIC_VECTOR
(
ceil_log2
(
c_wr_fifo_depth
*
c_dp_factor
)
-1
DOWNTO
0
);
SIGNAL
diag_wr_src_in
:
t_dp_siso
;
SIGNAL
diag_wr_src_in
:
t_dp_siso
;
SIGNAL
diag_wr_src_out
:
t_dp_sosi
;
SIGNAL
diag_wr_src_out
:
t_dp_sosi
;
SIGNAL
wr_fifo_usedw
:
STD_LOGIC_VECTOR
(
ceil_log2
(
c_wr_fifo_depth
*
c_dp_factor
)
-1
DOWNTO
0
);
SIGNAL
wr_src_out
:
t_dp_sosi
;
SIGNAL
wr_src_out
:
t_dp_sosi
;
SIGNAL
wr_val_cnt
:
NATURAL
:
=
0
;
SIGNAL
wr_val_cnt
:
NATURAL
:
=
0
;
SIGNAL
diag_rd_snk_out
:
t_dp_siso
;
SIGNAL
diag_rd_snk_out
:
t_dp_siso
;
SIGNAL
diag_rd_snk_in
:
t_dp_sosi
;
SIGNAL
diag_rd_snk_in
:
t_dp_sosi
;
SIGNAL
rd_fifo_usedw
:
STD_LOGIC_VECTOR
(
ceil_log2
(
c_rd_fifo_depth
*
c_dp_factor
)
-1
DOWNTO
0
);
SIGNAL
src_diag_en
:
STD_LOGIC
;
SIGNAL
src_diag_en
:
STD_LOGIC
;
SIGNAL
src_val_cnt
:
STD_LOGIC_VECTOR
(
31
DOWNTO
0
);
SIGNAL
src_val_cnt
:
STD_LOGIC_VECTOR
(
31
DOWNTO
0
);
...
@@ -174,7 +174,7 @@ BEGIN
...
@@ -174,7 +174,7 @@ BEGIN
proc_common_wait_some_cycles
(
dvr_clk
,
1
);
proc_common_wait_some_cycles
(
dvr_clk
,
1
);
dvr_en
<=
'0'
;
dvr_en
<=
'0'
;
-- ACCESS DONE
-- ACCESS DONE
proc_common_wait_until_lo_hi
(
dvr_clk
,
dvr_done
);
proc_common_wait_until_lo_hi
(
dvr_clk
,
dvr_done
);
IF
c_wr_not_rd_arr
(
I
)
=
'0'
THEN
IF
c_wr_not_rd_arr
(
I
)
=
'0'
THEN
...
@@ -194,8 +194,10 @@ BEGIN
...
@@ -194,8 +194,10 @@ BEGIN
proc_common_wait_some_cycles
(
dvr_clk
,
1
);
proc_common_wait_some_cycles
(
dvr_clk
,
1
);
dvr_wr_flush_en
<=
'0'
;
dvr_wr_flush_en
<=
'0'
;
proc_common_wait_some_cycles
(
ctlr_clk
,
500
);
-- Wait until the wr fifo has been flushed and the rd fifo has been read empty
ASSERT
UNSIGNED
(
dvr_wr_fifo_usedw
)
=
0
REPORT
"[ERROR] Write FIFO is flushed but not empty!"
SEVERITY
FAILURE
;
proc_common_wait_some_cycles
(
ctlr_clk
,
500
*
c_dp_factor
);
ASSERT
UNSIGNED
(
wr_fifo_usedw
)
=
0
REPORT
"[ERROR] Write FIFO is flushed but not empty!"
SEVERITY
FAILURE
;
ASSERT
UNSIGNED
(
rd_fifo_usedw
)
=
0
REPORT
"[ERROR] Read FIFO is not empty!"
SEVERITY
FAILURE
;
ASSERT
UNSIGNED
(
snk_val_cnt
)
=
expected_cnt
REPORT
"[ERROR] Unexpected number of read data!"
SEVERITY
FAILURE
;
ASSERT
UNSIGNED
(
snk_val_cnt
)
=
expected_cnt
REPORT
"[ERROR] Unexpected number of read data!"
SEVERITY
FAILURE
;
-- Restart diagnostics source and sink
-- Restart diagnostics source and sink
...
@@ -211,7 +213,7 @@ BEGIN
...
@@ -211,7 +213,7 @@ BEGIN
u_diagnostics
:
ENTITY
diagnostics_lib
.
diagnostics
u_diagnostics
:
ENTITY
diagnostics_lib
.
diagnostics
GENERIC
MAP
(
GENERIC
MAP
(
g_dat_w
=>
c
_dp_data_w
,
g_dat_w
=>
g
_dp_data_w
,
g_nof_streams
=>
1
g_nof_streams
=>
1
)
)
PORT
MAP
(
PORT
MAP
(
...
@@ -263,10 +265,10 @@ BEGIN
...
@@ -263,10 +265,10 @@ BEGIN
g_technology
=>
g_technology
,
g_technology
=>
g_technology
,
g_tech_ddr
=>
c_tech_ddr
,
g_tech_ddr
=>
c_tech_ddr
,
g_cross_domain_dvr_ctlr
=>
c_cross_domain_dvr_ctlr
,
g_cross_domain_dvr_ctlr
=>
c_cross_domain_dvr_ctlr
,
g_wr_data_w
=>
c
_dp_data_w
,
g_wr_data_w
=>
g
_dp_data_w
,
g_wr_fifo_depth
=>
c_wr_fifo_depth
,
-- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO.
g_wr_fifo_depth
=>
c_wr_fifo_depth
,
-- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO.
g_rd_fifo_depth
=>
c_rd_fifo_depth
,
-- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO.
g_rd_fifo_depth
=>
c_rd_fifo_depth
,
-- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO.
g_rd_data_w
=>
c
_dp_data_w
,
g_rd_data_w
=>
g
_dp_data_w
,
g_wr_flush_mode
=>
g_wr_flush_mode
,
g_wr_flush_mode
=>
g_wr_flush_mode
,
g_wr_flush_use_channel
=>
FALSE
,
g_wr_flush_use_channel
=>
FALSE
,
g_wr_flush_start_channel
=>
0
,
g_wr_flush_start_channel
=>
0
,
...
@@ -293,22 +295,24 @@ BEGIN
...
@@ -293,22 +295,24 @@ BEGIN
dvr_start_addr
=>
dvr_start_addr
,
dvr_start_addr
=>
dvr_start_addr
,
dvr_end_addr
=>
dvr_end_addr
,
dvr_end_addr
=>
dvr_end_addr
,
dvr_wr_flush_en
=>
dvr_wr_flush_en
,
dvr_wr_flush_en
=>
dvr_wr_flush_en
,
dvr_wr_fifo_usedw
=>
dvr_wr_fifo_usedw
,
-- Write FIFO clock domain
-- Write FIFO clock domain
wr_clk
=>
dp_clk
,
wr_clk
=>
dp_clk
,
wr_rst
=>
dp_rst
,
wr_rst
=>
dp_rst
,
wr_fifo_usedw
=>
wr_fifo_usedw
,
wr_sosi
=>
wr_src_out
,
wr_sosi
=>
wr_src_out
,
wr_siso
=>
diag_wr_src_in
,
wr_siso
=>
diag_wr_src_in
,
-- Read FIFO clock domain
-- Read FIFO clock domain
rd_sosi
=>
diag_rd_snk_in
,
rd_siso
=>
diag_rd_snk_out
,
rd_clk
=>
dp_clk
,
rd_clk
=>
dp_clk
,
rd_rst
=>
dp_rst
,
rd_rst
=>
dp_rst
,
rd_fifo_usedw
=>
rd_fifo_usedw
,
rd_sosi
=>
diag_rd_snk_in
,
rd_siso
=>
diag_rd_snk_out
,
-- DDR PHY external interface
phy_ou
=>
phy_ou
,
phy_ou
=>
phy_ou
,
phy_io
=>
phy_io
,
phy_io
=>
phy_io
,
phy_in
=>
phy_in
phy_in
=>
phy_in
...
...
This diff is collapsed.
Click to expand it.
libraries/io/ddr/tb/vhdl/tb_tb_io_ddr.vhd
+
8
−
5
View file @
d1e0547b
...
@@ -43,14 +43,17 @@ BEGIN
...
@@ -43,14 +43,17 @@ BEGIN
-- g_ctlr_ref_clk_period : TIME := 5 ns; -- 200 MHz
-- g_ctlr_ref_clk_period : TIME := 5 ns; -- 200 MHz
-- g_dvr_clk_period : TIME := 20 ns; -- 50 ns
-- g_dvr_clk_period : TIME := 20 ns; -- 50 ns
-- g_dp_clk_period : TIME := 5000 ps; -- 200 MHz
-- g_dp_clk_period : TIME := 5000 ps; -- 200 MHz
-- g_dp_data_w : NATURAL := 32; -- 32 for mixed width and 256 for equal width FIFO
-- g_nof_repeat : NATURAL := 2;
-- g_nof_repeat : NATURAL := 2;
-- g_wr_flush_mode : STRING := "SYN" -- "VAL", "SOP", "SYN"
-- g_wr_flush_mode : STRING := "SYN" -- "VAL", "SOP", "SYN"
u_fill_wrfifo_on_next_valid
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
5
ns
,
5
ns
,
2
,
"VAL"
);
u_fill_wrfifo_on_next_valid
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
5
ns
,
5
ns
,
256
,
2
,
"VAL"
);
u_fill_wrfifo_on_next_sop
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
5
ns
,
5
ns
,
2
,
"SOP"
);
u_fill_wrfifo_on_next_sop
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
5
ns
,
5
ns
,
256
,
2
,
"SOP"
);
u_fill_wrfifo_on_next_sync
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
5
ns
,
5
ns
,
2
,
"SYN"
);
u_fill_wrfifo_on_next_sync
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
5
ns
,
5
ns
,
256
,
2
,
"SYN"
);
u_cross_dvr_to_faster_ctlr
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
20
ns
,
5
ns
,
1
,
"VAL"
);
u_mixed_width
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
5
ns
,
5
ns
,
32
,
1
,
"VAL"
);
u_cross_dvr_to_slower_ctlr
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
1
ns
,
5
ns
,
1
,
"VAL"
);
u_cross_dvr_to_faster_ctlr
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
20
ns
,
5
ns
,
256
,
1
,
"VAL"
);
u_cross_dvr_to_slower_ctlr
:
ENTITY
work
.
tb_io_ddr
GENERIC
MAP
(
c_tech_select_default
,
5
ns
,
1
ns
,
5
ns
,
256
,
1
,
"VAL"
);
END
tb
;
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