diff --git a/docs/CONTRIBUTORS b/docs/CONTRIBUTORS index 8c038e1c3..1da70dd75 100644 --- a/docs/CONTRIBUTORS +++ b/docs/CONTRIBUTORS @@ -55,6 +55,7 @@ Marco Widmer Markus Krause Marlon James Marshal Qiao +Martin Schmidt Matthew Ballance Michael Killough Mike Popoloski diff --git a/src/V3EmitCMake.cpp b/src/V3EmitCMake.cpp index e8ff6e06d..a2aa6bd78 100644 --- a/src/V3EmitCMake.cpp +++ b/src/V3EmitCMake.cpp @@ -115,6 +115,8 @@ class CMakeEmitter final { cmake_set_raw(*of, name + "_THREADS", cvtToStr(v3Global.opt.threads())); *of << "# Threaded tracing output mode? 0/1/N threads (from --trace-threads)\n"; cmake_set_raw(*of, name + "_TRACE_THREADS", cvtToStr(v3Global.opt.traceThreads())); + *of << "# Struct output mode? 0/1 (from --trace-structs)\n"; + cmake_set_raw(*of, name + "_TRACE_STRUCTS", cvtToStr(v3Global.opt.traceStructs())); *of << "# VCD Tracing output mode? 0/1 (from --trace)\n"; cmake_set_raw(*of, name + "_TRACE_VCD", (v3Global.opt.trace() && (v3Global.opt.traceFormat() == TraceFormat::VCD)) diff --git a/verilator-config.cmake.in b/verilator-config.cmake.in index f91fab2d1..c75e469d4 100644 --- a/verilator-config.cmake.in +++ b/verilator-config.cmake.in @@ -119,8 +119,15 @@ define_property(TARGET FULL_DOCS "Verilator SystemC enabled" ) +define_property(TARGET + PROPERTY VERILATOR_TRACE_STRUCTS + BRIEF_DOCS "Verilator trace structs enabled" + FULL_DOCS "Verilator trace structs enabled" +) + + function(verilate TARGET) - cmake_parse_arguments(VERILATE "COVERAGE;TRACE;TRACE_FST;SYSTEMC" + cmake_parse_arguments(VERILATE "COVERAGE;TRACE;TRACE_FST;SYSTEMC;TRACE_STRUCTS" "PREFIX;TOP_MODULE;THREADS;TRACE_THREADS;DIRECTORY" "SOURCES;VERILATOR_ARGS;INCLUDE_DIRS;OPT_SLOW;OPT_FAST;OPT_GLOBAL" ${ARGN}) @@ -168,6 +175,10 @@ function(verilate TARGET) list(APPEND VERILATOR_ARGS --cc) endif() + if (VERILATE_TRACE_STRUCTS) + list(APPEND VERILATOR_ARGS --trace-structs) + endif() + foreach(INC ${VERILATE_INCLUDE_DIRS}) list(APPEND VERILATOR_ARGS -y "${INC}") endforeach() @@ -277,6 +288,10 @@ function(verilate TARGET) set_property(TARGET ${TARGET} PROPERTY VERILATOR_SYSTEMC ON) endif() + if (${VERILATE_PREFIX}_TRACE_STRUCTS) + set_property(TARGET ${TARGET} PROPERTY VERILATOR_TRACE_STRUCTS ON) + endif() + # Add the compile flags only on Verilated sources target_include_directories(${TARGET} PUBLIC ${VDIR}) target_sources(${TARGET} PRIVATE ${GENERATED_SOURCES} "${VCMAKE_COPY}"