gem5 v24.0.0.0
Loading...
Searching...
No Matches
Credit.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 Princeton University
3 * Copyright (c) 2016 Georgia Institute of Technology
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer;
10 * redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution;
13 * neither the name of the copyright holders nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
31
32#include "base/trace.hh"
33#include "debug/RubyNetwork.hh"
34
35namespace gem5
36{
37
38namespace ruby
39{
40
41namespace garnet
42{
43
44// Credit Signal for buffers inside VC
45// Carries m_vc (inherits from flit.hh)
46// and m_is_free_signal (whether VC is free or not)
47
48Credit::Credit(int vc, bool is_free_signal, Tick curTime)
49 : flit(0, 0, vc, 0, RouteInfo(), 0, nullptr, 0, 0, curTime)
50{
53}
54
55flit *
56Credit::serialize(int ser_id, int parts, uint32_t bWidth)
57{
58 DPRINTF(RubyNetwork, "Serializing a credit\n");
59 bool new_free = false;
60 if ((ser_id+1 == parts) && m_is_free_signal) {
61 new_free = true;
62 }
63 Credit *new_credit_flit = new Credit(m_vc, new_free, m_time);
64 return new_credit_flit;
65}
66
67flit *
68Credit::deserialize(int des_id, int num_flits, uint32_t bWidth)
69{
70 DPRINTF(RubyNetwork, "DeSerializing a credit vc:%d free:%d\n",
72 if (m_is_free_signal) {
73 // We are not going to get anymore credits for this vc
74 // So send a credit in any case
75 return new Credit(m_vc, true, m_time);
76 }
77
78 return new Credit(m_vc, false, m_time);
79}
80
81void
82Credit::print(std::ostream& out) const
83{
84 out << "[Credit:: ";
85 out << "Type=" << m_type << " ";
86 out << "VC=" << m_vc << " ";
87 out << "FreeVC=" << m_is_free_signal << " ";
88 out << "Set Time=" << m_time << " ";
89 out << "]";
90}
91
92} // namespace garnet
93} // namespace ruby
94} // namespace gem5
#define DPRINTF(x,...)
Definition trace.hh:210
void print(std::ostream &out) const
Definition Credit.cc:82
flit * serialize(int ser_id, int parts, uint32_t bWidth)
Definition Credit.cc:56
flit * deserialize(int des_id, int num_flits, uint32_t bWidth)
Definition Credit.cc:68
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