Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
adc2018-system
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
adc2018
adc2018-system
Commits
8eaee571
Commit
8eaee571
authored
Aug 26, 2018
by
kazushi.kawamura
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add pragma for Vivado-HLS
parent
ec55c620
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1127 additions
and
5 deletions
+1127
-5
router_design.bit
hls_2018/router_03/bitstream/router_design.bit
+0
-0
router_design_old.bit
hls_2018/router_03/bitstream/router_design_old.bit
+0
-0
router_design_old.tcl
hls_2018/router_03/bitstream/router_design_old.tcl
+1113
-0
router.cpp
hls_2018/router_03/router.cpp
+12
-3
router.hpp
hls_2018/router_03/router.hpp
+2
-2
No files found.
hls_2018/router_03/bitstream/router_design.bit
View file @
8eaee571
No preview for this file type
hls_2018/router_03/bitstream/router_design_old.bit
0 → 100755
View file @
8eaee571
File added
hls_2018/router_03/bitstream/router_design_old.tcl
0 → 100755
View file @
8eaee571
This diff is collapsed.
Click to expand it.
hls_2018/router_03/router.cpp
View file @
8eaee571
...
...
@@ -51,7 +51,7 @@ bool pynqrouter(char boardstr[BOARDSTR_SIZE], ap_uint<32> seed, ap_int<32> *stat
// For each line
// Note: Should not partition completely
bool
adjacents
[
MAX_LINES
];
// Line has adjacent terminals?
ap_uint
<
CELL_BIT
>
starts
[
MAX_LINES
];
// Start list
ap_uint
<
CELL_BIT
>
starts
[
MAX_LINES
];
// Start list
ap_uint
<
CELL_BIT
>
goals
[
MAX_LINES
];
// Goal list
ap_uint
<
BUFF_BIT
>
s_idx
[
MAX_LINES
];
// Start point on line buffer
...
...
@@ -151,6 +151,7 @@ bool pynqrouter(char boardstr[BOARDSTR_SIZE], ap_uint<32> seed, ap_int<32> *stat
// Memories for Overlap Check
ap_uint
<
1
>
overlap_checks
[
MAX_CELLS
];
#pragma HLS ARRAY_PARTITION variable=overlap_checks cyclic factor=32 dim=1
bool
has_overlap
=
false
;
// ================================
...
...
@@ -188,6 +189,7 @@ bool pynqrouter(char boardstr[BOARDSTR_SIZE], ap_uint<32> seed, ap_int<32> *stat
// (Step.2-1) Reset weights of target line
WEIGHT_RESET:
for
(
ap_uint
<
BUFF_BIT
>
j
=
s_idx
[
target
];
j
!=
s_idx
[
next_target
];
j
++
)
{
#pragma HLS UNROLL factor=2
#pragma HLS LOOP_TRIPCOUNT min=1 max=256
weights
[
paths
[
j
]]
=
1
;
}
...
...
@@ -196,11 +198,13 @@ bool pynqrouter(char boardstr[BOARDSTR_SIZE], ap_uint<32> seed, ap_int<32> *stat
ap_uint
<
8
>
current_round_weight
=
new_weight
(
round
);
WEIGHT_PATH:
for
(
ap_uint
<
BUFF_BIT
>
j
=
s_idx
[
next_target
];
j
!=
pointer
;
j
++
)
{
#pragma HLS UNROLL factor=2
#pragma HLS LOOP_TRIPCOUNT min=1 max=8192
weights
[
paths
[
j
]]
=
current_round_weight
;
}
WEIGHT_TERMINAL:
for
(
ap_uint
<
LINE_BIT
>
i
=
0
;
i
<
(
ap_uint
<
LINE_BIT
>
)(
line_num
);
i
++
)
{
#pragma HLS UNROLL factor=2
#pragma HLS LOOP_TRIPCOUNT min=2 max=999
weights
[
starts
[
i
]]
=
MAX_WEIGHT
;
weights
[
goals
[
i
]]
=
MAX_WEIGHT
;
...
...
@@ -230,16 +234,19 @@ bool pynqrouter(char boardstr[BOARDSTR_SIZE], ap_uint<32> seed, ap_int<32> *stat
has_overlap
=
false
;
OVERLAP_RESET:
for
(
ap_uint
<
CELL_BIT
>
i
=
0
;
i
<
(
ap_uint
<
CELL_BIT
>
)(
MAX_CELLS
);
i
++
)
{
#pragma HLS UNROLL factor=32
overlap_checks
[
i
]
=
0
;
}
OVERLAP_CHECK_LINE:
for
(
ap_uint
<
LINE_BIT
>
i
=
0
;
i
<
(
ap_uint
<
LINE_BIT
>
)(
line_num
);
i
++
)
{
#pragma HLS UNROLL factor=2
#pragma HLS LOOP_TRIPCOUNT min=2 max=999
overlap_checks
[
starts
[
i
]]
=
1
;
overlap_checks
[
goals
[
i
]]
=
1
;
}
OVERLAP_CHECK_PATH:
for
(
ap_uint
<
BUFF_BIT
>
j
=
s_idx
[
next_target
];
j
!=
pointer
;
j
++
)
{
#pragma HLS UNROLL factor=2
#pragma HLS LOOP_TRIPCOUNT min=1 max=8192
ap_uint
<
CELL_BIT
>
cell_id
=
paths
[
j
];
if
(
overlap_checks
[
cell_id
])
{
...
...
@@ -340,10 +347,12 @@ ap_uint<3> abs_uint3(ap_uint<3> a, ap_uint<3> b) {
ap_uint
<
BUFF_BIT
>
search
(
ap_uint
<
BUFF_BIT
>
idx
,
ap_uint
<
CELL_BIT
>
paths
[
MAX_BUFFER
],
ap_uint
<
CELL_BIT
>
start
,
ap_uint
<
CELL_BIT
>
goal
,
ap_uint
<
8
>
w
[
MAX_CELLS
])
{
ap_uint
<
CELL_BIT
>
dist
[
MAX_CELLS
];
#pragma HLS ARRAY_PARTITION variable=dist cyclic factor=64 dim=1
ap_uint
<
CELL_BIT
>
prev
[
MAX_CELLS
];
SEARCH_INIT_DIST
:
for
(
ap_uint
<
CELL_BIT
>
i
=
0
;
i
<
(
ap_uint
<
CELL_BIT
>
)(
MAX_CELLS
);
i
++
)
{
#pragma HLS UNROLL factor=64
dist
[
i
]
=
65535
;
// = (2^16 - 1)
}
...
...
@@ -459,7 +468,7 @@ void pq_push(ap_uint<32> pq_nodes[MAX_PQ], ap_uint<16> priority, ap_uint<16> dat
ap_uint
<
PQ_BIT
>
p
=
(
*
pq_len
)
>>
1
;
// parent node
PQ_PUSH_LOOP
:
while
(
i
>
1
&&
(
ap_uint
<
16
>
)(
pq_nodes
[
p
]
&
PQ_PRIORITY_MASK
)
>=
priority
)
{
#pragma HLS LOOP_TRIPCOUNT min=0 max=1
5
#pragma HLS LOOP_TRIPCOUNT min=0 max=1
4
/** Set!: min=0 max=PQ_BIT **/
pq_nodes
[
i
]
=
pq_nodes
[
p
];
i
=
p
;
...
...
@@ -482,7 +491,7 @@ void pq_pop(ap_uint<32> pq_nodes[MAX_PQ], ap_uint<16> *ret_priority, ap_uint<16>
PQ_POP_LOOP
:
while
(
!
(
i
>>
(
PQ_BIT
-
1
)))
{
// (2018.08.24) Loop condition fixed
#pragma HLS LOOP_TRIPCOUNT min=1 max=1
5
#pragma HLS LOOP_TRIPCOUNT min=1 max=1
4
/** Set!: min=0 max=PQ_BIT **/
ap_uint
<
PQ_BIT
>
c1
=
i
<<
1
;
// child node(left)
ap_uint
<
PQ_BIT
>
c2
=
c1
+
1
;
// child node(right)
...
...
hls_2018/router_03/router.hpp
View file @
8eaee571
...
...
@@ -29,11 +29,11 @@ using namespace std;
#define MAX_CELLS 41472 // Max #cells (16bit)
#define MAX_LINES 1024 // Max #lines (10bit)
#define MAX_PQ
32768 // Queue size (15
bit)
#define MAX_PQ
16384 // Queue size (14
bit)
#define MAX_BUFFER 16384 // Line buffer size (14bit)
#define CELL_BIT 16
#define LINE_BIT 10
#define PQ_BIT 1
5
#define PQ_BIT 1
4
#define BUFF_BIT 14
#define PQ_PRIORITY_WIDTH 16
...
...
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