diff --git a/include/verilated.h b/include/verilated.h index 169ced582..654b08d4b 100644 --- a/include/verilated.h +++ b/include/verilated.h @@ -221,19 +221,6 @@ public: void unlock() VL_RELEASE() VL_MT_SAFE { m_mutex.unlock(); } /// Try to acquire mutex. Returns true on success, and false on failure. bool try_lock() VL_TRY_ACQUIRE(true) VL_MT_SAFE { return m_mutex.try_lock(); } - /// Acquire/lock mutex and check for stop request - /// It tries to lock the mutex and if it fails, it check if stop request was send. - /// It returns after locking mutex. - /// This function should be extracted to V3ThreadPool, but due to clang thread-safety - /// limitations it needs to be placed here. - void lockCheckStopRequest(std::function checkStopRequestFunction) - VL_ACQUIRE() VL_MT_SAFE { - while (true) { - checkStopRequestFunction(); - if (m_mutex.try_lock()) return; - VL_CPU_RELAX(); - } - } }; /// Lock guard for mutex (ala std::unique_lock), wrapped to allow -fthread_safety checks diff --git a/include/verilatedos.h b/include/verilatedos.h index 1d3b0c90e..f56c101bd 100644 --- a/include/verilatedos.h +++ b/include/verilatedos.h @@ -200,6 +200,11 @@ // Comment tag that Function is pure (and thus also VL_MT_SAFE) #define VL_PURE VL_CLANG_ATTR(annotate("PURE")) +// Annotated function can be called only in MT_DISABLED context, i.e. either in a code unit +// compiled with VL_MT_DISABLED_CODE_UNIT preprocessor definition, or in the main thread. +#define VL_MT_DISABLED \ + VL_CLANG_ATTR(annotate("MT_DISABLED")) \ + VL_EXCLUDES(VlOs::MtScopeMutex::s_haveThreadScope) // Comment tag that function is threadsafe #define VL_MT_SAFE VL_CLANG_ATTR(annotate("MT_SAFE")) // Comment tag that function is threadsafe, only if @@ -216,7 +221,7 @@ // protected to make sure single-caller #define VL_MT_UNSAFE_ONE VL_CLANG_ATTR(annotate("MT_UNSAFE_ONE")) // Comment tag that function is entry point of parallelization -#define VL_MT_START VL_CLANG_ATTR(annotate("MT_START")) +#define VL_MT_START VL_CLANG_ATTR(annotate("MT_START")) VL_REQUIRES(VlOs::MtScopeMutex::s_haveThreadScope) #ifndef VL_NO_LEGACY # define VL_ULL(c) (c##ULL) // Add appropriate suffix to 64-bit constant (deprecated) @@ -653,6 +658,14 @@ public: return (m_start == 0.0) ? 0.0 : gettime() - m_start; } }; + +// Used by clang's -fthread-safety, ensures that only one instance of V3ThreadScope +// is created at a time +class VL_CAPABILITY("mutex") MtScopeMutex final { +public: + static MtScopeMutex s_haveThreadScope; +}; + } //namespace VlOs //========================================================================= diff --git a/nodist/clang_check_attributes b/nodist/clang_check_attributes index 61ac3555c..5317dc7c3 100755 --- a/nodist/clang_check_attributes +++ b/nodist/clang_check_attributes @@ -752,15 +752,15 @@ class CallAnnotationsValidator: # Implicitly mark definitions in VL_MT_DISABLED_CODE_UNIT .cpp files as # VL_MT_DISABLED. Existence of the annotation on declarations in .h # files is verified below. - # Also sets VL_REQUIRES, as this annotation is added together with + # Also sets VL_EXCLUDES, as this annotation is added together with # explicit VL_MT_DISABLED. if self.is_mt_disabled_code_unit(): if node.location.file.name == self._main_source_file: annotations.mt_disabled = True - annotations.requires = True + annotations.excludes = True if refd.location.file.name == self._main_source_file: def_annotations.mt_disabled = True - def_annotations.requires = True + def_annotations.excludes = True if not (def_annotations.is_empty() or def_annotations == annotations): # Use definition's annotations for the diagnostic diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2cc6a0166..067aab0e5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -163,7 +163,6 @@ set(HEADERS V3Table.h V3Task.h V3ThreadPool.h - V3ThreadSafety.h V3Timing.h V3Trace.h V3TraceDecl.h diff --git a/src/V3Active.h b/src/V3Active.h index b1ec9db2d..431a46e64 100644 --- a/src/V3Active.h +++ b/src/V3Active.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3ActiveTop.h b/src/V3ActiveTop.h index 6abd1e078..979041114 100644 --- a/src/V3ActiveTop.h +++ b/src/V3ActiveTop.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Assert.h b/src/V3Assert.h index d3362e5c6..08f6bbb5e 100644 --- a/src/V3Assert.h +++ b/src/V3Assert.h @@ -21,7 +21,6 @@ #include "verilatedos.h" #include "V3Ast.h" -#include "V3ThreadSafety.h" //============================================================================ diff --git a/src/V3AssertPre.h b/src/V3AssertPre.h index 2c87823c9..2a68a20d1 100644 --- a/src/V3AssertPre.h +++ b/src/V3AssertPre.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Ast.h b/src/V3Ast.h index d84a87888..a6637fc60 100644 --- a/src/V3Ast.h +++ b/src/V3Ast.h @@ -2182,7 +2182,7 @@ public: virtual void tag(const string& text) {} virtual string tag() const { return ""; } virtual string verilogKwd() const { return ""; } - string nameProtect() const; // Name with --protect-id applied + string nameProtect() const VL_MT_STABLE; // Name with --protect-id applied string origNameProtect() const; // origName with --protect-id applied string shortName() const; // Name with __PVT__ removed for concatenating scopes static string dedotName(const string& namein); // Name with dots removed diff --git a/src/V3Begin.h b/src/V3Begin.h index ac65da30f..5be8886e0 100644 --- a/src/V3Begin.h +++ b/src/V3Begin.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; class AstNode; class AstForeach; diff --git a/src/V3Branch.h b/src/V3Branch.h index 7357ef907..5d7f291c8 100644 --- a/src/V3Branch.h +++ b/src/V3Branch.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3CCtors.h b/src/V3CCtors.h index b719ee466..aa8b84f38 100644 --- a/src/V3CCtors.h +++ b/src/V3CCtors.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3CCtors final { diff --git a/src/V3CUse.h b/src/V3CUse.h index 5c864adba..8102c823e 100644 --- a/src/V3CUse.h +++ b/src/V3CUse.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3CUse final { diff --git a/src/V3Case.h b/src/V3Case.h index 7233866ed..bc2fdac11 100644 --- a/src/V3Case.h +++ b/src/V3Case.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; class AstNodeCase; diff --git a/src/V3Cast.h b/src/V3Cast.h index d519b5c74..15cee107e 100644 --- a/src/V3Cast.h +++ b/src/V3Cast.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Class.h b/src/V3Class.h index 072566cab..d23c4bd21 100644 --- a/src/V3Class.h +++ b/src/V3Class.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Clean.h b/src/V3Clean.h index 5112001fd..f7d40f4fc 100644 --- a/src/V3Clean.h +++ b/src/V3Clean.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Clock.h b/src/V3Clock.h index ab7906645..f7fc9d31d 100644 --- a/src/V3Clock.h +++ b/src/V3Clock.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Combine.h b/src/V3Combine.h index 8778f7eaa..3f84519c8 100644 --- a/src/V3Combine.h +++ b/src/V3Combine.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Common.h b/src/V3Common.h index bc3e0e9dc..a6bd7a11a 100644 --- a/src/V3Common.h +++ b/src/V3Common.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3Common final { diff --git a/src/V3Const.h b/src/V3Const.h index 20e1bb95d..5395a7cb4 100644 --- a/src/V3Const.h +++ b/src/V3Const.h @@ -21,7 +21,6 @@ #include "verilatedos.h" #include "V3Ast.h" -#include "V3ThreadSafety.h" //============================================================================ diff --git a/src/V3Coverage.h b/src/V3Coverage.h index 36a5558ba..a084ba3e5 100644 --- a/src/V3Coverage.h +++ b/src/V3Coverage.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3CoverageJoin.h b/src/V3CoverageJoin.h index 07d83fa0b..57da38d8b 100644 --- a/src/V3CoverageJoin.h +++ b/src/V3CoverageJoin.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Dead.h b/src/V3Dead.h index 885a42c2a..17bc01243 100644 --- a/src/V3Dead.h +++ b/src/V3Dead.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Delayed.h b/src/V3Delayed.h index a70f8fa82..d01e25f5c 100644 --- a/src/V3Delayed.h +++ b/src/V3Delayed.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Depth.h b/src/V3Depth.h index 8ac8b2077..d563d2ad9 100644 --- a/src/V3Depth.h +++ b/src/V3Depth.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3DepthBlock.h b/src/V3DepthBlock.h index ab34bbb7c..cc1bcbfa0 100644 --- a/src/V3DepthBlock.h +++ b/src/V3DepthBlock.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Descope.h b/src/V3Descope.h index 017476129..f94f59d5a 100644 --- a/src/V3Descope.h +++ b/src/V3Descope.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Dfg.h b/src/V3Dfg.h index 18df1bddf..3c476ce3f 100644 --- a/src/V3Dfg.h +++ b/src/V3Dfg.h @@ -38,7 +38,6 @@ #include "V3Global.h" #include "V3Hash.h" #include "V3List.h" -#include "V3ThreadSafety.h" #include "V3Dfg__gen_forward_class_decls.h" // From ./astgen diff --git a/src/V3DfgOptimizer.h b/src/V3DfgOptimizer.h index 0cb573c0b..067b5e801 100644 --- a/src/V3DfgOptimizer.h +++ b/src/V3DfgOptimizer.h @@ -21,7 +21,6 @@ #include "verilatedos.h" #include "V3Ast.h" -#include "V3ThreadSafety.h" //============================================================================ diff --git a/src/V3DfgPasses.h b/src/V3DfgPasses.h index 6fe0d7d54..57f5afe47 100644 --- a/src/V3DfgPasses.h +++ b/src/V3DfgPasses.h @@ -18,10 +18,10 @@ #define VERILATOR_V3DFGPASSES_H_ #include "config_build.h" +#include "verilatedos.h" #include "V3DfgPatternStats.h" #include "V3DfgPeephole.h" -#include "V3ThreadSafety.h" class AstModule; class DfgGraph; diff --git a/src/V3DfgPeephole.h b/src/V3DfgPeephole.h index 92a228292..ff3debe57 100644 --- a/src/V3DfgPeephole.h +++ b/src/V3DfgPeephole.h @@ -18,8 +18,7 @@ #define VERILATOR_V3DFGPEEPHOLE_H_ #include "config_build.h" - -#include "V3ThreadSafety.h" +#include "verilatedos.h" #include diff --git a/src/V3DupFinder.h b/src/V3DupFinder.h index f22030602..81e59ee43 100644 --- a/src/V3DupFinder.h +++ b/src/V3DupFinder.h @@ -26,7 +26,6 @@ #include "V3Ast.h" #include "V3Error.h" #include "V3Hasher.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3EmitC.h b/src/V3EmitC.h index 6c9d90086..98231dba4 100644 --- a/src/V3EmitC.h +++ b/src/V3EmitC.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3EmitC final { diff --git a/src/V3EmitCBase.h b/src/V3EmitCBase.h index 0f6dca34b..01c06796c 100644 --- a/src/V3EmitCBase.h +++ b/src/V3EmitCBase.h @@ -22,7 +22,6 @@ #include "V3Ast.h" #include "V3File.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3EmitCFunc.h b/src/V3EmitCFunc.h index 0e7ab1fdf..910e25016 100644 --- a/src/V3EmitCFunc.h +++ b/src/V3EmitCFunc.h @@ -23,7 +23,6 @@ #include "V3EmitCConstInit.h" #include "V3Global.h" #include "V3MemberMap.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3EmitCImp.cpp b/src/V3EmitCImp.cpp index 2023785e7..7737504e9 100644 --- a/src/V3EmitCImp.cpp +++ b/src/V3EmitCImp.cpp @@ -143,7 +143,7 @@ class EmitCGatherDependencies final : VNVisitorConst { } public: - static const std::set gather(AstCFunc* cfuncp) { + static const std::set gather(AstCFunc* cfuncp) VL_MT_STABLE { const EmitCGatherDependencies visitor{cfuncp}; return std::move(visitor.m_dependencies); } @@ -562,7 +562,8 @@ class EmitCImp final : EmitCFunc { ~EmitCImp() override = default; public: - static void main(const AstNodeModule* modp, bool slow, std::deque& cfilesr) { + static void main(const AstNodeModule* modp, bool slow, + std::deque& cfilesr) VL_MT_STABLE { EmitCImp{modp, slow, cfilesr}; } }; @@ -977,7 +978,7 @@ void V3EmitC::emitcImp() { // Make parent module pointers available. const EmitCParentModule emitCParentModule; std::list> cfiles; - std::list> futures; + V3ThreadScope threadScope; // Process each module in turn for (const AstNode* nodep = v3Global.rootp()->modulesp(); nodep; nodep = nodep->nextp()) { @@ -985,29 +986,29 @@ void V3EmitC::emitcImp() { const AstNodeModule* const modp = VN_AS(nodep, NodeModule); cfiles.emplace_back(); auto& slowCfilesr = cfiles.back(); - futures.push_back(V3ThreadPool::s().enqueue( - [modp, &slowCfilesr]() { EmitCImp::main(modp, /* slow: */ true, slowCfilesr); })); + threadScope.enqueue( + [modp, &slowCfilesr] { EmitCImp::main(modp, /* slow: */ true, slowCfilesr); }); cfiles.emplace_back(); auto& fastCfilesr = cfiles.back(); - futures.push_back(V3ThreadPool::s().enqueue( - [modp, &fastCfilesr]() { EmitCImp::main(modp, /* slow: */ false, fastCfilesr); })); + threadScope.enqueue( + [modp, &fastCfilesr] { EmitCImp::main(modp, /* slow: */ false, fastCfilesr); }); } // Emit trace routines (currently they can only exist in the top module) if (v3Global.opt.trace() && !v3Global.opt.lintOnly()) { cfiles.emplace_back(); auto& slowCfilesr = cfiles.back(); - futures.push_back(V3ThreadPool::s().enqueue([&slowCfilesr]() { + threadScope.enqueue([&slowCfilesr] { EmitCTrace::main(v3Global.rootp()->topModulep(), /* slow: */ true, slowCfilesr); - })); + }); cfiles.emplace_back(); auto& fastCfilesr = cfiles.back(); - futures.push_back(V3ThreadPool::s().enqueue([&fastCfilesr]() { + threadScope.enqueue([&fastCfilesr] { EmitCTrace::main(v3Global.rootp()->topModulep(), /* slow: */ false, fastCfilesr); - })); + }); } // Wait for futures - V3ThreadPool::waitForFutures(futures); + threadScope.wait(); for (const auto& collr : cfiles) { for (const auto cfilep : collr) v3Global.rootp()->addFilesp(cfilep); } diff --git a/src/V3EmitCMain.h b/src/V3EmitCMain.h index f0a8e2191..683df4573 100644 --- a/src/V3EmitCMain.h +++ b/src/V3EmitCMain.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3EmitCMain final { diff --git a/src/V3EmitCMake.h b/src/V3EmitCMake.h index a6ad712f5..cc0605b83 100644 --- a/src/V3EmitCMake.h +++ b/src/V3EmitCMake.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3EmitCMake final { diff --git a/src/V3EmitMk.h b/src/V3EmitMk.h index 61118a92a..a9b612a01 100644 --- a/src/V3EmitMk.h +++ b/src/V3EmitMk.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class V3HierBlockPlan; //============================================================================ diff --git a/src/V3EmitV.h b/src/V3EmitV.h index c1839080f..2d15c39d2 100644 --- a/src/V3EmitV.h +++ b/src/V3EmitV.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNode; class AstSenTree; diff --git a/src/V3EmitXml.h b/src/V3EmitXml.h index 5d005b83a..04ae09ebc 100644 --- a/src/V3EmitXml.h +++ b/src/V3EmitXml.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3EmitXml final { diff --git a/src/V3Error.cpp b/src/V3Error.cpp index ac6cc65b5..f5b77e179 100644 --- a/src/V3Error.cpp +++ b/src/V3Error.cpp @@ -23,6 +23,7 @@ # include "V3Stats.h" VL_DEFINE_DEBUG_FUNCTIONS; #endif +#include // clang-format on //====================================================================== @@ -88,7 +89,18 @@ void V3ErrorGuarded::vlAbortOrExit() VL_REQUIRES(m_mutex) { if (V3Error::debugDefault()) { std::cerr << msgPrefix() << "Aborting since under --debug" << endl; V3Error::vlAbort(); - } else { + } +#ifndef V3ERROR_NO_GLOBAL_ + else if (v3Global.opt.verilateJobs() > 1 + && v3Global.mainThreadId() != std::this_thread::get_id()) { + VL_GCOV_DUMP(); // No static destructors are called, thus must be called manually. + + // Exit without triggering any global destructors. + // Used to prevent detached V3ThreadPool jobs accessing destroyed static objects. + ::_exit(1); + } +#endif + else { std::exit(1); } } @@ -209,7 +221,6 @@ void V3ErrorGuarded::v3errorEnd(std::ostringstream& sstr, const string& extra) #ifndef V3ERROR_NO_GLOBAL_ if (dumpTreeLevel() || dumpTreeJsonLevel() || debug()) { V3Broken::allowMidvisitorCheck(true); - const V3ThreadPool::ScopedExclusiveAccess exclusiveAccess; if (dumpTreeLevel()) { v3Global.rootp()->dumpTreeFile(v3Global.debugFilename("final.tree", 990)); } @@ -222,8 +233,6 @@ void V3ErrorGuarded::v3errorEnd(std::ostringstream& sstr, const string& extra) V3Stats::statsFinalAll(v3Global.rootp()); V3Stats::statsReport(); } - // Abort in exclusive access to make sure other threads - // don't change error code vlAbortOrExit(); } #endif @@ -276,27 +285,14 @@ void V3Error::vlAbort() { VL_GCOV_DUMP(); std::abort(); } -void V3Error::v3errorAcquireLock(bool mtDisabledCodeUnit) VL_ACQUIRE(s().m_mutex) { -#if !defined(V3ERROR_NO_GLOBAL_) - if (!mtDisabledCodeUnit) { - V3Error::s().m_mutex.lockCheckStopRequest( - []() -> void { V3ThreadPool::s().waitIfStopRequested(); }); - } else { - V3Error::s().m_mutex.lock(); - } -#else +std::ostringstream& V3Error::v3errorPrep(V3ErrorCode code) VL_ACQUIRE(s().m_mutex) { V3Error::s().m_mutex.lock(); -#endif -} -std::ostringstream& V3Error::v3errorPrep(V3ErrorCode code, bool mtDisabledCodeUnit) - VL_ACQUIRE(s().m_mutex) { - v3errorAcquireLock(mtDisabledCodeUnit); s().v3errorPrep(code); return v3errorStr(); } -std::ostringstream& V3Error::v3errorPrepFileLine(V3ErrorCode code, const char* file, int line, - bool mtDisabledCodeUnit) VL_ACQUIRE(s().m_mutex) { - v3errorPrep(code, mtDisabledCodeUnit) << file << ":" << std::dec << line << ": "; +std::ostringstream& V3Error::v3errorPrepFileLine(V3ErrorCode code, const char* file, int line) + VL_ACQUIRE(s().m_mutex) { + v3errorPrep(code) << file << ":" << std::dec << line << ": "; return v3errorStr(); } std::ostringstream& V3Error::v3errorStr() VL_REQUIRES(s().m_mutex) { return s().v3errorStr(); } diff --git a/src/V3Error.h b/src/V3Error.h index aa81fd5ba..a5dcf0b03 100644 --- a/src/V3Error.h +++ b/src/V3Error.h @@ -24,9 +24,6 @@ // Limited V3 headers here - this is a base class for Vlc etc #include "V3String.h" -#ifndef VL_MT_DISABLED_CODE_UNIT -#include "V3ThreadPool.h" -#endif #include #include @@ -531,11 +528,8 @@ public: // Internals for v3error()/v3fatal() macros only // Error end takes the string stream to output, be careful to seek() as needed - static void v3errorAcquireLock(bool checkStopRequest) VL_ACQUIRE(s().m_mutex); - static std::ostringstream& v3errorPrep(V3ErrorCode code, bool mtDisabledCodeUnit) - VL_ACQUIRE(s().m_mutex); - static std::ostringstream& v3errorPrepFileLine(V3ErrorCode code, const char* file, int line, - bool mtDisabledCodeUnit) + static std::ostringstream& v3errorPrep(V3ErrorCode code) VL_ACQUIRE(s().m_mutex); + static std::ostringstream& v3errorPrepFileLine(V3ErrorCode code, const char* file, int line) VL_ACQUIRE(s().m_mutex); static std::ostringstream& v3errorStr() VL_REQUIRES(s().m_mutex); // static, but often overridden in classes. @@ -563,12 +557,9 @@ void v3errorEndFatal(std::ostringstream& sstr) // the comma operator (,) to guarantee the execution order here. #define v3errorBuildMessage(prep, msg) \ (prep, static_cast(V3Error::v3errorStr() << msg)) -#define v3warnCode(code, msg) \ - v3errorEnd( \ - v3errorBuildMessage(V3Error::v3errorPrep(code, VL_MT_DISABLED_CODE_UNIT_DEFINED), msg)) +#define v3warnCode(code, msg) v3errorEnd(v3errorBuildMessage(V3Error::v3errorPrep(code), msg)) #define v3warnCodeFatal(code, msg) \ - v3errorEndFatal( \ - v3errorBuildMessage(V3Error::v3errorPrep(code, VL_MT_DISABLED_CODE_UNIT_DEFINED), msg)) + v3errorEndFatal(v3errorBuildMessage(V3Error::v3errorPrep(code), msg)) #define v3warn(code, msg) v3warnCode(V3ErrorCode::code, msg) #define v3info(msg) v3warnCode(V3ErrorCode::EC_INFO, msg) #define v3error(msg) v3warnCode(V3ErrorCode::EC_ERROR, msg) @@ -578,13 +569,10 @@ void v3errorEndFatal(std::ostringstream& sstr) // Use this instead of fatal() to mention the source code line. #define v3fatalSrc(msg) \ v3errorEndFatal(v3errorBuildMessage( \ - V3Error::v3errorPrepFileLine(V3ErrorCode::EC_FATALSRC, __FILE__, __LINE__, \ - VL_MT_DISABLED_CODE_UNIT_DEFINED), \ - msg)) + V3Error::v3errorPrepFileLine(V3ErrorCode::EC_FATALSRC, __FILE__, __LINE__), msg)) // Use this when normal v3fatal is called in static method that overrides fileline. #define v3fatalStatic(msg) \ - ::v3errorEndFatal(v3errorBuildMessage( \ - V3Error::v3errorPrep(V3ErrorCode::EC_FATAL, VL_MT_DISABLED_CODE_UNIT_DEFINED), msg)) + ::v3errorEndFatal(v3errorBuildMessage(V3Error::v3errorPrep(V3ErrorCode::EC_FATAL), msg)) #define UINFO(level, stmsg) \ do { \ diff --git a/src/V3ExecGraph.h b/src/V3ExecGraph.h index 4cbaa475d..48600a5c8 100644 --- a/src/V3ExecGraph.h +++ b/src/V3ExecGraph.h @@ -21,7 +21,6 @@ #include "verilatedos.h" #include "V3Graph.h" -#include "V3ThreadSafety.h" class AstNetlist; class AstMTaskBody; diff --git a/src/V3Expand.h b/src/V3Expand.h index 249a1dfd3..c97a273f4 100644 --- a/src/V3Expand.h +++ b/src/V3Expand.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Force.h b/src/V3Force.h index 89d678cb9..f1c8fe315 100644 --- a/src/V3Force.h +++ b/src/V3Force.h @@ -21,8 +21,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Fork.h b/src/V3Fork.h index 02f234989..4671d5901 100644 --- a/src/V3Fork.h +++ b/src/V3Fork.h @@ -21,8 +21,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Gate.h b/src/V3Gate.h index 9314c3cb7..b6d3c66fe 100644 --- a/src/V3Gate.h +++ b/src/V3Gate.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Global.cpp b/src/V3Global.cpp index da0b90b01..5f0a76ac7 100644 --- a/src/V3Global.cpp +++ b/src/V3Global.cpp @@ -26,6 +26,7 @@ #include "V3Parse.h" #include "V3ParseSym.h" #include "V3Stats.h" +#include "V3ThreadPool.h" VL_DEFINE_DEBUG_FUNCTIONS; @@ -39,6 +40,7 @@ void V3Global::boot() { void V3Global::shutdown() { VL_DO_CLEAR(delete m_hierPlanp, m_hierPlanp = nullptr); // delete nullptr is safe + VL_DO_CLEAR(delete m_threadPoolp, m_threadPoolp = nullptr); // delete nullptr is safe #ifdef VL_LEAK_CHECKS if (m_rootp) VL_DO_CLEAR(m_rootp->deleteTree(), m_rootp = nullptr); #endif diff --git a/src/V3Global.h b/src/V3Global.h index 0826bf994..0b3f755b3 100644 --- a/src/V3Global.h +++ b/src/V3Global.h @@ -30,14 +30,15 @@ #include "V3FileLine.h" #include "V3Mutex.h" #include "V3Options.h" -#include "V3ThreadSafety.h" #include +#include #include #include class AstNetlist; class V3HierBlockPlan; +class V3ThreadPool; //====================================================================== // Restorer @@ -101,6 +102,8 @@ class V3Global final { // created by makeInitNetlist(} so static constructors run first V3HierBlockPlan* m_hierPlanp = nullptr; // Hierarchical Verilation plan, // nullptr unless hier_block, set via hierPlanp(V3HierBlockPlan*} + V3ThreadPool* m_threadPoolp = nullptr; // Thread Pool, + // nullptr unless 'verilatedJobs' is known, set via threadPoolp(V3ThreadPool*) VWidthMinUsage m_widthMinUsage = VWidthMinUsage::LINT_WIDTH; // What AstNode::widthMin() is used for @@ -131,6 +134,9 @@ class V3Global final { // Names of fields that were dumped by dumpJsonPtr() std::unordered_set m_jsonPtrNames; + // Id of the main thread + const std::thread::id m_mainThreadId = std::this_thread::get_id(); + public: // Options V3Options opt; // All options; let user see them directly @@ -142,6 +148,11 @@ public: // ACCESSORS (general) AstNetlist* rootp() const VL_MT_SAFE { return m_rootp; } + V3ThreadPool* threadPoolp() const VL_PURE { return m_threadPoolp; } + void threadPoolp(V3ThreadPool* threadPoolp) { + UASSERT(!m_threadPoolp, "attempted to create multiple threadPool singletons"); + m_threadPoolp = threadPoolp; + } VWidthMinUsage widthMinUsage() const VL_PURE { return m_widthMinUsage; } bool assertDTypesResolved() const { return m_assertDTypesResolved; } bool assertScoped() const { return m_assertScoped; } @@ -196,6 +207,7 @@ public: void ptrNamesDumpJson(std::ostream& os); void idPtrMapDumpJson(std::ostream& os); const std::string& ptrToId(const void* p); + std::thread::id mainThreadId() const { return m_mainThreadId; } }; extern V3Global v3Global; diff --git a/src/V3Graph.h b/src/V3Graph.h index 47515b540..911c909b3 100644 --- a/src/V3Graph.h +++ b/src/V3Graph.h @@ -23,7 +23,6 @@ #include "V3Error.h" #include "V3List.h" #include "V3Rtti.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3GraphPathChecker.h b/src/V3GraphPathChecker.h index dfa043f46..495d8cca8 100644 --- a/src/V3GraphPathChecker.h +++ b/src/V3GraphPathChecker.h @@ -20,7 +20,6 @@ #include "V3Error.h" #include "V3Graph.h" #include "V3GraphAlg.h" -#include "V3ThreadSafety.h" //###################################################################### diff --git a/src/V3HierBlock.h b/src/V3HierBlock.h index bbbdcf137..d3ac4906c 100644 --- a/src/V3HierBlock.h +++ b/src/V3HierBlock.h @@ -20,7 +20,6 @@ #include "verilatedos.h" #include "V3Options.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3Inline.h b/src/V3Inline.h index be83e68f8..f1d0faad3 100644 --- a/src/V3Inline.h +++ b/src/V3Inline.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Inst.h b/src/V3Inst.h index dc97bfde3..fe23c469f 100644 --- a/src/V3Inst.h +++ b/src/V3Inst.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstAssignW; class AstCell; class AstNetlist; diff --git a/src/V3InstrCount.h b/src/V3InstrCount.h index 614f54e88..143721f49 100644 --- a/src/V3InstrCount.h +++ b/src/V3InstrCount.h @@ -21,8 +21,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNode; class V3InstrCount final { diff --git a/src/V3Interface.h b/src/V3Interface.h index 05ed4678b..2ff3c71a9 100644 --- a/src/V3Interface.h +++ b/src/V3Interface.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Life.h b/src/V3Life.h index a80859a6b..36c6970ac 100644 --- a/src/V3Life.h +++ b/src/V3Life.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3LifePost.h b/src/V3LifePost.h index cf48e2e02..8a4552b00 100644 --- a/src/V3LifePost.h +++ b/src/V3LifePost.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3LinkCells.h b/src/V3LinkCells.h index 639a71eff..5400ed83b 100644 --- a/src/V3LinkCells.h +++ b/src/V3LinkCells.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; class VInFilter; class V3ParseSym; diff --git a/src/V3LinkDot.h b/src/V3LinkDot.h index 351993913..0231c9a64 100644 --- a/src/V3LinkDot.h +++ b/src/V3LinkDot.h @@ -22,7 +22,6 @@ #include "V3Ast.h" #include "V3Error.h" -#include "V3ThreadSafety.h" //============================================================================ diff --git a/src/V3LinkInc.h b/src/V3LinkInc.h index 9a3051da4..920f77c1d 100644 --- a/src/V3LinkInc.h +++ b/src/V3LinkInc.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3LinkJump.h b/src/V3LinkJump.h index da6b0751d..72a7b7f71 100644 --- a/src/V3LinkJump.h +++ b/src/V3LinkJump.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3LinkLValue.h b/src/V3LinkLValue.h index 0d0139890..99cf582a1 100644 --- a/src/V3LinkLValue.h +++ b/src/V3LinkLValue.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; class AstNode; diff --git a/src/V3LinkLevel.h b/src/V3LinkLevel.h index 02e661d9b..dd98ffa2b 100644 --- a/src/V3LinkLevel.h +++ b/src/V3LinkLevel.h @@ -22,7 +22,6 @@ #include "V3Ast.h" #include "V3Error.h" -#include "V3ThreadSafety.h" #include diff --git a/src/V3LinkParse.h b/src/V3LinkParse.h index fc56900ba..12b2f2c11 100644 --- a/src/V3LinkParse.h +++ b/src/V3LinkParse.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3LinkResolve.h b/src/V3LinkResolve.h index e1eb1f879..c84219fb7 100644 --- a/src/V3LinkResolve.h +++ b/src/V3LinkResolve.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Localize.h b/src/V3Localize.h index e9041b63f..456b90706 100644 --- a/src/V3Localize.h +++ b/src/V3Localize.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3MergeCond.h b/src/V3MergeCond.h index 6e798e8ac..1b78dab0f 100644 --- a/src/V3MergeCond.h +++ b/src/V3MergeCond.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Mutex.h b/src/V3Mutex.h index 03550b48e..77496d752 100644 --- a/src/V3Mutex.h +++ b/src/V3Mutex.h @@ -111,21 +111,6 @@ public: void assumeLocked() VL_ASSERT_CAPABILITY(this) VL_MT_SAFE {} /// Pretend that the mutex is being unlocked. Purely for Clang thread safety analyzer. void pretendUnlock() VL_RELEASE() VL_MT_SAFE {} - /// Acquire/lock mutex and check for stop request - /// It tries to lock the mutex and if it fails, it check if stop request was send. - /// It returns after locking mutex. - /// This function should be extracted to V3ThreadPool, but due to clang thread-safety - /// limitations it needs to be placed here. - void lockCheckStopRequest(std::function checkStopRequestFunction) - VL_ACQUIRE() VL_MT_SAFE { - if (V3MutexConfig::s().enable()) { - while (true) { - checkStopRequestFunction(); - if (m_mutex.try_lock()) return; - VL_CPU_RELAX(); - } - } - } }; /// Lock guard for mutex (ala std::unique_lock), wrapped to allow -fthread_safety checks diff --git a/src/V3Name.h b/src/V3Name.h index df0f9d083..514e6e12f 100644 --- a/src/V3Name.h +++ b/src/V3Name.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3OptionParser.h b/src/V3OptionParser.h index 77250b1c7..9b35b9e48 100644 --- a/src/V3OptionParser.h +++ b/src/V3OptionParser.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - #include #include #include diff --git a/src/V3Options.h b/src/V3Options.h index 324247ff5..5c95e4d51 100644 --- a/src/V3Options.h +++ b/src/V3Options.h @@ -22,7 +22,6 @@ #include "V3Error.h" #include "V3LangCode.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3Order.h b/src/V3Order.h index 65ec500b8..81f31b140 100644 --- a/src/V3Order.h +++ b/src/V3Order.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - #include #include #include diff --git a/src/V3OrderInternal.h b/src/V3OrderInternal.h index 0c5b4cfbe..317b73073 100644 --- a/src/V3OrderInternal.h +++ b/src/V3OrderInternal.h @@ -22,7 +22,6 @@ #include "V3Order.h" #include "V3OrderGraph.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3Param.h b/src/V3Param.h index f042f788d..0d0c832d0 100644 --- a/src/V3Param.h +++ b/src/V3Param.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Parse.h b/src/V3Parse.h index 3b2457ec1..767467702 100644 --- a/src/V3Parse.h +++ b/src/V3Parse.h @@ -22,7 +22,6 @@ #include "V3Error.h" #include "V3Global.h" -#include "V3ThreadSafety.h" class AstNetlist; class VInFilter; diff --git a/src/V3ParseImp.h b/src/V3ParseImp.h index 4514dbc31..6570b5146 100644 --- a/src/V3ParseImp.h +++ b/src/V3ParseImp.h @@ -25,7 +25,6 @@ #include "V3Global.h" #include "V3Parse.h" #include "V3ParseSym.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3PchAstMT.h b/src/V3PchAstMT.h index c49e2a546..552c0f452 100644 --- a/src/V3PchAstMT.h +++ b/src/V3PchAstMT.h @@ -35,7 +35,6 @@ #include "V3Options.h" #include "V3StdFuture.h" #include "V3String.h" -#include "V3ThreadSafety.h" #include diff --git a/src/V3PchAstNoMT.h b/src/V3PchAstNoMT.h index 5d158864d..0971316ce 100644 --- a/src/V3PchAstNoMT.h +++ b/src/V3PchAstNoMT.h @@ -37,7 +37,6 @@ #include "V3Options.h" #include "V3StdFuture.h" #include "V3String.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3PreProc.h b/src/V3PreProc.h index f623c0237..2560ce9bd 100644 --- a/src/V3PreProc.h +++ b/src/V3PreProc.h @@ -23,7 +23,6 @@ #include "V3Error.h" #include "V3FileLine.h" #include "V3Global.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3PreShell.h b/src/V3PreShell.h index f34b65801..7c15e43fd 100644 --- a/src/V3PreShell.h +++ b/src/V3PreShell.h @@ -22,7 +22,6 @@ #include "V3Error.h" #include "V3FileLine.h" -#include "V3ThreadSafety.h" class V3ParseImp; class VInFilter; diff --git a/src/V3Premit.h b/src/V3Premit.h index ac4c19ac0..82388168f 100644 --- a/src/V3Premit.h +++ b/src/V3Premit.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3ProtectLib.h b/src/V3ProtectLib.h index 5fe6e4b3c..4d4cfe04e 100644 --- a/src/V3ProtectLib.h +++ b/src/V3ProtectLib.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - //============================================================================ class V3ProtectLib final { diff --git a/src/V3Randomize.h b/src/V3Randomize.h index 596fb9b77..26e504c62 100644 --- a/src/V3Randomize.h +++ b/src/V3Randomize.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstClass; class AstFunc; class AstNetlist; diff --git a/src/V3Reloop.h b/src/V3Reloop.h index 61fbaafcb..756de4dd7 100644 --- a/src/V3Reloop.h +++ b/src/V3Reloop.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Sampled.h b/src/V3Sampled.h index 30d5e94a4..bd24873e3 100644 --- a/src/V3Sampled.h +++ b/src/V3Sampled.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Sched.h b/src/V3Sched.h index a8da240d9..6e0dd505d 100644 --- a/src/V3Sched.h +++ b/src/V3Sched.h @@ -21,7 +21,6 @@ #include "verilatedos.h" #include "V3Ast.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3Scope.h b/src/V3Scope.h index 8c9cd8d27..c7b18e01c 100644 --- a/src/V3Scope.h +++ b/src/V3Scope.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Scoreboard.h b/src/V3Scoreboard.h index 2cc727a8b..34656a4ff 100644 --- a/src/V3Scoreboard.h +++ b/src/V3Scoreboard.h @@ -22,7 +22,6 @@ #include "V3Error.h" #include "V3PairingHeap.h" -#include "V3ThreadSafety.h" //=============================================================================================== // V3Scoreboard is essentially a heap that can be hinted that some elements have changed keys, at diff --git a/src/V3Slice.h b/src/V3Slice.h index c96c482ab..14d2a8de0 100644 --- a/src/V3Slice.h +++ b/src/V3Slice.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Split.h b/src/V3Split.h index d14013df3..d0ef26847 100644 --- a/src/V3Split.h +++ b/src/V3Split.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3SplitAs.h b/src/V3SplitAs.h index b45b263ac..3fe08466a 100644 --- a/src/V3SplitAs.h +++ b/src/V3SplitAs.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3SplitVar.h b/src/V3SplitVar.h index e5ac9e12b..32128ebb6 100644 --- a/src/V3SplitVar.h +++ b/src/V3SplitVar.h @@ -17,9 +17,9 @@ #ifndef VERILATOR_V3SPLITVAR_H_ #define VERILATOR_V3SPLITVAR_H_ -//============================================================================ +#include "verilatedos.h" -#include "V3ThreadSafety.h" +//============================================================================ class AstNetlist; class AstVar; diff --git a/src/V3StackCount.h b/src/V3StackCount.h index 3a8e15d50..468a0d952 100644 --- a/src/V3StackCount.h +++ b/src/V3StackCount.h @@ -21,8 +21,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNode; class V3StackCount final { diff --git a/src/V3Subst.h b/src/V3Subst.h index 2d29df8e4..edf07151f 100644 --- a/src/V3Subst.h +++ b/src/V3Subst.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3TSP.h b/src/V3TSP.h index 1288945af..f0c775ddf 100644 --- a/src/V3TSP.h +++ b/src/V3TSP.h @@ -22,7 +22,6 @@ #include "verilatedos.h" #include "V3Error.h" -#include "V3ThreadSafety.h" #include diff --git a/src/V3Table.h b/src/V3Table.h index 9f7db3fec..c6d5a1123 100644 --- a/src/V3Table.h +++ b/src/V3Table.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Task.h b/src/V3Task.h index f2fa4cf83..5faf2aec4 100644 --- a/src/V3Task.h +++ b/src/V3Task.h @@ -22,7 +22,6 @@ #include "V3Ast.h" #include "V3Error.h" -#include "V3ThreadSafety.h" #include #include diff --git a/src/V3ThreadPool.cpp b/src/V3ThreadPool.cpp index eeaf69aa5..576c9c86a 100644 --- a/src/V3ThreadPool.cpp +++ b/src/V3ThreadPool.cpp @@ -14,139 +14,78 @@ // //************************************************************************* -#include "config_build.h" - #include "V3ThreadPool.h" #include "V3Error.h" +#include "V3Global.h" +#include "V3Mutex.h" -// c++11 requires definition of static constexpr as well as declaration -constexpr unsigned int V3ThreadPool::FUTUREWAITFOR_MS; +V3ThreadPool::V3ThreadPool(int numThreads) { + numThreads = std::max(numThreads, 1); + if (numThreads == 1) return; + for (int i = 0; i < numThreads; ++i) { + m_workers.emplace_back(&V3ThreadPool::startWorker, this); + } +} -void V3ThreadPool::resize(unsigned n) VL_MT_UNSAFE VL_EXCLUDES(m_mutex) - VL_EXCLUDES(m_stoppedJobsMutex) VL_EXCLUDES(V3MtDisabledLock::instance()) { - // At least one thread (main) - n = std::max(1u, n); - if (n == (m_workers.size() + 1)) return; - // This function is not thread-safe and can result in race between threads - UASSERT(V3MutexConfig::s().lockConfig(), - "Mutex config needs to be locked before starting ThreadPool"); +V3ThreadPool::~V3ThreadPool() { { - V3LockGuard stoppedJobsLock{m_stoppedJobsMutex}; - V3LockGuard lock{m_mutex}; - - UASSERT(m_queue.empty(), "Resizing busy thread pool"); - // Shut down old threads + const V3LockGuard lock{m_mutex}; m_shutdown = true; - m_stoppedJobs = 0; - m_cv.notify_all(); - m_stoppedJobsCV.notify_all(); - m_exclusiveAccessThreadCV.notify_all(); - } - while (!m_workers.empty()) { - m_workers.front().join(); - m_workers.pop_front(); - } - if (n > 1) { - V3LockGuard lock{m_mutex}; - // Start new threads - m_shutdown = false; - for (unsigned int i = 1; i < n; ++i) { - m_workers.emplace_back(&V3ThreadPool::startWorker, this, i); - } } + m_cv.notify_all(); + wait(); } -void V3ThreadPool::suspendMultithreading() VL_MT_SAFE VL_EXCLUDES(m_mutex) - VL_EXCLUDES(m_stoppedJobsMutex) { - V3LockGuard stoppedJobsLock{m_stoppedJobsMutex}; - if (!m_workers.empty()) stopOtherThreads(); - - if (!m_mutex.try_lock()) { - v3fatal("Tried to suspend thread pool when other thread uses it."); - } - V3LockGuard lock{m_mutex, std::adopt_lock_t{}}; - - UASSERT(m_queue.empty(), "Thread pool has pending jobs"); - UASSERT(m_jobsInProgress == 0, "Thread pool has jobs in progress"); - m_exclusiveAccess = true; - m_multithreadingSuspended = true; -} - -void V3ThreadPool::resumeMultithreading() VL_MT_SAFE VL_EXCLUDES(m_mutex) - VL_EXCLUDES(m_stoppedJobsMutex) { - if (!m_mutex.try_lock()) v3fatal("Tried to resume thread pool when other thread uses it."); - { - V3LockGuard lock{m_mutex, std::adopt_lock_t{}}; - UASSERT(m_multithreadingSuspended, "Multithreading is not suspended"); - m_multithreadingSuspended = false; - m_exclusiveAccess = false; - } - if (!m_workers.empty()) { - V3LockGuard stoppedJobsLock{m_stoppedJobsMutex}; - resumeOtherThreads(); - } -} - -void V3ThreadPool::startWorker(V3ThreadPool* selfThreadp, int id) VL_MT_SAFE { - selfThreadp->workerJobLoop(id); -} - -void V3ThreadPool::workerJobLoop(int id) VL_MT_SAFE { - while (true) { - // Wait for a notification - waitIfStopRequested(); - VAnyPackagedTask job; +void V3ThreadPool::enqueue(std::function&& f) { + if (m_workers.empty()) { + f(); + } else { { - V3LockGuard lock(m_mutex); - m_cv.wait(m_mutex, [&]() VL_REQUIRES(m_mutex) { - return !m_queue.empty() || m_shutdown || m_stopRequested; - }); - if (m_shutdown) return; // Terminate if requested - if (stopRequested()) continue; - // Get the job - UASSERT(!m_queue.empty(), "Job should be available"); + const V3LockGuard lock{m_mutex}; + m_queue.push(std::move(f)); + } + m_pendingJobs.fetch_add(1, std::memory_order_release); + m_cv.notify_one(); + } +} +void V3ThreadPool::wait() { + while (m_pendingJobs.load(std::memory_order_acquire) > 0 && !m_shutdown) { + std::this_thread::yield(); + } + if (m_shutdown) { + for (auto& worker : m_workers) worker.join(); + } +} + +void V3ThreadPool::startWorker(V3ThreadPool* selfThreadp) { selfThreadp->workerJobLoop(); } + +void V3ThreadPool::workerJobLoop() { + while (true) { + std::function job; + { + // Locking before `condition_variable::wait` is required to ensure that the + // `m_cv` condition will be executed under a lock. Taking a lock + // before `condition_variable::wait` may lead to missed + // `condition_variable::notify_all` notification (when a thread waits at the lock + // before) but, according to C++ standard, the `condition_variable::wait` first checks + // the condition and then waits for the notification, thus even when notification is + // missed, the condition still will be checked. + const V3LockGuard lock{m_mutex}; + m_cv.wait(m_mutex, + [&]() VL_REQUIRES(m_mutex) { return !m_queue.empty() || m_shutdown; }); + if (m_shutdown) return; // Terminate if requested + UASSERT(!m_queue.empty(), "Job should be available"); + if (m_queue.empty()) continue; job = std::move(m_queue.front()); m_queue.pop(); - ++m_jobsInProgress; } - - // Execute the job job(); - // Note that a context switch can happen here. This means `m_jobsInProgress` could still - // contain old value even after the job promise has been fulfilled. - --m_jobsInProgress; + m_pendingJobs.fetch_sub(1, std::memory_order_release); } } -bool V3ThreadPool::waitIfStopRequested() VL_MT_SAFE VL_EXCLUDES(m_stoppedJobsMutex) { - if (!stopRequested()) return false; - V3LockGuard stoppedJobLock(m_stoppedJobsMutex); - waitForResumeRequest(); - return true; -} - -void V3ThreadPool::waitForResumeRequest() VL_REQUIRES(m_stoppedJobsMutex) { - ++m_stoppedJobs; - m_exclusiveAccessThreadCV.notify_one(); - m_stoppedJobsCV.wait(m_stoppedJobsMutex, - [&]() VL_REQUIRES(m_stoppedJobsMutex) { return !m_stopRequested; }); - --m_stoppedJobs; -} - -void V3ThreadPool::stopOtherThreads() VL_MT_SAFE_EXCLUDES(m_mutex) - VL_REQUIRES(m_stoppedJobsMutex) { - m_stopRequested = true; - { - V3LockGuard lock{m_mutex}; - m_cv.notify_all(); - } - m_exclusiveAccessThreadCV.wait(m_stoppedJobsMutex, [&]() VL_REQUIRES(m_stoppedJobsMutex) { - return m_stoppedJobs == m_workers.size(); - }); -} - void V3ThreadPool::selfTestMtDisabled() { // empty } @@ -157,7 +96,7 @@ void V3ThreadPool::selfTest() { auto firstJob = [&](int sleep) -> void { std::this_thread::sleep_for(std::chrono::milliseconds{sleep}); - const V3ThreadPool::ScopedExclusiveAccess exclusiveAccess; + const V3LockGuard lock{commonMutex}; commonValue = 10; std::this_thread::sleep_for(std::chrono::milliseconds{sleep + 10}); UASSERT(commonValue == 10, "unexpected commonValue = " << commonValue); @@ -165,7 +104,6 @@ void V3ThreadPool::selfTest() { auto secondJob = [&](int sleep) -> void { commonMutex.lock(); commonMutex.unlock(); - s().waitIfStopRequested(); V3LockGuard lock{commonMutex}; std::this_thread::sleep_for(std::chrono::milliseconds{sleep}); commonValue = 1000; @@ -175,57 +113,56 @@ void V3ThreadPool::selfTest() { V3LockGuard lock{commonMutex}; std::this_thread::sleep_for(std::chrono::milliseconds{sleep}); } - s().requestExclusiveAccess([&]() { firstJob(sleep); }); + firstJob(sleep); V3LockGuard lock{commonMutex}; - commonValue = 1000; + commonValue = 100; }; - std::list> futures; - - futures.push_back(s().enqueue(std::bind(firstJob, 100))); - futures.push_back(s().enqueue(std::bind(secondJob, 100))); - futures.push_back(s().enqueue(std::bind(firstJob, 100))); - futures.push_back(s().enqueue(std::bind(secondJob, 100))); - futures.push_back(s().enqueue(std::bind(secondJob, 200))); - futures.push_back(s().enqueue(std::bind(firstJob, 200))); - futures.push_back(s().enqueue(std::bind(firstJob, 300))); - while (!futures.empty()) { - s().waitForFuture(futures.front()); - futures.pop_front(); - } - futures.push_back(s().enqueue(std::bind(thirdJob, 100))); - futures.push_back(s().enqueue(std::bind(thirdJob, 100))); - V3ThreadPool::waitForFutures(futures); - - s().waitIfStopRequested(); - s().requestExclusiveAccess(std::bind(firstJob, 100)); - - auto forthJob = [&]() -> int { return 1234; }; - std::list> futuresInt; - futuresInt.push_back(s().enqueue(forthJob)); - auto result = V3ThreadPool::waitForFutures(futuresInt); - UASSERT(result.back() == 1234, "unexpected future result = " << result.back()); { - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; - selfTestMtDisabled(); - { - V3LockGuard lock{V3ThreadPool::s().m_mutex}; - UASSERT(V3ThreadPool::s().m_multithreadingSuspended, - "Multithreading should be suspended at this point"); - } + V3ThreadScope scope; + + scope.enqueue(std::bind(firstJob, 100)); + scope.enqueue(std::bind(secondJob, 100)); + scope.enqueue(std::bind(firstJob, 100)); + scope.enqueue(std::bind(secondJob, 100)); + scope.enqueue(std::bind(secondJob, 200)); + scope.enqueue(std::bind(firstJob, 200)); + scope.enqueue(std::bind(firstJob, 300)); + scope.wait(); + + UASSERT(commonValue == 1000 || commonValue == 10, + "unexpected common value = " << commonValue); + + scope.enqueue(std::bind(thirdJob, 100)); + scope.enqueue(std::bind(thirdJob, 100)); } + + UASSERT(commonValue == 100, "unexpected common value = " << commonValue); + { - V3LockGuard lock{V3ThreadPool::s().m_mutex}; - UASSERT(!V3ThreadPool::s().m_multithreadingSuspended, - "Multithreading should not be suspended at this point"); + V3ThreadScope scope; + scope.enqueue(std::bind(firstJob, 100)); } + + UASSERT(commonValue == 10, "unexpected common value = " << commonValue); + + { + int result = 0; + auto forthJob = [&]() -> void { result = 1234; }; + + V3ThreadScope scope; + scope.enqueue(forthJob); + scope.wait(); + UASSERT(result == 1234, "unexpected job result = " << result); + } + selfTestMtDisabled(); } -V3MtDisabledLock V3MtDisabledLock::s_mtDisabledLock; - -void V3MtDisabledLock::lock() VL_ACQUIRE() VL_MT_SAFE { - V3ThreadPool::s().suspendMultithreading(); +V3ThreadScope::V3ThreadScope() { + UASSERT(v3Global.threadPoolp(), "ThreadPool must be initialized before ThreadScope."); + m_pool = v3Global.threadPoolp(); + wait(); } -void V3MtDisabledLock::unlock() VL_RELEASE() VL_MT_SAFE { - V3ThreadPool::s().resumeMultithreading(); -} +void V3ThreadScope::enqueue(std::function&& f) { m_pool->enqueue(std::move(f)); } + +void V3ThreadScope::wait() { m_pool->wait(); } diff --git a/src/V3ThreadPool.h b/src/V3ThreadPool.h index df0077bc3..a2365e6ac 100644 --- a/src/V3ThreadPool.h +++ b/src/V3ThreadPool.h @@ -22,178 +22,36 @@ #endif #include "V3Mutex.h" -#include "V3ThreadSafety.h" +#include #include #include -#include -#include -#include -#include #include #include //============================================================================ -// Callable, type-erased wrapper for std::packaged_task with any Signature. -class VAnyPackagedTask final { - // TYPES - struct PTWrapperBase VL_NOT_FINAL { - virtual ~PTWrapperBase() {} - virtual void operator()() = 0; - }; - - template - struct PTWrapper final : PTWrapperBase { - std::packaged_task m_pt; - - explicit PTWrapper(std::packaged_task&& pt) - : m_pt(std::move(pt)) {} - - void operator()() final override { m_pt(); } - }; - - // MEMBERS - std::unique_ptr m_ptWrapperp = nullptr; // Wrapper to call - -public: - // CONSTRUCTORS - template - // non-explicit: - // cppcheck-suppress noExplicitConstructor - VAnyPackagedTask(std::packaged_task&& pt) - : m_ptWrapperp{std::make_unique>(std::move(pt))} {} - - VAnyPackagedTask() = default; - ~VAnyPackagedTask() = default; - - VAnyPackagedTask(const VAnyPackagedTask&) = delete; - VAnyPackagedTask& operator=(const VAnyPackagedTask&) = delete; - - VAnyPackagedTask(VAnyPackagedTask&&) = default; - VAnyPackagedTask& operator=(VAnyPackagedTask&&) = default; - - // METHODS - // Call the wrapped function - void operator()() { (*m_ptWrapperp)(); } -}; - class V3ThreadPool final { // MEMBERS - static constexpr unsigned int FUTUREWAITFOR_MS = 100; - - // some functions locks both of this mutexes, be careful of lock inversion problems - // 'm_stoppedJobsMutex' mutex should always be locked before 'm_mutex' mutex - // check usage of both of them when you use either of them - V3Mutex m_mutex; // Mutex for use by m_queue - V3Mutex m_stoppedJobsMutex; // Used to signal stopped jobs - std::queue m_queue VL_GUARDED_BY(m_mutex); // Queue of jobs - // We don't need to guard this condition_variable as - // both `notify_one` and `notify_all` functions are atomic, - // `wait` function is not atomic, but we are guarding `m_queue` that is - // used by this condition_variable, so clang checks that we have mutex locked + std::vector m_workers; // Worker threads + std::queue> m_queue VL_GUARDED_BY(m_mutex); // Job queue std::condition_variable_any m_cv; // Conditions to wake up workers - std::list m_workers; // Worker threads - // Number of started and not yet finished jobs. - // Reading is valid only after call to `stopOtherThreads()` or when no worker threads exist. - std::atomic_uint m_jobsInProgress{0}; - // Conditions to wake up stopped jobs - std::condition_variable_any m_stoppedJobsCV VL_GUARDED_BY(m_stoppedJobsMutex); - // Conditions to wake up exclusive access thread - std::condition_variable_any m_exclusiveAccessThreadCV VL_GUARDED_BY(m_stoppedJobsMutex); - std::atomic_uint m_stoppedJobs{0}; // Currently stopped jobs waiting for wake up - std::atomic_bool m_stopRequested{false}; // Signals to resume stopped jobs - std::atomic_bool m_exclusiveAccess{false}; // Signals that all other threads are stopped - - std::atomic_bool m_shutdown{false}; // Termination pending - - // Indicates whether multithreading has been suspended. - // Used for error detection in resumeMultithreading only. You probably should use - // m_exclusiveAccess for information whether something should be run in current thread. - std::atomic_bool m_multithreadingSuspended{false}; - - // CONSTRUCTORS - V3ThreadPool() = default; - ~V3ThreadPool() { - m_shutdown = true; - if (m_multithreadingSuspended) { - // Ideally we shouldn't deal with this and just call the std::abort. However, - // std::exit(0) (which invokes this destructor) is called in multiple places with - // multithreading being suspended. Aborting would change the exit code, what would not - // be acceptable. - resumeMultithreading(); - } - // Unexpected states. Aborting to subtly signal to the outside world that something is - // wrong. This won't make things worse to an user - the program is already terminating at - // this point anyway, most likely as a result of an error. Using if/abort instead of assert - // because assert can be disabled. - if (VL_UNCOVERABLE(m_exclusiveAccess)) { - std::cerr << "%Error: Internal Error: attempted to destroy Thread Pool with active " - "exclusive access mode" - << std::endl; - std::abort(); - } - if (VL_UNCOVERABLE(m_stopRequested)) { - std::cerr << "%Error: Internal Error: attempted to destroy Thread Pool with active " - "stop request" - << std::endl; - std::abort(); - } - - bool m_mutex_locked = m_mutex.try_lock(); - using namespace std::chrono_literals; - // try to obtain lock with timeout - // we need to wait for workers to start waiting - // on condition variable to perform destruction - constexpr int spins = 1s / 1ms; - for (int i = 0; i < spins; ++i) { - if (VL_LIKELY(m_mutex_locked)) break; - std::this_thread::sleep_for(1ms); - - m_mutex_locked = m_mutex.try_lock(); - } - if (VL_UNCOVERABLE(!m_mutex_locked)) { - if (VL_UNCOVERABLE(m_jobsInProgress != 0)) { - // ThreadPool shouldn't be destroyed when jobs are running and mutex is locked, - // something is wrong. Most likely Verilator is exiting as a result of failed - // assert in critical section. Just returning is dangerous, as threads and this - // class' members might keep the program hanging endlessly. - std::cerr << "%Error: Internal Error: attempted to destroy Thread Pool with " - "running jobs" - << std::endl; - std::abort(); - } - // Probably an error happened in a call to some V3ThreadPool's method. We can't just - // unlock m_mutex and be sure that resize(0) handle this well. - std::cerr << "%Error: Internal Error: attempted to destroy locked Thread Pool" - << std::endl; - std::abort(); - } else { - V3LockGuard lock{m_mutex, std::adopt_lock_t{}}; - m_queue = {}; // make sure queue is empty - } - - // This locks mutexes and wakes up threads, so it would be nice to move this to a separate - // method that would be called just before controlled exit. Such method would need to be - // called in quite a few places that call std::exit(0), so leaving it here for now. - resize(0); - } + std::atomic m_shutdown{false}; // Termination pending + std::atomic m_pendingJobs{0}; // Number of started and not yet finished jobs + V3Mutex m_mutex; // Mutex for use by m_queue public: - // Request exclusive access to processing for the object lifetime. - class ScopedExclusiveAccess; + // CONSTRUCTORS + explicit V3ThreadPool(int numThreads); + ~V3ThreadPool() VL_EXCLUDES(m_mutex); + VL_UNCOPYABLE(V3ThreadPool); + VL_UNMOVABLE(V3ThreadPool); + static void selfTest(); + static void selfTestMtDisabled() VL_MT_DISABLED; + +private: // METHODS - // Singleton - static V3ThreadPool& s() VL_MT_SAFE { - static V3ThreadPool s_s; - return s_s; - } - - // Resize thread pool to n workers (queue must be empty) - void resize(unsigned n) VL_MT_UNSAFE VL_EXCLUDES(m_mutex) VL_EXCLUDES(m_stoppedJobsMutex) - VL_EXCLUDES(V3MtDisabledLock::instance()); - // Enqueue a job for asynchronous execution // Due to missing support for lambda annotations in c++11, // `clang_check_attributes` script assumes that if @@ -201,177 +59,40 @@ public: // will call it. `VL_MT_START` here indicates that // every function call inside this `std::function` requires // annotations. - template - auto enqueue(Callable&& f) VL_MT_START; + void enqueue(std::function&& f) VL_MT_START VL_EXCLUDES(m_mutex); - // Request exclusive access to processing. - // It sends request to stop all other threads and waits for them to stop. - // Other threads needs to manually call 'check_stop_requested' in places where - // they can be stopped. - // When all other threads are stopped, this function executes the job - // and resumes execution of other jobs. - template - void requestExclusiveAccess(Callable&& exclusiveAccessJob) VL_MT_SAFE - VL_EXCLUDES(m_stoppedJobsMutex); + // Wait for all enqueued jobs to finish + void wait() VL_MT_SAFE; - // Check if other thread requested exclusive access to processing, - // if so, it waits for it to complete. Afterwards it is resumed. - // Returns true if request was send and we waited, otherwise false - bool waitIfStopRequested() VL_MT_SAFE VL_EXCLUDES(m_stoppedJobsMutex); + // Job execution loop + // Each worker wait for available job and executes it when it is available. + void workerJobLoop() VL_MT_SAFE VL_EXCLUDES(m_mutex); - // Waits for future. - // This function can be interrupted by exclusive access request. - // When other thread requested exclusive access to processing, - // current thread is stopped and waits until it is resumed. - // Returns future result - template - static T waitForFuture(std::future& future) VL_MT_SAFE_EXCLUDES(m_mutex); + // Start worker thread + static void startWorker(V3ThreadPool* selfThreadp) VL_MT_SAFE VL_EXCLUDES(m_mutex); - // Waits for list of futures - // This function can be interrupted by exclusive access request. - // When other thread requested exclusive access to processing, - // current thread is stopped and waits until it is resumed. - // This function uses function overload instead of template - // specialization as C++11 requires them to be inside namespace scope - // Returns list of future result or void - template - static auto waitForFutures(std::list>& futures) { - return waitForFuturesImp(futures); - } - - static void selfTest(); - static void selfTestMtDisabled() VL_MT_DISABLED; - -private: - // For access to suspendMultithreading() and resumeMultithreading() - friend class V3MtDisabledLock; - - // Temporarily suspends multithreading. - // - // Existing worker threads are not terminated. All jobs enqueued when multithreading is - // suspended are executed synchronously. - // Must be called from the main thread. Jobs queue must be empty. Existing worker threads must - // be idle. - // - // Only V3MtDisabledLock class is supposed to use this function. - void suspendMultithreading() VL_MT_SAFE VL_EXCLUDES(m_mutex) VL_EXCLUDES(m_stoppedJobsMutex); - - // Resumes multithreading suspended previously by call tosuspendMultithreading(). - // - // Only V3MtDisabledLock class is supposed to use this function. - void resumeMultithreading() VL_MT_SAFE VL_EXCLUDES(m_mutex) VL_EXCLUDES(m_stoppedJobsMutex); - - template - static std::list waitForFuturesImp(std::list>& futures) { - std::list results; - while (!futures.empty()) { - results.push_back(V3ThreadPool::waitForFuture(futures.front())); - futures.pop_front(); - } - return results; - } - - static void waitForFuturesImp(std::list>& futures) { - while (!futures.empty()) { - V3ThreadPool::waitForFuture(futures.front()); - futures.pop_front(); - } - } - bool willExecuteSynchronously() const VL_MT_SAFE { - return m_workers.empty() || m_exclusiveAccess; - } - - // True when any thread requested exclusive access - bool stopRequested() const VL_MT_SAFE { - if (m_exclusiveAccess) return false; - // don't wait if shutdown already requested - if (m_shutdown) return false; - return m_stopRequested; - } - - // Waits until `resumeOtherThreads()` is called or exclusive access scope end. - void waitForResumeRequest() VL_REQUIRES(m_stoppedJobsMutex); - - // Sends stop request to other threads and waits until they stop. - void stopOtherThreads() VL_MT_SAFE_EXCLUDES(m_mutex) VL_REQUIRES(m_stoppedJobsMutex); - - // Resumes threads stopped through previous call to `stopOtherThreads()`. - void resumeOtherThreads() VL_MT_SAFE_EXCLUDES(m_mutex) VL_REQUIRES(m_stoppedJobsMutex) { - m_stopRequested = false; - m_stoppedJobsCV.notify_all(); - } - - void workerJobLoop(int id) VL_MT_SAFE; - - static void startWorker(V3ThreadPool* selfThreadp, int id) VL_MT_SAFE; + // For access to enqueue() and wait() + friend class V3ThreadScope; }; -class VL_SCOPED_CAPABILITY V3ThreadPool::ScopedExclusiveAccess final { +// The actual interface for submitting jobs and ensuring their completion. +// Ensures that jobs are started and completed within a given scope. +class V3ThreadScope final { + // MEMBERS + V3ThreadPool* m_pool = nullptr; // Global thread pool instance + public: - ScopedExclusiveAccess() VL_ACQUIRE(V3ThreadPool::s().m_stoppedJobsMutex) VL_MT_SAFE { - if (!V3ThreadPool::s().willExecuteSynchronously()) { - V3ThreadPool::s().m_stoppedJobsMutex.lock(); + // CONSTRUCTORS + V3ThreadScope() VL_MT_SAFE VL_ACQUIRE(VlOs::MtScopeMutex::s_haveThreadScope); + ~V3ThreadScope() VL_MT_SAFE VL_RELEASE(VlOs::MtScopeMutex::s_haveThreadScope) { wait(); } + VL_UNCOPYABLE(V3ThreadScope); + VL_UNMOVABLE(V3ThreadScope); - if (V3ThreadPool::s().stopRequested()) V3ThreadPool::s().waitForResumeRequest(); - V3ThreadPool::s().stopOtherThreads(); - V3ThreadPool::s().m_exclusiveAccess = true; - } else { - V3ThreadPool::s().m_stoppedJobsMutex.assumeLocked(); - } - } - ~ScopedExclusiveAccess() VL_RELEASE(V3ThreadPool::s().m_stoppedJobsMutex) VL_MT_SAFE { - // Can't use `willExecuteSynchronously`, we're still in exclusive execution state. - if (V3ThreadPool::s().m_exclusiveAccess) { - V3ThreadPool::s().m_exclusiveAccess = false; - V3ThreadPool::s().resumeOtherThreads(); - - V3ThreadPool::s().m_stoppedJobsMutex.unlock(); - // wait for all threads to resume - while (V3ThreadPool::s().m_stoppedJobs != 0) {} - } else { - V3ThreadPool::s().m_stoppedJobsMutex.pretendUnlock(); - } - } + // METHODS + // Submit job to the thread pool instance + void enqueue(std::function&& f) VL_MT_START; + // Wait for thread pool's jobs completion + void wait() VL_MT_SAFE VL_REQUIRES(VlOs::MtScopeMutex::s_haveThreadScope); }; -template -T V3ThreadPool::waitForFuture(std::future& future) VL_MT_SAFE_EXCLUDES(m_mutex) { - while (true) { - V3ThreadPool::s().waitIfStopRequested(); - { - std::future_status status - = future.wait_for(std::chrono::milliseconds(V3ThreadPool::FUTUREWAITFOR_MS)); - switch (status) { - case std::future_status::deferred: continue; - case std::future_status::timeout: continue; - case std::future_status::ready: return future.get(); - } - } - } -} - -template -auto V3ThreadPool::enqueue(Callable&& f) VL_MT_START { - using result_t = decltype(f()); - auto&& job = std::packaged_task{std::forward(f)}; - auto future = job.get_future(); - if (willExecuteSynchronously()) { - job(); - } else { - { - const V3LockGuard guard{m_mutex}; - m_queue.push(std::move(job)); - } - m_cv.notify_one(); - } - return future; -} - -template -void V3ThreadPool::requestExclusiveAccess(Callable&& exclusiveAccessJob) VL_MT_SAFE - VL_EXCLUDES(m_stoppedJobsMutex) { - ScopedExclusiveAccess exclusive_access; - exclusiveAccessJob(); -} - #endif // Guard diff --git a/src/V3ThreadSafety.h b/src/V3ThreadSafety.h deleted file mode 100644 index 0b62ce9a3..000000000 --- a/src/V3ThreadSafety.h +++ /dev/null @@ -1,73 +0,0 @@ -// -*- mode: C++; c-file-style: "cc-mode" -*- -//************************************************************************* -// DESCRIPTION: Verilator: Definitions for thread safety checking -// -// Code available from: https://verilator.org -// -//************************************************************************* -// -// Copyright 2003-2024 by Wilson Snyder. This program is free software; you -// can redistribute it and/or modify it under the terms of either the GNU -// Lesser General Public License Version 3 or the Perl Artistic License -// Version 2.0. -// SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 -// -//************************************************************************* - -#ifndef VERILATOR_V3THREADSAFETY_H_ -#define VERILATOR_V3THREADSAFETY_H_ - -#include - -#include - -// A class that works as an indicator of MT_DISABLED context. -// It uses Clang's thread safety analysis (-fthread-safety) to do its work. -// Its use will most likely be optimized out (or at least reduced to a few insignificant symbols -// or instructions) during compilation. -class VL_CAPABILITY("lock") V3MtDisabledLock final { - friend class V3MtDisabledLockInstanceAccessor; - - static V3MtDisabledLock s_mtDisabledLock; - - constexpr V3MtDisabledLock() = default; - ~V3MtDisabledLock() = default; - VL_UNCOPYABLE(V3MtDisabledLock); - VL_UNMOVABLE(V3MtDisabledLock); - -public: - // lock() will disable multithreading while in MT Disabled regions - void lock() VL_ACQUIRE() VL_MT_SAFE; - // unlock() will reenable multithreading while in MT Disabled regions - void unlock() VL_RELEASE() VL_MT_SAFE; - - static constexpr V3MtDisabledLock& instance() - VL_RETURN_CAPABILITY(V3MtDisabledLock::s_mtDisabledLock) { - return s_mtDisabledLock; - } -}; - -// A class providing mutable access to V3MtDisabledLock::s_mtDisabledLock. -// This is a class because VL_RETURN_CAPABILITY works only on methods, not free functions. -// This is not a method in V3MtDisabledLock itself as a method declaration inside #ifdef block -// woudl break ODR. -class V3MtDisabledLockInstanceAccessor final { -public: - constexpr V3MtDisabledLock& operator()() const - VL_RETURN_CAPABILITY(V3MtDisabledLock::s_mtDisabledLock) { - return V3MtDisabledLock::s_mtDisabledLock; - } -}; -// Create a global object which can be called like a function. -static constexpr V3MtDisabledLockInstanceAccessor v3MtDisabledLock VL_ATTR_UNUSED; - -using V3MtDisabledLockGuard = V3LockGuardImp; - -// Annotated function can be called only in MT_DISABLED context, i.e. either in a code unit -// compiled with VL_MT_DISABLED_CODE_UNIT preprocessor definition, or after obtaining a lock on -// v3MtDisabledLock(). -#define VL_MT_DISABLED \ - VL_CLANG_ATTR(annotate("MT_DISABLED")) \ - VL_REQUIRES(V3MtDisabledLock::instance()) - -#endif // guard diff --git a/src/V3Timing.h b/src/V3Timing.h index 7d53d456b..f1704d3b1 100644 --- a/src/V3Timing.h +++ b/src/V3Timing.h @@ -21,7 +21,6 @@ #include "verilatedos.h" #include "V3Ast.h" -#include "V3ThreadSafety.h" //============================================================================ diff --git a/src/V3Trace.h b/src/V3Trace.h index bcb884d97..4dc831b33 100644 --- a/src/V3Trace.h +++ b/src/V3Trace.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3TraceDecl.h b/src/V3TraceDecl.h index ff9dacc98..013e625f8 100644 --- a/src/V3TraceDecl.h +++ b/src/V3TraceDecl.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Tristate.h b/src/V3Tristate.h index 98a498bbb..791621668 100644 --- a/src/V3Tristate.h +++ b/src/V3Tristate.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Undriven.h b/src/V3Undriven.h index 1a9c2de65..3dd1a6550 100644 --- a/src/V3Undriven.h +++ b/src/V3Undriven.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Unknown.h b/src/V3Unknown.h index 49d2c9ebe..b5967f5a1 100644 --- a/src/V3Unknown.h +++ b/src/V3Unknown.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Unroll.h b/src/V3Unroll.h index 88cb4e7fb..f748171ca 100644 --- a/src/V3Unroll.h +++ b/src/V3Unroll.h @@ -22,7 +22,6 @@ #include "V3Ast.h" #include "V3Error.h" -#include "V3ThreadSafety.h" //============================================================================ /// Unroller with saved state, so caller can determine when pushDelete's are executed. diff --git a/src/V3VariableOrder.h b/src/V3VariableOrder.h index 1a23b62ca..9f27ea414 100644 --- a/src/V3VariableOrder.h +++ b/src/V3VariableOrder.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; //============================================================================ diff --git a/src/V3Width.cpp b/src/V3Width.cpp index 46f44bf86..154be410c 100644 --- a/src/V3Width.cpp +++ b/src/V3Width.cpp @@ -111,8 +111,7 @@ std::ostream& operator<<(std::ostream& str, const Determ& rhs) { v3errorEnd( \ v3errorBuildMessage(V3Error::v3errorPrep((lhs) < (rhs) ? V3ErrorCode::WIDTHTRUNC \ : (lhs) > (rhs) ? V3ErrorCode::WIDTHEXPAND \ - : V3ErrorCode::WIDTH, \ - VL_MT_DISABLED_CODE_UNIT), \ + : V3ErrorCode::WIDTH), \ msg)) //###################################################################### diff --git a/src/V3Width.h b/src/V3Width.h index 6d3da85cd..f7aa836bc 100644 --- a/src/V3Width.h +++ b/src/V3Width.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - class AstNetlist; class AstNode; class AstNodeDType; diff --git a/src/Verilator.cpp b/src/Verilator.cpp index 93167376c..81c1b8e40 100644 --- a/src/Verilator.cpp +++ b/src/Verilator.cpp @@ -136,7 +136,6 @@ static void emitXmlOrJson() VL_MT_DISABLED { static void process() { { - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; VlOs::DeltaWallTime elabWallTime{true}; // Sort modules by level so later algorithms don't need to care @@ -600,48 +599,43 @@ static void process() { && !v3Global.opt.dpiHdrOnly()) { // Unfortunately we have some lint checks in emitcImp. V3EmitC::emitcImp(); } - { - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; - if (v3Global.opt.serializeOnly()) { - emitXmlOrJson(); - } else if (v3Global.opt.debugCheck() && !v3Global.opt.lintOnly() - && !v3Global.opt.dpiHdrOnly()) { - // Check XML/JSON when debugging to make sure no missing node types - V3EmitXml::emitxml(); - emitJson(); - } - - // Output DPI protected library files - if (!v3Global.opt.libCreate().empty()) { - if (v3Global.rootp()->delaySchedulerp()) { - v3warn(E_UNSUPPORTED, "Unsupported: --lib-create with --timing and delays"); - } - V3ProtectLib::protect(); - V3EmitV::emitvFiles(); - V3EmitC::emitcFiles(); - } - - if (!v3Global.opt.lintOnly() && !v3Global.opt.serializeOnly() - && !v3Global.opt.dpiHdrOnly()) { - if (v3Global.opt.main()) V3EmitCMain::emit(); - - // V3EmitMk/V3EmitCMake must be after all other emitters, - // as they and below code visits AstCFiles added earlier - size_t src_f_cnt = 0; - for (AstNode* nodep = v3Global.rootp()->filesp(); nodep; nodep = nodep->nextp()) { - if (const AstCFile* cfilep = VN_CAST(nodep, CFile)) - src_f_cnt += cfilep->source() ? 1 : 0; - } - if (src_f_cnt >= V3EmitMk::PARALLEL_FILE_CNT_THRESHOLD) - v3Global.useParallelBuild(true); - if (v3Global.opt.cmake()) V3EmitCMake::emit(); - if (v3Global.opt.gmake()) V3EmitMk::emitmk(); - } - - // Final statistics - if (v3Global.opt.stats()) V3Stats::statsStage("emit"); - reportStatsIfEnabled(); + if (v3Global.opt.serializeOnly()) { + emitXmlOrJson(); + } else if (v3Global.opt.debugCheck() && !v3Global.opt.lintOnly() + && !v3Global.opt.dpiHdrOnly()) { + // Check XML/JSON when debugging to make sure no missing node types + V3EmitXml::emitxml(); + emitJson(); } + + // Output DPI protected library files + if (!v3Global.opt.libCreate().empty()) { + if (v3Global.rootp()->delaySchedulerp()) { + v3warn(E_UNSUPPORTED, "Unsupported: --lib-create with --timing and delays"); + } + V3ProtectLib::protect(); + V3EmitV::emitvFiles(); + V3EmitC::emitcFiles(); + } + + if (!v3Global.opt.lintOnly() && !v3Global.opt.serializeOnly() && !v3Global.opt.dpiHdrOnly()) { + if (v3Global.opt.main()) V3EmitCMain::emit(); + + // V3EmitMk/V3EmitCMake must be after all other emitters, + // as they and below code visits AstCFiles added earlier + size_t src_f_cnt = 0; + for (AstNode* nodep = v3Global.rootp()->filesp(); nodep; nodep = nodep->nextp()) { + if (const AstCFile* cfilep = VN_CAST(nodep, CFile)) + src_f_cnt += cfilep->source() ? 1 : 0; + } + if (src_f_cnt >= V3EmitMk::PARALLEL_FILE_CNT_THRESHOLD) v3Global.useParallelBuild(true); + if (v3Global.opt.cmake()) V3EmitCMake::emit(); + if (v3Global.opt.gmake()) V3EmitMk::emitmk(); + } + + // Final statistics + if (v3Global.opt.stats()) V3Stats::statsStage("emit"); + reportStatsIfEnabled(); } static void verilate(const string& argString) { @@ -664,8 +658,9 @@ static void verilate(const string& argString) { // Disable mutexes in single-thread verilation V3MutexConfig::s().configure(v3Global.opt.verilateJobs() > 1 /*enable*/); - // Adjust thread pool size - V3ThreadPool::s().resize(v3Global.opt.verilateJobs()); + + // Initialize thread pool + v3Global.threadPoolp(new V3ThreadPool{v3Global.opt.verilateJobs()}); // --FRONTEND------------------ @@ -680,31 +675,23 @@ static void verilate(const string& argString) { // and after removing files as may make debug output) VBasicDTypeKwd::selfTest(); if (v3Global.opt.debugSelfTest()) { - { - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; - - V3Os::selfTest(); - VHashSha256::selfTest(); - VSpellCheck::selfTest(); - V3Graph::selfTest(); - V3TSP::selfTest(); - V3ScoreboardBase::selfTest(); - V3Order::selfTestParallel(); - V3ExecGraph::selfTest(); - V3PreShell::selfTest(); - V3Broken::selfTest(); - } + V3Os::selfTest(); + VHashSha256::selfTest(); + VSpellCheck::selfTest(); + V3Graph::selfTest(); + V3TSP::selfTest(); + V3ScoreboardBase::selfTest(); + V3Order::selfTestParallel(); + V3ExecGraph::selfTest(); + V3PreShell::selfTest(); + V3Broken::selfTest(); V3ThreadPool::selfTest(); UINFO(2, "selfTest done\n"); } - { - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; - - // Read first filename - v3Global.readFiles(); - v3Global.removeStd(); - } + // Read first filename + v3Global.readFiles(); + v3Global.removeStd(); // Link, etc, if needed if (!v3Global.opt.preprocOnly()) { // @@ -731,8 +718,6 @@ static void verilate(const string& argString) { V3Error::abortIfWarnings(); if (v3Global.hierPlanp()) { // This run is for just write a makefile - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; - UASSERT(v3Global.opt.hierarchical(), "hierarchical must be set"); UASSERT(!v3Global.opt.hierChild(), "This must not be a hierarchical-child run"); UASSERT(v3Global.opt.hierBlocks().empty(), "hierarchical-block must not be set"); @@ -832,24 +817,21 @@ int main(int argc, char** argv) { srand(static_cast(randseed)); const string argString = V3Options::argString(argc - 1, argv + 1); - { - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; - // Post-constructor initialization of netlists - v3Global.boot(); + // Post-constructor initialization of netlists + v3Global.boot(); - // Preprocessor - // Before command parsing so we can handle -Ds on command line. - V3PreShell::boot(); + // Preprocessor + // Before command parsing so we can handle -Ds on command line. + V3PreShell::boot(); - // Command option parsing - v3Global.opt.buildDepBin(V3Os::filenameCleanup(argv[0])); - v3Global.opt.parseOpts(new FileLine{FileLine::commandLineFilename()}, argc - 1, argv + 1); + // Command option parsing + v3Global.opt.buildDepBin(V3Os::filenameCleanup(argv[0])); + v3Global.opt.parseOpts(new FileLine{FileLine::commandLineFilename()}, argc - 1, argv + 1); - // Validate settings (aka Boost.Program_options) - v3Global.opt.notify(); - v3Global.rootp()->timeInit(); - } + // Validate settings (aka Boost.Program_options) + v3Global.opt.notify(); + v3Global.rootp()->timeInit(); V3Error::abortIfErrors(); @@ -865,14 +847,10 @@ int main(int argc, char** argv) { execBuildJob(); } - { - const V3MtDisabledLockGuard mtDisabler{v3MtDisabledLock()}; - - // Explicitly release resources - V3PreShell::shutdown(); - v3Global.shutdown(); - FileLine::deleteAllRemaining(); - } + // Explicitly release resources + V3PreShell::shutdown(); + v3Global.shutdown(); + FileLine::deleteAllRemaining(); if (!v3Global.opt.quietStats() && !v3Global.opt.preprocOnly()) { V3Stats::addStatPerf(V3Stats::STAT_CPUTIME, cpuTimeTotal.deltaTime()); diff --git a/src/VlcOptions.h b/src/VlcOptions.h index 2784dde03..85cc3d61a 100644 --- a/src/VlcOptions.h +++ b/src/VlcOptions.h @@ -20,8 +20,6 @@ #include "config_build.h" #include "verilatedos.h" -#include "V3ThreadSafety.h" - #include "config_rev.h" #include diff --git a/test_regress/t/t_dist_attributes/mt_disabled.h b/test_regress/t/t_dist_attributes/mt_disabled.h index e47a7be8a..a39202444 100644 --- a/test_regress/t/t_dist_attributes/mt_disabled.h +++ b/test_regress/t/t_dist_attributes/mt_disabled.h @@ -17,8 +17,6 @@ #include "verilatedos.h" -#include "V3ThreadSafety.h" - void unannotatedMtDisabledFunctionBad(); // Duplicate to check that every declaration is reported diff --git a/test_regress/t/t_dist_attributes_bad.out b/test_regress/t/t_dist_attributes_bad.out index e5cfe9c4a..0f944b493 100644 --- a/test_regress/t/t_dist_attributes_bad.out +++ b/test_regress/t/t_dist_attributes_bad.out @@ -1,1209 +1,1175 @@ %Error: "TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [mt_safe] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_safe] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [mt_safe_postinit] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, mt_safe_postinit, pure] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_safe_postinit] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, mt_safe_postinit, pure] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_MT_START(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [mt_start] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_start, mt_safe, pure] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_start, requires] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_start, mt_safe, pure, requires] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, mt_unsafe, pure] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, mt_unsafe, pure] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_PURE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [pure] TestClass::cm_ae_VL_PURE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure] TestClass::cm_ae_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [pure] TestClass::cm_ae_VL_PURE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure] TestClass::cm_ae_VL_PURE(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_RELEASE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) %Error: "TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:204: [requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:146: [mt_safe, pure, requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::cm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.cpp:155: [mt_safe] TestClass::cm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:155: [mt_safe] TestClass::cm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::cm_test_caller_smethod_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.cpp:155: [mt_start] TestClass::cm_test_caller_smethod_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:155: [mt_start, requires] TestClass::cm_test_caller_smethod_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::cm_test_caller_smethod_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.cpp:155: [pure] TestClass::cm_test_caller_smethod_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [] TestClass::cm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_safe] TestClass::cm_au_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_safe_postinit] TestClass::cm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_start] TestClass::cm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [requires] TestClass::cm_au_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [] TestClass::cm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_safe] TestClass::cm_aa_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_safe_postinit] TestClass::cm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_start] TestClass::cm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [requires] TestClass::cm_aa_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_safe] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_safe_postinit] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_start] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:155: [pure] TestClass::cm_test_caller_smethod_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [] TestClass::cm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_safe] TestClass::cm_au_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_safe_postinit] TestClass::cm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_start, requires] TestClass::cm_au_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [requires] TestClass::cm_au_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [] TestClass::cm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_safe] TestClass::cm_aa_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_safe_postinit] TestClass::cm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_start, requires] TestClass::cm_aa_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [requires] TestClass::cm_aa_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_safe] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_safe_postinit] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_start, requires] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::cm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:212: [mt_safe] TestClass::cm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:212: [mt_safe] TestClass::cm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::cm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:212: [mt_start] TestClass::cm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:212: [mt_start, requires] TestClass::cm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe, pure] TestClass::cm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:209: [mt_safe, mt_unsafe_one, pure] TestClass::cm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::cm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.h:212: [pure] TestClass::cm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [] TestClass::cm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_safe] TestClass::cm_au_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_safe_postinit] TestClass::cm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_start] TestClass::cm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:191: [requires] TestClass::cm_au_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [] TestClass::cm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_safe] TestClass::cm_aa_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_safe_postinit] TestClass::cm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_start] TestClass::cm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:199: [requires] TestClass::cm_aa_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_safe] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_safe_postinit] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_start] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:204: [requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:212: [pure] TestClass::cm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [] TestClass::cm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [acquire] TestClass::cm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_safe] TestClass::cm_au_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [excludes] TestClass::cm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_safe_postinit] TestClass::cm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_start, requires] TestClass::cm_au_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe] TestClass::cm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [mt_unsafe_one] TestClass::cm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [release] TestClass::cm_au_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:191: [requires] TestClass::cm_au_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [] TestClass::cm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [acquire] TestClass::cm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_safe] TestClass::cm_aa_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [excludes] TestClass::cm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_safe_postinit] TestClass::cm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_start, requires] TestClass::cm_aa_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe] TestClass::cm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [mt_unsafe_one] TestClass::cm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [release] TestClass::cm_aa_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:199: [requires] TestClass::cm_aa_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [] TestClass::cm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [acquire] TestClass::cm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_safe] TestClass::cm_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [excludes] TestClass::cm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_safe_postinit] TestClass::cm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_start, requires] TestClass::cm_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe] TestClass::cm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [mt_unsafe_one] TestClass::cm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [release] TestClass::cm_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:204: [requires] TestClass::cm_ae_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [acquire] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [acquire] TestClass::cm_ua_VL_ACQUIRE(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [acquire] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [acquire] TestClass::cm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [excludes] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [excludes] TestClass::cm_ua_VL_EXCLUDES(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [mt_safe] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [mt_safe] TestClass::cm_ua_VL_MT_SAFE(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [excludes] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [excludes] TestClass::cm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [mt_safe_postinit] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [mt_safe_postinit] TestClass::cm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_MT_START(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [mt_start] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [mt_start, requires] TestClass::cm_ua_VL_MT_START(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [mt_unsafe] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [mt_unsafe] TestClass::cm_ua_VL_MT_UNSAFE(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [mt_unsafe_one] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [mt_unsafe_one] TestClass::cm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_PURE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_PURE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [pure] TestClass::cm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_PURE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [pure] TestClass::cm_ua_VL_PURE(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_RELEASE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [release] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [release] TestClass::cm_ua_VL_RELEASE(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [release] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [release] TestClass::cm_ua_VL_RELEASE_SHARED(VerilatedMutex &) %Error: "TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:137: [requires] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:195: [] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:137: [requires] TestClass::cm_ua_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::guarded_by_test_fail()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:269: [mt_safe] TestClass::guarded_by_test_fail() -t/t_dist_attributes/mt_enabled.h:104: [] GuardMe::safe_if_guarded_or_local() -t/t_dist_attributes/mt_enabled.h:106: [] GuardMe::operator int() -t/t_dist_attributes/mt_enabled.h:108: [] GuardMe::operator+=(int) +t/t_dist_attributes/mt_enabled.h:269: [mt_safe] TestClass::guarded_by_test_fail() +t/t_dist_attributes/mt_enabled.h:104: [] GuardMe::safe_if_guarded_or_local() +t/t_dist_attributes/mt_enabled.h:106: [] GuardMe::operator int() +t/t_dist_attributes/mt_enabled.h:108: [] GuardMe::operator+=(int) %Error: "TestClass::icm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.cpp:175: [mt_safe] TestClass::icm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:175: [mt_safe] TestClass::icm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::icm_test_caller_smethod_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.cpp:175: [mt_start] TestClass::icm_test_caller_smethod_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:175: [mt_start, requires] TestClass::icm_test_caller_smethod_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::icm_test_caller_smethod_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.cpp:175: [pure] TestClass::icm_test_caller_smethod_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [] TestClass::icm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_safe] TestClass::icm_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_safe_postinit] TestClass::icm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_start] TestClass::icm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [requires] TestClass::icm_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:175: [pure] TestClass::icm_test_caller_smethod_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [] TestClass::icm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_safe] TestClass::icm_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_safe_postinit] TestClass::icm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_start, requires] TestClass::icm_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [requires] TestClass::icm_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::icm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:238: [mt_safe] TestClass::icm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:238: [mt_safe] TestClass::icm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::icm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:238: [mt_start] TestClass::icm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:238: [mt_start, requires] TestClass::icm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::icm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.h:238: [pure] TestClass::icm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [] TestClass::icm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_safe] TestClass::icm_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_safe_postinit] TestClass::icm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_start] TestClass::icm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:235: [requires] TestClass::icm_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:238: [pure] TestClass::icm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [] TestClass::icm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [acquire] TestClass::icm_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_safe] TestClass::icm_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [excludes] TestClass::icm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_safe_postinit] TestClass::icm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_start, requires] TestClass::icm_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe] TestClass::icm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [mt_unsafe_one] TestClass::icm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [release] TestClass::icm_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:235: [requires] TestClass::icm_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::iscm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.cpp:119: [mt_safe] TestClass::iscm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_start] TestClass::iscm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:119: [mt_safe] TestClass::iscm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::iscm_test_caller_smethod_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.cpp:119: [mt_start] TestClass::iscm_test_caller_smethod_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_start] TestClass::iscm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:119: [mt_start, requires] TestClass::iscm_test_caller_smethod_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::iscm_test_caller_smethod_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.cpp:119: [pure] TestClass::iscm_test_caller_smethod_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_safe] TestClass::iscm_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_safe_postinit] TestClass::iscm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_start] TestClass::iscm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [requires] TestClass::iscm_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:119: [pure] TestClass::iscm_test_caller_smethod_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_safe] TestClass::iscm_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_safe_postinit] TestClass::iscm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_start, requires] TestClass::iscm_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [requires] TestClass::iscm_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::iscm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:173: [mt_safe] TestClass::iscm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_start] TestClass::iscm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:173: [mt_safe] TestClass::iscm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::iscm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:173: [mt_start] TestClass::iscm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_start] TestClass::iscm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:173: [mt_start, requires] TestClass::iscm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::iscm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.h:173: [pure] TestClass::iscm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_safe] TestClass::iscm_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_safe_postinit] TestClass::iscm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_start] TestClass::iscm_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:170: [requires] TestClass::iscm_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:173: [pure] TestClass::iscm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [] TestClass::iscm_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [acquire] TestClass::iscm_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_safe] TestClass::iscm_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [excludes] TestClass::iscm_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_safe_postinit] TestClass::iscm_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_start, requires] TestClass::iscm_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe] TestClass::iscm_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [mt_unsafe_one] TestClass::iscm_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [release] TestClass::iscm_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:170: [requires] TestClass::iscm_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [mt_safe] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_safe] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [mt_safe_postinit] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, mt_safe_postinit, pure] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_safe_postinit] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, mt_safe_postinit, pure] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_MT_START(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [mt_start] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_start, mt_safe, pure] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_start, requires] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_start, mt_safe, pure, requires] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, mt_unsafe, pure] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, mt_unsafe, pure] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_PURE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [pure] TestClass::scm_ae_VL_PURE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure] TestClass::scm_ae_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [pure] TestClass::scm_ae_VL_PURE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure] TestClass::scm_ae_VL_PURE(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_RELEASE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) %Error: "TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:133: [requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:84: [mt_safe, pure, requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::scm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.cpp:93: [mt_safe] TestClass::scm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_start] TestClass::scm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_start] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_start] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:93: [mt_safe] TestClass::scm_test_caller_smethod_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::scm_test_caller_smethod_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.cpp:93: [mt_start] TestClass::scm_test_caller_smethod_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_start] TestClass::scm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_start] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_start] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:93: [mt_start, requires] TestClass::scm_test_caller_smethod_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::scm_test_caller_smethod_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.cpp:93: [pure] TestClass::scm_test_caller_smethod_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_safe] TestClass::scm_au_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_safe_postinit] TestClass::scm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_start] TestClass::scm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [requires] TestClass::scm_au_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_safe] TestClass::scm_aa_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_safe_postinit] TestClass::scm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_start] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [requires] TestClass::scm_aa_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_safe] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_safe_postinit] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_start] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:93: [pure] TestClass::scm_test_caller_smethod_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_safe] TestClass::scm_au_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_safe_postinit] TestClass::scm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_start, requires] TestClass::scm_au_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [requires] TestClass::scm_au_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_safe] TestClass::scm_aa_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_safe_postinit] TestClass::scm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_start, requires] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [requires] TestClass::scm_aa_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_safe] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_safe_postinit] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_start, requires] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::scm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:141: [mt_safe] TestClass::scm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_start] TestClass::scm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_start] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_start] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:141: [mt_safe] TestClass::scm_test_caller_smethod_hdr_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::scm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:141: [mt_start] TestClass::scm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_start] TestClass::scm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_start] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_start] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:141: [mt_start, requires] TestClass::scm_test_caller_smethod_hdr_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe, pure] TestClass::scm_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:138: [mt_safe, mt_unsafe_one, pure] TestClass::scm_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::scm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.h:141: [pure] TestClass::scm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_safe] TestClass::scm_au_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_safe_postinit] TestClass::scm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_start] TestClass::scm_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:120: [requires] TestClass::scm_au_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_safe] TestClass::scm_aa_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_safe_postinit] TestClass::scm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_start] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:128: [requires] TestClass::scm_aa_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_safe] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_safe_postinit] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_start] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:133: [requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:141: [pure] TestClass::scm_test_caller_smethod_hdr_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [] TestClass::scm_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [acquire] TestClass::scm_au_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_safe] TestClass::scm_au_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [excludes] TestClass::scm_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_safe_postinit] TestClass::scm_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_start, requires] TestClass::scm_au_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe] TestClass::scm_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [mt_unsafe_one] TestClass::scm_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [release] TestClass::scm_au_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:120: [requires] TestClass::scm_au_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [] TestClass::scm_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [acquire] TestClass::scm_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_safe] TestClass::scm_aa_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [excludes] TestClass::scm_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_safe_postinit] TestClass::scm_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_start, requires] TestClass::scm_aa_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe] TestClass::scm_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [mt_unsafe_one] TestClass::scm_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [release] TestClass::scm_aa_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:128: [requires] TestClass::scm_aa_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [] TestClass::scm_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [acquire] TestClass::scm_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_safe] TestClass::scm_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [excludes] TestClass::scm_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_safe_postinit] TestClass::scm_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_start, requires] TestClass::scm_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe] TestClass::scm_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [mt_unsafe_one] TestClass::scm_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [release] TestClass::scm_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:133: [requires] TestClass::scm_ae_VL_REQUIRES(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [acquire] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [acquire] TestClass::scm_ua_VL_ACQUIRE(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [acquire] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [acquire] TestClass::scm_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [excludes] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [excludes] TestClass::scm_ua_VL_EXCLUDES(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [mt_safe] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [mt_safe] TestClass::scm_ua_VL_MT_SAFE(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [excludes] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [excludes] TestClass::scm_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [mt_safe_postinit] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [mt_safe_postinit] TestClass::scm_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_MT_START(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [mt_start] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [mt_start, requires] TestClass::scm_ua_VL_MT_START(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [mt_unsafe] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [mt_unsafe] TestClass::scm_ua_VL_MT_UNSAFE(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [mt_unsafe_one] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [mt_unsafe_one] TestClass::scm_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_PURE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [pure] TestClass::scm_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_PURE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [pure] TestClass::scm_ua_VL_PURE(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_RELEASE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [release] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [release] TestClass::scm_ua_VL_RELEASE(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [release] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [release] TestClass::scm_ua_VL_RELEASE_SHARED(VerilatedMutex &) %Error: "TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:75: [requires] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:124: [] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:75: [requires] TestClass::scm_ua_VL_REQUIRES(VerilatedMutex &) %Error: "TestClassConstructor::safe_function_calls_constructor_global_object_bad()" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:405: [stable_tree] TestClassConstructor::safe_function_calls_constructor_global_object_bad() -t/t_dist_attributes/mt_enabled.h:355: [] DummyClass::dummy_function() +t/t_dist_attributes/mt_enabled.h:405: [stable_tree] TestClassConstructor::safe_function_calls_constructor_global_object_bad() +t/t_dist_attributes/mt_enabled.h:355: [] DummyClass::dummy_function() %Error: "TestClassConstructor::safe_function_calls_constructor_global_object_member_bad()" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:408: [stable_tree] TestClassConstructor::safe_function_calls_constructor_global_object_member_bad() -t/t_dist_attributes/mt_enabled.h:350: [] DummyClass2::dummy_function2() +t/t_dist_attributes/mt_enabled.h:408: [stable_tree] TestClassConstructor::safe_function_calls_constructor_global_object_member_bad() +t/t_dist_attributes/mt_enabled.h:350: [] DummyClass2::dummy_function2() %Error: "TestClassConstructor::safe_function_calls_constructor_local_calls_class_global_bad()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:402: [mt_safe] TestClassConstructor::safe_function_calls_constructor_local_calls_class_global_bad() -t/t_dist_attributes/mt_enabled.h:280: [] StaticClass::static_class_function() +t/t_dist_attributes/mt_enabled.h:402: [mt_safe] TestClassConstructor::safe_function_calls_constructor_local_calls_class_global_bad() +t/t_dist_attributes/mt_enabled.h:280: [] StaticClass::static_class_function() %Error: "TestClassConstructor::safe_function_calls_constructor_local_calls_global_bad()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:399: [mt_safe] TestClassConstructor::safe_function_calls_constructor_local_calls_global_bad() -t/t_dist_attributes/mt_enabled.h:276: [] static_function() +t/t_dist_attributes/mt_enabled.h:399: [mt_safe] TestClassConstructor::safe_function_calls_constructor_local_calls_global_bad() +t/t_dist_attributes/mt_enabled.h:276: [] static_function() %Error: "TestClassConstructor::safe_function_calls_constructor_with_unsafepointer_bad()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:391: [mt_safe] TestClassConstructor::safe_function_calls_constructor_with_unsafepointer_bad() -t/t_dist_attributes/mt_enabled.h:311: [mt_unsafe] UnsafeFunction::unsafe_function() +t/t_dist_attributes/mt_enabled.h:391: [mt_safe] TestClassConstructor::safe_function_calls_constructor_with_unsafepointer_bad() +t/t_dist_attributes/mt_enabled.h:311: [mt_unsafe] UnsafeFunction::unsafe_function() %Error: "TestClassConstructor::safe_function_calls_constructor_with_unsafereference_bad()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:395: [mt_safe] TestClassConstructor::safe_function_calls_constructor_with_unsafereference_bad() -t/t_dist_attributes/mt_enabled.h:311: [mt_unsafe] UnsafeFunction::unsafe_function() +t/t_dist_attributes/mt_enabled.h:395: [mt_safe] TestClassConstructor::safe_function_calls_constructor_with_unsafereference_bad() +t/t_dist_attributes/mt_enabled.h:311: [mt_unsafe] UnsafeFunction::unsafe_function() %Error: "TestClassConstructor::safe_function_local_function_global_bad()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:377: [mt_safe] TestClassConstructor::safe_function_local_function_global_bad() -t/t_dist_attributes/mt_enabled.h:276: [] static_function() +t/t_dist_attributes/mt_enabled.h:377: [mt_safe] TestClassConstructor::safe_function_local_function_global_bad() +t/t_dist_attributes/mt_enabled.h:276: [] static_function() %Error: "TestClassConstructor::safe_function_static_constructor_bad()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:374: [mt_safe] TestClassConstructor::safe_function_static_constructor_bad() -t/t_dist_attributes/mt_enabled.h:276: [] static_function() +t/t_dist_attributes/mt_enabled.h:374: [mt_safe] TestClassConstructor::safe_function_static_constructor_bad() +t/t_dist_attributes/mt_enabled.h:276: [] static_function() %Error: "TestClassConstructor::safe_function_unsafe_constructor_bad()" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:371: [mt_safe] TestClassConstructor::safe_function_unsafe_constructor_bad() -t/t_dist_attributes/mt_enabled.h:285: [mt_unsafe] ConstructorCallsUnsafeLocalFunction::unsafe_function() +t/t_dist_attributes/mt_enabled.h:371: [mt_safe] TestClassConstructor::safe_function_unsafe_constructor_bad() +t/t_dist_attributes/mt_enabled.h:285: [mt_unsafe] ConstructorCallsUnsafeLocalFunction::unsafe_function() %Error: "UnannotatedMtDisabledClass::unannotatedMtDisabledMethodBad()" defined in a file marked as VL_MT_DISABLED_CODE_UNIT has declaration(s) without VL_MT_DISABLED annotation -t/t_dist_attributes/mt_disabled.cpp:23: [mt_disabled, requires] UnannotatedMtDisabledClass::unannotatedMtDisabledMethodBad() -t/t_dist_attributes/mt_disabled.h:29: [] UnannotatedMtDisabledClass::unannotatedMtDisabledMethodBad() +t/t_dist_attributes/mt_disabled.cpp:23: [mt_disabled, excludes] UnannotatedMtDisabledClass::unannotatedMtDisabledMethodBad() +t/t_dist_attributes/mt_disabled.h:27: [] UnannotatedMtDisabledClass::unannotatedMtDisabledMethodBad() %Error: "UnannotatedMtDisabledClass::unannotatedMtDisabledStaticMethodBad()" defined in a file marked as VL_MT_DISABLED_CODE_UNIT has declaration(s) without VL_MT_DISABLED annotation -t/t_dist_attributes/mt_disabled.cpp:26: [mt_disabled, requires] UnannotatedMtDisabledClass::unannotatedMtDisabledStaticMethodBad() -t/t_dist_attributes/mt_disabled.h:30: [] UnannotatedMtDisabledClass::unannotatedMtDisabledStaticMethodBad() +t/t_dist_attributes/mt_disabled.cpp:26: [mt_disabled, excludes] UnannotatedMtDisabledClass::unannotatedMtDisabledStaticMethodBad() +t/t_dist_attributes/mt_disabled.h:28: [] UnannotatedMtDisabledClass::unannotatedMtDisabledStaticMethodBad() %Error: "ifh_test_caller_func_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.cpp:53: [mt_safe] ifh_test_caller_func_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_start] ifh_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:53: [mt_safe] ifh_test_caller_func_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "ifh_test_caller_func_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.cpp:53: [mt_start] ifh_test_caller_func_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_start] ifh_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:53: [mt_start, requires] ifh_test_caller_func_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "ifh_test_caller_func_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.cpp:53: [pure] ifh_test_caller_func_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_safe] ifh_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_safe_postinit] ifh_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_start] ifh_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [requires] ifh_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:53: [pure] ifh_test_caller_func_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_safe] ifh_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_safe_postinit] ifh_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_start, requires] ifh_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [requires] ifh_VL_REQUIRES(VerilatedMutex &) %Error: "ifh_test_caller_func_hdr_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:97: [mt_safe] ifh_test_caller_func_hdr_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_start] ifh_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:97: [mt_safe] ifh_test_caller_func_hdr_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "ifh_test_caller_func_hdr_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:97: [mt_start] ifh_test_caller_func_hdr_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_start] ifh_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:97: [mt_start, requires] ifh_test_caller_func_hdr_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "ifh_test_caller_func_hdr_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.h:97: [pure] ifh_test_caller_func_hdr_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_safe] ifh_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_safe_postinit] ifh_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_start] ifh_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:94: [requires] ifh_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:97: [pure] ifh_test_caller_func_hdr_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [] ifh_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [acquire] ifh_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_safe] ifh_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [excludes] ifh_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_safe_postinit] ifh_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_start, requires] ifh_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe] ifh_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [mt_unsafe_one] ifh_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [release] ifh_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:94: [requires] ifh_VL_REQUIRES(VerilatedMutex &) %Error: "nsf_ae_NO_ANNOTATION(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure] nsf_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure] nsf_ae_NO_ANNOTATION(VerilatedMutex &) %Error: "nsf_ae_VL_ACQUIRE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) %Error: "nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) %Error: "nsf_ae_VL_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) %Error: "nsf_ae_VL_MT_SAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [mt_safe] nsf_ae_VL_MT_SAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure] nsf_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_safe] nsf_ae_VL_MT_SAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure] nsf_ae_VL_MT_SAFE(VerilatedMutex &) %Error: "nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) %Error: "nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [mt_safe_postinit] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, mt_safe_postinit, pure] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_safe_postinit] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, mt_safe_postinit, pure] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) %Error: "nsf_ae_VL_MT_START(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [mt_start] nsf_ae_VL_MT_START(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_start, mt_safe, pure] nsf_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_start, requires] nsf_ae_VL_MT_START(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_start, mt_safe, pure, requires] nsf_ae_VL_MT_START(VerilatedMutex &) %Error: "nsf_ae_VL_MT_UNSAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, mt_unsafe, pure] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, mt_unsafe, pure] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) %Error: "nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, mt_unsafe_one, pure] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, mt_unsafe_one, pure] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "nsf_ae_VL_PURE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [pure] nsf_ae_VL_PURE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure] nsf_ae_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [pure] nsf_ae_VL_PURE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure] nsf_ae_VL_PURE(VerilatedMutex &) %Error: "nsf_ae_VL_RELEASE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, release] nsf_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, release] nsf_ae_VL_RELEASE(VerilatedMutex &) %Error: "nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) %Error: "nsf_ae_VL_REQUIRES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:75: [requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:34: [mt_safe, pure, requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) %Error: "nsf_test_caller_func_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.cpp:42: [mt_safe] nsf_test_caller_func_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_start] nsf_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_start] nsf_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_start] nsf_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:42: [mt_safe] nsf_test_caller_func_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "nsf_test_caller_func_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.cpp:42: [mt_start] nsf_test_caller_func_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_start] nsf_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_start] nsf_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_start] nsf_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:42: [mt_start, requires] nsf_test_caller_func_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "nsf_test_caller_func_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.cpp:42: [pure] nsf_test_caller_func_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_safe] nsf_au_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_safe_postinit] nsf_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_start] nsf_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [requires] nsf_au_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_safe] nsf_aa_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_safe_postinit] nsf_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_start] nsf_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [requires] nsf_aa_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_safe] nsf_ae_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_safe_postinit] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_start] nsf_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:42: [pure] nsf_test_caller_func_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_safe] nsf_au_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_safe_postinit] nsf_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_start, requires] nsf_au_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [requires] nsf_au_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_safe] nsf_aa_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_safe_postinit] nsf_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_start, requires] nsf_aa_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [requires] nsf_aa_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_safe] nsf_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_safe_postinit] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_start, requires] nsf_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) %Error: "nsf_test_caller_func_hdr_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.h:83: [mt_safe] nsf_test_caller_func_hdr_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_start] nsf_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_start] nsf_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_start] nsf_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:83: [mt_safe] nsf_test_caller_func_hdr_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "nsf_test_caller_func_hdr_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.h:83: [mt_start] nsf_test_caller_func_hdr_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_start] nsf_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_start] nsf_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_start] nsf_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:83: [mt_start, requires] nsf_test_caller_func_hdr_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe, pure] nsf_ea_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:80: [mt_safe, mt_unsafe_one, pure] nsf_ea_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "nsf_test_caller_func_hdr_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.h:83: [pure] nsf_test_caller_func_hdr_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_safe] nsf_au_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_safe_postinit] nsf_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_start] nsf_au_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:62: [requires] nsf_au_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_safe] nsf_aa_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_safe_postinit] nsf_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_start] nsf_aa_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:70: [requires] nsf_aa_VL_REQUIRES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_safe] nsf_ae_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_safe_postinit] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_start] nsf_ae_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.h:75: [requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:83: [pure] nsf_test_caller_func_hdr_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [] nsf_au_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [acquire] nsf_au_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_safe] nsf_au_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [excludes] nsf_au_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_safe_postinit] nsf_au_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_start, requires] nsf_au_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe] nsf_au_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [mt_unsafe_one] nsf_au_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [release] nsf_au_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:62: [requires] nsf_au_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [] nsf_aa_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [acquire] nsf_aa_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_safe] nsf_aa_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [excludes] nsf_aa_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_safe_postinit] nsf_aa_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_start, requires] nsf_aa_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe] nsf_aa_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [mt_unsafe_one] nsf_aa_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [release] nsf_aa_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:70: [requires] nsf_aa_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [] nsf_ae_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [acquire] nsf_ae_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_safe] nsf_ae_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [excludes] nsf_ae_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_safe_postinit] nsf_ae_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_start, requires] nsf_ae_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe] nsf_ae_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [mt_unsafe_one] nsf_ae_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [release] nsf_ae_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:75: [requires] nsf_ae_VL_REQUIRES(VerilatedMutex &) %Error: "nsf_ua_VL_ACQUIRE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [acquire] nsf_ua_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [acquire] nsf_ua_VL_ACQUIRE(VerilatedMutex &) %Error: "nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [acquire] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [acquire] nsf_ua_VL_ACQUIRE_SHARED(VerilatedMutex &) %Error: "nsf_ua_VL_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [excludes] nsf_ua_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [excludes] nsf_ua_VL_EXCLUDES(VerilatedMutex &) %Error: "nsf_ua_VL_MT_SAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [mt_safe] nsf_ua_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [mt_safe] nsf_ua_VL_MT_SAFE(VerilatedMutex &) %Error: "nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [excludes] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [excludes] nsf_ua_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) %Error: "nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [mt_safe_postinit] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [mt_safe_postinit] nsf_ua_VL_MT_SAFE_POSTINIT(VerilatedMutex &) %Error: "nsf_ua_VL_MT_START(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [mt_start] nsf_ua_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_START(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [mt_start, requires] nsf_ua_VL_MT_START(VerilatedMutex &) %Error: "nsf_ua_VL_MT_UNSAFE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [mt_unsafe] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [mt_unsafe] nsf_ua_VL_MT_UNSAFE(VerilatedMutex &) %Error: "nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [mt_unsafe_one] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [mt_unsafe_one] nsf_ua_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "nsf_ua_VL_PURE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [pure] nsf_ua_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_PURE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [pure] nsf_ua_VL_PURE(VerilatedMutex &) %Error: "nsf_ua_VL_RELEASE(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [release] nsf_ua_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [release] nsf_ua_VL_RELEASE(VerilatedMutex &) %Error: "nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [release] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [release] nsf_ua_VL_RELEASE_SHARED(VerilatedMutex &) %Error: "nsf_ua_VL_REQUIRES(VerilatedMutex &)" declaration does not match definition -t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) [declaration] -t/t_dist_attributes/mt_enabled.cpp:25: [requires] nsf_ua_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.h:66: [] nsf_ua_VL_REQUIRES(VerilatedMutex &) [declaration] +t/t_dist_attributes/mt_enabled.cpp:25: [requires] nsf_ua_VL_REQUIRES(VerilatedMutex &) %Error: "sfc_test_caller_func_VL_MT_SAFE(VerilatedMutex &)" is mtsafe but calls non-mtsafe function(s) -t/t_dist_attributes/mt_enabled.cpp:63: [mt_safe] sfc_test_caller_func_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [] sfc_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_start] sfc_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe] sfc_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe_one] sfc_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:63: [mt_safe] sfc_test_caller_func_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [] sfc_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe] sfc_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe_one] sfc_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "sfc_test_caller_func_VL_MT_START(VerilatedMutex &)" is stable_tree but calls non-stable_tree or non-mtsafe -t/t_dist_attributes/mt_enabled.cpp:63: [mt_start] sfc_test_caller_func_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [] sfc_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_start] sfc_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe] sfc_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe_one] sfc_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:63: [mt_start, requires] sfc_test_caller_func_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [] sfc_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe] sfc_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe_one] sfc_VL_MT_UNSAFE_ONE(VerilatedMutex &) %Error: "sfc_test_caller_func_VL_PURE(VerilatedMutex &)" is pure but calls non-pure function(s) -t/t_dist_attributes/mt_enabled.cpp:63: [pure] sfc_test_caller_func_VL_PURE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [] sfc_NO_ANNOTATION(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [acquire] sfc_VL_ACQUIRE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [acquire] sfc_VL_ACQUIRE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [excludes] sfc_VL_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_safe] sfc_VL_MT_SAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [excludes] sfc_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_safe_postinit] sfc_VL_MT_SAFE_POSTINIT(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_start] sfc_VL_MT_START(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe] sfc_VL_MT_UNSAFE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe_one] sfc_VL_MT_UNSAFE_ONE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [release] sfc_VL_RELEASE(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [release] sfc_VL_RELEASE_SHARED(VerilatedMutex &) -t/t_dist_attributes/mt_enabled.cpp:60: [requires] sfc_VL_REQUIRES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:63: [pure] sfc_test_caller_func_VL_PURE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [] sfc_NO_ANNOTATION(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [acquire] sfc_VL_ACQUIRE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [acquire] sfc_VL_ACQUIRE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [excludes] sfc_VL_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_safe] sfc_VL_MT_SAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [excludes] sfc_VL_MT_SAFE_EXCLUDES(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_safe_postinit] sfc_VL_MT_SAFE_POSTINIT(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_start, requires] sfc_VL_MT_START(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe] sfc_VL_MT_UNSAFE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [mt_unsafe_one] sfc_VL_MT_UNSAFE_ONE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [release] sfc_VL_RELEASE(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [release] sfc_VL_RELEASE_SHARED(VerilatedMutex &) +t/t_dist_attributes/mt_enabled.cpp:60: [requires] sfc_VL_REQUIRES(VerilatedMutex &) %Error: "unannotatedMtDisabledFunctionBad()" defined in a file marked as VL_MT_DISABLED_CODE_UNIT has declaration(s) without VL_MT_DISABLED annotation -t/t_dist_attributes/mt_disabled.cpp:20: [mt_disabled, requires] unannotatedMtDisabledFunctionBad() -t/t_dist_attributes/mt_disabled.h:22: [] unannotatedMtDisabledFunctionBad() -t/t_dist_attributes/mt_disabled.h:25: [] unannotatedMtDisabledFunctionBad() +t/t_dist_attributes/mt_disabled.cpp:20: [mt_disabled, excludes] unannotatedMtDisabledFunctionBad() +t/t_dist_attributes/mt_disabled.h:20: [] unannotatedMtDisabledFunctionBad() +t/t_dist_attributes/mt_disabled.h:23: [] unannotatedMtDisabledFunctionBad() Number of functions reported unsafe: 229