Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
White Rabbit Switch - Gateware
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
12
Issues
12
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Projects
White Rabbit Switch - Gateware
Commits
846342c9
Commit
846342c9
authored
Feb 24, 2012
by
Maciej Lipinski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swcore[new mpm]: re-doing sel handling (design flaw identified) in the swcore
parent
e8328f7f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
236 additions
and
162 deletions
+236
-162
swc_core.vhd
modules/wrsw_swcore/swc_core.vhd
+2
-0
swc_swcore_pkg.vhd
modules/wrsw_swcore/swc_swcore_pkg.vhd
+35
-1
xswc_core.vhd
modules/wrsw_swcore/xswc_core.vhd
+9
-2
xswc_input_block.vhd
modules/wrsw_swcore/xswc_input_block.vhd
+183
-158
swc_core_wrapper_7ports.vhd
testbench/swcore/swc_core_wrapper_7ports.vhd
+1
-0
swc_core_wrapper_generic.svh
testbench/swcore/swc_core_wrapper_generic.svh
+1
-0
swc_param_defs.svh
testbench/swcore/swc_param_defs.svh
+1
-0
scb_top_bare.vhd
top/bare_top/scb_top_bare.vhd
+2
-1
wrsw_components_pkg.vhd
top/bare_top/wrsw_components_pkg.vhd
+1
-0
wrsw_top_pkg.vhd
top/bare_top/wrsw_top_pkg.vhd
+1
-0
No files found.
modules/wrsw_swcore/swc_core.vhd
View file @
846342c9
...
...
@@ -56,6 +56,7 @@ entity swc_core is
generic
(
g_prio_num
:
integer
;
--:= c_swc_output_prio_num;
g_max_pck_size
:
integer
;
--:= 2^c_swc_max_pck_size
g_max_oob_size
:
integer
;
g_num_ports
:
integer
;
--:= c_swc_num_ports
g_pck_pg_free_fifo_size
:
integer
;
--:= c_swc_freeing_fifo_size (in pck_pg_free_module.vhd)
g_input_block_cannot_accept_data
:
string
;
--:= "drop_pck"; --"stall_o", "rty_o" -- (xswc_input_block) Don't CHANGE !
...
...
@@ -134,6 +135,7 @@ architecture rtl of swc_core is
generic
map
(
g_prio_num
=>
g_prio_num
,
g_max_pck_size
=>
g_max_pck_size
,
g_max_oob_size
=>
g_max_oob_size
,
g_num_ports
=>
g_num_ports
,
g_pck_pg_free_fifo_size
=>
g_pck_pg_free_fifo_size
,
g_input_block_cannot_accept_data
=>
g_input_block_cannot_accept_data
,
...
...
modules/wrsw_swcore/swc_swcore_pkg.vhd
View file @
846342c9
...
...
@@ -166,6 +166,7 @@ package swc_swcore_pkg is
g_num_ports
:
integer
;
--:= c_swc_num_ports
g_prio_width
:
integer
;
--:= c_swc_prio_width;
g_max_pck_size_width
:
integer
;
--:= c_swc_max_pck_size_width
g_max_oob_size
:
integer
;
g_usecount_width
:
integer
;
--:= c_swc_usecount_width
g_input_block_cannot_accept_data
:
string
;
--:= "drop_pck"; --"stall_o", "rty_o" -- Don't CHANGE !
...
...
@@ -208,7 +209,7 @@ package swc_swcore_pkg is
mpm_dreq_i
:
in
std_logic
;
ll_addr_o
:
out
std_logic_vector
(
g_page_addr_width
-1
downto
0
);
ll_data_o
:
out
std_logic_vector
(
g_
page_addr_width
+
1
downto
0
);
ll_data_o
:
out
std_logic_vector
(
g_
ll_data_width
-
1
downto
0
);
ll_next_addr_o
:
out
std_logic_vector
(
g_page_addr_width
-1
downto
0
);
ll_next_addr_valid_o
:
out
std_logic
;
ll_wr_req_o
:
out
std_logic
;
...
...
@@ -465,6 +466,7 @@ component swc_multiport_pck_pg_free_module is
generic
(
g_prio_num
:
integer
;
--:= c_swc_output_prio_num;
g_max_pck_size
:
integer
;
--:= c_swc_max_pck_size
g_max_oob_size
:
integer
;
g_num_ports
:
integer
;
--:= c_swc_num_ports
g_pck_pg_free_fifo_size
:
integer
;
--:= c_swc_freeing_fifo_size (in pck_pg_free_module.vhd)
g_input_block_cannot_accept_data
:
string
;
--:= "drop_pck"; --"stall_o", "rty_o" -- (xswc_input_block) Don't CHANGE !
...
...
@@ -524,8 +526,40 @@ component swc_multiport_pck_pg_free_module is
);
end
component
;
function
f_sel2partialSel
(
sel
:
std_logic_vector
;
partialSelWidth
:
integer
)
return
std_logic_vector
;
function
f_partialSel2sel
(
partialSel
:
std_logic_vector
;
selWidth
:
integer
)
return
std_logic_vector
;
end
swc_swcore_pkg
;
package
body
swc_swcore_pkg
is
function
f_sel2partialSel
(
sel
:
std_logic_vector
;
partialSelWidth
:
integer
)
return
std_logic_vector
is
variable
tmp
:
std_logic_vector
(
partialSelWidth
-1
downto
0
);
variable
ones
:
std_logic_vector
(
sel
'length
-1
downto
0
);
begin
-- this function needs proper implementation
ones
:
=
(
others
=>
'1'
);
if
(
sel
=
ones
)
then
tmp
:
=
(
others
=>
'1'
);
else
tmp
:
=
(
others
=>
'0'
);
end
if
;
return
tmp
;
end
function
;
function
f_partialSel2sel
(
partialSel
:
std_logic_vector
;
selWidth
:
integer
)
return
std_logic_vector
is
variable
tmp
:
std_logic_vector
(
selWidth
-1
downto
0
);
variable
ones
:
std_logic_vector
(
partialSel
'length
-1
downto
0
);
begin
-- this function needs proper implementation
ones
:
=
(
others
=>
'1'
);
if
(
partialSel
=
ones
)
then
tmp
:
=
(
others
=>
'1'
);
else
tmp
(
selWidth
-1
)
:
=
'1'
;
tmp
(
selWidth
-2
downto
0
)
:
=
(
others
=>
'0'
);
end
if
;
return
tmp
;
end
function
;
end
swc_swcore_pkg
;
modules/wrsw_swcore/xswc_core.vhd
View file @
846342c9
...
...
@@ -58,6 +58,7 @@ entity xswc_core is
g_prio_num
:
integer
;
--:= c_swc_output_prio_num; [works only for value of 8, output_block-causes problem]
g_max_pck_size
:
integer
;
--:= c_swc_max_pck_size
g_max_oob_size
:
integer
;
g_num_ports
:
integer
;
--:= c_swc_num_ports
g_pck_pg_free_fifo_size
:
integer
;
--:= c_swc_freeing_fifo_size (in pck_pg_free_module.vhd)
g_input_block_cannot_accept_data
:
string
;
--:= "drop_pck"; --"stall_o", "rty_o" -- (xswc_input_block) Don't CHANGE !
...
...
@@ -107,6 +108,7 @@ architecture rtl of xswc_core is
constant
c_usecount_width
:
integer
:
=
integer
(
CEIL
(
LOG2
(
real
(
g_num_ports
+
1
))));
constant
c_prio_width
:
integer
:
=
integer
(
CEIL
(
LOG2
(
real
(
g_prio_num
-1
))));
-- g_prio_width
constant
c_max_pck_size_width
:
integer
:
=
integer
(
CEIL
(
LOG2
(
real
(
g_max_pck_size
-1
))));
-- c_swc_max_pck_size_width
constant
c_max_oob_size_width
:
integer
:
=
integer
(
CEIL
(
LOG2
(
real
(
g_max_oob_size
+
1
))));
constant
c_mpm_page_num
:
integer
:
=
integer
(
CEIL
(
real
(
g_mpm_mem_size
/
g_mpm_page_size
)));
-- 65536/64 = 1024 -- c_swc_packet_mem_num_pages
constant
c_mpm_page_addr_width
:
integer
:
=
integer
(
CEIL
(
LOG2
(
real
(
c_mpm_page_num
-1
))));
--c_swc_page_addr_width
...
...
@@ -114,8 +116,10 @@ architecture rtl of xswc_core is
constant
c_mpm_partial_sel_width
:
integer
:
=
integer
(
g_wb_sel_width
-1
);
constant
c_mpm_page_size_width
:
integer
:
=
integer
(
CEIL
(
LOG2
(
real
(
g_mpm_page_size
-1
))));
constant
c_ll_addr_width
:
integer
:
=
c_mpm_page_addr_width
;
constant
c_ll_data_width
:
integer
:
=
c_mpm_page_addr_width
+
2
;
constant
c_ll_data_width
:
integer
:
=
c_mpm_page_addr_width
+
c_max_oob_size_width
+
3
;
----------------------------------------------------------------------------------------------------
-- signals connecting >>Input Block<< with >>Memory Management Unit<<
----------------------------------------------------------------------------------------------------
...
...
@@ -274,6 +278,7 @@ architecture rtl of xswc_core is
g_num_ports
=>
g_num_ports
,
g_prio_width
=>
c_prio_width
,
g_max_pck_size_width
=>
c_max_pck_size_width
,
g_max_oob_size
=>
g_max_oob_size
,
g_usecount_width
=>
c_usecount_width
,
g_input_block_cannot_accept_data
=>
g_input_block_cannot_accept_data
,
--new
...
...
@@ -536,7 +541,9 @@ architecture rtl of xswc_core is
g_fifo_size
=>
g_mpm_fifo_size
,
g_page_addr_width
=>
c_mpm_page_addr_width
,
g_partial_select_width
=>
c_mpm_partial_sel_width
,
g_max_packet_size
=>
g_max_pck_size
g_max_oob_size
=>
g_max_oob_size
,
g_max_packet_size
=>
g_max_pck_size
,
g_ll_data_width
=>
c_ll_data_width
)
port
map
(
clk_io_i
=>
clk_i
,
...
...
modules/wrsw_swcore/xswc_input_block.vhd
View file @
846342c9
This diff is collapsed.
Click to expand it.
testbench/swcore/swc_core_wrapper_7ports.vhd
View file @
846342c9
...
...
@@ -253,6 +253,7 @@ U_xswc_core: xswc_core
generic
map
(
g_prio_num
=>
8
,
g_max_pck_size
=>
10
*
1024
,
g_max_oob_size
=>
3
,
g_num_ports
=>
7
,
g_pck_pg_free_fifo_size
=>
((
65536
/
64
)
/
2
)
,
g_input_block_cannot_accept_data
=>
"drop_pck"
,
...
...
testbench/swcore/swc_core_wrapper_generic.svh
View file @
846342c9
...
...
@@ -59,6 +59,7 @@ module swc_core_wrapper_generic
#(
.
g_prio_num
(
`c_prio_num
)
,
.
g_max_pck_size
(
`c_max_pck_size
)
,
.
g_max_oob_size
(
`c_max_oob_size
)
,
.
g_num_ports
(
`c_num_ports
)
,
.
g_pck_pg_free_fifo_size
(
`c_pck_pg_free_fifo_size
)
,
.
g_input_block_cannot_accept_data
(
`c_input_block_cannot_accept_data
)
,
...
...
testbench/swcore/swc_param_defs.svh
View file @
846342c9
...
...
@@ -26,6 +26,7 @@
`define
c_prio_num 8
//
c_swc_output_prio_num
,
[
does not work
,
output block
]
`define
c_max_pck_size 10
*
1024
//
10kB
--
c_swc_max_pck_size
,
`define
c_max_oob_size 3
//
max size of OOB or USER data
`define
c_mpm_mem_size 65536
//
c_swc_packet_mem_size
,
`define
c_mpm_page_size 64
//
c_swc_page_size
,
...
...
top/bare_top/scb_top_bare.vhd
View file @
846342c9
...
...
@@ -504,7 +504,8 @@ begin
generic
map
(
g_prio_num
=>
8
,
g_max_pck_size
=>
10
*
1024
,
g_max_pck_size
=>
10
*
1024
,
g_max_oob_size
=>
3
,
g_num_ports
=>
7
,
g_pck_pg_free_fifo_size
=>
((
65536
/
64
)
/
2
),
g_input_block_cannot_accept_data
=>
"drop_pck"
,
...
...
top/bare_top/wrsw_components_pkg.vhd
View file @
846342c9
...
...
@@ -209,6 +209,7 @@ package wrsw_components_pkg is
generic
(
g_prio_num
:
integer
;
g_max_pck_size
:
integer
;
g_max_oob_size
:
integer
;
g_num_ports
:
integer
;
g_pck_pg_free_fifo_size
:
integer
;
g_input_block_cannot_accept_data
:
string
;
...
...
top/bare_top/wrsw_top_pkg.vhd
View file @
846342c9
...
...
@@ -252,6 +252,7 @@ package wrsw_top_pkg is
generic
(
g_prio_num
:
integer
;
g_max_pck_size
:
integer
;
g_max_oob_size
:
integer
;
g_num_ports
:
integer
;
g_pck_pg_free_fifo_size
:
integer
;
g_input_block_cannot_accept_data
:
string
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment