Skip to content

Commit d354c48

Browse files
committed
cmake: fixes for generating testbenches from another cmake project
1 parent d02713b commit d354c48

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

CMakeLists.txt

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,26 @@ message(STATUS "VERILATOR_BIN = ${VERILATOR_BIN}")
4040

4141
find_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+
4352
function(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

Comments
 (0)