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
|
// Verilated -*- C++ -*-
// DESCRIPTION: Verilator output: Design implementation internals
// See Vtb.h for the primary calling header
#include "Vtb.h"
#include "Vtb__Syms.h"
//==========
VL_CTOR_IMP(Vtb) {
Vtb__Syms* __restrict vlSymsp = __VlSymsp = new Vtb__Syms(this, name());
Vtb* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Reset internal values
// Reset structure values
_ctor_var_reset();
}
void Vtb::__Vconfigure(Vtb__Syms* vlSymsp, bool first) {
if (false && first) {} // Prevent unused
this->__VlSymsp = vlSymsp;
if (false && this->__VlSymsp) {} // Prevent unused
Verilated::timeunit(-3);
Verilated::timeprecision(-3);
}
Vtb::~Vtb() {
VL_DO_CLEAR(delete __VlSymsp, __VlSymsp = nullptr);
}
void Vtb::_initial__TOP__1(Vtb__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ Vtb::_initial__TOP__1\n"); );
Vtb* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
VL_WRITEF("%10# %10#\n",32,(IData)(vlTOPp->tb__DOT__val1),
32,(IData)(vlTOPp->tb__DOT__val2));
vlTOPp->tb__DOT__write = 2U;
vlTOPp->tb__DOT__write_data = 0x14ULL;
vlTOPp->tb__DOT__read1 = 1U;
vlTOPp->tb__DOT__read2 = 2U;
VL_WRITEF("%10# %10#\n",32,(IData)(vlTOPp->tb__DOT__val1),
32,(IData)(vlTOPp->tb__DOT__val2));
VL_STOP_MT("tb.v", 48, "");
vlTOPp->__Vtask_tb__DOT__r__DOT__write_reg__0__data = 0x14ULL;
vlTOPp->__Vtask_tb__DOT__r__DOT__write_reg__0__regid = 2U;
vlTOPp->tb__DOT__r__DOT__reg_array[2U] = 0x14ULL;
}
void Vtb::_settle__TOP__2(Vtb__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ Vtb::_settle__TOP__2\n"); );
Vtb* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Variables
CData/*4:0*/ __Vfunc_tb__DOT__r__DOT__read_reg__1__regid;
CData/*4:0*/ __Vfunc_tb__DOT__r__DOT__read_reg__2__regid;
QData/*63:0*/ __Vfunc_tb__DOT__r__DOT__read_reg__1__Vfuncout;
QData/*63:0*/ __Vfunc_tb__DOT__r__DOT__read_reg__2__Vfuncout;
// Body
vlTOPp->__Vtask_tb__DOT__r__DOT__write_reg__0__data
= vlTOPp->tb__DOT__write_data;
vlTOPp->__Vtask_tb__DOT__r__DOT__write_reg__0__regid
= vlTOPp->tb__DOT__write;
vlTOPp->tb__DOT__r__DOT__reg_array[vlTOPp->__Vtask_tb__DOT__r__DOT__write_reg__0__regid]
= vlTOPp->__Vtask_tb__DOT__r__DOT__write_reg__0__data;
__Vfunc_tb__DOT__r__DOT__read_reg__1__regid = vlTOPp->tb__DOT__read1;
__Vfunc_tb__DOT__r__DOT__read_reg__1__Vfuncout
= vlTOPp->tb__DOT__r__DOT__reg_array[__Vfunc_tb__DOT__r__DOT__read_reg__1__regid];
__Vfunc_tb__DOT__r__DOT__read_reg__2__regid = vlTOPp->tb__DOT__read2;
__Vfunc_tb__DOT__r__DOT__read_reg__2__Vfuncout
= vlTOPp->tb__DOT__r__DOT__reg_array[__Vfunc_tb__DOT__r__DOT__read_reg__2__regid];
__Vfunc_tb__DOT__r__DOT__read_reg__1__regid = vlTOPp->tb__DOT__read1;
__Vfunc_tb__DOT__r__DOT__read_reg__1__Vfuncout
= vlTOPp->tb__DOT__r__DOT__reg_array[__Vfunc_tb__DOT__r__DOT__read_reg__1__regid];
vlTOPp->tb__DOT__val1 = __Vfunc_tb__DOT__r__DOT__read_reg__1__Vfuncout;
__Vfunc_tb__DOT__r__DOT__read_reg__2__regid = vlTOPp->tb__DOT__read2;
__Vfunc_tb__DOT__r__DOT__read_reg__2__Vfuncout
= vlTOPp->tb__DOT__r__DOT__reg_array[__Vfunc_tb__DOT__r__DOT__read_reg__2__regid];
vlTOPp->tb__DOT__val2 = __Vfunc_tb__DOT__r__DOT__read_reg__2__Vfuncout;
}
void Vtb::_eval_initial(Vtb__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ Vtb::_eval_initial\n"); );
Vtb* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
vlTOPp->_initial__TOP__1(vlSymsp);
}
void Vtb::final() {
VL_DEBUG_IF(VL_DBG_MSGF("+ Vtb::final\n"); );
// Variables
Vtb__Syms* __restrict vlSymsp = this->__VlSymsp;
Vtb* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
}
void Vtb::_eval_settle(Vtb__Syms* __restrict vlSymsp) {
VL_DEBUG_IF(VL_DBG_MSGF("+ Vtb::_eval_settle\n"); );
Vtb* const __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
vlTOPp->_settle__TOP__2(vlSymsp);
}
void Vtb::_ctor_var_reset() {
VL_DEBUG_IF(VL_DBG_MSGF("+ Vtb::_ctor_var_reset\n"); );
// Body
tb__DOT__read1 = VL_RAND_RESET_I(5);
tb__DOT__read2 = VL_RAND_RESET_I(5);
tb__DOT__val1 = VL_RAND_RESET_Q(64);
tb__DOT__val2 = VL_RAND_RESET_Q(64);
tb__DOT__write = VL_RAND_RESET_I(5);
tb__DOT__write_data = VL_RAND_RESET_Q(64);
for (int __Vi0=0; __Vi0<32; ++__Vi0) {
tb__DOT__r__DOT__reg_array[__Vi0] = VL_RAND_RESET_Q(64);
}
__Vtask_tb__DOT__r__DOT__write_reg__0__regid = VL_RAND_RESET_I(5);
__Vtask_tb__DOT__r__DOT__write_reg__0__data = VL_RAND_RESET_Q(64);
__Vchglast__TOP__tb__DOT__val1 = VL_RAND_RESET_Q(64);
__Vchglast__TOP__tb__DOT__val2 = VL_RAND_RESET_Q(64);
}
|