gem5  v22.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__
Bitfield< 4, 0 > mode
Definition: misc_types.hh:74
Bitfield< 9 > d
Definition: misc_types.hh:64
Bitfield< 1 > s
Definition: pagetable.hh:64
Bitfield< 51 > t
Definition: pagetable.hh:56
Bitfield< 54 > p
Definition: pagetable.hh:70
Bitfield< 17 > os
Definition: misc.hh:810
bool sc_pending_activity()
Definition: sc_main.cc:159
bool sc_pending_activity_at_future_time()
Definition: sc_main.cc:153
void sc_stop()
Definition: sc_main.cc:103
sc_dt::uint64 sc_delta_count()
Definition: sc_main.cc:135
sc_time sc_time_to_pending_activity()
Definition: sc_main.cc:166
int sc_argc()
Definition: sc_main.cc:48
bool sc_pending_activity_at_current_time()
Definition: sc_main.cc:147
sc_status sc_get_status()
Definition: sc_main.cc:172
sc_status
Definition: sc_main.hh:82
@ SC_BEFORE_TIMESTEP
Definition: sc_main.hh:95
@ SC_END_OF_ELABORATION
Definition: sc_main.hh:85
@ SC_END_OF_SIMULATION
Definition: sc_main.hh:90
@ SC_STATUS_ANY
Definition: sc_main.hh:96
@ SC_END_OF_UPDATE
Definition: sc_main.hh:94
@ SC_ELABORATION
Definition: sc_main.hh:83
@ SC_STOPPED
Definition: sc_main.hh:89
@ SC_RUNNING
Definition: sc_main.hh:87
@ SC_BEFORE_END_OF_ELABORATION
Definition: sc_main.hh:84
@ SC_PAUSED
Definition: sc_main.hh:88
@ SC_END_OF_INITIALIZATION
Definition: sc_main.hh:93
@ SC_START_OF_SIMULATION
Definition: sc_main.hh:86
bool sc_is_running()
Definition: sc_main.cc:141
void sc_start()
Definition: sc_main.cc:60
sc_stop_mode
Definition: sc_main.hh:63
@ SC_STOP_FINISH_DELTA
Definition: sc_main.hh:64
@ SC_STOP_IMMEDIATE
Definition: sc_main.hh:65
sc_time_unit
Definition: sc_time.hh:40
std::ostream & operator<<(std::ostream &os, sc_status s)
Definition: sc_main.cc:178
const char *const * sc_argv()
Definition: sc_main.cc:54
void sc_pause()
Definition: sc_main.cc:67
sc_starvation_policy
Definition: sc_main.hh:47
@ SC_RUN_TO_TIME
Definition: sc_main.hh:48
@ SC_EXIT_ON_STARVATION
Definition: sc_main.hh:49
void sc_set_stop_mode(sc_stop_mode mode)
Definition: sc_main.cc:87
const sc_time & sc_time_stamp()
Definition: sc_main.cc:127
sc_stop_mode sc_get_stop_mode()
Definition: sc_main.cc:97
uint64_t uint64
Definition: sc_nbdefs.hh:172
int sc_main(int argc, char *argv[])

Generated on Wed Dec 21 2022 10:22:41 for gem5 by doxygen 1.9.1