diff --git a/include/verilated.cpp b/include/verilated.cpp index e3a847edc..1ad503beb 100644 --- a/include/verilated.cpp +++ b/include/verilated.cpp @@ -1678,7 +1678,7 @@ void Verilated::flushCall() VL_MT_SAFE { } void Verilated::commandArgs(int argc, const char** argv) VL_MT_SAFE { - VerilatedLockGuard lock(m_mutex); + VerilatedLockGuard lock(s_args.m_argMutex); s_args.argc = argc; s_args.argv = argv; VerilatedImp::commandArgs(argc,argv); diff --git a/include/verilated.h b/include/verilated.h index 998740bfc..6d869ea5e 100644 --- a/include/verilated.h +++ b/include/verilated.h @@ -347,6 +347,7 @@ class Verilated { // no need to be save-restored (serialized) the // assumption is that the restore is allowed to pass different arguments static struct CommandArgValues { + VerilatedMutex m_argMutex; ///< Mutex for s_args members, when VL_THREADED int argc; const char** argv; CommandArgValues() : argc(0), argv(NULL) {}