#ifndef SYSC_PLAYGROUND_SYSC #define SYSC_PLAYGROUND_SYSC #include #include struct [[nodiscard]] scoped_push_hierarchy { explicit scoped_push_hierarchy(sc_core::sc_module& mod) : m_mod{mod} { assert(m_simctx); m_simctx->hierarchy_push(&m_mod); } ~scoped_push_hierarchy() { const auto* top = m_simctx->hierarchy_pop(); assert(top == &m_mod); } private: sc_core::sc_simcontext* m_simctx{sc_core::sc_get_curr_simcontext()}; sc_core::sc_module& m_mod; }; #endif