From a542e7bcbd159059969582e2785253fe10b9e40f Mon Sep 17 00:00:00 2001 From: Anton Sorokin Date: Thu, 19 Aug 2021 09:29:48 -0700 Subject: [PATCH 1/5] VTA cmake file require Verilator include for tsim target. VTA module.cc uses svOpenArrayHandle to send wide data through DPI --- cmake/modules/VTA.cmake | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cmake/modules/VTA.cmake b/cmake/modules/VTA.cmake index e520e62711f3..a0872838e26e 100644 --- a/cmake/modules/VTA.cmake +++ b/cmake/modules/VTA.cmake @@ -73,15 +73,30 @@ elseif(PYTHON) # Cycle accurate simulator driver build if(USE_VTA_TSIM) + if(NOT DEFINED ENV{VERILATOR_INC_DIR}) + if (EXISTS /usr/local/share/verilator/include) + set(VERILATOR_INC_DIR /usr/local/share/verilator/include) + elseif (EXISTS /usr/share/verilator/include) + set(VERILATOR_INC_DIR /usr/share/verilator/include) + else() + message(STATUS "Verilator not found in /usr/local/share/verilator/include") + message(STATUS "Verilator not found in /usr/share/verilator/include") + message(FATAL_ERROR "Cannot find Verilator, VERILATOR_INC_DIR is not defined") + endif() + else() + set(VERILATOR_INC_DIR $ENV{VERILATOR_INC_DIR}) + endif() # Add tsim driver sources file(GLOB TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/*.cc) file(GLOB TSIM_RUNTIME_SRCS vta/runtime/*.cc) + list(APPEND TSIM_RUNTIME_SRCS ${VERILATOR_INC_DIR}/verilated.cpp) + list(APPEND TSIM_RUNTIME_SRCS ${VERILATOR_INC_DIR}/verilated_dpi.cpp) list(APPEND TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/tsim/tsim_driver.cc) list(APPEND TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/dpi/module.cc) list(APPEND TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/vmem/virtual_memory.cc) # Target lib: vta_tsim add_library(vta_tsim SHARED ${TSIM_RUNTIME_SRCS}) - target_include_directories(vta_tsim SYSTEM PUBLIC ${VTA_HW_PATH}/include) + target_include_directories(vta_tsim SYSTEM PUBLIC ${VTA_HW_PATH}/include ${VERILATOR_INC_DIR} ${VERILATOR_INC_DIR}/vltstd) target_compile_definitions(vta_tsim PUBLIC DMLC_USE_LOGGING_LIBRARY=) foreach(__def ${VTA_DEFINITIONS}) string(SUBSTRING ${__def} 3 -1 __strip_def) From 8cad7e0275dbc6402ad6edf7784a6a62b7ea5ec1 Mon Sep 17 00:00:00 2001 From: Anton Sorokin Date: Tue, 24 Aug 2021 09:45:54 -0700 Subject: [PATCH 2/5] Refactor Verialtor check conditions --- cmake/modules/VTA.cmake | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/cmake/modules/VTA.cmake b/cmake/modules/VTA.cmake index a0872838e26e..7718f506def7 100644 --- a/cmake/modules/VTA.cmake +++ b/cmake/modules/VTA.cmake @@ -73,18 +73,16 @@ elseif(PYTHON) # Cycle accurate simulator driver build if(USE_VTA_TSIM) - if(NOT DEFINED ENV{VERILATOR_INC_DIR}) - if (EXISTS /usr/local/share/verilator/include) - set(VERILATOR_INC_DIR /usr/local/share/verilator/include) - elseif (EXISTS /usr/share/verilator/include) - set(VERILATOR_INC_DIR /usr/share/verilator/include) - else() - message(STATUS "Verilator not found in /usr/local/share/verilator/include") - message(STATUS "Verilator not found in /usr/share/verilator/include") - message(FATAL_ERROR "Cannot find Verilator, VERILATOR_INC_DIR is not defined") - endif() - else() + if(DEFINED ENV{VERILATOR_INC_DIR}) set(VERILATOR_INC_DIR $ENV{VERILATOR_INC_DIR}) + elseif (EXISTS /usr/local/share/verilator/include) + set(VERILATOR_INC_DIR /usr/local/share/verilator/include) + elseif (EXISTS /usr/share/verilator/include) + set(VERILATOR_INC_DIR /usr/share/verilator/include) + else() + message(STATUS "Verilator not found in /usr/local/share/verilator/include") + message(STATUS "Verilator not found in /usr/share/verilator/include") + message(FATAL_ERROR "Cannot find Verilator, VERILATOR_INC_DIR is not defined") endif() # Add tsim driver sources file(GLOB TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/*.cc) From e5fafc2154c596a3f4b5be1d12841af7cff33861 Mon Sep 17 00:00:00 2001 From: Anton Sorokin Date: Tue, 24 Aug 2021 09:50:48 -0700 Subject: [PATCH 3/5] Build TSIM only for CPU target. CPU target don't use -Werror to compile with Verilator. Jenkinsfile to have tvm_multilib_tsim defined for CPU build target. --- Jenkinsfile | 5 ++++- tests/scripts/task_config_build_arm.sh | 1 - tests/scripts/task_config_build_cpu.sh | 1 - tests/scripts/task_config_build_gpu.sh | 1 - tests/scripts/task_config_build_i386.sh | 1 - tests/scripts/task_config_build_wasm.sh | 1 - 6 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b96bdf566f3b..f84ad97bc01f 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -77,6 +77,9 @@ tvm_multilib = "build/libtvm.so, " + "build/libvta_fsim.so, " + tvm_runtime +tvm_multilib_tsim = "build/libvta_tsim.so, " + + tvm_multilib + // command to start a docker container docker_run = 'docker/bash.sh' // timeout in minutes @@ -218,7 +221,7 @@ stage('Build') { init_git() sh "${docker_run} ${ci_cpu} ./tests/scripts/task_config_build_cpu.sh" make(ci_cpu, 'build', '-j2') - pack_lib('cpu', tvm_multilib) + pack_lib('cpu', tvm_multilib_tsim) timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} ${ci_cpu} ./tests/scripts/task_ci_setup.sh" sh "${docker_run} ${ci_cpu} ./tests/scripts/task_python_unittest.sh" diff --git a/tests/scripts/task_config_build_arm.sh b/tests/scripts/task_config_build_arm.sh index cb42b9a71d59..47fa243e8d38 100755 --- a/tests/scripts/task_config_build_arm.sh +++ b/tests/scripts/task_config_build_arm.sh @@ -31,7 +31,6 @@ echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_LLVM llvm-config-8\) >> config.cmake echo set\(CMAKE_CXX_COMPILER g++\) >> config.cmake echo set\(CMAKE_CXX_FLAGS -Werror\) >> config.cmake -echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VTA_FSIM ON\) >> config.cmake echo set\(USE_ARM_COMPUTE_LIB ON\) >> config.cmake echo set\(USE_ARM_COMPUTE_LIB_GRAPH_EXECUTOR "/opt/acl"\) >> config.cmake diff --git a/tests/scripts/task_config_build_cpu.sh b/tests/scripts/task_config_build_cpu.sh index 167e5becd4a7..10f25e61fc64 100755 --- a/tests/scripts/task_config_build_cpu.sh +++ b/tests/scripts/task_config_build_cpu.sh @@ -34,7 +34,6 @@ echo set\(USE_NNPACK ON\) >> config.cmake echo set\(NNPACK_PATH /NNPACK/build/\) >> config.cmake echo set\(USE_ANTLR ON\) >> config.cmake echo set\(CMAKE_CXX_COMPILER g++\) >> config.cmake -echo set\(CMAKE_CXX_FLAGS -Werror\) >> config.cmake echo set\(HIDE_PRIVATE_SYMBOLS ON\) >> config.cmake echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VTA_FSIM ON\) >> config.cmake diff --git a/tests/scripts/task_config_build_gpu.sh b/tests/scripts/task_config_build_gpu.sh index 6e20087df34a..5f86476c64c7 100755 --- a/tests/scripts/task_config_build_gpu.sh +++ b/tests/scripts/task_config_build_gpu.sh @@ -38,7 +38,6 @@ echo set\(USE_GRAPH_EXECUTOR ON\) >> config.cmake echo set\(USE_STACKVM_RUNTIME ON\) >> config.cmake echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_ANTLR ON\) >> config.cmake -echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VTA_FSIM ON\) >> config.cmake echo set\(USE_BLAS openblas\) >> config.cmake echo set\(CMAKE_CXX_COMPILER g++\) >> config.cmake diff --git a/tests/scripts/task_config_build_i386.sh b/tests/scripts/task_config_build_i386.sh index ce244fa59276..86bdece0b384 100755 --- a/tests/scripts/task_config_build_i386.sh +++ b/tests/scripts/task_config_build_i386.sh @@ -31,7 +31,6 @@ echo set\(USE_PROFILER ON\) >> config.cmake echo set\(USE_LLVM llvm-config-4.0\) >> config.cmake echo set\(CMAKE_CXX_COMPILER g++\) >> config.cmake echo set\(CMAKE_CXX_FLAGS -Werror\) >> config.cmake -echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VTA_FSIM ON\) >> config.cmake echo set\(USE_VERILATOR ON\) >> config.cmake echo set\(USE_CCACHE OFF\) >> config.cmake diff --git a/tests/scripts/task_config_build_wasm.sh b/tests/scripts/task_config_build_wasm.sh index 490e9446007e..9a1edbccc1fc 100755 --- a/tests/scripts/task_config_build_wasm.sh +++ b/tests/scripts/task_config_build_wasm.sh @@ -32,6 +32,5 @@ echo set\(USE_ANTLR ON\) >> config.cmake echo set\(CMAKE_CXX_COMPILER g++\) >> config.cmake echo set\(CMAKE_CXX_FLAGS -Werror\) >> config.cmake echo set\(HIDE_PRIVATE_SYMBOLS ON\) >> config.cmake -echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VTA_FSIM ON\) >> config.cmake echo set\(USE_CCACHE OFF\) >> config.cmake From 5602ca4e49c6cedd8ae2dd5f7ff774edb9260185 Mon Sep 17 00:00:00 2001 From: Anton Sorokin Date: Tue, 24 Aug 2021 10:14:15 -0700 Subject: [PATCH 4/5] remove build/libvta_tsim.so from non tsim targeting builds --- Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index f84ad97bc01f..1a67947ee35f 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -73,7 +73,6 @@ tvm_runtime = "build/libtvm_runtime.so, build/config.cmake" tvm_lib = "build/libtvm.so, " + tvm_runtime // LLVM upstream lib tvm_multilib = "build/libtvm.so, " + - "build/libvta_tsim.so, " + "build/libvta_fsim.so, " + tvm_runtime From 5cc24fe2f77502a1a47cdb5a3dcb9d527580012b Mon Sep 17 00:00:00 2001 From: Anton Sorokin Date: Tue, 24 Aug 2021 19:44:05 -0700 Subject: [PATCH 5/5] Revert to enable TSIM build i386. Revert to -Werror in CPU config. Remove verilator CPP objects from cmake config for tsim and put them as include into vta module.cc to avoid Verilator compilation warnings --- Jenkinsfile | 2 +- cmake/modules/VTA.cmake | 2 -- tests/scripts/task_config_build_cpu.sh | 1 + tests/scripts/task_config_build_i386.sh | 1 + 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1a67947ee35f..ebdd3b9601b9 100755 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -254,7 +254,7 @@ stage('Build') { init_git() sh "${docker_run} ${ci_i386} ./tests/scripts/task_config_build_i386.sh" make(ci_i386, 'build', '-j2') - pack_lib('i386', tvm_multilib) + pack_lib('i386', tvm_multilib_tsim) } } }, diff --git a/cmake/modules/VTA.cmake b/cmake/modules/VTA.cmake index 7718f506def7..1f9d08b50a10 100644 --- a/cmake/modules/VTA.cmake +++ b/cmake/modules/VTA.cmake @@ -87,8 +87,6 @@ elseif(PYTHON) # Add tsim driver sources file(GLOB TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/*.cc) file(GLOB TSIM_RUNTIME_SRCS vta/runtime/*.cc) - list(APPEND TSIM_RUNTIME_SRCS ${VERILATOR_INC_DIR}/verilated.cpp) - list(APPEND TSIM_RUNTIME_SRCS ${VERILATOR_INC_DIR}/verilated_dpi.cpp) list(APPEND TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/tsim/tsim_driver.cc) list(APPEND TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/dpi/module.cc) list(APPEND TSIM_RUNTIME_SRCS ${VTA_HW_PATH}/src/vmem/virtual_memory.cc) diff --git a/tests/scripts/task_config_build_cpu.sh b/tests/scripts/task_config_build_cpu.sh index 10f25e61fc64..167e5becd4a7 100755 --- a/tests/scripts/task_config_build_cpu.sh +++ b/tests/scripts/task_config_build_cpu.sh @@ -34,6 +34,7 @@ echo set\(USE_NNPACK ON\) >> config.cmake echo set\(NNPACK_PATH /NNPACK/build/\) >> config.cmake echo set\(USE_ANTLR ON\) >> config.cmake echo set\(CMAKE_CXX_COMPILER g++\) >> config.cmake +echo set\(CMAKE_CXX_FLAGS -Werror\) >> config.cmake echo set\(HIDE_PRIVATE_SYMBOLS ON\) >> config.cmake echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VTA_FSIM ON\) >> config.cmake diff --git a/tests/scripts/task_config_build_i386.sh b/tests/scripts/task_config_build_i386.sh index 86bdece0b384..298259682972 100755 --- a/tests/scripts/task_config_build_i386.sh +++ b/tests/scripts/task_config_build_i386.sh @@ -32,6 +32,7 @@ echo set\(USE_LLVM llvm-config-4.0\) >> config.cmake echo set\(CMAKE_CXX_COMPILER g++\) >> config.cmake echo set\(CMAKE_CXX_FLAGS -Werror\) >> config.cmake echo set\(USE_VTA_FSIM ON\) >> config.cmake +echo set\(USE_VTA_TSIM ON\) >> config.cmake echo set\(USE_VERILATOR ON\) >> config.cmake echo set\(USE_CCACHE OFF\) >> config.cmake