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
307989b4
Commit
307989b4
authored
9 years ago
by
Pepping
Browse files
Options
Downloads
Patches
Plain Diff
MOdified the output format
parent
ee86e310
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
libraries/base/reorder/tb/python/tc_reorder_transpose.py
+24
-15
24 additions, 15 deletions
libraries/base/reorder/tb/python/tc_reorder_transpose.py
libraries/base/reorder/tb/vhdl/tb_reorder_transpose.vhd
+27
-9
27 additions, 9 deletions
libraries/base/reorder/tb/vhdl/tb_reorder_transpose.vhd
with
51 additions
and
24 deletions
libraries/base/reorder/tb/python/tc_reorder_transpose.py
+
24
−
15
View file @
307989b4
...
@@ -39,6 +39,7 @@ import unb_apertif as apr
...
@@ -39,6 +39,7 @@ import unb_apertif as apr
import
pi_diag_block_gen
import
pi_diag_block_gen
import
pi_diag_data_buffer
import
pi_diag_data_buffer
import
pi_ss_ss_wide
import
pi_ss_ss_wide
import
pi_io_ddr
import
dsp_test
import
dsp_test
import
sys
,
os
import
sys
,
os
...
@@ -60,12 +61,14 @@ tc = test_case.Testcase('TB - ', '')
...
@@ -60,12 +61,14 @@ tc = test_case.Testcase('TB - ', '')
# Constants/Generics that are shared between VHDL and Python
# Constants/Generics that are shared between VHDL and Python
# Name Value Default Description
# Name Value Default Description
# START_VHDL_GENERICS
# START_VHDL_GENERICS
g_wr_chunksize
=
2
56
g_wr_chunksize
=
2
40
g_rd_chunksize
=
16
g_rd_chunksize
=
16
g_rd_nof_chunks
=
1
6
g_rd_nof_chunks
=
1
5
g_rd_interval
=
16
g_rd_interval
=
16
g_gapsize
=
0
g_gapsize
=
0
g_nof_blocks
=
32
g_nof_blocks
=
32
g_frame_size_in
=
256
g_frame_sie_out
=
128
# END_VHDL_GENERICS
# END_VHDL_GENERICS
# Overwrite generics with argumented generics from autoscript or command line.
# Overwrite generics with argumented generics from autoscript or command line.
...
@@ -76,16 +79,18 @@ if tc.generics != None:
...
@@ -76,16 +79,18 @@ if tc.generics != None:
g_rd_interval
=
tc
.
generics
[
'
g_rd_interval
'
]
g_rd_interval
=
tc
.
generics
[
'
g_rd_interval
'
]
g_gapsize
=
tc
.
generics
[
'
g_gapsize
'
]
g_gapsize
=
tc
.
generics
[
'
g_gapsize
'
]
g_nof_blocks
=
tc
.
generics
[
'
g_nof_blocks
'
]
g_nof_blocks
=
tc
.
generics
[
'
g_nof_blocks
'
]
g_frame_size_in
=
tc
.
generics
[
'
g_frame_size_in
'
]
g_frame_size_out
=
tc
.
generics
[
'
g_frame_size_out
'
]
c_blocksize
=
(
g_wr_chunksize
+
g_gapsize
)
c_blocksize
=
(
g_wr_chunksize
+
g_gapsize
)
c_pagesize
=
c_blocksize
*
g_nof_blocks
c_pagesize
=
c_blocksize
*
g_nof_blocks
c_ss_pagesize
=
g_frame_size_in
*
g_rd_chunksize
c_rd_increment
=
g_rd_interval
*
c_blocksize
c_rd_increment
=
g_rd_interval
*
c_blocksize
c_bg_nof_streams
=
4
c_bg_nof_streams
=
4
c_bg_ram_size
=
g_
wr_chunk
size
*
g_nof_blocks
c_bg_ram_size
=
g_
frame_
size
_in
*
g_nof_blocks
c_in_dat_w
=
8
c_in_dat_w
=
8
c_db_nof_streams
=
c_bg_nof_streams
c_db_nof_streams
=
c_bg_nof_streams
c_db_ram_size
=
c_bg_ram_size
c_db_ram_size
=
c_bg_ram_size
c_frame_size
=
g_wr_chunksize
c_nof_int_streams
=
1
c_nof_int_streams
=
1
c_ena_pre_transpose
=
True
c_ena_pre_transpose
=
True
c_gap_size
=
0
#g_rd_chunksize
c_gap_size
=
0
#g_rd_chunksize
...
@@ -110,7 +115,10 @@ db_re = pi_diag_data_buffer.PiDiagDataBuffer(tc, io, instanceName = 'REAL', nofS
...
@@ -110,7 +115,10 @@ db_re = pi_diag_data_buffer.PiDiagDataBuffer(tc, io, instanceName = 'REAL', nofS
db_im
=
pi_diag_data_buffer
.
PiDiagDataBuffer
(
tc
,
io
,
instanceName
=
'
IMAG
'
,
nofStreams
=
c_db_nof_streams
,
ramSizePerStream
=
c_db_ram_size
)
db_im
=
pi_diag_data_buffer
.
PiDiagDataBuffer
(
tc
,
io
,
instanceName
=
'
IMAG
'
,
nofStreams
=
c_db_nof_streams
,
ramSizePerStream
=
c_db_ram_size
)
# Create subandselect instance for pre-transpose.
# Create subandselect instance for pre-transpose.
ss
=
pi_ss_ss_wide
.
PiSsSsWide
(
tc
,
io
,
c_frame_size
*
g_rd_chunksize
,
c_nof_int_streams
)
ss
=
pi_ss_ss_wide
.
PiSsSsWide
(
tc
,
io
,
g_wr_chunksize
*
g_rd_chunksize
,
c_nof_int_streams
)
# Create object for DDR register map
ddr
=
pi_io_ddr
.
PiIoDdr
(
tc
,
io
,
nof_inst
=
1
)
# Create dsp_test instance for helpful methods
# Create dsp_test instance for helpful methods
dsp_test_bg
=
dsp_test
.
DspTest
(
inDatW
=
c_in_dat_w
)
dsp_test_bg
=
dsp_test
.
DspTest
(
inDatW
=
c_in_dat_w
)
...
@@ -138,9 +146,9 @@ if __name__ == "__main__":
...
@@ -138,9 +146,9 @@ if __name__ == "__main__":
#
#
###############################################################################
###############################################################################
ss_list
=
[]
ss_list
=
[]
for
i
in
range
(
c_frame_
size
):
for
i
in
range
(
g_wr_chunk
size
):
for
j
in
range
(
g_rd_chunksize
):
for
j
in
range
(
g_rd_chunksize
):
ss_list
.
append
(
i
+
j
*
c
_frame_size
)
ss_list
.
append
(
i
+
j
*
g
_frame_size
_in
)
if
c_ena_pre_transpose
:
if
c_ena_pre_transpose
:
ss
.
write_selects
(
ss_list
)
ss
.
write_selects
(
ss_list
)
...
@@ -151,7 +159,7 @@ if __name__ == "__main__":
...
@@ -151,7 +159,7 @@ if __name__ == "__main__":
#
#
###############################################################################
###############################################################################
# Prepare x stimuli for block generator
# Prepare x stimuli for block generator
bg_data
=
gen_bg_hex_files
(
c
_frame_size
,
g_nof_blocks
,
c_bg_nof_streams
)
bg_data
=
gen_bg_hex_files
(
g
_frame_size
_in
,
g_nof_blocks
,
c_bg_nof_streams
)
################################################################################
################################################################################
##
##
...
@@ -159,7 +167,7 @@ if __name__ == "__main__":
...
@@ -159,7 +167,7 @@ if __name__ == "__main__":
##
##
################################################################################
################################################################################
# Write setting for the block generator:
# Write setting for the block generator:
bg
.
write_block_gen_settings
(
samplesPerPacket
=
c
_frame_size
,
blocksPerSync
=
g_nof_blocks
,
gapSize
=
c_gap_size
,
memLowAddr
=
0
,
memHighAddr
=
c_bg_ram_size
-
1
,
BSNInit
=
10
)
bg
.
write_block_gen_settings
(
samplesPerPacket
=
g
_frame_size
_in
,
blocksPerSync
=
g_nof_blocks
,
gapSize
=
c_gap_size
,
memLowAddr
=
0
,
memHighAddr
=
c_bg_ram_size
-
1
,
BSNInit
=
10
)
# Write the stimuli to the block generator and enable the block generator
# Write the stimuli to the block generator and enable the block generator
for
i
in
range
(
c_bg_nof_streams
):
for
i
in
range
(
c_bg_nof_streams
):
...
@@ -177,17 +185,18 @@ if __name__ == "__main__":
...
@@ -177,17 +185,18 @@ if __name__ == "__main__":
bg_data
=
flatten
(
bg_data
)
bg_data
=
flatten
(
bg_data
)
# Wait until the DDR3 model is initialized.
# Wait until the DDR3 model is initialized.
do_until_gt
(
io
.
simIO
.
getSimTime
,
ms_retry
=
1000
,
val
=
110000
,
s_timeout
=
13600
)
# 110000
if
tc
.
sim
==
True
:
do_until_eq
(
ddr
.
read_init_done
,
ms_retry
=
1000
,
val
=
1
,
s_timeout
=
13600
)
# 110000
# Enable the blockgenerator
# Enable the blockgenerator
bg
.
write_enable
()
bg
.
write_enable
()
if
(
c_force_late_sync
==
1
):
if
(
c_force_late_sync
==
1
):
do_until_gt
(
io
.
simIO
.
getSimTime
,
ms_retry
=
1000
,
val
=
180000
,
s_timeout
=
13600
)
# 110000
do_until_gt
(
io
.
simIO
.
getSimTime
,
ms_retry
=
1000
,
val
=
180000
,
s_timeout
=
13600
)
# 110000
bg
.
write_block_gen_settings
(
samplesPerPacket
=
c
_frame_size
,
blocksPerSync
=
g_nof_blocks
+
1
,
gapSize
=
c_gap_size
,
memLowAddr
=
0
,
memHighAddr
=
c_bg_ram_size
-
1
,
BSNInit
=
10
)
bg
.
write_block_gen_settings
(
samplesPerPacket
=
g
_frame_size
_in
,
blocksPerSync
=
g_nof_blocks
+
1
,
gapSize
=
c_gap_size
,
memLowAddr
=
0
,
memHighAddr
=
c_bg_ram_size
-
1
,
BSNInit
=
10
)
elif
(
c_force_early_sync
==
1
):
elif
(
c_force_early_sync
==
1
):
do_until_gt
(
io
.
simIO
.
getSimTime
,
ms_retry
=
1000
,
val
=
180000
,
s_timeout
=
13600
)
# 110000
do_until_gt
(
io
.
simIO
.
getSimTime
,
ms_retry
=
1000
,
val
=
180000
,
s_timeout
=
13600
)
# 110000
bg
.
write_block_gen_settings
(
samplesPerPacket
=
c
_frame_size
,
blocksPerSync
=
g_nof_blocks
-
1
,
gapSize
=
c_gap_size
,
memLowAddr
=
0
,
memHighAddr
=
c_bg_ram_size
-
1
,
BSNInit
=
10
)
bg
.
write_block_gen_settings
(
samplesPerPacket
=
g
_frame_size
_in
,
blocksPerSync
=
g_nof_blocks
-
1
,
gapSize
=
c_gap_size
,
memLowAddr
=
0
,
memHighAddr
=
c_bg_ram_size
-
1
,
BSNInit
=
10
)
###############################################################################
###############################################################################
#
#
...
@@ -197,8 +206,8 @@ if __name__ == "__main__":
...
@@ -197,8 +206,8 @@ if __name__ == "__main__":
# Subband Select pre-transpose
# Subband Select pre-transpose
if
c_ena_pre_transpose
:
if
c_ena_pre_transpose
:
bg_data_ss
=
[]
bg_data_ss
=
[]
for
i
in
range
(
len
(
bg_data
)
/
len
(
ss_list
)):
for
i
in
range
(
len
(
bg_data
)
/
c_ss_pagesize
):
#
len(ss_list)):
bg_data_ss
.
append
(
ss
.
subband_select
(
bg_data
[
i
*
len
(
ss_list
):(
i
+
1
)
*
len
(
ss_list
)
],
ss_list
))
bg_data_ss
.
append
(
ss
.
subband_select
(
bg_data
[
i
*
c_ss_pagesize
:(
i
+
1
)
*
c_ss_pagesize
],
ss_list
))
bg_data
=
bg_data_ss
bg_data
=
bg_data_ss
bg_data
=
flatten
(
bg_data
)
bg_data
=
flatten
(
bg_data
)
...
@@ -270,7 +279,7 @@ if __name__ == "__main__":
...
@@ -270,7 +279,7 @@ if __name__ == "__main__":
#
#
###############################################################################
###############################################################################
for
i
in
range
(
c_bg_nof_streams
):
for
i
in
range
(
c_bg_nof_streams
):
for
j
in
range
(
c_db_ram_size
):
for
j
in
range
(
len
(
ref_data_re
[
0
])
):
if
db_out_re
[
i
][
j
]
!=
ref_data_re
[
i
][
j
]:
if
db_out_re
[
i
][
j
]
!=
ref_data_re
[
i
][
j
]:
tc
.
append_log
(
2
,
'
Error in real output data. Expected data: %d Data read: %d Iteration nr: %d %d
'
%
(
ref_data_re
[
i
][
j
],
db_out_re
[
i
][
j
],
i
,
j
))
tc
.
append_log
(
2
,
'
Error in real output data. Expected data: %d Data read: %d Iteration nr: %d %d
'
%
(
ref_data_re
[
i
][
j
],
db_out_re
[
i
][
j
],
i
,
j
))
tc
.
set_result
(
'
FAILED
'
)
tc
.
set_result
(
'
FAILED
'
)
...
...
This diff is collapsed.
Click to expand it.
libraries/base/reorder/tb/vhdl/tb_reorder_transpose.vhd
+
27
−
9
View file @
307989b4
...
@@ -50,15 +50,17 @@ USE work.reorder_pkg.ALL;
...
@@ -50,15 +50,17 @@ USE work.reorder_pkg.ALL;
ENTITY
tb_reorder_transpose
IS
ENTITY
tb_reorder_transpose
IS
GENERIC
(
GENERIC
(
g_wr_chunksize
:
POSITIVE
:
=
256
;
g_wr_chunksize
:
POSITIVE
:
=
240
;
--
256;
g_rd_chunksize
:
POSITIVE
:
=
16
;
g_rd_chunksize
:
POSITIVE
:
=
16
;
g_rd_nof_chunks
:
POSITIVE
:
=
16
;
g_rd_nof_chunks
:
POSITIVE
:
=
15
;
--
16;
g_rd_interval
:
POSITIVE
:
=
16
;
-- When pre-transpose is used equal to g_rd_chunksize.
g_rd_interval
:
POSITIVE
:
=
16
;
-- When pre-transpose is used equal to g_rd_chunksize.
g_gapsize
:
NATURAL
:
=
0
;
g_gapsize
:
NATURAL
:
=
0
;
g_nof_blocks
:
POSITIVE
:
=
32
;
g_nof_blocks
:
POSITIVE
:
=
32
;
g_nof_streams
:
POSITIVE
:
=
4
;
g_nof_streams
:
POSITIVE
:
=
4
;
g_in_dat_w
:
POSITIVE
:
=
8
;
g_in_dat_w
:
POSITIVE
:
=
8
;
g_mem_dat_w
:
NATURAL
:
=
256
;
-- The data width to the attached memory.
g_mem_dat_w
:
NATURAL
:
=
256
;
-- The data width to the attached memory.
g_frame_size_in
:
NATURAL
:
=
256
;
g_frame_size_out
:
NATURAL
:
=
128
;
g_ena_pre_transp
:
BOOLEAN
:
=
TRUE
g_ena_pre_transp
:
BOOLEAN
:
=
TRUE
);
);
END
tb_reorder_transpose
;
END
tb_reorder_transpose
;
...
@@ -106,8 +108,11 @@ ARCHITECTURE tb OF tb_reorder_transpose IS
...
@@ -106,8 +108,11 @@ ARCHITECTURE tb OF tb_reorder_transpose IS
-- DUT
-- DUT
SIGNAL
ram_ss_ss_transp_mosi
:
t_mem_mosi
:
=
c_mem_mosi_rst
;
SIGNAL
ram_ss_ss_transp_mosi
:
t_mem_mosi
:
=
c_mem_mosi_rst
;
SIGNAL
ram_ss_ss_transp_miso
:
t_mem_miso
:
=
c_mem_miso_rst
;
SIGNAL
ram_ss_ss_transp_miso
:
t_mem_miso
:
=
c_mem_miso_rst
;
SIGNAL
reg_io_ddr_mosi
:
t_mem_mosi
:
=
c_mem_mosi_rst
;
SIGNAL
reg_io_ddr_miso
:
t_mem_miso
:
=
c_mem_miso_rst
;
----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- Component declaration of mm_file
-- Component declaration of mm_file
----------------------------------------------------------------------------
----------------------------------------------------------------------------
...
@@ -153,8 +158,8 @@ ARCHITECTURE tb OF tb_reorder_transpose IS
...
@@ -153,8 +158,8 @@ ARCHITECTURE tb OF tb_reorder_transpose IS
CONSTANT
c_ctrl_ref_clk_period
:
TIME
:
=
5000
ps
;
CONSTANT
c_ctrl_ref_clk_period
:
TIME
:
=
5000
ps
;
-- Custom definitions of constants
-- Custom definitions of constants
CONSTANT
c_bg_block_len
:
NATURAL
:
=
c_block
size
*
g_nof_blocks
;
CONSTANT
c_bg_block_len
:
NATURAL
:
=
g_frame_
size
_in
*
g_nof_blocks
;
CONSTANT
c_db_block_len
:
NATURAL
:
=
c_block
size
*
g_nof_blocks
;
CONSTANT
c_db_block_len
:
NATURAL
:
=
g_frame_
size
_in
*
g_nof_blocks
;
-- Configuration of the block generator:
-- Configuration of the block generator:
CONSTANT
c_bg_nof_output_streams
:
POSITIVE
:
=
g_nof_streams
;
CONSTANT
c_bg_nof_output_streams
:
POSITIVE
:
=
g_nof_streams
;
...
@@ -238,6 +243,10 @@ BEGIN
...
@@ -238,6 +243,10 @@ BEGIN
u_mm_file_ram_ss_ss_transp
:
mm_file
GENERIC
MAP
(
mmf_unb_file_prefix
(
0
,
0
,
"FN"
)
&
"RAM_SS_SS_WIDE"
)
u_mm_file_ram_ss_ss_transp
:
mm_file
GENERIC
MAP
(
mmf_unb_file_prefix
(
0
,
0
,
"FN"
)
&
"RAM_SS_SS_WIDE"
)
PORT
MAP
(
mm_rst
,
mm_clk
,
ram_ss_ss_transp_mosi
,
ram_ss_ss_transp_miso
);
PORT
MAP
(
mm_rst
,
mm_clk
,
ram_ss_ss_transp_mosi
,
ram_ss_ss_transp_miso
);
u_mm_file_reg_io_ddr
:
mm_file
GENERIC
MAP
(
mmf_unb_file_prefix
(
0
,
0
,
"FN"
)
&
"REG_IO_DDR"
)
PORT
MAP
(
mm_rst
,
mm_clk
,
reg_io_ddr_mosi
,
reg_io_ddr_miso
);
----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- Source: block generator
-- Source: block generator
----------------------------------------------------------------------------
----------------------------------------------------------------------------
...
@@ -273,8 +282,8 @@ BEGIN
...
@@ -273,8 +282,8 @@ BEGIN
GENERIC
MAP
(
GENERIC
MAP
(
g_nof_streams
=>
c_bg_nof_output_streams
,
g_nof_streams
=>
c_bg_nof_output_streams
,
g_in_dat_w
=>
c_bg_buf_dat_w
/
c_nof_complex
,
g_in_dat_w
=>
c_bg_buf_dat_w
/
c_nof_complex
,
g_frame_size_in
=>
g_
wr_chunk
size
,
g_frame_size_in
=>
g_
frame_
size
_in
,
g_frame_size_out
=>
g_
wr_chunksize
,
g_frame_size_out
=>
g_
frame_size_out
,
g_use_complex
=>
c_use_complex
,
g_use_complex
=>
c_use_complex
,
g_mem_dat_w
=>
g_mem_dat_w
,
g_mem_dat_w
=>
g_mem_dat_w
,
g_ena_pre_transp
=>
g_ena_pre_transp
,
g_ena_pre_transp
=>
g_ena_pre_transp
,
...
@@ -337,6 +346,14 @@ BEGIN
...
@@ -337,6 +346,14 @@ BEGIN
ctlr_clk_in
=>
dp_clk
,
ctlr_clk_in
=>
dp_clk
,
ctlr_rst_in
=>
dp_rst
,
ctlr_rst_in
=>
dp_rst
,
-- MM clock + reset
mm_rst
=>
mm_rst
,
mm_clk
=>
mm_clk
,
-- MM interface
reg_io_ddr_mosi
=>
reg_io_ddr_mosi
,
reg_io_ddr_miso
=>
reg_io_ddr_miso
,
-- Driver clock domain
-- Driver clock domain
dvr_clk
=>
dp_clk
,
dvr_clk
=>
dp_clk
,
dvr_rst
=>
dp_rst
,
dvr_rst
=>
dp_rst
,
...
@@ -430,3 +447,4 @@ BEGIN
...
@@ -430,3 +447,4 @@ BEGIN
);
);
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