gem5  v20.1.0.0
sc_main.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_EXT_CORE_SC_MAIN_HH__
29 #define __SYSTEMC_EXT_CORE_SC_MAIN_HH__
30 
31 #include <iostream>
32 
33 #include "../dt/int/sc_nbdefs.hh"
34 #include "sc_time.hh"
35 
36 extern "C" int sc_main(int argc, char *argv[]);
37 
38 namespace sc_core
39 {
40  extern "C" int sc_argc();
41 
42  // The standard version of this function doesn't have these "const"
43  // qualifiers, but the canonical SystemC implementation does.
44  extern "C" const char *const *sc_argv();
45 
47  {
50  };
51 
52  void sc_start();
53  void sc_start(const sc_time &, sc_starvation_policy p=SC_RUN_TO_TIME);
54  static inline void
56  {
57  sc_start(sc_time(d, t), p);
58  }
59 
60  void sc_pause();
61 
63  {
66  };
67 
70 
71  void sc_stop();
72 
73  const sc_time &sc_time_stamp();
75  bool sc_is_running();
78  bool sc_pending_activity();
80 
81  enum sc_status
82  {
87  SC_RUNNING = 0x10,
88  SC_PAUSED = 0x20,
89  SC_STOPPED = 0x40,
91 
92  // Nonstandard
96  SC_STATUS_ANY = 0xdff
97  };
98 
100 
101  std::ostream &operator << (std::ostream &os, sc_status s);
102 } // namespace sc_core
103 
104 #endif //__SYSTEMC_EXT_CORE_SC_MAIN_HH__
sc_core::sc_start
void sc_start()
Definition: sc_main.cc:61
X86ISA::os
Bitfield< 17 > os
Definition: misc.hh:803
sc_core::sc_get_status
sc_status sc_get_status()
Definition: sc_main.cc:173
sc_core::sc_pending_activity_at_current_time
bool sc_pending_activity_at_current_time()
Definition: sc_main.cc:148
sc_core
Definition: messages.cc:31
sc_core::sc_time_unit
sc_time_unit
Definition: sc_time.hh:40
sc_core::sc_argv
const char *const * sc_argv()
Definition: sc_main.cc:55
sc_core::SC_RUN_TO_TIME
@ SC_RUN_TO_TIME
Definition: sc_main.hh:48
sc_core::SC_BEFORE_END_OF_ELABORATION
@ SC_BEFORE_END_OF_ELABORATION
Definition: sc_main.hh:84
sc_core::sc_pending_activity_at_future_time
bool sc_pending_activity_at_future_time()
Definition: sc_main.cc:154
sc_core::SC_ELABORATION
@ SC_ELABORATION
Definition: sc_main.hh:83
sc_core::SC_END_OF_ELABORATION
@ SC_END_OF_ELABORATION
Definition: sc_main.hh:85
sc_core::SC_STOPPED
@ SC_STOPPED
Definition: sc_main.hh:89
sc_core::sc_stop
void sc_stop()
Definition: sc_main.cc:104
sc_core::SC_STOP_IMMEDIATE
@ SC_STOP_IMMEDIATE
Definition: sc_main.hh:65
sc_dt::uint64
uint64_t uint64
Definition: sc_nbdefs.hh:206
ArmISA::d
Bitfield< 9 > d
Definition: miscregs_types.hh:60
sc_core::SC_BEFORE_TIMESTEP
@ SC_BEFORE_TIMESTEP
Definition: sc_main.hh:95
sc_core::sc_time
Definition: sc_time.hh:49
sc_core::operator<<
std::ostream & operator<<(std::ostream &os, sc_status s)
Definition: sc_main.cc:179
ArmISA::mode
Bitfield< 4, 0 > mode
Definition: miscregs_types.hh:70
sc_core::SC_START_OF_SIMULATION
@ SC_START_OF_SIMULATION
Definition: sc_main.hh:86
sc_core::sc_time_to_pending_activity
sc_time sc_time_to_pending_activity()
Definition: sc_main.cc:167
sc_core::sc_argc
int sc_argc()
Definition: sc_main.cc:49
sc_core::sc_set_stop_mode
void sc_set_stop_mode(sc_stop_mode mode)
Definition: sc_main.cc:88
sc_core::SC_END_OF_SIMULATION
@ SC_END_OF_SIMULATION
Definition: sc_main.hh:90
sc_core::SC_STOP_FINISH_DELTA
@ SC_STOP_FINISH_DELTA
Definition: sc_main.hh:64
sc_core::SC_EXIT_ON_STARVATION
@ SC_EXIT_ON_STARVATION
Definition: sc_main.hh:49
sc_core::sc_delta_count
sc_dt::uint64 sc_delta_count()
Definition: sc_main.cc:136
ArmISA::t
Bitfield< 5 > t
Definition: miscregs_types.hh:67
sc_core::sc_pause
void sc_pause()
Definition: sc_main.cc:68
sc_core::sc_status
sc_status
Definition: sc_main.hh:81
sc_core::SC_END_OF_UPDATE
@ SC_END_OF_UPDATE
Definition: sc_main.hh:94
sc_core::sc_stop_mode
sc_stop_mode
Definition: sc_main.hh:62
sc_core::SC_STATUS_ANY
@ SC_STATUS_ANY
Definition: sc_main.hh:96
sc_main
int sc_main(int argc, char *argv[])
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
ArmISA::s
Bitfield< 4 > s
Definition: miscregs_types.hh:556
sc_core::sc_starvation_policy
sc_starvation_policy
Definition: sc_main.hh:46
sc_core::SC_RUNNING
@ SC_RUNNING
Definition: sc_main.hh:87
sc_time.hh
sc_core::SC_PAUSED
@ SC_PAUSED
Definition: sc_main.hh:88
sc_core::sc_time_stamp
const sc_time & sc_time_stamp()
Definition: sc_main.cc:128
sc_core::SC_END_OF_INITIALIZATION
@ SC_END_OF_INITIALIZATION
Definition: sc_main.hh:93
sc_core::sc_get_stop_mode
sc_stop_mode sc_get_stop_mode()
Definition: sc_main.cc:98
sc_core::sc_is_running
bool sc_is_running()
Definition: sc_main.cc:142
sc_core::sc_pending_activity
bool sc_pending_activity()
Definition: sc_main.cc:160

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