// Verilated -*- C++ -*- // DESCRIPTION: Verilator output: Design implementation internals // See Vwave.h for the primary calling header #include "Vwave__pch.h" #include "Vwave___024root.h" void Vwave___024root___eval_act(Vwave___024root* vlSelf) { (void)vlSelf; // Prevent unused variable warning Vwave__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; VL_DEBUG_IF(VL_DBG_MSGF("+ Vwave___024root___eval_act\n"); ); } void Vwave___024root___nba_sequent__TOP__0(Vwave___024root* vlSelf); void Vwave___024root___eval_nba(Vwave___024root* vlSelf) { (void)vlSelf; // Prevent unused variable warning Vwave__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; VL_DEBUG_IF(VL_DBG_MSGF("+ Vwave___024root___eval_nba\n"); ); // Body if ((1ULL & vlSelf->__VnbaTriggered.word(0U))) { Vwave___024root___nba_sequent__TOP__0(vlSelf); } } extern const VlUnpacked Vwave__ConstPool__TABLE_h15fef796_0; extern const VlUnpacked Vwave__ConstPool__TABLE_h116de832_0; extern const VlUnpacked Vwave__ConstPool__TABLE_h12054590_0; VL_INLINE_OPT void Vwave___024root___nba_sequent__TOP__0(Vwave___024root* vlSelf) { (void)vlSelf; // Prevent unused variable warning Vwave__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; VL_DEBUG_IF(VL_DBG_MSGF("+ Vwave___024root___nba_sequent__TOP__0\n"); ); // Init SData/*8:0*/ __Vtableidx1; __Vtableidx1 = 0; // Body __Vtableidx1 = (((IData)(vlSelf->o_led) << 1U) | (IData)(vlSelf->wave__DOT__direction)); vlSelf->o_led = Vwave__ConstPool__TABLE_h15fef796_0 [__Vtableidx1]; if ((2U & Vwave__ConstPool__TABLE_h116de832_0[__Vtableidx1])) { vlSelf->wave__DOT__direction = Vwave__ConstPool__TABLE_h12054590_0 [__Vtableidx1]; } } void Vwave___024root___eval_triggers__act(Vwave___024root* vlSelf); bool Vwave___024root___eval_phase__act(Vwave___024root* vlSelf) { (void)vlSelf; // Prevent unused variable warning Vwave__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; VL_DEBUG_IF(VL_DBG_MSGF("+ Vwave___024root___eval_phase__act\n"); ); // Init VlTriggerVec<1> __VpreTriggered; CData/*0:0*/ __VactExecute; // Body Vwave___024root___eval_triggers__act(vlSelf); __VactExecute = vlSelf->__VactTriggered.any(); if (__VactExecute) { __VpreTriggered.andNot(vlSelf->__VactTriggered, vlSelf->__VnbaTriggered); vlSelf->__VnbaTriggered.thisOr(vlSelf->__VactTriggered); Vwave___024root___eval_act(vlSelf); } return (__VactExecute); } bool Vwave___024root___eval_phase__nba(Vwave___024root* vlSelf) { (void)vlSelf; // Prevent unused variable warning Vwave__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; VL_DEBUG_IF(VL_DBG_MSGF("+ Vwave___024root___eval_phase__nba\n"); ); // Init CData/*0:0*/ __VnbaExecute; // Body __VnbaExecute = vlSelf->__VnbaTriggered.any(); if (__VnbaExecute) { Vwave___024root___eval_nba(vlSelf); vlSelf->__VnbaTriggered.clear(); } return (__VnbaExecute); } #ifdef VL_DEBUG VL_ATTR_COLD void Vwave___024root___dump_triggers__nba(Vwave___024root* vlSelf); #endif // VL_DEBUG #ifdef VL_DEBUG VL_ATTR_COLD void Vwave___024root___dump_triggers__act(Vwave___024root* vlSelf); #endif // VL_DEBUG void Vwave___024root___eval(Vwave___024root* vlSelf) { (void)vlSelf; // Prevent unused variable warning Vwave__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; VL_DEBUG_IF(VL_DBG_MSGF("+ Vwave___024root___eval\n"); ); // Init IData/*31:0*/ __VnbaIterCount; CData/*0:0*/ __VnbaContinue; // Body __VnbaIterCount = 0U; __VnbaContinue = 1U; while (__VnbaContinue) { if (VL_UNLIKELY((0x64U < __VnbaIterCount))) { #ifdef VL_DEBUG Vwave___024root___dump_triggers__nba(vlSelf); #endif VL_FATAL_MT("wave.v", 1, "", "NBA region did not converge."); } __VnbaIterCount = ((IData)(1U) + __VnbaIterCount); __VnbaContinue = 0U; vlSelf->__VactIterCount = 0U; vlSelf->__VactContinue = 1U; while (vlSelf->__VactContinue) { if (VL_UNLIKELY((0x64U < vlSelf->__VactIterCount))) { #ifdef VL_DEBUG Vwave___024root___dump_triggers__act(vlSelf); #endif VL_FATAL_MT("wave.v", 1, "", "Active region did not converge."); } vlSelf->__VactIterCount = ((IData)(1U) + vlSelf->__VactIterCount); vlSelf->__VactContinue = 0U; if (Vwave___024root___eval_phase__act(vlSelf)) { vlSelf->__VactContinue = 1U; } } if (Vwave___024root___eval_phase__nba(vlSelf)) { __VnbaContinue = 1U; } } } #ifdef VL_DEBUG void Vwave___024root___eval_debug_assertions(Vwave___024root* vlSelf) { (void)vlSelf; // Prevent unused variable warning Vwave__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; VL_DEBUG_IF(VL_DBG_MSGF("+ Vwave___024root___eval_debug_assertions\n"); ); // Body if (VL_UNLIKELY((vlSelf->i_clk & 0xfeU))) { Verilated::overWidthError("i_clk");} } #endif // VL_DEBUG