-
Notifications
You must be signed in to change notification settings - Fork 6
/
PyScModule.h
51 lines (43 loc) · 1.63 KB
/
PyScModule.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
* Copyright (c) 2019 -2021 MINRES Technolgies GmbH
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef COMPONENTS_PYSCMODULE_H_
#define COMPONENTS_PYSCMODULE_H_
#include <systemc>
#include <unordered_map>
#include <tuple>
#define PY_SSIZE_T_CLEAN
#include <Python.h>
typedef struct _object PyObject;
namespace scc {
class PyScModule: public sc_core::sc_module {
public:
PyScModule(PyObject* self, const sc_core::sc_module_name& nm);
virtual ~PyScModule();
void ScThread(std::string fname);
void ScWait();
void ScWait( const sc_core::sc_event& e );
void ScWait( const sc_core::sc_event_or_list& el );
void ScWait( const sc_core::sc_event_and_list& el );
void ScWait( const sc_core::sc_time& t );
void ScWait( double v, sc_core::sc_time_unit tu );
void ScWait( const sc_core::sc_time& t, const sc_core::sc_event& e );
void ScWait( double v, sc_core::sc_time_unit tu, const sc_core::sc_event& e );
void ScWait( const sc_core::sc_time& t, const sc_core::sc_event_or_list& el );
void ScWait( double v, sc_core::sc_time_unit tu, const sc_core::sc_event_or_list& el );
void ScWait( const sc_core::sc_time& t, const sc_core::sc_event_and_list& el );
void ScWait( double v, sc_core::sc_time_unit tu, const sc_core::sc_event_and_list& el );
protected:
void before_end_of_elaboration() override;
void end_of_elaboration() override;
void start_of_simulation() override;
void end_of_simulation() override;
private:
void invoke_callback(std::string const&);
PyObject* self{nullptr};
PyGILState_STATE gstate;
};
}
#endif /* COMPONENTS_PYSCMODULE_H_ */