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
0930680c
Commit
0930680c
authored
Aug 25, 2018
by
kazushi.kawamura
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Address boardstr issue
parent
271f4008
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
11166 additions
and
0 deletions
+11166
-0
Makefile
hls_2018/router_03_boardstr/Makefile
+20
-0
Makefile.cygwin
hls_2018/router_03_boardstr/Makefile.cygwin
+14
-0
ap_int.h
hls_2018/router_03_boardstr/ap_int.h
+521
-0
ap_fixed_sim.h
hls_2018/router_03_boardstr/etc/ap_fixed_sim.h
+2451
-0
ap_int_sim.h
hls_2018/router_03_boardstr/etc/ap_int_sim.h
+1629
-0
ap_private.h
hls_2018/router_03_boardstr/etc/ap_private.h
+5858
-0
main.cpp
hls_2018/router_03_boardstr/main.cpp
+99
-0
router.cpp
hls_2018/router_03_boardstr/router.cpp
+518
-0
router.hpp
hls_2018/router_03_boardstr/router.hpp
+56
-0
No files found.
hls_2018/router_03_boardstr/Makefile
0 → 100755
View file @
0930680c
TARGET
=
sim
OBJS
=
$
(
CPPS:.cpp
=
.o
)
CPPS
=
$
(
wildcard
*
.cpp
)
CXX
=
g++
CXXFLAGS
=
-O3
-Wall
-Wno-unknown-pragmas
-Wno-unused-label
-DSOFTWARE
-DCALCTIME
all
:
$(TARGET)
$(TARGET)
:
$(OBJS)
$(CXX)
-O3
-o
$@
$(OBJS)
run
:
python3 ../NLGenerator.py
-x
20
-y
20
-z
6
-l
100
;
\
python3 ./gen_boardstr.py Q-20x20x5_100_10.txt |
\
./
$(TARGET)
-
clean
:
rm
*
.o
rm
$(TARGET)
hls_2018/router_03_boardstr/Makefile.cygwin
0 → 100755
View file @
0930680c
TARGET
=
sim
OBJS
=
$
(
CPPS:.cpp
=
.o
)
CPPS
=
$
(
wildcard
*
.cpp
)
CXX
=
g++
CXXFLAGS
=
-O3
-Wall
-Wno-unknown-pragmas
-Wno-unused-label
-DSOFTWARE
-DCALCTIME
all
:
$(TARGET)
$(TARGET)
:
$(OBJS)
$(CXX)
-O3
-Wl
,--stack,33554432
-o
$@
$(OBJS)
clean
:
rm
*
.o
rm
$(TARGET)
hls_2018/router_03_boardstr/ap_int.h
0 → 100755
View file @
0930680c
This diff is collapsed.
Click to expand it.
hls_2018/router_03_boardstr/etc/ap_fixed_sim.h
0 → 100755
View file @
0930680c
This diff is collapsed.
Click to expand it.
hls_2018/router_03_boardstr/etc/ap_int_sim.h
0 → 100755
View file @
0930680c
This diff is collapsed.
Click to expand it.
hls_2018/router_03_boardstr/etc/ap_private.h
0 → 100755
View file @
0930680c
This diff is collapsed.
Click to expand it.
hls_2018/router_03_boardstr/main.cpp
0 → 100755
View file @
0930680c
/**
* main.cpp
*
* for Vivado HLS
*/
#ifdef SOFTWARE
#include "ap_int.h"
#else
#include <ap_int.h>
#endif
#ifdef CALCTIME
#include <stdio.h>
#include <time.h>
#endif
#include "router.hpp"
#define PRINT_SOLUTION
int
main
(
int
argc
,
char
*
argv
[])
{
using
namespace
std
;
// Test data //
// NL_Q00.txt
//char boardstr[BOARDSTR_SIZE] = "X10Y05Z3L0000107041L0004107002L0102102021L0900100003";
// NL_Q06.txt
char
boardstr
[
BOARDSTR_SIZE
]
=
"X10Y18Z2L0900109002L0901105012L0902103052L0903103062L0904100102L0905106012L0906109022L0717109102L0808109112L0017209172L0401200072L0912208152L0009201092L0709209092L0901206052L0309204092L0701209072L0101201022L0011202152L0016202162"
;
// NL_Q08.txt
//char boardstr[BOARDSTR_SIZE] = "X17Y20Z2L0000103022L1603115052L0916107032L0302108012L1104111042L1002100002L0919116162L1616113182L1001115012L0500201182L1603213152L0600210022";
char
boardstr_high
[
BOARDSTR_SIZE
]
=
{};
// Read boardstr from command line
if
(
1
<
argc
)
{
// From stdin
if
(
argv
[
1
][
0
]
!=
'X'
)
{
char
*
c_p
=
fgets
(
boardstr
,
BOARDSTR_SIZE
,
stdin
);
int
length
=
strlen
(
c_p
);
boardstr
[
length
-
1
]
=
0
;
}
else
{
strcpy
(
boardstr
,
argv
[
1
]);
}
}
// Seed value
int
seed
=
12345
;
if
(
2
<
argc
)
{
seed
=
atoi
(
argv
[
2
]);
}
#ifdef PRINT_SOLUTION
int
size_x
=
(
boardstr
[
1
]
-
'0'
)
*
10
+
(
boardstr
[
2
]
-
'0'
);
int
size_y
=
(
boardstr
[
4
]
-
'0'
)
*
10
+
(
boardstr
[
5
]
-
'0'
);
int
size_z
=
(
boardstr
[
7
]
-
'0'
);
#endif
// Solver
ap_int
<
32
>
status
;
clock_t
clock_start
,
clock_done
;
clock_start
=
clock
();
bool
result
=
pynqrouter
(
boardstr
,
boardstr_high
,
seed
,
&
status
);
clock_done
=
clock
();
if
(
result
)
{
cout
<<
endl
<<
"Test Passed!"
<<
endl
;
}
else
{
cout
<<
endl
<<
"Test Failed!"
<<
endl
;
}
cout
<<
"status = "
<<
(
int
)
status
<<
endl
;
cout
<<
"elapsed = "
<<
((
double
)(
clock_done
-
clock_start
)
/
CLOCKS_PER_SEC
)
<<
endl
<<
endl
;
#ifdef PRINT_SOLUTION
cout
<<
"SOLUTION"
<<
endl
;
cout
<<
"========"
<<
endl
;
cout
<<
"SIZE "
<<
size_x
<<
"X"
<<
size_y
<<
"X"
<<
size_z
<<
endl
;
for
(
int
z
=
0
;
z
<
size_z
;
z
++
)
{
cout
<<
"LAYER "
<<
(
z
+
1
)
<<
endl
;
for
(
int
y
=
0
;
y
<
size_y
;
y
++
)
{
for
(
int
x
=
0
;
x
<
size_x
;
x
++
)
{
if
(
x
!=
0
)
{
cout
<<
","
;
}
int
i
=
((
x
*
MAX_WIDTH
+
y
)
<<
BITWIDTH_Z
)
|
z
;
unsigned
int
num
=
(
unsigned
char
)(
boardstr
[
i
])
+
((
unsigned
char
)(
boardstr_high
[
i
])
<<
8
);
cout
<<
setfill
(
'0'
)
<<
setw
(
3
)
<<
right
<<
num
;
//cout << num;
}
cout
<<
endl
;
}
}
#endif
return
0
;
}
hls_2018/router_03_boardstr/router.cpp
0 → 100755
View file @
0930680c
This diff is collapsed.
Click to expand it.
hls_2018/router_03_boardstr/router.hpp
0 → 100755
View file @
0930680c
/**
* router.hpp
*
* for Vivado HLS
*/
#ifndef __ROUTER_HPP__
#define __ROUTER_HPP__
#ifdef SOFTWARE
#include "ap_int.h"
#else
#include <ap_int.h>
#endif
//#define DEBUG_PRINT // for debug
#ifdef DEBUG_PRINT
using
namespace
std
;
#endif
// Parameters
#define MAX_WIDTH 72 // Max of X, Y
#define BITWIDTH_XY 13
#define BITMASK_XY 65528 // 1111 1111 1111 1000
#define MAX_LAYER 8 // Max of Z
#define BITWIDTH_Z 3
#define BITMASK_Z 7 // 0000 0000 0000 0111
#define MAX_CELLS 41472 // Max #cells (16bit)
#define MAX_LINES 1024 // Max #lines (10bit)
#define MAX_PQ 32768 // Queue size (15bit)
#define MAX_BUFFER 16384 // Line buffer size (14bit)
#define CELL_BIT 16
#define LINE_BIT 10
#define PQ_BIT 15
#define BUFF_BIT 14
#define PQ_PRIORITY_WIDTH 16
#define PQ_PRIORITY_MASK 65535 // 0000 0000 0000 0000 1111 1111 1111 1111
#define PQ_DATA_WIDTH 16
#define PQ_DATA_MASK 4294901760 // 1111 1111 1111 1111 0000 0000 0000 0000
#define MAX_WEIGHT 255 // Max weight
#define BOARDSTR_SIZE 41472 // Size of I/O
ap_uint
<
8
>
new_weight
(
ap_uint
<
16
>
x
);
bool
pynqrouter
(
char
boardstr
[
BOARDSTR_SIZE
],
char
boardstr_high
[
BOARDSTR_SIZE
],
ap_uint
<
32
>
seed
,
ap_int
<
32
>
*
status
);
ap_uint
<
7
>
abs_uint7
(
ap_uint
<
7
>
a
,
ap_uint
<
7
>
b
);
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_WEIGHT
]);
void
pq_push
(
ap_uint
<
32
>
pq_nodes
[
MAX_PQ
],
ap_uint
<
16
>
priority
,
ap_uint
<
16
>
data
,
ap_uint
<
PQ_BIT
>
*
pq_len
,
bool
*
is_empty
);
void
pq_pop
(
ap_uint
<
32
>
pq_nodes
[
MAX_PQ
],
ap_uint
<
16
>
*
ret_priority
,
ap_uint
<
16
>
*
ret_data
,
ap_uint
<
PQ_BIT
>
*
pq_len
,
bool
*
is_empty
);
#endif
/* __ROUTER_HPP__ */
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