// Verilated -*- C++ -*- // DESCRIPTION: Verilator output: Model implementation (design independent parts) #include "Valu.h" #include "Valu__Syms.h" #include "verilated_vcd_c.h" //============================================================ // Constructors Valu::Valu(VerilatedContext* _vcontextp__, const char* _vcname__) : vlSymsp{new Valu__Syms(_vcontextp__, _vcname__, this)} , op{vlSymsp->TOP.op} , in1{vlSymsp->TOP.in1} , in2{vlSymsp->TOP.in2} , out{vlSymsp->TOP.out} , rootp{&(vlSymsp->TOP)} { } Valu::Valu(const char* _vcname__) : Valu(nullptr, _vcname__) { } //============================================================ // Destructor Valu::~Valu() { delete vlSymsp; } //============================================================ // Evaluation loop void Valu___024root___eval_initial(Valu___024root* vlSelf); void Valu___024root___eval_settle(Valu___024root* vlSelf); void Valu___024root___eval(Valu___024root* vlSelf); #ifdef VL_DEBUG void Valu___024root___eval_debug_assertions(Valu___024root* vlSelf); #endif // VL_DEBUG void Valu___024root___final(Valu___024root* vlSelf); static void _eval_initial_loop(Valu__Syms* __restrict vlSymsp) { vlSymsp->__Vm_didInit = true; Valu___024root___eval_initial(&(vlSymsp->TOP)); // Evaluate till stable vlSymsp->__Vm_activity = true; do { VL_DEBUG_IF(VL_DBG_MSGF("+ Initial loop\n");); Valu___024root___eval_settle(&(vlSymsp->TOP)); Valu___024root___eval(&(vlSymsp->TOP)); } while (0); } void Valu::eval_step() { VL_DEBUG_IF(VL_DBG_MSGF("+++++TOP Evaluate Valu::eval_step\n"); ); #ifdef VL_DEBUG // Debug assertions Valu___024root___eval_debug_assertions(&(vlSymsp->TOP)); #endif // VL_DEBUG // Initialize if (VL_UNLIKELY(!vlSymsp->__Vm_didInit)) _eval_initial_loop(vlSymsp); // Evaluate till stable vlSymsp->__Vm_activity = true; do { VL_DEBUG_IF(VL_DBG_MSGF("+ Clock loop\n");); Valu___024root___eval(&(vlSymsp->TOP)); } while (0); // Evaluate cleanup } //============================================================ // Utilities VerilatedContext* Valu::contextp() const { return vlSymsp->_vm_contextp__; } const char* Valu::name() const { return vlSymsp->name(); } //============================================================ // Invoke final blocks VL_ATTR_COLD void Valu::final() { Valu___024root___final(&(vlSymsp->TOP)); } //============================================================ // Trace configuration void Valu___024root__trace_init_top(Valu___024root* vlSelf, VerilatedVcd* tracep); VL_ATTR_COLD static void trace_init(void* voidSelf, VerilatedVcd* tracep, uint32_t code) { // Callback from tracep->open() Valu___024root* const __restrict vlSelf VL_ATTR_UNUSED = static_cast(voidSelf); Valu__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp; if (!vlSymsp->_vm_contextp__->calcUnusedSigs()) { VL_FATAL_MT(__FILE__, __LINE__, __FILE__, "Turning on wave traces requires Verilated::traceEverOn(true) call before time 0."); } vlSymsp->__Vm_baseCode = code; tracep->scopeEscape(' '); tracep->pushNamePrefix(std::string{vlSymsp->name()} + ' '); Valu___024root__trace_init_top(vlSelf, tracep); tracep->popNamePrefix(); tracep->scopeEscape('.'); } VL_ATTR_COLD void Valu___024root__trace_register(Valu___024root* vlSelf, VerilatedVcd* tracep); VL_ATTR_COLD void Valu::trace(VerilatedVcdC* tfp, int levels, int options) { if (false && levels && options) {} // Prevent unused tfp->spTrace()->addInitCb(&trace_init, &(vlSymsp->TOP)); Valu___024root__trace_register(&(vlSymsp->TOP), tfp->spTrace()); }