// Verilated -*- C++ -*- // DESCRIPTION: Verilator output: Design implementation internals // See Vsim.h for the primary calling header #include "Vsim__pch.h" VL_ATTR_COLD void Vsim___024root___eval_static(Vsim___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___eval_static\n"); ); Vsim__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Body do { vlSelfRef.__VactTriggeredAcc[vlSelfRef.__Vi] = vlSelfRef.__VactTriggered[vlSelfRef.__Vi]; vlSelfRef.__Vi = ((IData)(1U) + vlSelfRef.__Vi); } while ((0U >= vlSelfRef.__Vi)); } VL_ATTR_COLD void Vsim___024root___eval_final(Vsim___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___eval_final\n"); ); Vsim__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); } #ifdef VL_DEBUG VL_ATTR_COLD void Vsim___024root___dump_triggers__stl(const VlUnpacked &triggers, const std::string &tag); #endif // VL_DEBUG VL_ATTR_COLD bool Vsim___024root___eval_phase__stl(Vsim___024root* vlSelf); VL_ATTR_COLD void Vsim___024root___eval_settle(Vsim___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___eval_settle\n"); ); Vsim__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Locals IData/*31:0*/ __VstlIterCount; // Body __VstlIterCount = 0U; vlSelfRef.__VstlFirstIteration = 1U; do { if (VL_UNLIKELY(((0x00002710U < __VstlIterCount)))) { #ifdef VL_DEBUG Vsim___024root___dump_triggers__stl(vlSelfRef.__VstlTriggered, "stl"s); #endif VL_FATAL_MT("/workspace/.tmp_verilator/testbench.sv", 3, "", "DIDNOTCONVERGE: Settle region did not converge after '--converge-limit' of 10000 tries"); } __VstlIterCount = ((IData)(1U) + __VstlIterCount); vlSelfRef.__VstlPhaseResult = Vsim___024root___eval_phase__stl(vlSelf); vlSelfRef.__VstlFirstIteration = 0U; } while (vlSelfRef.__VstlPhaseResult); } VL_ATTR_COLD void Vsim___024root___eval_triggers_vec__stl(Vsim___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___eval_triggers_vec__stl\n"); ); Vsim__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Body vlSelfRef.__VstlTriggered[0U] = ((0xfffffffffffffffeULL & vlSelfRef.__VstlTriggered[0U]) | (IData)((IData)(vlSelfRef.__VstlFirstIteration))); } VL_ATTR_COLD bool Vsim___024root___trigger_anySet__stl(const VlUnpacked &in); #ifdef VL_DEBUG VL_ATTR_COLD void Vsim___024root___dump_triggers__stl(const VlUnpacked &triggers, const std::string &tag) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___dump_triggers__stl\n"); ); // Body if ((1U & (~ (IData)(Vsim___024root___trigger_anySet__stl(triggers))))) { VL_DBG_MSGS(" No '" + tag + "' region triggers active\n"); } if ((1U & (IData)(triggers[0U]))) { VL_DBG_MSGS(" '" + tag + "' region trigger index 0 is active: Internal 'stl' trigger - first iteration\n"); } } #endif // VL_DEBUG VL_ATTR_COLD bool Vsim___024root___trigger_anySet__stl(const VlUnpacked &in) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___trigger_anySet__stl\n"); ); // Locals IData/*31:0*/ n; // Body n = 0U; do { if (in[n]) { return (1U); } n = ((IData)(1U) + n); } while ((1U > n)); return (0U); } void Vsim___024root___act_sequent__TOP__0(Vsim___024root* vlSelf); VL_ATTR_COLD void Vsim___024root___eval_stl(Vsim___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___eval_stl\n"); ); Vsim__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Body if ((1ULL & vlSelfRef.__VstlTriggered[0U])) { Vsim___024root___act_sequent__TOP__0(vlSelf); } } VL_ATTR_COLD bool Vsim___024root___eval_phase__stl(Vsim___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___eval_phase__stl\n"); ); Vsim__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Locals CData/*0:0*/ __VstlExecute; // Body Vsim___024root___eval_triggers_vec__stl(vlSelf); #ifdef VL_DEBUG if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) { Vsim___024root___dump_triggers__stl(vlSelfRef.__VstlTriggered, "stl"s); } #endif __VstlExecute = Vsim___024root___trigger_anySet__stl(vlSelfRef.__VstlTriggered); if (__VstlExecute) { Vsim___024root___eval_stl(vlSelf); } return (__VstlExecute); } bool Vsim___024root___trigger_anySet__act(const VlUnpacked &in); #ifdef VL_DEBUG VL_ATTR_COLD void Vsim___024root___dump_triggers__act(const VlUnpacked &triggers, const std::string &tag) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___dump_triggers__act\n"); ); // Body if ((1U & (~ (IData)(Vsim___024root___trigger_anySet__act(triggers))))) { VL_DBG_MSGS(" No '" + tag + "' region triggers active\n"); } if ((1U & (IData)(triggers[0U]))) { VL_DBG_MSGS(" '" + tag + "' region trigger index 0 is active: @([true] __VdlySched.awaitingCurrentTime())\n"); } } #endif // VL_DEBUG VL_ATTR_COLD void Vsim___024root___ctor_var_reset(Vsim___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vsim___024root___ctor_var_reset\n"); ); Vsim__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Body const uint64_t __VscopeHash = VL_MURMUR64_HASH(vlSelf->vlNamep); vlSelf->tb_full_adder__DOT__a = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 13747735994981389321ull); vlSelf->tb_full_adder__DOT__b = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 686105649783556071ull); vlSelf->tb_full_adder__DOT__cin = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 4012772730186193120ull); vlSelf->tb_full_adder__DOT__uut__DOT__sum = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 13287595272639865983ull); vlSelf->tb_full_adder__DOT__uut__DOT__cout = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 13664396158812022014ull); for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VstlTriggered[__Vi0] = 0; } for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VactTriggered[__Vi0] = 0; } for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VactTriggeredAcc[__Vi0] = 0; } for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VnbaTriggered[__Vi0] = 0; } vlSelf->__Vi = 0; for (int __Vi0 = 0; __Vi0 < 3; ++__Vi0) { vlSelf->__Vm_traceActivity[__Vi0] = 0; } }