@@ -40,14 +40,26 @@ message(STATUS "VERILATOR_BIN = ${VERILATOR_BIN}")
4040
4141find_package (Python3 COMPONENTS Interpreter REQUIRED)
4242
43+ set (TB_TOOL_GENERATE_TESTBENCH ${CMAKE_CURRENT_SOURCE_DIR} /tools/generate_testbench.py)
44+ message (STATUS "TB_TOOL_GENERATE_TESTBENCH = ${TB_TOOL_GENERATE_TESTBENCH} " )
45+
46+ set (TB_PYTHON ${Python3_EXECUTABLE} )
47+ message (STATUS "TB_PYTHON = [${TB_PYTHON} ]" )
48+
49+ set_property (GLOBAL PROPERTY TB_PYTHON_GLOBAL "${TB_PYTHON} " )
50+ set_property (GLOBAL PROPERTY TB_TOOL_GENERATE_TESTBENCH_GLOBAL "${TB_TOOL_GENERATE_TESTBENCH} " )
51+
4352function (googletest_verilog_testbench TB_TARGET)
53+ get_property (TB_PYTHON GLOBAL PROPERTY TB_PYTHON_GLOBAL)
54+ get_property (TB_TOOL_GENERATE_TESTBENCH GLOBAL PROPERTY TB_TOOL_GENERATE_TESTBENCH_GLOBAL)
55+
4456 cmake_parse_arguments (
4557 TB # prefix
4658 "" # list of options (true / false based on whether option is present or not)
47- "SOURCE" # single value keywords
59+ "SOURCE" . # single value keywords
4860 "INCLUDE_DIRS" # multi-value keywords
4961 ${ARGN} # arguments provided to the function
50- )
62+ )
5163
5264 message (STATUS "SOURCE = ${TB_SOURCE} " )
5365 message (STATUS "TARGET = ${TB_TARGET} " )
@@ -64,25 +76,25 @@ function(googletest_verilog_testbench TB_TARGET)
6476 message (STATUS "TB_VERILATED_OUTPUT_DIR = ${TB_VERILATED_OUTPUT_DIR} " )
6577 message (STATUS "TB_TESTBENCH_HEADER = ${TB_TESTBENCH_HEADER} " )
6678 message (STATUS "TB_TESTBENCH_SOURCE = ${TB_TESTBENCH_SOURCE} " )
67- message (STATUS "CMAKE_BINARY_DIR = " ${CMAKE_BINARY_DIR} )
68- message (STATUS "CMAKE_CURRENT_BINARY_DIR = " ${CMAKE_CURRENT_BINARY_DIR} )
79+ message (STATUS "CMAKE_BINARY_DIR = ${CMAKE_BINARY_DIR} " )
80+ message (STATUS "CMAKE_CURRENT_BINARY_DIR = ${CMAKE_CURRENT_BINARY_DIR} " )
6981
7082 # 1. verilate the verilog module
71-
7283 verilate(${TB_TARGET} SOURCES ${TB_SOURCE} INCLUDE_DIRS ${TB_INCLUDE_DIRS} DIRECTORY ${TB_VERILATED_OUTPUT_DIR} )
7384
7485 # 2. generate test bench
75- set (TOOL_GENERATE_TESTBENCH ${CMAKE_CURRENT_SOURCE_DIR} /tools/generate_testbench.py)
86+ message (STATUS "TB_PYTHON = [${TB_PYTHON} ]" )
87+ message (STATUS "TB_TOOL_GENERATE_TESTBENCH = ${TB_TOOL_GENERATE_TESTBENCH} " )
7688
7789 add_custom_command (
7890 OUTPUT ${TB_TESTBENCH_HEADER} ${TB_TESTBENCH_SOURCE}
79- COMMAND ${Python3_EXECUTABLE } ${TOOL_GENERATE_TESTBENCH } --name ${TB_TESTBENCH} --verilated-header-dir ${TB_VERILATED_OUTPUT_DIR} --output -header ${TB_TESTBENCH_HEADER} --output -source ${TB_TESTBENCH_SOURCE}
80- DEPENDS ${TOOL_GENERATE_TESTBENCH } ${TB_SOURCE}
91+ COMMAND ${TB_PYTHON } ${TB_TOOL_GENERATE_TESTBENCH } --name ${TB_TESTBENCH} --verilated-header-dir ${TB_VERILATED_OUTPUT_DIR} --output -header ${TB_TESTBENCH_HEADER} --output -source ${TB_TESTBENCH_SOURCE}
92+ DEPENDS ${TB_TOOL_GENERATE_TESTBENCH } ${TB_SOURCE}
8193 )
8294
8395 target_sources (${TB_TARGET} PRIVATE ${TB_TESTBENCH_HEADER} ${TB_TESTBENCH_SOURCE} )
8496
85- set (TB_TESTBENCH_TARGET "googletest_verilog_testbench- ${TB_TESTBENCH} " )
97+ set (TB_TESTBENCH_TARGET "googletest_verilog_testbench_ ${TB_TESTBENCH} " )
8698
8799 # 3. use a custom target to force cmake to create testbench first, before compiling TARGET
88100
0 commit comments