gem5
v20.1.0.0
mem
ruby
network
garnet
OutVcState.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
30
31
#include "
mem/ruby/network/garnet/OutVcState.hh
"
32
33
#include "
mem/ruby/system/RubySystem.hh
"
34
35
OutVcState::OutVcState
(
int
id
,
GarnetNetwork
*network_ptr,
36
uint32_t consumerVcs)
37
: m_time(0)
38
{
39
m_id
=
id
;
40
m_vc_state
=
IDLE_
;
41
/*
42
* We find the virtual network using the number of
43
* vcs per vnet. This assumes that the same vcs per
44
* vnet is used throughout the given object.
45
*/
46
int
vnet = floor(
id
/consumerVcs);
47
48
if
(network_ptr->
get_vnet_type
(vnet) ==
DATA_VNET_
)
49
m_max_credit_count
= network_ptr->
getBuffersPerDataVC
();
50
else
51
m_max_credit_count
= network_ptr->
getBuffersPerCtrlVC
();
52
53
m_credit_count
=
m_max_credit_count
;
54
assert(
m_credit_count
>= 1);
55
}
56
57
void
58
OutVcState::increment_credit
()
59
{
60
m_credit_count
++;
61
assert(
m_credit_count
<=
m_max_credit_count
);
62
}
63
64
void
65
OutVcState::decrement_credit
()
66
{
67
m_credit_count
--;
68
assert(
m_credit_count
>= 0);
69
}
OutVcState::OutVcState
OutVcState(int id, GarnetNetwork *network_ptr, uint32_t consumerVcs)
Definition:
OutVcState.cc:35
DATA_VNET_
@ DATA_VNET_
Definition:
CommonTypes.hh:41
OutVcState::increment_credit
void increment_credit()
Definition:
OutVcState.cc:58
OutVcState::m_id
int m_id
Definition:
OutVcState.hh:60
OutVcState::m_credit_count
int m_credit_count
Definition:
OutVcState.hh:63
GarnetNetwork::getBuffersPerCtrlVC
uint32_t getBuffersPerCtrlVC()
Definition:
GarnetNetwork.hh:70
OutVcState::m_max_credit_count
int m_max_credit_count
Definition:
OutVcState.hh:64
IDLE_
@ IDLE_
Definition:
CommonTypes.hh:40
OutVcState::m_vc_state
VC_state_type m_vc_state
Definition:
OutVcState.hh:62
OutVcState::decrement_credit
void decrement_credit()
Definition:
OutVcState.cc:65
RubySystem.hh
OutVcState.hh
GarnetNetwork::getBuffersPerDataVC
uint32_t getBuffersPerDataVC()
Definition:
GarnetNetwork.hh:69
GarnetNetwork
Definition:
GarnetNetwork.hh:50
GarnetNetwork::get_vnet_type
VNET_type get_vnet_type(int vnet)
Definition:
GarnetNetwork.hh:80
ArmISA::id
Bitfield< 33 > id
Definition:
miscregs_types.hh:247
Generated on Wed Sep 30 2020 14:02:13 for gem5 by
doxygen
1.8.17