OpenCores
URL https://opencores.org/ocsvn/ecpu_alu/ecpu_alu/trunk

Subversion Repositories ecpu_alu

[/] [ecpu_alu/] [trunk/] [alu/] [systemc/] [obj_dir/] [Valu_tb.cpp] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 leonous
// Verilated -*- SystemC -*-
2
#include "Valu_tb.h"           // For This
3
#include "Valu_tb__Syms.h"
4
 
5
//--------------------
6
// STATIC VARIABLES
7
 
8
 
9
//--------------------
10
 
11
VL_SC_CTOR_IMP(Valu_tb)
12
#if (SYSTEMC_VERSION>20011000)
13
    : systemc_clk("systemc_clk")
14
#endif
15
 {
16
    Valu_tb__Syms* __restrict vlSymsp = __VlSymsp = new Valu_tb__Syms(this, name());
17
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
18
    VL_CELL (v, Valu_tb_alu_tb);
19
    // Sensitivities on all clocks and combo inputs
20
    SC_METHOD(eval);
21
    sensitive << systemc_clk;
22
 
23
    // Reset internal values
24
 
25
    // Reset structure values
26
    __Vcellinp__v__systemc_clk = VL_RAND_RESET_I(1);
27
    __VinpClk__TOP__v__clk = VL_RAND_RESET_I(1);
28
    __VinpClk__TOP__v__alu_inst0__DOT__reset = VL_RAND_RESET_I(1);
29
    __VinpClk__TOP__v__finished = VL_RAND_RESET_I(1);
30
    __Vclklast__TOP____VinpClk__TOP__v__clk = VL_RAND_RESET_I(1);
31
    __Vclklast__TOP____VinpClk__TOP__v__alu_inst0__DOT__reset = VL_RAND_RESET_I(1);
32
    __Vclklast__TOP____VinpClk__TOP__v__finished = VL_RAND_RESET_I(1);
33
    __Vchglast__TOP__v__clk = VL_RAND_RESET_I(1);
34
    __Vchglast__TOP__v__finished = VL_RAND_RESET_I(1);
35
    __Vchglast__TOP__v__alu_inst0__DOT__reset = VL_RAND_RESET_I(1);
36
    __Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__adder_in_b = VL_RAND_RESET_I(8);
37
    __Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__carry = VL_RAND_RESET_I(1);
38
}
39
 
40
void Valu_tb::__Vconfigure(Valu_tb__Syms* vlSymsp, bool first) {
41
    if (0 && first) {}  // Prevent unused
42
    this->__VlSymsp = vlSymsp;
43
}
44
 
45
Valu_tb::~Valu_tb() {
46
    delete __VlSymsp; __VlSymsp=NULL;
47
}
48
 
49
//--------------------
50
 
51
 
52
void Valu_tb::eval() {
53
    Valu_tb__Syms* __restrict vlSymsp = this->__VlSymsp; // Setup global symbol table
54
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
55
    // Initialize
56
    if (VL_UNLIKELY(!vlSymsp->__Vm_didInit)) _eval_initial_loop(vlSymsp);
57
    // Evaluate till stable
58
    VL_DEBUG_IF(cout<<"\n----TOP Evaluate Valu_tb::eval"<<endl; );
59
    int __VclockLoop = 0;
60
    IData __Vchange=1;
61
    while (VL_LIKELY(__Vchange)) {
62
        VL_DEBUG_IF(cout<<" Clock loop"<<endl;);
63
        vlSymsp->__Vm_activity = true;
64
        _eval(vlSymsp);
65
        __Vchange = _change_request(vlSymsp);
66
        if (++__VclockLoop > 100) vl_fatal(__FILE__,__LINE__,__FILE__,"Verilated model didn't converge");
67
    }
68
}
69
 
70
void Valu_tb::_eval_initial_loop(Valu_tb__Syms* __restrict vlSymsp) {
71
    vlSymsp->__Vm_didInit = true;
72
    _eval_initial(vlSymsp);
73
    vlSymsp->__Vm_activity = true;
74
    int __VclockLoop = 0;
75
    IData __Vchange=1;
76
    while (VL_LIKELY(__Vchange)) {
77
        _eval_settle(vlSymsp);
78
        _eval(vlSymsp);
79
        __Vchange = _change_request(vlSymsp);
80
        if (++__VclockLoop > 100) vl_fatal(__FILE__,__LINE__,__FILE__,"Verilated model didn't DC converge");
81
    }
82
}
83
 
84
//--------------------
85
// Internal Methods
86
 
87
void Valu_tb::_settle__TOP__1(Valu_tb__Syms* __restrict vlSymsp) {
88
    VL_DEBUG_IF(cout<<"    Valu_tb::_settle__TOP__1"<<endl; );
89
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
90
    // Body
91
    VL_ASSIGN_IS(1,vlTOPp->__Vcellinp__v__systemc_clk, vlTOPp->systemc_clk);
92
}
93
 
94
void Valu_tb::_combo__TOP__2(Valu_tb__Syms* __restrict vlSymsp) {
95
    VL_DEBUG_IF(cout<<"    Valu_tb::_combo__TOP__2"<<endl; );
96
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
97
    // Body
98
    VL_ASSIGN_IS(1,vlTOPp->__Vcellinp__v__systemc_clk, vlTOPp->systemc_clk);
99
    vlSymsp->TOP__v.systemc_clk = vlTOPp->__Vcellinp__v__systemc_clk;
100
}
101
 
102
void Valu_tb::_settle__TOP__3(Valu_tb__Syms* __restrict vlSymsp) {
103
    VL_DEBUG_IF(cout<<"    Valu_tb::_settle__TOP__3"<<endl; );
104
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
105
    // Body
106
    vlSymsp->TOP__v.systemc_clk = vlTOPp->__Vcellinp__v__systemc_clk;
107
}
108
 
109
void Valu_tb::_eval(Valu_tb__Syms* __restrict vlSymsp) {
110
    VL_DEBUG_IF(cout<<"    Valu_tb::_eval"<<endl; );
111
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
112
    // Body
113
    vlSymsp->TOP__v._combo__TOP__v__2(vlSymsp);
114
    vlTOPp->_combo__TOP__2(vlSymsp);
115
    vlSymsp->TOP__v._combo__TOP__v__4(vlSymsp);
116
    if (((~ (IData)(vlTOPp->__VinpClk__TOP__v__clk))
117
         & (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__clk))) {
118
        vlSymsp->TOP__v._sequent__TOP__v__6(vlSymsp);
119
    }
120
    if ((((IData)(vlTOPp->__VinpClk__TOP__v__alu_inst0__DOT__reset)
121
          & (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__alu_inst0__DOT__reset)))
122
         | ((IData)(vlTOPp->__VinpClk__TOP__v__clk)
123
            & (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__clk))))) {
124
        vlSymsp->TOP__v._sequent__TOP__v__7(vlSymsp);
125
    }
126
    vlSymsp->TOP__v._combo__TOP__v__8(vlSymsp);
127
    if ((((IData)(vlTOPp->__VinpClk__TOP__v__clk) &
128
          (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__clk)))
129
         | ((IData)(vlTOPp->__VinpClk__TOP__v__finished)
130
            & (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__finished))))) {
131
        vlSymsp->TOP__v._sequent__TOP__v__10(vlSymsp);
132
    }
133
    if (((~ (IData)(vlTOPp->__VinpClk__TOP__v__clk))
134
         & (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__clk))) {
135
        vlSymsp->TOP__v._sequent__TOP__v__11(vlSymsp);
136
    }
137
    if ((((IData)(vlTOPp->__VinpClk__TOP__v__alu_inst0__DOT__reset)
138
          & (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__alu_inst0__DOT__reset)))
139
         | ((IData)(vlTOPp->__VinpClk__TOP__v__clk)
140
            & (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__clk))))) {
141
        vlSymsp->TOP__v._sequent__TOP__v__12(vlSymsp);
142
    }
143
    vlSymsp->TOP__v._combo__TOP__v__14(vlSymsp);
144
    if ((((IData)(vlTOPp->__VinpClk__TOP__v__alu_inst0__DOT__reset)
145
          & (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__alu_inst0__DOT__reset)))
146
         | ((IData)(vlTOPp->__VinpClk__TOP__v__clk)
147
            & (~ (IData)(vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__clk))))) {
148
        vlSymsp->TOP__v._sequent__TOP__v__15(vlSymsp);
149
    }
150
    vlSymsp->TOP__v._combo__TOP__v__17(vlSymsp);
151
    // Final
152
    vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__clk
153
        = vlTOPp->__VinpClk__TOP__v__clk;
154
    vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__alu_inst0__DOT__reset
155
        = vlTOPp->__VinpClk__TOP__v__alu_inst0__DOT__reset;
156
    vlTOPp->__Vclklast__TOP____VinpClk__TOP__v__finished
157
        = vlTOPp->__VinpClk__TOP__v__finished;
158
    vlTOPp->__VinpClk__TOP__v__clk = vlSymsp->TOP__v.clk;
159
    vlTOPp->__VinpClk__TOP__v__alu_inst0__DOT__reset
160
        = vlSymsp->TOP__v.alu_inst0__DOT__reset;
161
    vlTOPp->__VinpClk__TOP__v__finished = vlSymsp->TOP__v.finished;
162
}
163
 
164
void Valu_tb::_eval_initial(Valu_tb__Syms* __restrict vlSymsp) {
165
    VL_DEBUG_IF(cout<<"    Valu_tb::_eval_initial"<<endl; );
166
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
167
    // Body
168
    vlSymsp->TOP__v._initial__TOP__v(vlSymsp);
169
}
170
 
171
void Valu_tb::final() {
172
    VL_DEBUG_IF(cout<<"    Valu_tb::final"<<endl; );
173
    // Variables
174
    Valu_tb__Syms* __restrict vlSymsp = this->__VlSymsp;
175
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
176
}
177
 
178
void Valu_tb::_eval_settle(Valu_tb__Syms* __restrict vlSymsp) {
179
    VL_DEBUG_IF(cout<<"    Valu_tb::_eval_settle"<<endl; );
180
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
181
    // Body
182
    vlSymsp->TOP__v._settle__TOP__v__1(vlSymsp);
183
    vlTOPp->_settle__TOP__1(vlSymsp);
184
    vlTOPp->_settle__TOP__3(vlSymsp);
185
    vlSymsp->TOP__v._settle__TOP__v__3(vlSymsp);
186
    vlSymsp->TOP__v._settle__TOP__v__5(vlSymsp);
187
    vlSymsp->TOP__v._settle__TOP__v__9(vlSymsp);
188
    vlSymsp->TOP__v._settle__TOP__v__13(vlSymsp);
189
    vlSymsp->TOP__v._settle__TOP__v__16(vlSymsp);
190
}
191
 
192
bool Valu_tb::_change_request(Valu_tb__Syms* __restrict vlSymsp) {
193
    VL_DEBUG_IF(cout<<"    Valu_tb::_change_request"<<endl; );
194
    Valu_tb* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
195
    // Body
196
    // Change detection
197
    IData __req = false;  // Logically a bool
198
    __req |= ((vlSymsp->TOP__v.clk ^ vlTOPp->__Vchglast__TOP__v__clk)
199
         | (vlSymsp->TOP__v.finished ^ vlTOPp->__Vchglast__TOP__v__finished)
200
         | (vlSymsp->TOP__v.alu_inst0__DOT__reset ^ vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__reset)
201
         | (vlSymsp->TOP__v.alu_inst0__DOT__datapath__DOT__adder_in_b ^ vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__adder_in_b)
202
         | (vlSymsp->TOP__v.alu_inst0__DOT__datapath__DOT__carry ^ vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__carry));
203
    VL_DEBUG_IF( if(__req && ((vlSymsp->TOP__v.clk ^ vlTOPp->__Vchglast__TOP__v__clk))) cout<<" CHANGE: alu_tb.v:59: clk"<<endl; );
204
    VL_DEBUG_IF( if(__req && ((vlSymsp->TOP__v.finished ^ vlTOPp->__Vchglast__TOP__v__finished))) cout<<"       CHANGE: alu_tb.v:81: finished"<<endl; );
205
    VL_DEBUG_IF( if(__req && ((vlSymsp->TOP__v.alu_inst0__DOT__reset ^ vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__reset))) cout<<"     CHANGE: /home/leonous/projects/verilog/ecpu/components/alu/rtl/verilog/alu.v:40: alu_inst0.reset"<<endl; );
206
    VL_DEBUG_IF( if(__req && ((vlSymsp->TOP__v.alu_inst0__DOT__datapath__DOT__adder_in_b ^ vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__adder_in_b))) cout<<"     CHANGE: /home/leonous/projects/verilog/ecpu/components/alu/rtl/verilog/alu_datapath.v:80: alu_inst0.datapath.adder_in_b"<<endl; );
207
    VL_DEBUG_IF( if(__req && ((vlSymsp->TOP__v.alu_inst0__DOT__datapath__DOT__carry ^ vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__carry))) cout<<"       CHANGE: /home/leonous/projects/verilog/ecpu/components/alu/rtl/verilog/alu_datapath.v:91: alu_inst0.datapath.carry"<<endl; );
208
    // Final
209
    vlTOPp->__Vchglast__TOP__v__clk = vlSymsp->TOP__v.clk;
210
    vlTOPp->__Vchglast__TOP__v__finished = vlSymsp->TOP__v.finished;
211
    vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__reset
212
        = vlSymsp->TOP__v.alu_inst0__DOT__reset;
213
    vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__adder_in_b
214
        = vlSymsp->TOP__v.alu_inst0__DOT__datapath__DOT__adder_in_b;
215
    vlTOPp->__Vchglast__TOP__v__alu_inst0__DOT__datapath__DOT__carry
216
        = vlSymsp->TOP__v.alu_inst0__DOT__datapath__DOT__carry;
217
    return __req;
218
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.