Skip to content

Commit a72a451

Browse files
tmoreau89tqchen
authored andcommitted
[REFACTOR] Macro standardization, lint tests (#7)
* code refactoring * code refactoring * code refactoring * code refactoring * fixing macro * refactoring, tests, makefile * style - making sure lint test pass * prefixed macros with VTA, fixed bugs
1 parent 8457539 commit a72a451

File tree

16 files changed

+1412
-1386
lines changed

16 files changed

+1412
-1386
lines changed

vta/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ lib/libvta.$(SHARED_LIBRARY_SUFFIX): $(VTA_LIB_OBJ)
7676
lint: pylint cpplint
7777

7878
cpplint:
79-
python nnvm/dmlc-core/scripts/lint.py vta cpp include src
79+
python nnvm/dmlc-core/scripts/lint.py vta cpp include src hardware tests
8080

8181
pylint:
8282
pylint python/vta --rcfile=$(ROOTDIR)/tests/lint/pylintrc

vta/hardware/vivado/Makefile

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Directories
22
ROOTDIR = $(CURDIR)
3-
BUILD_DIR = $(ROOTDIR)/build
3+
BUILD_DIR = $(ROOTDIR)/../../build/hardware/vivado
44
SCRIPT_DIR = $(ROOTDIR)/scripts
55
SRC_DIR = $(ROOTDIR)/src
66
SIM_DIR = $(ROOTDIR)/sim
@@ -27,20 +27,21 @@ include $(config)
2727
#--------------------
2828

2929
# Number of threads during compilation
30-
NUM_THREADS = 8
30+
VTA_HW_COMP_THREADS = 8
3131

3232
# Target Frequency
33-
CLOCK_FREQ = 100
33+
VTA_HW_COMP_CLOCK_FREQ = 100
3434

3535
# Timing closure compensation (0 for none, 3 for highest)
36-
TIMING_CLOSURE_COMP = 0
36+
VTA_HW_COMP_TIMING_COMP = 0
3737

3838
# Derive clock target period
39-
TARGET_PER = $(shell echo "$$(( (1000 + $(CLOCK_FREQ) - 1) / $(CLOCK_FREQ) - 0))" )
39+
TARGET_PER = \
40+
$(shell echo "$$(( (1000 + $(VTA_HW_COMP_CLOCK_FREQ) - 1) / $(VTA_HW_COMP_CLOCK_FREQ) - $(VTA_HW_COMP_TIMING_COMP)))" )
4041

4142
# Derive config name
4243
CONF = \
43-
$(BATCH)x$(IN_BLOCK)x$(OUT_BLOCK)_$(INP_WIDTH)bx$(WGT_WIDTH)b_$(CLOCK_FREQ)MHz_$(TARGET_PER)ns
44+
$(VTA_BATCH)x$(VTA_IN_BLOCK)x$(VTA_OUT_BLOCK)_$(VTA_INP_WIDTH)bx$(VTA_WGT_WIDTH)b_$(VTA_HW_COMP_CLOCK_FREQ)MHz_$(TARGET_PER)ns
4445
IP_BUILD_PATH = $(BUILD_DIR)/hls/$(CONF)
4546
HW_BUILD_PATH = $(BUILD_DIR)/vivado/$(CONF)
4647

@@ -53,23 +54,23 @@ ip:
5354
cd $(IP_BUILD_PATH) && \
5455
$(VIVADO_HLS) -f $(SCRIPT_DIR)/hls.tcl \
5556
-tclargs $(SRC_DIR) $(SIM_DIR) $(TEST_DIR) $(INCLUDE_DIR) $(TARGET_PER) \
56-
$(LOG_INP_WIDTH) $(LOG_WGT_WIDTH) $(LOG_ACC_WIDTH) $(LOG_OUT_WIDTH) \
57-
$(LOG_BATCH) $(LOG_BLOCK_OUT) $(LOG_BLOCK_IN) \
58-
$(LOG_UOP_BUFF_SIZE) $(LOG_INP_BUFF_SIZE) $(LOG_WGT_BUFF_SIZE) \
59-
$(LOG_ACC_BUFF_SIZE) $(LOG_OUT_BUFF_SIZE)
57+
$(VTA_LOG_INP_WIDTH) $(VTA_LOG_WGT_WIDTH) $(VTA_LOG_ACC_WIDTH) $(VTA_LOG_OUT_WIDTH) \
58+
$(VTA_LOG_BATCH) $(VTA_LOG_BLOCK_OUT) $(VTA_LOG_BLOCK_IN) \
59+
$(VTA_LOG_UOP_BUFF_SIZE) $(VTA_LOG_INP_BUFF_SIZE) $(VTA_LOG_WGT_BUFF_SIZE) \
60+
$(VTA_LOG_ACC_BUFF_SIZE) $(VTA_LOG_OUT_BUFF_SIZE)
6061

6162
bit: ip
6263
mkdir -p $(HW_BUILD_PATH)
6364
cd $(HW_BUILD_PATH) && \
6465
$(VIVADO) -mode tcl -source $(SCRIPT_DIR)/vivado.tcl \
65-
-tclargs $(IP_BUILD_PATH) $(NUM_THREADS) $(CLOCK_FREQ) \
66-
$(INP_WIDTH) $(WGT_WIDTH) $(OUT_WIDTH) \
67-
$(BATCH) $(IN_BLOCK) $(OUT_BLOCK) \
68-
$(INP_BUFF_SIZE) $(WGT_BUFF_SIZE) $(OUT_BUFF_SIZE)
66+
-tclargs $(IP_BUILD_PATH) $(VTA_HW_COMP_THREADS) $(VTA_HW_COMP_CLOCK_FREQ) \
67+
$(VTA_INP_WIDTH) $(VTA_WGT_WIDTH) $(OUT_WIDTH) \
68+
$(VTA_BATCH) $(VTA_IN_BLOCK) $(VTA_OUT_BLOCK) \
69+
$(VTA_INP_BUFF_SIZE) $(VTA_WGT_BUFF_SIZE) $(VTA_OUT_BUFF_SIZE)
6970

7071
driver: bit
7172
cd $(HW_BUILD_PATH) && $(HSI) -mode tcl -source $(SCRIPT_DIR)/hsi.tcl -nojournal -nolog
7273
cd $(HW_BUILD_PATH)/bsp && make
7374

7475
clean:
75-
rm -rf build
76+
rm -rf $(BUILD_DIR)

vta/hardware/vivado/scripts/hls.tcl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ if { [llength $argv] eq 19 } {
6363

6464
# C define flags to pass to compiler
6565
set cflags "-I $include_dir -I $src_dir -I $test_dir \
66-
-DDEBUG=0 -DLOG_WGT_WIDTH=$wgt_width -DLOG_INP_WIDTH=$inp_width \
67-
-DLOG_ACC_WIDTH=$acc_width -DLOG_OUT_WIDTH=$out_width \
68-
-DLOG_BATCH=$batch -DLOG_BLOCK_OUT=$block_out -DLOG_BLOCK_IN=$block_in \
69-
-DLOG_UOP_BUFF_SIZE=$uop_buff_size -DLOG_INP_BUFF_SIZE=$inp_buff_size \
70-
-DLOG_WGT_BUFF_SIZE=$wgt_buff_size -DLOG_ACC_BUFF_SIZE=$acc_buff_size \
71-
-DLOG_OUT_BUFF_SIZE=$out_buff_size"
66+
-DVTA_DEBUG=0 -DVTA_LOG_WGT_WIDTH=$wgt_width -DVTA_LOG_INP_WIDTH=$inp_width \
67+
-DVTA_LOG_ACC_WIDTH=$acc_width -DVTA_LOG_OUT_WIDTH=$out_width \
68+
-DVTA_LOG_BATCH=$batch -DVTA_LOG_BLOCK_OUT=$block_out -DVTA_LOG_BLOCK_IN=$block_in \
69+
-DVTA_LOG_UOP_BUFF_SIZE=$uop_buff_size -DVTA_LOG_INP_BUFF_SIZE=$inp_buff_size \
70+
-DVTA_LOG_WGT_BUFF_SIZE=$wgt_buff_size -DVTA_LOG_ACC_BUFF_SIZE=$acc_buff_size \
71+
-DVTA_LOG_OUT_BUFF_SIZE=$out_buff_size"
7272

7373
# Initializes the HLS design and sets HLS pragmas for memory partitioning.
7474
# This is necessary because of a Vivado restriction that doesn't allow for

vta/hardware/vivado/sim/vta_test.cc

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,52 +11,49 @@
1111
#include "../src/vta.h"
1212
#include "../../../tests/hardware/common/test_lib.h"
1313

14-
int main(void)
15-
{
16-
17-
#if DEBUG==1
14+
int main(void) {
15+
#if DEBUG == 1
1816
printParameters();
1917
#endif
2018

2119
// Buffer indexing
22-
assert(LOG_ACC_BUFF_DEPTH>=LOG_INP_BUFF_DEPTH);
20+
assert(VTA_LOG_ACC_BUFF_DEPTH >= VTA_LOG_INP_BUFF_DEPTH);
2321
// Micro op bound
24-
assert(UOP_GEM_3_1<UOP_WIDTH);
25-
assert(UOP_ALU_3_1<UOP_WIDTH);
22+
assert(VTA_UOP_GEM_3_1 < VTA_UOP_WIDTH);
23+
assert(VTA_UOP_ALU_3_1 < VTA_UOP_WIDTH);
2624
// Instruction alignment checks
27-
assert(INSN_MEM_7_1<INSN_MEM_8_0);
28-
assert(INSN_GEM_8_1<INSN_GEM_9_0);
25+
assert(VTA_INSN_MEM_7_1 < VTA_INSN_MEM_8_0);
26+
assert(VTA_INSN_GEM_8_1 < VTA_INSN_GEM_9_0);
2927
// Instruction bounds
30-
assert(INSN_MEM_E_1<INS_WIDTH);
31-
assert(INSN_GEM_E_1<INS_WIDTH);
32-
assert(INSN_ALU_F_1<INS_WIDTH);
28+
assert(VTA_INSN_MEM_E_1 < VTA_INS_WIDTH);
29+
assert(VTA_INSN_GEM_E_1 < VTA_INS_WIDTH);
30+
assert(VTA_INSN_ALU_F_1 < VTA_INS_WIDTH);
3331

3432
int status = 0;
3533

3634
// Run ALU test (vector-scalar operators)
37-
status |= alu_test(ALU_OPCODE_MIN, true, 16, 128, true);
38-
status |= alu_test(ALU_OPCODE_MIN, true, 16, 128, false);
39-
status |= alu_test(ALU_OPCODE_MAX, true, 16, 128, true);
40-
status |= alu_test(ALU_OPCODE_MAX, true, 16, 128, false);
41-
status |= alu_test(ALU_OPCODE_ADD, true, 16, 128, true);
42-
status |= alu_test(ALU_OPCODE_ADD, true, 16, 128, false);
43-
status |= alu_test(ALU_OPCODE_SHR, true, 16, 128, true);
44-
status |= alu_test(ALU_OPCODE_SHR, true, 16, 128, false);
35+
status |= alu_test(VTA_ALU_OPCODE_MIN, true, 16, 128, true);
36+
status |= alu_test(VTA_ALU_OPCODE_MIN, true, 16, 128, false);
37+
status |= alu_test(VTA_ALU_OPCODE_MAX, true, 16, 128, true);
38+
status |= alu_test(VTA_ALU_OPCODE_MAX, true, 16, 128, false);
39+
status |= alu_test(VTA_ALU_OPCODE_ADD, true, 16, 128, true);
40+
status |= alu_test(VTA_ALU_OPCODE_ADD, true, 16, 128, false);
41+
status |= alu_test(VTA_ALU_OPCODE_SHR, true, 16, 128, true);
42+
status |= alu_test(VTA_ALU_OPCODE_SHR, true, 16, 128, false);
4543

4644
// Run ALU test (vector-vector operators)
47-
status |= alu_test(ALU_OPCODE_MIN, false, 16, 128, true);
48-
status |= alu_test(ALU_OPCODE_MIN, false, 16, 128, false);
49-
status |= alu_test(ALU_OPCODE_MAX, false, 16, 128, true);
50-
status |= alu_test(ALU_OPCODE_MAX, false, 16, 128, false);
51-
status |= alu_test(ALU_OPCODE_ADD, false, 16, 128, true);
52-
status |= alu_test(ALU_OPCODE_ADD, false, 16, 128, false);
45+
status |= alu_test(VTA_ALU_OPCODE_MIN, false, 16, 128, true);
46+
status |= alu_test(VTA_ALU_OPCODE_MIN, false, 16, 128, false);
47+
status |= alu_test(VTA_ALU_OPCODE_MAX, false, 16, 128, true);
48+
status |= alu_test(VTA_ALU_OPCODE_MAX, false, 16, 128, false);
49+
status |= alu_test(VTA_ALU_OPCODE_ADD, false, 16, 128, true);
50+
status |= alu_test(VTA_ALU_OPCODE_ADD, false, 16, 128, false);
5351

5452
// Run blocked GEMM test
55-
status |= blocked_gemm_test(256, 256, BLOCK_OUT*4, true, 2);
56-
status |= blocked_gemm_test(256, 256, BLOCK_OUT*4, false, 2);
57-
status |= blocked_gemm_test(256, 256, BLOCK_OUT*4, true, 1);
58-
status |= blocked_gemm_test(256, 256, BLOCK_OUT*4, false, 1);
53+
status |= blocked_gemm_test(256, 256, VTA_BLOCK_OUT*4, true, 2);
54+
status |= blocked_gemm_test(256, 256, VTA_BLOCK_OUT*4, false, 2);
55+
status |= blocked_gemm_test(256, 256, VTA_BLOCK_OUT*4, true, 1);
56+
status |= blocked_gemm_test(256, 256, VTA_BLOCK_OUT*4, false, 1);
5957

6058
return status;
61-
62-
}
59+
}

0 commit comments

Comments
 (0)