File size: 6,982 Bytes
d8ff16a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | // 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<QData/*63:0*/, 1> &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<QData/*63:0*/, 1> &in);
#ifdef VL_DEBUG
VL_ATTR_COLD void Vsim___024root___dump_triggers__stl(const VlUnpacked<QData/*63:0*/, 1> &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<QData/*63:0*/, 1> &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<QData/*63:0*/, 1> &in);
#ifdef VL_DEBUG
VL_ATTR_COLD void Vsim___024root___dump_triggers__act(const VlUnpacked<QData/*63:0*/, 1> &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;
}
}
|