sc_module.cc revision 12953:ddfd5e4643a9
111828Sjason@lowepower.com/*
210107Sradhika.jagtap@ARM.com * Copyright 2018 Google, Inc.
310107Sradhika.jagtap@ARM.com *
410107Sradhika.jagtap@ARM.com * Redistribution and use in source and binary forms, with or without
510107Sradhika.jagtap@ARM.com * modification, are permitted provided that the following conditions are
610107Sradhika.jagtap@ARM.com * met: redistributions of source code must retain the above copyright
710107Sradhika.jagtap@ARM.com * notice, this list of conditions and the following disclaimer;
810107Sradhika.jagtap@ARM.com * redistributions in binary form must reproduce the above copyright
910107Sradhika.jagtap@ARM.com * notice, this list of conditions and the following disclaimer in the
1010107Sradhika.jagtap@ARM.com * documentation and/or other materials provided with the distribution;
1110107Sradhika.jagtap@ARM.com * neither the name of the copyright holders nor the names of its
1210107Sradhika.jagtap@ARM.com * contributors may be used to endorse or promote products derived from
1310107Sradhika.jagtap@ARM.com * this software without specific prior written permission.
1410107Sradhika.jagtap@ARM.com *
1510107Sradhika.jagtap@ARM.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1610107Sradhika.jagtap@ARM.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1710107Sradhika.jagtap@ARM.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1810107Sradhika.jagtap@ARM.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1910107Sradhika.jagtap@ARM.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2010107Sradhika.jagtap@ARM.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2110107Sradhika.jagtap@ARM.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2210107Sradhika.jagtap@ARM.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2310107Sradhika.jagtap@ARM.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2410107Sradhika.jagtap@ARM.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2510107Sradhika.jagtap@ARM.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2610107Sradhika.jagtap@ARM.com *
2710107Sradhika.jagtap@ARM.com * Authors: Gabe Black
2810107Sradhika.jagtap@ARM.com */
2910107Sradhika.jagtap@ARM.com
3010107Sradhika.jagtap@ARM.com#include <memory>
3110107Sradhika.jagtap@ARM.com#include <vector>
3210107Sradhika.jagtap@ARM.com
3310107Sradhika.jagtap@ARM.com#include "base/logging.hh"
3410107Sradhika.jagtap@ARM.com#include "systemc/core/module.hh"
3510107Sradhika.jagtap@ARM.com#include "systemc/core/process_types.hh"
3610107Sradhika.jagtap@ARM.com#include "systemc/ext/core/sc_module.hh"
3710107Sradhika.jagtap@ARM.com#include "systemc/ext/core/sc_module_name.hh"
3810107Sradhika.jagtap@ARM.com
3910107Sradhika.jagtap@ARM.comnamespace sc_gem5
4010107Sradhika.jagtap@ARM.com{
4110107Sradhika.jagtap@ARM.com
4210107Sradhika.jagtap@ARM.comProcess *
4310107Sradhika.jagtap@ARM.comnewMethodProcess(const char *name, ProcessFuncWrapper *func)
4410107Sradhika.jagtap@ARM.com{
4510107Sradhika.jagtap@ARM.com    return new Method(name, func);
4610107Sradhika.jagtap@ARM.com}
4710107Sradhika.jagtap@ARM.com
4810107Sradhika.jagtap@ARM.comProcess *
4910107Sradhika.jagtap@ARM.comnewThreadProcess(const char *name, ProcessFuncWrapper *func)
5010107Sradhika.jagtap@ARM.com{
5110107Sradhika.jagtap@ARM.com    return new Thread(name, func);
5210107Sradhika.jagtap@ARM.com}
5310107Sradhika.jagtap@ARM.com
5410107Sradhika.jagtap@ARM.comProcess *
5510107Sradhika.jagtap@ARM.comnewCThreadProcess(const char *name, ProcessFuncWrapper *func)
5610107Sradhika.jagtap@ARM.com{
5710107Sradhika.jagtap@ARM.com    return new CThread(name, func);
5810107Sradhika.jagtap@ARM.com}
5910107Sradhika.jagtap@ARM.com
6010107Sradhika.jagtap@ARM.com} // namespace sc_gem5
6110107Sradhika.jagtap@ARM.com
6210107Sradhika.jagtap@ARM.comnamespace sc_core
6310107Sradhika.jagtap@ARM.com{
6410107Sradhika.jagtap@ARM.com
6510107Sradhika.jagtap@ARM.comsc_bind_proxy::sc_bind_proxy(const sc_interface &_interface) :
6610107Sradhika.jagtap@ARM.com    _interface(&_interface), _port(nullptr)
6710107Sradhika.jagtap@ARM.com{}
6810107Sradhika.jagtap@ARM.com
6910107Sradhika.jagtap@ARM.comsc_bind_proxy::sc_bind_proxy(const sc_port_base &_port) :
7010107Sradhika.jagtap@ARM.com    _interface(nullptr), _port(&_port)
7110107Sradhika.jagtap@ARM.com{}
7210107Sradhika.jagtap@ARM.com
7310107Sradhika.jagtap@ARM.comconst sc_bind_proxy SC_BIND_PROXY_NUL(*(const sc_port_base *)nullptr);
7410269Sradhika.jagtap@ARM.com
7510107Sradhika.jagtap@ARM.comsc_module::~sc_module() {}
7610107Sradhika.jagtap@ARM.com
7710269Sradhika.jagtap@ARM.comconst sc_bind_proxy SC_BIND_PROXY_NIL(*(const sc_port_base *)nullptr);
7810269Sradhika.jagtap@ARM.com
7910269Sradhika.jagtap@ARM.comvoid
8010269Sradhika.jagtap@ARM.comsc_module::operator () (const sc_bind_proxy &p001,
8110269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p002,
8210269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p003,
8310269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p004,
8410269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p005,
8510269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p006,
8610269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p007,
8710269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p008,
8810269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p009,
8910269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p010,
9010269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p011,
9110269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p012,
9210269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p013,
9310269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p014,
9410269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p015,
9510269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p016,
9610269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p017,
9710269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p018,
9810269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p019,
9910269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p020,
10010269Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p021,
10110107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p022,
10210107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p023,
10310107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p024,
10410107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p025,
10510107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p026,
10610107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p027,
10710107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p028,
10810107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p029,
10910107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p030,
11010107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p031,
11110107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p032,
11210107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p033,
11310107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p034,
11410107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p035,
11510107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p036,
11610107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p037,
11710107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p038,
11810107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p039,
11910107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p040,
12010107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p041,
12110107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p042,
12210107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p043,
12310107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p044,
12410107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p045,
12510107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p046,
12612208Sgabeblack@google.com                        const sc_bind_proxy &p047,
12712208Sgabeblack@google.com                        const sc_bind_proxy &p048,
12812208Sgabeblack@google.com                        const sc_bind_proxy &p049,
12912208Sgabeblack@google.com                        const sc_bind_proxy &p050,
13010107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p051,
13110107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p052,
13210107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p053,
13310107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p054,
13410107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p055,
13510107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p056,
13610107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p057,
13710107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p058,
13810107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p059,
13910107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p060,
14010107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p061,
14110107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p062,
14210107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p063,
14310107Sradhika.jagtap@ARM.com                        const sc_bind_proxy &p064)
14410107Sradhika.jagtap@ARM.com{
14510107Sradhika.jagtap@ARM.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
14610107Sradhika.jagtap@ARM.com}
14710107Sradhika.jagtap@ARM.com
14810107Sradhika.jagtap@ARM.comconst std::vector<sc_object *> &
14910107Sradhika.jagtap@ARM.comsc_module::get_child_objects() const
15010107Sradhika.jagtap@ARM.com{
15110107Sradhika.jagtap@ARM.com    return _gem5_module->obj()->get_child_objects();
15210107Sradhika.jagtap@ARM.com}
15310107Sradhika.jagtap@ARM.com
15410107Sradhika.jagtap@ARM.comconst std::vector<sc_event *> &
15510107Sradhika.jagtap@ARM.comsc_module::get_child_events() const
15610107Sradhika.jagtap@ARM.com{
15710107Sradhika.jagtap@ARM.com    return _gem5_module->obj()->get_child_events();
15810107Sradhika.jagtap@ARM.com}
15910107Sradhika.jagtap@ARM.com
16010107Sradhika.jagtap@ARM.comsc_module::sc_module() :
16110107Sradhika.jagtap@ARM.com    sc_object(sc_gem5::newModule()->name()),
16210107Sradhika.jagtap@ARM.com    _gem5_module(sc_gem5::currentModule())
16310107Sradhika.jagtap@ARM.com{}
16410107Sradhika.jagtap@ARM.com
16510107Sradhika.jagtap@ARM.comsc_module::sc_module(const sc_module_name &) : sc_module() {}
16610107Sradhika.jagtap@ARM.comsc_module::sc_module(const char *_name) : sc_module(sc_module_name(_name)) {}
167sc_module::sc_module(const std::string &_name) :
168    sc_module(sc_module_name(_name.c_str()))
169{}
170
171void
172sc_module::reset_signal_is(const sc_in<bool> &, bool)
173{
174    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
175}
176
177void
178sc_module::reset_signal_is(const sc_inout<bool> &, bool)
179{
180    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
181}
182
183void
184sc_module::reset_signal_is(const sc_out<bool> &, bool)
185{
186    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
187}
188
189void
190sc_module::reset_signal_is(const sc_signal_in_if<bool> &, bool)
191{
192    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
193}
194
195
196void
197sc_module::async_reset_signal_is(const sc_in<bool> &, bool)
198{
199    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
200}
201
202void
203sc_module::async_reset_signal_is(const sc_inout<bool> &, bool)
204{
205    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
206}
207
208void
209sc_module::async_reset_signal_is(const sc_out<bool> &, bool)
210{
211    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
212}
213
214void
215sc_module::async_reset_signal_is(const sc_signal_in_if<bool> &, bool)
216{
217    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
218}
219
220
221void
222sc_module::dont_initialize()
223{
224    ::sc_gem5::Process::newest()->dontInitialize();
225}
226
227void
228sc_module::set_stack_size(size_t size)
229{
230    ::sc_gem5::Process::newest()->setStackSize(size);
231}
232
233
234void sc_module::next_trigger() { ::sc_core::next_trigger(); }
235
236void
237sc_module::next_trigger(const sc_event &e)
238{
239    ::sc_core::next_trigger(e);
240}
241
242void
243sc_module::next_trigger(const sc_event_or_list &eol)
244{
245    ::sc_core::next_trigger(eol);
246}
247
248void
249sc_module::next_trigger(const sc_event_and_list &eal)
250{
251    ::sc_core::next_trigger(eal);
252}
253
254void
255sc_module::next_trigger(const sc_time &t)
256{
257    ::sc_core::next_trigger(t);
258}
259
260void
261sc_module::next_trigger(double d, sc_time_unit u)
262{
263    ::sc_core::next_trigger(d, u);
264}
265
266void
267sc_module::next_trigger(const sc_time &t, const sc_event &e)
268{
269    ::sc_core::next_trigger(t, e);
270}
271
272void
273sc_module::next_trigger(double d, sc_time_unit u, const sc_event &e)
274{
275    ::sc_core::next_trigger(d, u, e);
276}
277
278void
279sc_module::next_trigger(const sc_time &t, const sc_event_or_list &eol)
280{
281    ::sc_core::next_trigger(t, eol);
282}
283
284void
285sc_module::next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol)
286{
287    ::sc_core::next_trigger(d, u, eol);
288}
289
290void
291sc_module::next_trigger(const sc_time &t, const sc_event_and_list &eal)
292{
293    ::sc_core::next_trigger(t, eal);
294}
295
296void
297sc_module::next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal)
298{
299    ::sc_core::next_trigger(d, u, eal);
300}
301
302
303bool
304sc_module::timed_out()
305{
306    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
307    return false;
308}
309
310
311void
312sc_module::wait()
313{
314    ::sc_core::wait();
315}
316
317void
318sc_module::wait(int i)
319{
320    ::sc_core::wait(i);
321}
322
323void
324sc_module::wait(const sc_event &e)
325{
326    ::sc_core::wait(e);
327}
328
329void
330sc_module::wait(const sc_event_or_list &eol)
331{
332    ::sc_core::wait(eol);
333}
334
335void
336sc_module::wait(const sc_event_and_list &eal)
337{
338    ::sc_core::wait(eal);
339}
340
341void
342sc_module::wait(const sc_time &t)
343{
344    ::sc_core::wait(t);
345}
346
347void
348sc_module::wait(double d, sc_time_unit u)
349{
350    ::sc_core::wait(d, u);
351}
352
353void
354sc_module::wait(const sc_time &t, const sc_event &e)
355{
356    ::sc_core::wait(t, e);
357}
358
359void
360sc_module::wait(double d, sc_time_unit u, const sc_event &e)
361{
362    ::sc_core::wait(d, u, e);
363}
364
365void
366sc_module::wait(const sc_time &t, const sc_event_or_list &eol)
367{
368    ::sc_core::wait(t, eol);
369}
370
371void
372sc_module::wait(double d, sc_time_unit u, const sc_event_or_list &eol)
373{
374    ::sc_core::wait(d, u, eol);
375}
376
377void
378sc_module::wait(const sc_time &t, const sc_event_and_list &eal)
379{
380    ::sc_core::wait(t, eal);
381}
382
383void
384sc_module::wait(double d, sc_time_unit u, const sc_event_and_list &eal)
385{
386    ::sc_core::wait(d, u, eal);
387}
388
389
390void
391sc_module::halt()
392{
393    ::sc_core::halt();
394}
395
396void
397sc_module::at_posedge(const sc_signal_in_if<bool> &s)
398{
399    ::sc_core::at_posedge(s);
400}
401
402void
403sc_module::at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &s)
404{
405    ::sc_core::at_posedge(s);
406}
407
408void
409sc_module::at_negedge(const sc_signal_in_if<bool> &s)
410{
411    ::sc_core::at_negedge(s);
412}
413
414void
415sc_module::at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &s)
416{
417    ::sc_core::at_negedge(s);
418}
419
420
421void
422next_trigger()
423{
424    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
425}
426
427void
428next_trigger(const sc_event &)
429{
430    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
431}
432
433void
434next_trigger(const sc_event_or_list &)
435{
436    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
437}
438
439void
440next_trigger(const sc_event_and_list &)
441{
442    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
443}
444
445void
446next_trigger(const sc_time &)
447{
448    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
449}
450
451void
452next_trigger(double d, sc_time_unit u)
453{
454    next_trigger(sc_time(d, u));
455}
456
457void
458next_trigger(const sc_time &, const sc_event &)
459{
460    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
461}
462
463void
464next_trigger(double d, sc_time_unit u, const sc_event &e)
465{
466    next_trigger(sc_time(d, u), e);
467}
468
469void
470next_trigger(const sc_time &, const sc_event_or_list &)
471{
472    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
473}
474
475void
476next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol)
477{
478    next_trigger(sc_time(d, u), eol);
479}
480
481void
482next_trigger(const sc_time &, const sc_event_and_list &)
483{
484    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
485}
486
487void
488next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal)
489{
490    next_trigger(sc_time(d, u), eal);
491}
492
493bool
494timed_out()
495{
496    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
497    return false;
498}
499
500
501void
502wait()
503{
504    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
505}
506
507void
508wait(int)
509{
510    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
511}
512
513void
514wait(const sc_event &)
515{
516    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
517}
518
519void
520wait(const sc_event_or_list &)
521{
522    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
523}
524
525void
526wait(const sc_event_and_list &)
527{
528    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
529}
530
531void
532wait(const sc_time &)
533{
534    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
535}
536
537void
538wait(double d, sc_time_unit u)
539{
540    wait(sc_time(d, u));
541}
542
543void
544wait(const sc_time &, const sc_event &)
545{
546    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
547}
548
549void
550wait(double d, sc_time_unit u, const sc_event &e)
551{
552    wait(sc_time(d, u), e);
553}
554
555void
556wait(const sc_time &, const sc_event_or_list &)
557{
558    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
559}
560
561void
562wait(double d, sc_time_unit u, const sc_event_or_list &eol)
563{
564    wait(sc_time(d, u), eol);
565}
566
567void
568wait(const sc_time &, const sc_event_and_list &)
569{
570    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
571}
572
573void
574wait(double d, sc_time_unit u, const sc_event_and_list &eal)
575{
576    wait(sc_time(d, u), eal);
577}
578
579void
580halt()
581{
582    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
583}
584
585void
586at_posedge(const sc_signal_in_if<bool> &)
587{
588    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
589}
590
591void
592at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &)
593{
594    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
595}
596
597void
598at_negedge(const sc_signal_in_if<bool> &)
599{
600    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
601}
602
603void
604at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &)
605{
606    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
607}
608
609const char *
610sc_gen_unique_name(const char *)
611{
612    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
613    return "";
614}
615
616bool
617sc_hierarchical_name_exists(const char *name)
618{
619    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
620    return false;
621}
622
623bool
624sc_start_of_simulation_invoked()
625{
626    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
627    return false;
628}
629
630bool
631sc_end_of_simulation_invoked()
632{
633    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
634    return false;
635}
636
637sc_module *
638sc_module_sc_new(sc_module *mod)
639{
640    static std::vector<std::unique_ptr<sc_module> > modules;
641    modules.emplace_back(mod);
642    return mod;
643}
644
645} // namespace sc_core
646