From 6463cca5290fbd295ce01d5c8c0b493306c2243c Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 2 Apr 2020 08:46:32 -0700 Subject: [PATCH] extending basic test --- driver/hw/Makefile | 30 +++++--- driver/hw/vortex_afu.sv | 3 +- driver/set_env.sh | 2 + driver/sw/Makefile | 6 +- driver/sw/dummy/Makefile | 20 ++++++ driver/sw/dummy/vortex.cpp | 45 ++++++++++++ driver/sw/vx_utils.cpp | 2 +- driver/tests/basic/Makefile | 6 +- driver/tests/basic/basic | Bin 40960 -> 39872 bytes driver/tests/basic/basic.cpp | 108 +++++++++++++++++++++-------- driver/tests/basic/rv32ui-p-lw.bin | Bin 0 -> 8208 bytes driver/tests/basic/rv32ui-p-sw.bin | Bin 0 -> 8240 bytes driver/tests/demo/Makefile | 4 +- driver/tests/demo/demo | Bin 40192 -> 38720 bytes 14 files changed, 180 insertions(+), 46 deletions(-) create mode 100644 driver/sw/dummy/Makefile create mode 100644 driver/sw/dummy/vortex.cpp create mode 100644 driver/tests/basic/rv32ui-p-lw.bin create mode 100644 driver/tests/basic/rv32ui-p-sw.bin diff --git a/driver/hw/Makefile b/driver/hw/Makefile index 74d99109..a5333bb0 100644 --- a/driver/hw/Makefile +++ b/driver/hw/Makefile @@ -1,27 +1,35 @@ -BUILD_DIR=build_sim +BUILD_DIR=build_ase all: ase fpga -ase: build-setup +ase: setup-ase make -C $(BUILD_DIR) -fpga: build-setup - # TODO +fpga: setup-fpga + cd build_fpga && qsub-synth -build-setup: $(BUILD_DIR)/Makefile +setup-ase: build_ase/Makefile -$(BUILD_DIR)/Makefile: - afu_sim_setup --sources=sources.txt --platform discrete_pcie3 $(BUILD_DIR) -f +setup-fpga: build_fpga/build/dcp.qpf + +build_ase/Makefile: + afu_sim_setup --s sources.txt build_ase + +build_fpga/build/dcp.qpf: + afu_synth_setup -s sources.txt build_fpga run-ase: - cd $(BUILD_DIR) && MENT_VSIM_OPT="-dpicpppath /usr/bin/gcc" make sim + cd build_ase && make sim wave: - vsim -view $(BUILD_DIR)/work/vsim.wlf -do wave.do + vsim -view build_ase/work/vsim.wlf -do wave.do run-fpga: # TODO -clean: - rm -rf $(BUILD_DIR) \ No newline at end of file +clean-ase: + rm -rf build_ase + +clean-fpga: + rm -rf build_fpga \ No newline at end of file diff --git a/driver/hw/vortex_afu.sv b/driver/hw/vortex_afu.sv index 3cc0517c..d34dac2a 100644 --- a/driver/hw/vortex_afu.sv +++ b/driver/hw/vortex_afu.sv @@ -175,7 +175,8 @@ begin 16'h0006: af2cp_sTxPort.c2.data <= 64'h0; // next AFU 16'h0008: af2cp_sTxPort.c2.data <= 64'h0; // reserved MMIO_CSR_STATUS: begin - $display("%t: STATUS: state=%0d", $time, state); + if (state != af2cp_sTxPort.c2.data) + $display("%t: STATUS: state=%0d", $time, state); af2cp_sTxPort.c2.data <= state; end default: af2cp_sTxPort.c2.data <= 64'h0; diff --git a/driver/set_env.sh b/driver/set_env.sh index 8d94b148..2aa5fb10 100644 --- a/driver/set_env.sh +++ b/driver/set_env.sh @@ -1,3 +1,5 @@ +#!/bin/bash + source /tools/reconfig/intel/19.3/rg_intel_fpga_end_19.3.sh export PATH=/tools/opae/1.4.0/bin:/tools/reconfig/intel/19.3/modelsim_ase/bin:$PATH export LD_LIBRARY_PATH=/tools/opae/1.4.0/lib:$PATH diff --git a/driver/sw/Makefile b/driver/sw/Makefile index 5811f3c3..fe10c1c1 100644 --- a/driver/sw/Makefile +++ b/driver/sw/Makefile @@ -1,6 +1,9 @@ -all: opae rtlsim simx +all: dummy + +dummy: + $(MAKE) -C dummy opae: $(MAKE) -C opae @@ -12,6 +15,7 @@ simx: $(MAKE) -C simx clean: + $(MAKE) clean -C dummy $(MAKE) clean -C opae $(MAKE) clean -C rtlsim $(MAKE) clean -C simx diff --git a/driver/sw/dummy/Makefile b/driver/sw/dummy/Makefile new file mode 100644 index 00000000..871f86f2 --- /dev/null +++ b/driver/sw/dummy/Makefile @@ -0,0 +1,20 @@ +CXXFLAGS += -std=c++11 -O3 -Wall -Wextra -pedantic -Wfatal-errors +#CXXFLAGS += -std=c++11 -g -O0 -Wall -Wextra -pedantic -Wfatal-errors + +CXXFLAGS += -I../include -I../../../runtime + +CXXFLAGS += -fPIC + +LDFLAGS += -shared -pthread + +SRCS = vortex.cpp ../vx_utils.cpp + +PROJECT = libvortex.so + +all: $(PROJECT) + +$(PROJECT): $(SRCS) + $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ + +clean: + rm -rf $(PROJECT) obj_dir \ No newline at end of file diff --git a/driver/sw/dummy/vortex.cpp b/driver/sw/dummy/vortex.cpp new file mode 100644 index 00000000..13f09ae5 --- /dev/null +++ b/driver/sw/dummy/vortex.cpp @@ -0,0 +1,45 @@ +#include + +extern int vx_dev_open(vx_device_h* /*hdevice*/) { + return -1; +} + +extern int vx_dev_close(vx_device_h /*hdevice*/) { + return -1; +} + +extern int vx_alloc_dev_mem(vx_device_h /*hdevice*/, size_t /*size*/, size_t* /*dev_maddr*/) { + return -1; +} + +extern int vx_flush_caches(vx_device_h /*hdevice*/, size_t /*dev_maddr*/, size_t /*size*/) { + return -1; +} + +extern int vx_alloc_shared_mem(vx_device_h /*hdevice*/, size_t /*size*/, vx_buffer_h* /*hbuffer*/) { + return -1; +} + +extern volatile void* vx_host_ptr(vx_buffer_h /*hbuffer*/) { + return nullptr; +} + +extern int vx_buf_release(vx_buffer_h /*hbuffer*/) { + return -1; +} + +extern int vx_copy_to_dev(vx_buffer_h /*hbuffer*/, size_t /*dev_maddr*/, size_t /*size*/, size_t /*src_offset*/) { + return -1; +} + +extern int vx_copy_from_dev(vx_buffer_h /*hbuffer*/, size_t /*dev_maddr*/, size_t /*size*/, size_t /*dest_offset*/) { + return -1; +} + +extern int vx_start(vx_device_h /*hdevice*/) { + return -1; +} + +extern int vx_ready_wait(vx_device_h /*hdevice*/, long long /*timeout*/) { + return -1; +} diff --git a/driver/sw/vx_utils.cpp b/driver/sw/vx_utils.cpp index 023f013c..d81d5ba2 100644 --- a/driver/sw/vx_utils.cpp +++ b/driver/sw/vx_utils.cpp @@ -35,7 +35,7 @@ extern int vx_upload_kernel_bytes(vx_device_h device, const void* content, size_ if (NULL == content || 0 == size) return -1; - uint32_t buffer_transfer_size = 4096; + uint32_t buffer_transfer_size = 65536; uint32_t kernel_base_addr = vx_dev_caps(VX_CAPS_KERNEL_BASE_ADDR); // allocate device buffer diff --git a/driver/tests/basic/Makefile b/driver/tests/basic/Makefile index 089739a1..f29b8e64 100644 --- a/driver/tests/basic/Makefile +++ b/driver/tests/basic/Makefile @@ -1,5 +1,5 @@ -CXXFLAGS += -std=c++17 -O0 -g -Wall -Wextra -pedantic -Wfatal-errors +CXXFLAGS += -std=c++11 -O0 -g -Wall -Wextra -pedantic -Wfatal-errors CXXFLAGS += -I../../sw/include @@ -12,13 +12,13 @@ SRCS = basic.cpp all: $(PROJECT) $(PROJECT): $(SRCS) - $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -L../../sw/simx -lvortex -o $@ + $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -L../../sw/dummy -lvortex -o $@ run-fpga: $(PROJECT) LD_LIBRARY_PATH=../../sw/opae:$(LD_LIBRARY_PATH) ./$(PROJECT) run-ase: $(PROJECT) - LD_LIBRARY_PATH=../../sw/opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) + ASE_LOG=0 LD_LIBRARY_PATH=../../sw/opae/ase:$(LD_LIBRARY_PATH) ./$(PROJECT) run-rtlsim: $(PROJECT) LD_LIBRARY_PATH=../../sw/rtlsim:$(LD_LIBRARY_PATH) ./$(PROJECT) diff --git a/driver/tests/basic/basic b/driver/tests/basic/basic index f3a0e08b5d84422f2fb4667476ff79f1e9a0cf17..1ec3ae80ee8fa7baf63f71077cbf478614e2a832 100755 GIT binary patch literal 39872 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

y|eg{RKW3MJn6>n?TA`k9! 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 #include +int test = -1; + static void parse_args(int argc, char **argv) { int c; - while ((c = getopt(argc, argv, "?")) != -1) { + while ((c = getopt(argc, argv, "t:h?")) != -1) { switch (c) { + case 't': { + test = atoi(optarg); + } break; + case 'h': case '?': { std::cout << "Test." << std::endl; - std::cout << "Usage: [-h: help]" << std::endl; + std::cout << "Usage: [-t testno][-h: help]" << std::endl; exit(0); } break; default: @@ -21,11 +27,11 @@ uint64_t shuffle(int i, uint64_t value) { return (value << i) | (value & ((1 << i)-1));; } -int run_test(vx_buffer_h sbuf, - vx_buffer_h dbuf, - uint32_t address, - uint64_t value, - int num_blocks) { +int run_test_0(vx_buffer_h sbuf, + vx_buffer_h dbuf, + uint32_t address, + uint64_t value, + int num_blocks) { int ret; int errors = 0; @@ -67,6 +73,33 @@ int run_test(vx_buffer_h sbuf, return 0; } +int run_test_1(vx_device_h device, const char* program) { + int ret; + + // upload program + std::cout << "upload program" << std::endl; + ret = vx_upload_kernel_file(device, program); + if (ret != 0) { + return ret; + } + + // start device + std::cout << "start device" << std::endl; + ret = vx_start(device); + if (ret != 0) { + return ret; + } + + // wait for completion + std::cout << "wait for completion" << std::endl; + ret = vx_ready_wait(device, -1); + if (ret != 0) { + return ret; + } + + return 0; +} + vx_device_h device = nullptr; vx_buffer_h sbuf = nullptr; vx_buffer_h dbuf = nullptr; @@ -112,30 +145,51 @@ int main(int argc, char *argv[]) { return ret; } - // run tests - std::cout << "run tests" << std::endl; - ret = run_test(sbuf, dbuf, 0x10000000, 0x0badf00d00ff00ff, 1); - if (ret != 0) { - cleanup(); - return ret; + // run tests + if (0 == test || -1 == test) { + std::cout << "run test suite 0" << std::endl; + + ret = run_test_0(sbuf, dbuf, 0x10000000, 0x0badf00d00ff00ff, 1); + if (ret != 0) { + cleanup(); + return ret; + } + + ret = run_test_0(sbuf, dbuf, 0x10000000, 0x0badf00d00ff00ff, 2); + if (ret != 0) { + cleanup(); + return ret; + } + + ret = run_test_0(sbuf, dbuf, 0x20000000, 0xff00ff00ff00ff00, 4); + if (ret != 0) { + cleanup(); + return ret; + } + + ret = run_test_0(sbuf, dbuf, 0x20000000, 0x0badf00d40ff40ff, 8); + if (ret != 0) { + cleanup(); + return ret; + } } - ret = run_test(sbuf, dbuf, 0x10000000, 0x0badf00d00ff00ff, 2); - if (ret != 0) { - cleanup(); - return ret; + if (1 == test || -1 == test) { + std::cout << "run test suite 1" << std::endl; + ret = run_test_1(device, "rv32ui-p-lw.bin"); + if (ret != 0) { + cleanup(); + return ret; + } } - ret = run_test(sbuf, dbuf, 0x20000000, 0xff00ff00ff00ff00, 4); - if (ret != 0) { - cleanup(); - return ret; - } - - ret = run_test(sbuf, dbuf, 0x20000000, 0x0badf00d40ff40ff, 8); - if (ret != 0) { - cleanup(); - return ret; + if (2 == test || -1 == test) { + std::cout << "run test suite 1" << std::endl; + ret = run_test_1(device, "rv32ui-p-sw.bin"); + if (ret != 0) { + cleanup(); + return ret; + } } // cleanup diff --git a/driver/tests/basic/rv32ui-p-lw.bin b/driver/tests/basic/rv32ui-p-lw.bin new file mode 100644 index 0000000000000000000000000000000000000000..51c28eaac779eef685dc9244fafbb62a03f83cf7 GIT binary patch literal 8208 zcmeH`!HUyR6o&t#Q$dB?I9Dx>wUeL?VPb zq5sEFW>%>Q1X75ZS`)Yf0qs>c1iJ7b?+&lmHi4#d__v!r&it15P1#lWE!$N$tK?3F zv~2hQqy-F2AnNsg`(elR+Ya3>-JVO&gQ)lHr@Ci?G&?fK8-94%^_z}+JiPtOZ$o=1 zd(H5}^=;k9hvN<$dKP#;`XgXsWr+4>)X#x>m|U4_!T0{iBhAR7Ju8)#3-u^z&9yk~ zj{-~@sUR(rmIpOVnsW_b`=c0>nMkQ7&EAFzOYIBQ%$EIbLG347#VntxCTWX)J5cwN z&0>~MR5M%lBi;{^OT{c7^D~tFLa2k}Vo~!$6ktZWx$OBw>lX_BeH0vJ{n5_KImcSB zNh^jVZgU^rX%@0?lxJ4wr{|=(j>vRy-01v~*3pXJdz1V1yVIFsHdUXVDKmAQdApJc zUYD6gu3(|;sVH+BI+w2GyjME6U_vh?TYuvh%v z3+*p6i+K)`YMG&P47O;Oc6SdeBLmWK5YZmdE*a`NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO Y1egF5U;<3wzY)lgfvzkSsh}(U2fxc9M*si- literal 0 HcmV?d00001 diff --git a/driver/tests/basic/rv32ui-p-sw.bin b/driver/tests/basic/rv32ui-p-sw.bin new file mode 100644 index 0000000000000000000000000000000000000000..4a3db3b873a56c5bf88c72f97b11437d7601c8aa GIT binary patch literal 8240 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 literal 40192 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 HalHQD#1J+|