diff --git a/include/verilated.h b/include/verilated.h index 804d07b1c..1ddb07ca3 100644 --- a/include/verilated.h +++ b/include/verilated.h @@ -288,6 +288,7 @@ public: /// Record command line arguments, for retrieval by $test$plusargs/$value$plusargs static void commandArgs(int argc, const char** argv); static void commandArgs(int argc, char** argv) { commandArgs(argc,(const char**)argv); } + static void commandArgsAdd(int argc, const char** argv); static CommandArgValues* getCommandArgs() {return &s_args;} /// Match plusargs with a given prefix. Returns static char* valid only for a single call static const char* commandArgsPlusMatch(const char* prefixp); diff --git a/include/verilated_imp.h b/include/verilated_imp.h index ecfb76d84..e54cf4654 100644 --- a/include/verilated_imp.h +++ b/include/verilated_imp.h @@ -92,7 +92,11 @@ public: // But only for verilated*.cpp // METHODS - arguments static void commandArgs(int argc, const char** argv) { - s_s.m_argVec.clear(); + s_s.m_argVec.clear(); // Always clear + commandArgsAdd(argc, argv); + } + static void commandArgsAdd(int argc, const char** argv) { + if (!s_s.m_argVecLoaded) s_s.m_argVec.clear(); for (int i=0; i