// Verilated -*- C++ -*- // DESCRIPTION: Verilator output: Design implementation internals // See Vmod_add_sync.h for the primary calling header #include "Vmod_add_sync__pch.h" VL_ATTR_COLD void Vmod_add_sync___024root___eval_static(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___eval_static\n"); ); Vmod_add_sync__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Body vlSelfRef.__Vtrigprevexpr___TOP__clk__0 = vlSelfRef.clk; vlSelfRef.__Vtrigprevexpr___TOP__rst_n__0 = vlSelfRef.rst_n; } VL_ATTR_COLD void Vmod_add_sync___024root___eval_initial(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___eval_initial\n"); ); Vmod_add_sync__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); } VL_ATTR_COLD void Vmod_add_sync___024root___eval_final(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___eval_final\n"); ); Vmod_add_sync__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); } #ifdef VL_DEBUG VL_ATTR_COLD void Vmod_add_sync___024root___dump_triggers__stl(const VlUnpacked &triggers, const std::string &tag); #endif // VL_DEBUG VL_ATTR_COLD bool Vmod_add_sync___024root___eval_phase__stl(Vmod_add_sync___024root* vlSelf); VL_ATTR_COLD void Vmod_add_sync___024root___eval_settle(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___eval_settle\n"); ); Vmod_add_sync__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(((0x00000064U < __VstlIterCount)))) { #ifdef VL_DEBUG Vmod_add_sync___024root___dump_triggers__stl(vlSelfRef.__VstlTriggered, "stl"s); #endif VL_FATAL_MT("sync_rtl/mod_add/mod_add_sync.v", 14, "", "DIDNOTCONVERGE: Settle region did not converge after '--converge-limit' of 100 tries"); } __VstlIterCount = ((IData)(1U) + __VstlIterCount); vlSelfRef.__VstlPhaseResult = Vmod_add_sync___024root___eval_phase__stl(vlSelf); vlSelfRef.__VstlFirstIteration = 0U; } while (vlSelfRef.__VstlPhaseResult); } VL_ATTR_COLD void Vmod_add_sync___024root___eval_triggers_vec__stl(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___eval_triggers_vec__stl\n"); ); Vmod_add_sync__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 Vmod_add_sync___024root___trigger_anySet__stl(const VlUnpacked &in); #ifdef VL_DEBUG VL_ATTR_COLD void Vmod_add_sync___024root___dump_triggers__stl(const VlUnpacked &triggers, const std::string &tag) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___dump_triggers__stl\n"); ); // Body if ((1U & (~ (IData)(Vmod_add_sync___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 Vmod_add_sync___024root___trigger_anySet__stl(const VlUnpacked &in) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___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); } VL_ATTR_COLD void Vmod_add_sync___024root___stl_sequent__TOP__0(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___stl_sequent__TOP__0\n"); ); Vmod_add_sync__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Body vlSelfRef.valid_o = vlSelfRef.mod_add_sync__DOT__u_pipe__DOT__valid_r; vlSelfRef.sum = vlSelfRef.mod_add_sync__DOT__u_pipe__DOT__data_r; vlSelfRef.mod_add_sync__DOT__add_raw = (0x00001fffU & ((IData)(vlSelfRef.a) + (IData)(vlSelfRef.b))); vlSelfRef.ready_o = (1U & ((~ (IData)(vlSelfRef.mod_add_sync__DOT__u_pipe__DOT__valid_r)) | (IData)(vlSelfRef.ready_i))); } VL_ATTR_COLD void Vmod_add_sync___024root___eval_stl(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___eval_stl\n"); ); Vmod_add_sync__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Body if ((1ULL & vlSelfRef.__VstlTriggered[0U])) { vlSelfRef.valid_o = vlSelfRef.mod_add_sync__DOT__u_pipe__DOT__valid_r; vlSelfRef.sum = vlSelfRef.mod_add_sync__DOT__u_pipe__DOT__data_r; vlSelfRef.mod_add_sync__DOT__add_raw = (0x00001fffU & ((IData)(vlSelfRef.a) + (IData)(vlSelfRef.b))); vlSelfRef.ready_o = (1U & ((~ (IData)(vlSelfRef.mod_add_sync__DOT__u_pipe__DOT__valid_r)) | (IData)(vlSelfRef.ready_i))); } } VL_ATTR_COLD bool Vmod_add_sync___024root___eval_phase__stl(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___eval_phase__stl\n"); ); Vmod_add_sync__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; auto& vlSelfRef = std::ref(*vlSelf).get(); // Locals CData/*0:0*/ __VstlExecute; // Body Vmod_add_sync___024root___eval_triggers_vec__stl(vlSelf); #ifdef VL_DEBUG if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) { Vmod_add_sync___024root___dump_triggers__stl(vlSelfRef.__VstlTriggered, "stl"s); } #endif __VstlExecute = Vmod_add_sync___024root___trigger_anySet__stl(vlSelfRef.__VstlTriggered); if (__VstlExecute) { Vmod_add_sync___024root___eval_stl(vlSelf); } return (__VstlExecute); } bool Vmod_add_sync___024root___trigger_anySet__ico(const VlUnpacked &in); #ifdef VL_DEBUG VL_ATTR_COLD void Vmod_add_sync___024root___dump_triggers__ico(const VlUnpacked &triggers, const std::string &tag) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___dump_triggers__ico\n"); ); // Body if ((1U & (~ (IData)(Vmod_add_sync___024root___trigger_anySet__ico(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 'ico' trigger - first iteration\n"); } } #endif // VL_DEBUG bool Vmod_add_sync___024root___trigger_anySet__act(const VlUnpacked &in); #ifdef VL_DEBUG VL_ATTR_COLD void Vmod_add_sync___024root___dump_triggers__act(const VlUnpacked &triggers, const std::string &tag) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___dump_triggers__act\n"); ); // Body if ((1U & (~ (IData)(Vmod_add_sync___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: @(posedge clk)\n"); } if ((1U & (IData)((triggers[0U] >> 1U)))) { VL_DBG_MSGS(" '" + tag + "' region trigger index 1 is active: @(negedge rst_n)\n"); } } #endif // VL_DEBUG VL_ATTR_COLD void Vmod_add_sync___024root___ctor_var_reset(Vmod_add_sync___024root* vlSelf) { VL_DEBUG_IF(VL_DBG_MSGF("+ Vmod_add_sync___024root___ctor_var_reset\n"); ); Vmod_add_sync__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->clk = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 16707436170211756652ull); vlSelf->rst_n = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 1638864771569018232ull); vlSelf->a = VL_SCOPED_RAND_RESET_I(12, __VscopeHash, 510903276987443985ull); vlSelf->b = VL_SCOPED_RAND_RESET_I(12, __VscopeHash, 16900879642891266615ull); vlSelf->valid_i = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 550966959580451262ull); vlSelf->ready_o = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 6223107695775132031ull); vlSelf->sum = VL_SCOPED_RAND_RESET_I(12, __VscopeHash, 17823321413984766096ull); vlSelf->valid_o = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 10854271546065566948ull); vlSelf->ready_i = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 2487444212943817592ull); vlSelf->mod_add_sync__DOT__add_raw = VL_SCOPED_RAND_RESET_I(13, __VscopeHash, 3056689789628782752ull); vlSelf->mod_add_sync__DOT__u_pipe__DOT__valid_r = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 2581127527985639139ull); vlSelf->mod_add_sync__DOT__u_pipe__DOT__data_r = VL_SCOPED_RAND_RESET_I(12, __VscopeHash, 895104528192337104ull); for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VstlTriggered[__Vi0] = 0; } for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VicoTriggered[__Vi0] = 0; } for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VactTriggered[__Vi0] = 0; } vlSelf->__Vtrigprevexpr___TOP__clk__0 = 0; vlSelf->__Vtrigprevexpr___TOP__rst_n__0 = 0; for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) { vlSelf->__VnbaTriggered[__Vi0] = 0; } }