|
2 | 2 | ROOTDIR = $(CURDIR) |
3 | 3 | BUILD_DIR = $(ROOTDIR)/build |
4 | 4 | SCRIPT_DIR = $(ROOTDIR)/scripts |
5 | | -SRC_DIR = $(ROOTDIR)/../../src/hardware/hls |
| 5 | +SRC_DIR = $(ROOTDIR)/src |
6 | 6 | SIM_DIR = $(ROOTDIR)/sim |
7 | | -TEST_DIR = $(ROOTDIR)/../../src/test |
| 7 | +TEST_DIR = $(ROOTDIR)/../../tests/hardware/common |
8 | 8 | INCLUDE_DIR = $(ROOTDIR)/../../include |
9 | 9 |
|
10 | 10 | # Executables |
11 | 11 | VIVADO_HLS = vivado_hls |
12 | 12 | VIVADO = vivado |
13 | 13 | HSI = hsi |
14 | 14 |
|
15 | | -# Build parameters: |
| 15 | +# Include top-level config file |
| 16 | +ifndef config |
| 17 | +ifneq ("$(wildcard ../../config.mk)", "") |
| 18 | + config = ../../config.mk |
| 19 | +else |
| 20 | + config = ../../make/config.mk |
| 21 | +endif |
| 22 | +endif |
| 23 | +include $(config) |
| 24 | + |
| 25 | +#--------------------- |
| 26 | +# Compilation parameters |
| 27 | +#-------------------- |
| 28 | + |
16 | 29 | # Number of threads during compilation |
17 | 30 | NUM_THREADS = 8 |
| 31 | + |
18 | 32 | # Target Frequency |
19 | 33 | CLOCK_FREQ = 100 |
20 | | -# Log of input width in bits |
21 | | -LOG_INP_WIDTH = 3 |
22 | | -# Log of weight width in bits |
23 | | -LOG_WGT_WIDTH = 3 |
24 | | -# Log of accum width in bits |
25 | | -LOG_ACC_WIDTH = 5 |
26 | | -# Log of output width in bits |
27 | | -LOG_OUT_WIDTH = $(LOG_INP_WIDTH) |
28 | | -# Log of tensor batch size (A in (A,B)x(B,C) matrix multiplication) |
29 | | -LOG_BATCH = 0 |
30 | | -# Log of tensor inner block size (B in (A,B)x(B,C) matrix multiplication) |
31 | | -LOG_IN_BLOCK = 4 |
32 | | -# Log of tensor outer block size (C in (A,B)x(B,C) matrix multiplication) |
33 | | -LOG_OUT_BLOCK = 4 |
34 | | -# Log of uop buffer size in Bytes |
35 | | -LOG_UOP_BUFF_SIZE = 15 |
36 | | -# Log of inp buffer size in Bytes |
37 | | -LOG_INP_BUFF_SIZE = 15 |
38 | | -# Log of wgt buffer size in Bytes |
39 | | -LOG_WGT_BUFF_SIZE = 15 |
40 | | -# Log of acc buffer size in Bytes |
41 | | -LOG_ACC_BUFF_SIZE = 17 |
42 | | -# Log of out buffer size in Bytes |
43 | | -LOG_OUT_BUFF_SIZE = $(shell echo "$$(( $(LOG_ACC_BUFF_SIZE)+$(LOG_OUT_WIDTH)-$(LOG_ACC_WIDTH) ))" ) |
44 | 34 |
|
45 | | -# Derived parameter |
46 | | -# Input width in bits |
47 | | -INP_WIDTH = $(shell echo "$$(( 1 << $(LOG_INP_WIDTH) ))" ) |
48 | | -# Weight width in bits |
49 | | -WGT_WIDTH = $(shell echo "$$(( 1 << $(LOG_WGT_WIDTH) ))" ) |
50 | | -# Output width in bits |
51 | | -OUT_WIDTH = $(shell echo "$$(( 1 << $(LOG_OUT_WIDTH) ))" ) |
52 | | -# Tensor batch size |
53 | | -BATCH = $(shell echo "$$(( 1 << $(LOG_BATCH) ))" ) |
54 | | -# Tensor outer block size |
55 | | -IN_BLOCK = $(shell echo "$$(( 1 << $(LOG_IN_BLOCK) ))" ) |
56 | | -# Tensor inner block size |
57 | | -OUT_BLOCK = $(shell echo "$$(( 1 << $(LOG_OUT_BLOCK) ))" ) |
58 | | -# Uop buffer size in Bytes |
59 | | -UOP_BUFF_SIZE = $(shell echo "$$(( 1 << $(LOG_UOP_BUFF_SIZE) ))" ) |
60 | | -# Inp buffer size in Bytes |
61 | | -INP_BUFF_SIZE = $(shell echo "$$(( 1 << $(LOG_INP_BUFF_SIZE) ))" ) |
62 | | -# Wgt buffer size in Bytes |
63 | | -WGT_BUFF_SIZE = $(shell echo "$$(( 1 << $(LOG_WGT_BUFF_SIZE) ))" ) |
64 | | -# Acc buffer size in Bytes |
65 | | -ACC_BUFF_SIZE = $(shell echo "$$(( 1 << $(LOG_ACC_BUFF_SIZE) ))" ) |
66 | | -# Out buffer size in Bytes |
67 | | -OUT_BUFF_SIZE = $(shell echo "$$(( 1 << $(LOG_OUT_BUFF_SIZE) ))" ) |
| 35 | +# Timing closure compensation (0 for none, 3 for highest) |
| 36 | +TIMING_CLOSURE_COMP = 0 |
68 | 37 |
|
69 | 38 | # Derive clock target period |
70 | 39 | TARGET_PER = $(shell echo "$$(( (1000 + $(CLOCK_FREQ) - 1) / $(CLOCK_FREQ) - 0))" ) |
|
85 | 54 | $(VIVADO_HLS) -f $(SCRIPT_DIR)/hls.tcl \ |
86 | 55 | -tclargs $(SRC_DIR) $(SIM_DIR) $(TEST_DIR) $(INCLUDE_DIR) $(TARGET_PER) \ |
87 | 56 | $(LOG_INP_WIDTH) $(LOG_WGT_WIDTH) $(LOG_ACC_WIDTH) $(LOG_OUT_WIDTH) \ |
88 | | - $(LOG_BATCH) $(LOG_OUT_BLOCK) $(LOG_IN_BLOCK) \ |
| 57 | + $(LOG_BATCH) $(LOG_BLOCK_OUT) $(LOG_BLOCK_IN) \ |
89 | 58 | $(LOG_UOP_BUFF_SIZE) $(LOG_INP_BUFF_SIZE) $(LOG_WGT_BUFF_SIZE) \ |
90 | 59 | $(LOG_ACC_BUFF_SIZE) $(LOG_OUT_BUFF_SIZE) |
91 | 60 |
|
|
0 commit comments