From b8936029065835366e9e057a219c0c5194db8662 Mon Sep 17 00:00:00 2001 From: joshua Date: Sat, 14 May 2022 23:30:38 -0500 Subject: Verilog update --- verilog/alu/obj_dir/Valu.cpp | 118 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 verilog/alu/obj_dir/Valu.cpp (limited to 'verilog/alu/obj_dir/Valu.cpp') diff --git a/verilog/alu/obj_dir/Valu.cpp b/verilog/alu/obj_dir/Valu.cpp new file mode 100644 index 0000000..7d020e4 --- /dev/null +++ b/verilog/alu/obj_dir/Valu.cpp @@ -0,0 +1,118 @@ +// 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()); +} -- cgit v1.2.3