gem5 v24.0.0.0
Loading...
Searching...
No Matches
VirtualChannel.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Inria
3 * Copyright (c) 2016 Georgia Institute of Technology
4 * Copyright (c) 2008 Princeton University
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are
9 * met: redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer;
11 * redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution;
14 * neither the name of the copyright holders nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31
32#ifndef __MEM_RUBY_NETWORK_GARNET_0_VIRTUALCHANNEL_HH__
33#define __MEM_RUBY_NETWORK_GARNET_0_VIRTUALCHANNEL_HH__
34
35#include <utility>
36
39
40namespace gem5
41{
42
43namespace ruby
44{
45
46namespace garnet
47{
48
50{
51 public:
53 ~VirtualChannel() = default;
54
55 bool need_stage(flit_stage stage, Tick time);
56 void set_idle(Tick curTime);
57 void set_active(Tick curTime);
58 void set_outvc(int outvc) { m_output_vc = outvc; }
59 inline int get_outvc() { return m_output_vc; }
60 void set_outport(int outport) { m_output_port = outport; };
61 inline int get_outport() { return m_output_port; }
62
64 inline void set_enqueue_time(Tick time) { m_enqueue_time = time; }
65 inline VC_state_type get_state() { return m_vc_state.first; }
66
67 inline bool
68 isReady(Tick curTime)
69 {
70 return inputBuffer.isReady(curTime);
71 }
72
73 inline void
75 {
76 inputBuffer.insert(t_flit);
77 }
78
79 inline void
80 set_state(VC_state_type m_state, Tick curTime)
81 {
82 m_vc_state.first = m_state;
83 m_vc_state.second = curTime;
84 }
85
86 inline flit*
88 {
89 return inputBuffer.peekTopFlit();
90 }
91
92 inline flit*
94 {
95 return inputBuffer.getTopFlit();
96 }
97
99 uint32_t functionalWrite(Packet *pkt);
100
101 private:
107};
108
109} // namespace garnet
110} // namespace ruby
111} // namespace gem5
112
113#endif // __MEM_RUBY_NETWORK_GARNET_0_VIRTUALCHANNEL_HH__
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition packet.hh:295
void set_state(VC_state_type m_state, Tick curTime)
bool functionalRead(Packet *pkt, WriteMask &mask)
bool need_stage(flit_stage stage, Tick time)
std::pair< VC_state_type, Tick > m_vc_state
uint32_t functionalWrite(Packet *pkt)
bool isReady(Tick curTime)
Definition flitBuffer.cc:60
STL pair class.
Definition stl.hh:58
Bitfield< 3, 0 > mask
Definition pcstate.hh:63
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
uint64_t Tick
Tick count type.
Definition types.hh:58

Generated on Tue Jun 18 2024 16:24:05 for gem5 by doxygen 1.11.0