gem5
[DEVELOP-FOR-23.0]
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
o
p
q
r
s
t
v
x
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Related Functions
:
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
s
t
v
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
Typedefs
a
b
c
d
g
h
i
l
m
r
s
t
u
w
Enumerations
b
h
i
o
p
Enumerator
h
i
o
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
systemc
ext
channel
sc_inout_rv.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_CHANNEL_SC_INOUT_RV_HH__
29
#define __SYSTEMC_EXT_CHANNEL_SC_INOUT_RV_HH__
30
31
#include <sstream>
32
33
#include "../core/sc_port.hh"
34
#include "
messages.hh
"
35
#include "
sc_signal_in_if.hh
"
36
#include "
sc_signal_inout_if.hh
"
37
#include "
sc_signal_rv.hh
"
38
39
namespace
sc_dt
40
{
41
42
template
<
int
W>
43
class
sc_lv;
44
45
}
// namespace sc_dt
46
47
namespace
sc_core
48
{
49
50
template
<
int
W>
51
class
sc_inout_rv
:
public
sc_inout
<sc_dt::sc_lv<W>>
52
{
53
public
:
54
sc_inout_rv
() :
sc_inout
<
sc_dt
::sc_lv<W>>() {}
55
explicit
sc_inout_rv
(
const
char
*
name
) :
sc_inout
<
sc_dt
::sc_lv<W>>(
name
) {}
56
virtual
~sc_inout_rv
() {}
57
58
sc_inout_rv<W>
&
59
operator =
(
const
sc_dt::sc_lv<W>
&
l
)
60
{
61
(*this)->write(
l
);
62
return
*
this
;
63
}
64
sc_inout_rv<W>
&
65
operator =
(
const
sc_signal_in_if
<
sc_dt::sc_lv<W>
> &
i
)
66
{
67
(*this)->write(
i
.read());
68
return
*
this
;
69
}
70
sc_inout_rv<W>
&
71
operator =
(
const
sc_port
<
sc_signal_in_if
<
sc_dt::sc_lv<W>
>, 1> &
p
)
72
{
73
(*this)->write(
p
->read());
74
return
*
this
;
75
}
76
sc_inout_rv<W>
&
77
operator =
(
const
sc_port
<
sc_signal_inout_if
<
sc_dt::sc_lv<W>
>, 1> &
p
)
78
{
79
(*this)->write(
p
->read());
80
return
*
this
;
81
}
82
sc_inout_rv<W>
&
83
operator =
(
const
sc_inout_rv<W>
&
p
)
84
{
85
(*this)->write(
p
->read());
86
return
*
this
;
87
}
88
89
virtual
void
90
end_of_elaboration
()
91
{
92
sc_inout<sc_dt::sc_lv<W>
>
::end_of_elaboration
();
93
if
(!
dynamic_cast<
sc_signal_rv<W>
*
>
(this->
get_interface
())) {
94
std::ostringstream
ss
;
95
ss
<<
"port '"
<< this->
name
() <<
"' ("
<< this->
kind
() <<
")"
;
96
SC_REPORT_ERROR
(
SC_ID_RESOLVED_PORT_NOT_BOUND_
, ss.str().c_str());
97
}
98
}
99
100
virtual
const
char
*
kind
()
const
{
return
"sc_inout_rv"
; }
101
};
102
103
}
// namespace sc_core
104
105
#endif //__SYSTEMC_EXT_CHANNEL_SC_INOUT_RV_HH__
sc_core::sc_inout_rv::sc_inout_rv
sc_inout_rv()
Definition:
sc_inout_rv.hh:54
sc_core::sc_signal_inout_if
Definition:
sc_signal_inout_if.hh:68
sc_dt
Definition:
sc_bit.cc:67
sc_core::sc_port
Definition:
sc_port.hh:249
sc_core
Definition:
messages.cc:31
messages.hh
gem5::ArmISA::i
Bitfield< 7 > i
Definition:
misc_types.hh:67
sc_dt::sc_lv
Definition:
sc_in_rv.hh:41
sc_core::SC_ID_RESOLVED_PORT_NOT_BOUND_
const char SC_ID_RESOLVED_PORT_NOT_BOUND_[]
Definition:
messages.cc:55
sc_core::sc_inout_rv::sc_inout_rv
sc_inout_rv(const char *name)
Definition:
sc_inout_rv.hh:55
sc_signal_inout_if.hh
SC_REPORT_ERROR
#define SC_REPORT_ERROR(msg_type, msg)
Definition:
sc_report_handler.hh:127
sc_core::sc_inout_rv::end_of_elaboration
virtual void end_of_elaboration()
Definition:
sc_inout_rv.hh:90
gem5::VegaISA::p
Bitfield< 54 > p
Definition:
pagetable.hh:70
sc_signal_in_if.hh
sc_core::sc_signal_in_if
Definition:
sc_signal_in_if.hh:53
ss
std::stringstream ss
Definition:
trace.test.cc:45
sc_core::sc_inout_rv::~sc_inout_rv
virtual ~sc_inout_rv()
Definition:
sc_inout_rv.hh:56
sc_core::sc_inout
Definition:
sc_inout.hh:54
sc_core::sc_inout_rv::kind
virtual const char * kind() const
Definition:
sc_inout_rv.hh:100
sc_core::sc_signal_rv
Definition:
sc_signal_rv.hh:58
sc_core::sc_inout_rv::operator=
sc_inout_rv< W > & operator=(const sc_dt::sc_lv< W > &l)
Definition:
sc_inout_rv.hh:59
sc_core::sc_object::name
const char * name() const
Definition:
sc_object.cc:44
sc_signal_rv.hh
gem5::VegaISA::l
Bitfield< 55 > l
Definition:
pagetable.hh:54
sc_core::sc_inout_rv
Definition:
sc_inout_rv.hh:51
sc_core::sc_port_b< sc_signal_inout_if< sc_dt::sc_lv< W > > >::get_interface
sc_interface * get_interface()
Definition:
sc_port.hh:166
Generated on Sun Jul 30 2023 01:57:00 for gem5 by
doxygen
1.8.17