gem5  v20.1.0.0
sc_module.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2018 Google, Inc.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met: redistributions of source code must retain the above copyright
7  * notice, this list of conditions and the following disclaimer;
8  * redistributions in binary form must reproduce the above copyright
9  * notice, this list of conditions and the following disclaimer in the
10  * documentation and/or other materials provided with the distribution;
11  * neither the name of the copyright holders nor the names of its
12  * contributors may be used to endorse or promote products derived from
13  * this software without specific prior written permission.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #ifndef __SYSTEMC_CORE_EXT_SC_MODULE_HH__
29 #define __SYSTEMC_CORE_EXT_SC_MODULE_HH__
30 
31 #include <string>
32 #include <vector>
33 
34 #include "sc_object.hh"
35 #include "sc_process_handle.hh"
36 #include "sc_sensitive.hh"
37 #include "sc_time.hh"
38 
39 namespace sc_dt
40 {
41 
42 class sc_logic;
43 
44 } // namespace sc_dt
45 
46 namespace sc_gem5
47 {
48 
49 class Kernel;
50 class Module;
51 class Process;
52 struct ProcessFuncWrapper;
53 
54 Process *newMethodProcess(const char *name, ProcessFuncWrapper *func);
55 Process *newThreadProcess(const char *name, ProcessFuncWrapper *func);
56 Process *newCThreadProcess(const char *name, ProcessFuncWrapper *func);
57 
58 } // namespace sc_gem5
59 
60 // Gem5 prototype
61 class Port;
62 
63 namespace sc_core
64 {
65 
66 template <class T>
67 class sc_in;
68 template <class T>
69 class sc_out;
70 template <class T>
71 class sc_inout;
72 template <class T>
73 class sc_signal_in_if;
74 
75 class sc_event;
76 class sc_event_and_list;
77 class sc_event_or_list;
78 class sc_module_name;
79 
81 {
82  private:
85 
86  public:
87  sc_bind_proxy();
90 
91  sc_interface *interface() const { return _interface; }
92  sc_port_base *port() const { return _port; }
93 };
94 
95 extern const sc_bind_proxy SC_BIND_PROXY_NIL;
96 
97 class sc_module : public sc_object
98 {
99  public:
100  // Gem5 specific extensions
101  virtual ::Port &gem5_getPort(const std::string &if_name, int idx=-1);
102 
103  public:
104  friend class ::sc_gem5::Kernel;
105  friend class ::sc_gem5::Module;
106 
107  virtual ~sc_module();
108 
109  virtual const char *kind() const { return "sc_module"; }
110 
111  void operator () (const sc_bind_proxy &p001,
112  const sc_bind_proxy &p002 = SC_BIND_PROXY_NIL,
113  const sc_bind_proxy &p003 = SC_BIND_PROXY_NIL,
114  const sc_bind_proxy &p004 = SC_BIND_PROXY_NIL,
115  const sc_bind_proxy &p005 = SC_BIND_PROXY_NIL,
116  const sc_bind_proxy &p006 = SC_BIND_PROXY_NIL,
117  const sc_bind_proxy &p007 = SC_BIND_PROXY_NIL,
118  const sc_bind_proxy &p008 = SC_BIND_PROXY_NIL,
119  const sc_bind_proxy &p009 = SC_BIND_PROXY_NIL,
120  const sc_bind_proxy &p010 = SC_BIND_PROXY_NIL,
121  const sc_bind_proxy &p011 = SC_BIND_PROXY_NIL,
122  const sc_bind_proxy &p012 = SC_BIND_PROXY_NIL,
123  const sc_bind_proxy &p013 = SC_BIND_PROXY_NIL,
124  const sc_bind_proxy &p014 = SC_BIND_PROXY_NIL,
125  const sc_bind_proxy &p015 = SC_BIND_PROXY_NIL,
126  const sc_bind_proxy &p016 = SC_BIND_PROXY_NIL,
127  const sc_bind_proxy &p017 = SC_BIND_PROXY_NIL,
128  const sc_bind_proxy &p018 = SC_BIND_PROXY_NIL,
129  const sc_bind_proxy &p019 = SC_BIND_PROXY_NIL,
130  const sc_bind_proxy &p020 = SC_BIND_PROXY_NIL,
131  const sc_bind_proxy &p021 = SC_BIND_PROXY_NIL,
132  const sc_bind_proxy &p022 = SC_BIND_PROXY_NIL,
133  const sc_bind_proxy &p023 = SC_BIND_PROXY_NIL,
134  const sc_bind_proxy &p024 = SC_BIND_PROXY_NIL,
135  const sc_bind_proxy &p025 = SC_BIND_PROXY_NIL,
136  const sc_bind_proxy &p026 = SC_BIND_PROXY_NIL,
137  const sc_bind_proxy &p027 = SC_BIND_PROXY_NIL,
138  const sc_bind_proxy &p028 = SC_BIND_PROXY_NIL,
139  const sc_bind_proxy &p029 = SC_BIND_PROXY_NIL,
140  const sc_bind_proxy &p030 = SC_BIND_PROXY_NIL,
141  const sc_bind_proxy &p031 = SC_BIND_PROXY_NIL,
142  const sc_bind_proxy &p032 = SC_BIND_PROXY_NIL,
143  const sc_bind_proxy &p033 = SC_BIND_PROXY_NIL,
144  const sc_bind_proxy &p034 = SC_BIND_PROXY_NIL,
145  const sc_bind_proxy &p035 = SC_BIND_PROXY_NIL,
146  const sc_bind_proxy &p036 = SC_BIND_PROXY_NIL,
147  const sc_bind_proxy &p037 = SC_BIND_PROXY_NIL,
148  const sc_bind_proxy &p038 = SC_BIND_PROXY_NIL,
149  const sc_bind_proxy &p039 = SC_BIND_PROXY_NIL,
150  const sc_bind_proxy &p040 = SC_BIND_PROXY_NIL,
151  const sc_bind_proxy &p041 = SC_BIND_PROXY_NIL,
152  const sc_bind_proxy &p042 = SC_BIND_PROXY_NIL,
153  const sc_bind_proxy &p043 = SC_BIND_PROXY_NIL,
154  const sc_bind_proxy &p044 = SC_BIND_PROXY_NIL,
155  const sc_bind_proxy &p045 = SC_BIND_PROXY_NIL,
156  const sc_bind_proxy &p046 = SC_BIND_PROXY_NIL,
157  const sc_bind_proxy &p047 = SC_BIND_PROXY_NIL,
158  const sc_bind_proxy &p048 = SC_BIND_PROXY_NIL,
159  const sc_bind_proxy &p049 = SC_BIND_PROXY_NIL,
160  const sc_bind_proxy &p050 = SC_BIND_PROXY_NIL,
161  const sc_bind_proxy &p051 = SC_BIND_PROXY_NIL,
162  const sc_bind_proxy &p052 = SC_BIND_PROXY_NIL,
163  const sc_bind_proxy &p053 = SC_BIND_PROXY_NIL,
164  const sc_bind_proxy &p054 = SC_BIND_PROXY_NIL,
165  const sc_bind_proxy &p055 = SC_BIND_PROXY_NIL,
166  const sc_bind_proxy &p056 = SC_BIND_PROXY_NIL,
167  const sc_bind_proxy &p057 = SC_BIND_PROXY_NIL,
168  const sc_bind_proxy &p058 = SC_BIND_PROXY_NIL,
169  const sc_bind_proxy &p059 = SC_BIND_PROXY_NIL,
170  const sc_bind_proxy &p060 = SC_BIND_PROXY_NIL,
171  const sc_bind_proxy &p061 = SC_BIND_PROXY_NIL,
172  const sc_bind_proxy &p062 = SC_BIND_PROXY_NIL,
173  const sc_bind_proxy &p063 = SC_BIND_PROXY_NIL,
174  const sc_bind_proxy &p064 = SC_BIND_PROXY_NIL);
175 
176  // Deprecated
181 
182  virtual const std::vector<sc_object *> &get_child_objects() const;
183  virtual const std::vector<sc_event *> &get_child_events() const;
184 
185  protected:
186  sc_module(const sc_module_name &);
187  sc_module();
188 
189  // Deprecated
190  sc_module(const char *);
191  sc_module(const std::string &);
192 
193  /* Deprecated, but used in the regression tests. */
194  void end_module();
195 
196  void reset_signal_is(const sc_in<bool> &, bool);
197  void reset_signal_is(const sc_inout<bool> &, bool);
198  void reset_signal_is(const sc_out<bool> &, bool);
199  void reset_signal_is(const sc_signal_in_if<bool> &, bool);
200 
201  void async_reset_signal_is(const sc_in<bool> &, bool);
202  void async_reset_signal_is(const sc_inout<bool> &, bool);
203  void async_reset_signal_is(const sc_out<bool> &, bool);
204  void async_reset_signal_is(const sc_signal_in_if<bool> &, bool);
205 
207 
208  void dont_initialize();
209  void set_stack_size(size_t);
210 
211  void next_trigger();
212  void next_trigger(const sc_event &);
213  void next_trigger(const sc_event_or_list &);
214  void next_trigger(const sc_event_and_list &);
215  void next_trigger(const sc_time &);
216  void next_trigger(double, sc_time_unit);
217  void next_trigger(const sc_time &, const sc_event &);
218  void next_trigger(double, sc_time_unit, const sc_event &);
219  void next_trigger(const sc_time &, const sc_event_or_list &);
220  void next_trigger(double, sc_time_unit, const sc_event_or_list &);
221  void next_trigger(const sc_time &, const sc_event_and_list &);
222  void next_trigger(double, sc_time_unit, const sc_event_and_list &);
223 
224  // Nonstandard
225  bool timed_out();
226 
227  void wait();
228  void wait(int);
229  void wait(const sc_event &);
230  void wait(const sc_event_or_list &);
231  void wait(const sc_event_and_list &);
232  void wait(const sc_time &);
233  void wait(double, sc_time_unit);
234  void wait(const sc_time &, const sc_event &);
235  void wait(double, sc_time_unit, const sc_event &);
236  void wait(const sc_time &, const sc_event_or_list &);
237  void wait(double, sc_time_unit, const sc_event_or_list &);
238  void wait(const sc_time &, const sc_event_and_list &);
239  void wait(double, sc_time_unit, const sc_event_and_list &);
240 
241  // Nonstandard
242  void halt();
243  void at_posedge(const sc_signal_in_if<bool> &);
245  void at_negedge(const sc_signal_in_if<bool> &);
247 
248  virtual void before_end_of_elaboration() {}
249  virtual void end_of_elaboration() {}
250  virtual void start_of_simulation() {}
251  virtual void end_of_simulation() {}
252 
253  private:
255 
256  // Disabled
257  sc_module(const sc_module &) : sc_object() {};
258  sc_module &operator = (const sc_module &) { return *this; }
259 };
260 
261 void next_trigger();
262 void next_trigger(const sc_event &);
263 void next_trigger(const sc_event_or_list &);
264 void next_trigger(const sc_event_and_list &);
265 void next_trigger(const sc_time &);
266 void next_trigger(double, sc_time_unit);
267 void next_trigger(const sc_time &, const sc_event &);
268 void next_trigger(double, sc_time_unit, const sc_event &);
269 void next_trigger(const sc_time &, const sc_event_or_list &);
270 void next_trigger(double, sc_time_unit, const sc_event_or_list &);
271 void next_trigger(const sc_time &, const sc_event_and_list &);
272 void next_trigger(double, sc_time_unit, const sc_event_and_list &);
273 
274 void wait();
275 void wait(int);
276 void wait(const sc_event &);
277 void wait(const sc_event_or_list &);
278 void wait(const sc_event_and_list &);
279 void wait(const sc_time &);
280 void wait(double, sc_time_unit);
281 void wait(const sc_time &, const sc_event &);
282 void wait(double, sc_time_unit, const sc_event &);
283 void wait(const sc_time &, const sc_event_or_list &);
284 void wait(double, sc_time_unit, const sc_event_or_list &);
285 void wait(const sc_time &, const sc_event_and_list &);
286 void wait(double, sc_time_unit, const sc_event_and_list &);
287 
288 // Nonstandard
289 bool timed_out();
290 
291 #define SC_MODULE(name) struct name : ::sc_core::sc_module
292 
293 #define SC_CTOR(name) \
294  typedef name SC_CURRENT_USER_MODULE; \
295  name(::sc_core::sc_module_name)
296 
297 #define SC_HAS_PROCESS(name) typedef name SC_CURRENT_USER_MODULE
298 
299 #define SC_METHOD(name) \
300  { \
301  ::sc_gem5::Process *p = \
302  ::sc_gem5::newMethodProcess( \
303  #name, new ::sc_gem5::ProcessMemberFuncWrapper< \
304  SC_CURRENT_USER_MODULE>(this, \
305  &SC_CURRENT_USER_MODULE::name)); \
306  if (p) \
307  this->sensitive << p; \
308  }
309 #define SC_THREAD(name) \
310  { \
311  ::sc_gem5::Process *p = \
312  ::sc_gem5::newThreadProcess( \
313  #name, new ::sc_gem5::ProcessMemberFuncWrapper< \
314  SC_CURRENT_USER_MODULE>(this, \
315  &SC_CURRENT_USER_MODULE::name)); \
316  if (p) \
317  this->sensitive << p; \
318  }
319 #define SC_CTHREAD(name, clk) \
320  { \
321  ::sc_gem5::Process *p = \
322  ::sc_gem5::newCThreadProcess( \
323  #name, new ::sc_gem5::ProcessMemberFuncWrapper< \
324  SC_CURRENT_USER_MODULE>(this, \
325  &SC_CURRENT_USER_MODULE::name)); \
326  if (p) \
327  this->sensitive(p, clk); \
328  }
329 
330 // Nonstandard
331 // Documentation for this is very scarce, but it looks like it's supposed to
332 // stop the currently executing cthread, or if a cthread isn't running report
333 // an error.
334 void halt();
335 void at_posedge(const sc_signal_in_if<bool> &);
336 void at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &);
337 void at_negedge(const sc_signal_in_if<bool> &);
338 void at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &);
339 
340 const char *sc_gen_unique_name(const char *);
341 
342 // Nonstandard
343 bool sc_hierarchical_name_exists(const char *name);
344 
347 
350 
351 // Nonstandard
352 // Allocates a module of type x and records a pointer to it so that it gets
353 // destructed automatically at the end of the simulation.
355 #define SC_NEW(x) ::sc_core::sc_module_sc_new(new x);
356 
357 // Nonstandard
358 #define SC_WAIT() \
359  ::sc_core::sc_set_location(__FILE__, __LINE__); \
360  ::sc_core::wait(); \
361  ::sc_core::sc_set_location(NULL, 0)
362 
363 // Nonstandard
364 #define SC_WAITN(n) \
365  ::sc_core::sc_set_location(__FILE__, __LINE__); \
366  ::sc_core::wait(n); \
367  ::sc_core::sc_set_location(NULL, 0)
368 
369 // Nonstandard
370 #define SC_WAIT_UNTIL(expr) \
371  do { SC_WAIT(); } while (!(expr))
372 
373 } // namespace sc_core
374 
375 #endif //__SYSTEMC_EXT_CORE_SC_MODULE_HH__
sc_core::sc_port_base
Definition: sc_port.hh:74
sc_core::sc_in< bool >
Definition: sc_in.hh:165
sc_core::sc_module::operator()
void operator()(const sc_bind_proxy &p001, const sc_bind_proxy &p002=SC_BIND_PROXY_NIL, const sc_bind_proxy &p003=SC_BIND_PROXY_NIL, const sc_bind_proxy &p004=SC_BIND_PROXY_NIL, const sc_bind_proxy &p005=SC_BIND_PROXY_NIL, const sc_bind_proxy &p006=SC_BIND_PROXY_NIL, const sc_bind_proxy &p007=SC_BIND_PROXY_NIL, const sc_bind_proxy &p008=SC_BIND_PROXY_NIL, const sc_bind_proxy &p009=SC_BIND_PROXY_NIL, const sc_bind_proxy &p010=SC_BIND_PROXY_NIL, const sc_bind_proxy &p011=SC_BIND_PROXY_NIL, const sc_bind_proxy &p012=SC_BIND_PROXY_NIL, const sc_bind_proxy &p013=SC_BIND_PROXY_NIL, const sc_bind_proxy &p014=SC_BIND_PROXY_NIL, const sc_bind_proxy &p015=SC_BIND_PROXY_NIL, const sc_bind_proxy &p016=SC_BIND_PROXY_NIL, const sc_bind_proxy &p017=SC_BIND_PROXY_NIL, const sc_bind_proxy &p018=SC_BIND_PROXY_NIL, const sc_bind_proxy &p019=SC_BIND_PROXY_NIL, const sc_bind_proxy &p020=SC_BIND_PROXY_NIL, const sc_bind_proxy &p021=SC_BIND_PROXY_NIL, const sc_bind_proxy &p022=SC_BIND_PROXY_NIL, const sc_bind_proxy &p023=SC_BIND_PROXY_NIL, const sc_bind_proxy &p024=SC_BIND_PROXY_NIL, const sc_bind_proxy &p025=SC_BIND_PROXY_NIL, const sc_bind_proxy &p026=SC_BIND_PROXY_NIL, const sc_bind_proxy &p027=SC_BIND_PROXY_NIL, const sc_bind_proxy &p028=SC_BIND_PROXY_NIL, const sc_bind_proxy &p029=SC_BIND_PROXY_NIL, const sc_bind_proxy &p030=SC_BIND_PROXY_NIL, const sc_bind_proxy &p031=SC_BIND_PROXY_NIL, const sc_bind_proxy &p032=SC_BIND_PROXY_NIL, const sc_bind_proxy &p033=SC_BIND_PROXY_NIL, const sc_bind_proxy &p034=SC_BIND_PROXY_NIL, const sc_bind_proxy &p035=SC_BIND_PROXY_NIL, const sc_bind_proxy &p036=SC_BIND_PROXY_NIL, const sc_bind_proxy &p037=SC_BIND_PROXY_NIL, const sc_bind_proxy &p038=SC_BIND_PROXY_NIL, const sc_bind_proxy &p039=SC_BIND_PROXY_NIL, const sc_bind_proxy &p040=SC_BIND_PROXY_NIL, const sc_bind_proxy &p041=SC_BIND_PROXY_NIL, const sc_bind_proxy &p042=SC_BIND_PROXY_NIL, const sc_bind_proxy &p043=SC_BIND_PROXY_NIL, const sc_bind_proxy &p044=SC_BIND_PROXY_NIL, const sc_bind_proxy &p045=SC_BIND_PROXY_NIL, const sc_bind_proxy &p046=SC_BIND_PROXY_NIL, const sc_bind_proxy &p047=SC_BIND_PROXY_NIL, const sc_bind_proxy &p048=SC_BIND_PROXY_NIL, const sc_bind_proxy &p049=SC_BIND_PROXY_NIL, const sc_bind_proxy &p050=SC_BIND_PROXY_NIL, const sc_bind_proxy &p051=SC_BIND_PROXY_NIL, const sc_bind_proxy &p052=SC_BIND_PROXY_NIL, const sc_bind_proxy &p053=SC_BIND_PROXY_NIL, const sc_bind_proxy &p054=SC_BIND_PROXY_NIL, const sc_bind_proxy &p055=SC_BIND_PROXY_NIL, const sc_bind_proxy &p056=SC_BIND_PROXY_NIL, const sc_bind_proxy &p057=SC_BIND_PROXY_NIL, const sc_bind_proxy &p058=SC_BIND_PROXY_NIL, const sc_bind_proxy &p059=SC_BIND_PROXY_NIL, const sc_bind_proxy &p060=SC_BIND_PROXY_NIL, const sc_bind_proxy &p061=SC_BIND_PROXY_NIL, const sc_bind_proxy &p062=SC_BIND_PROXY_NIL, const sc_bind_proxy &p063=SC_BIND_PROXY_NIL, const sc_bind_proxy &p064=SC_BIND_PROXY_NIL)
Definition: sc_module.cc:125
sc_core::sc_signal_in_if< bool >
Definition: sc_signal_in_if.hh:74
sc_core::sc_module
Definition: sc_module.hh:97
sc_core::sc_module::set_stack_size
void set_stack_size(size_t)
Definition: sc_module.cc:345
sc_dt
Definition: sc_bit.cc:67
sc_core::sc_bind_proxy::_interface
sc_interface * _interface
Definition: sc_module.hh:83
Process
Definition: process.hh:65
sc_core
Definition: messages.cc:31
sc_core::sc_module::async_reset_signal_is
void async_reset_signal_is(const sc_in< bool > &, bool)
Definition: sc_module.cc:311
sc_core::sc_time_unit
sc_time_unit
Definition: sc_time.hh:40
sc_core::sc_module::reset_signal_is
void reset_signal_is(const sc_in< bool > &, bool)
Definition: sc_module.cc:286
sc_core::sc_event_and_list
Definition: sc_event.hh:61
sc_core::sc_interface
Definition: sc_interface.hh:37
sc_core::sc_bind_proxy::interface
sc_interface * interface() const
Definition: sc_module.hh:91
sc_core::sc_event_or_list
Definition: sc_event.hh:93
sc_core::sc_module::sc_module
sc_module()
Definition: sc_module.cc:256
sc_core::sc_bind_proxy::_port
sc_port_base * _port
Definition: sc_module.hh:84
sc_core::sc_bind_proxy::port
sc_port_base * port() const
Definition: sc_module.hh:92
sc_core::sc_module_sc_new
sc_module * sc_module_sc_new(sc_module *mod)
Definition: sc_module.cc:858
sc_core::sc_hierarchical_name_exists
bool sc_hierarchical_name_exists(const char *name)
Definition: sc_module.cc:839
std::vector
STL vector class.
Definition: stl.hh:37
sc_gem5::newThreadProcess
Process * newThreadProcess(const char *name, ProcessFuncWrapper *func)
Definition: sc_module.cc:69
sc_core::sc_module::~sc_module
virtual ~sc_module()
Definition: sc_module.cc:122
sc_core::timed_out
bool timed_out()
Definition: sc_module.cc:626
sc_core::sc_module::next_trigger
void next_trigger()
Definition: sc_module.cc:351
sc_core::sc_bind_proxy
Definition: sc_module.hh:80
sc_core::sc_module::kind
virtual const char * kind() const
Definition: sc_module.hh:109
sc_core::sc_module::get_child_objects
virtual const std::vector< sc_object * > & get_child_objects() const
Definition: sc_module.cc:245
sc_core::sc_module::end_of_simulation
virtual void end_of_simulation()
Definition: sc_module.hh:251
sc_core::sc_sensitive
Definition: sc_sensitive.hh:63
sc_core::sc_module::gem5_getPort
virtual ::Port & gem5_getPort(const std::string &if_name, int idx=-1)
Definition: sc_module.cc:117
sc_core::sc_module::dont_initialize
void dont_initialize()
Definition: sc_module.cc:336
sc_core::sc_event
Definition: sc_event.hh:169
Port
Ports are used to interface objects to each other.
Definition: port.hh:56
sc_core::sc_time
Definition: sc_time.hh:49
sc_core::sc_module::operator<<
sc_module & operator<<(sc_interface &)
Definition: sc_module.cc:217
sc_core::sc_module_name
Definition: sc_module_name.hh:41
sc_core::sc_channel
sc_module sc_channel
Definition: sc_module.hh:346
sc_gem5::newMethodProcess
Process * newMethodProcess(const char *name, ProcessFuncWrapper *func)
Definition: sc_module.cc:54
sc_core::sc_module::sc_module
sc_module(const sc_module &)
Definition: sc_module.hh:257
sc_core::sc_gen_unique_name
const char * sc_gen_unique_name(const char *seed)
Definition: sc_module.cc:820
sc_core::sc_object
Definition: sc_object.hh:50
name
const std::string & name()
Definition: trace.cc:50
sc_core::sc_module::operator=
sc_module & operator=(const sc_module &)
Definition: sc_module.hh:258
sc_core::sc_module::end_of_elaboration
virtual void end_of_elaboration()
Definition: sc_module.hh:249
sc_core::sc_behavior
sc_module sc_behavior
Definition: sc_module.hh:345
sc_sensitive.hh
sc_core::sc_module::at_negedge
void at_negedge(const sc_signal_in_if< bool > &)
Definition: sc_module.cc:525
sc_core::sc_start_of_simulation_invoked
bool sc_start_of_simulation_invoked()
Definition: sc_module.cc:846
sc_process_handle.hh
sc_core::sc_module::timed_out
bool timed_out()
Definition: sc_module.cc:421
sc_core::sc_bind_proxy::sc_bind_proxy
sc_bind_proxy()
Definition: sc_module.cc:104
sc_core::wait
void wait()
Definition: sc_module.cc:653
sc_core::SC_BIND_PROXY_NIL
const sc_bind_proxy SC_BIND_PROXY_NIL
Definition: sc_module.cc:114
sc_core::at_posedge
void at_posedge(const sc_signal_in_if< bool > &s)
Definition: sc_module.cc:784
sc_core::sc_module::before_end_of_elaboration
virtual void before_end_of_elaboration()
Definition: sc_module.hh:248
sc_core::sc_signal_in_if< sc_dt::sc_logic >
Definition: sc_signal_in_if.hh:108
sc_gem5::newCThreadProcess
Process * newCThreadProcess(const char *name, ProcessFuncWrapper *func)
Definition: sc_module.cc:84
sc_core::sc_out< bool >
sc_object.hh
sc_core::sc_inout< bool >
Definition: sc_inout.hh:193
sc_core::sc_module::wait
void wait()
Definition: sc_module.cc:428
sc_gem5
Definition: sc_clock.cc:42
sc_core::sc_module::halt
void halt()
Definition: sc_module.cc:507
sc_core::at_negedge
void at_negedge(const sc_signal_in_if< bool > &s)
Definition: sc_module.cc:802
sc_core::sc_module::_gem5_module
sc_gem5::Module * _gem5_module
Definition: sc_module.hh:254
sc_core::sc_module::start_of_simulation
virtual void start_of_simulation()
Definition: sc_module.hh:250
sc_core::sc_module::sensitive
sc_sensitive sensitive
Definition: sc_module.hh:206
sc_core::halt
void halt()
Definition: sc_module.cc:777
sc_time.hh
sc_core::next_trigger
void next_trigger()
Definition: sc_module.cc:538
sc_core::sc_module::end_module
void end_module()
Definition: sc_module.cc:280
sc_core::sc_end_of_simulation_invoked
bool sc_end_of_simulation_invoked()
Definition: sc_module.cc:852
sc_gem5::Module
Definition: module.hh:71
sc_core::sc_module::get_child_events
virtual const std::vector< sc_event * > & get_child_events() const
Definition: sc_module.cc:251
sc_core::sc_module::at_posedge
void at_posedge(const sc_signal_in_if< bool > &)
Definition: sc_module.cc:513
sc_core::sc_module::operator,
sc_module & operator,(sc_interface &)
Definition: sc_module.cc:231

Generated on Wed Sep 30 2020 14:02:15 for gem5 by doxygen 1.8.17