GarnetNetwork.py revision 11666
111666Stushar@ece.gatech.edu# Copyright (c) 2008 Princeton University 211666Stushar@ece.gatech.edu# Copyright (c) 2009 Advanced Micro Devices, Inc. 311666Stushar@ece.gatech.edu# All rights reserved. 411666Stushar@ece.gatech.edu# 511666Stushar@ece.gatech.edu# Redistribution and use in source and binary forms, with or without 611666Stushar@ece.gatech.edu# modification, are permitted provided that the following conditions are 711666Stushar@ece.gatech.edu# met: redistributions of source code must retain the above copyright 811666Stushar@ece.gatech.edu# notice, this list of conditions and the following disclaimer; 911666Stushar@ece.gatech.edu# redistributions in binary form must reproduce the above copyright 1011666Stushar@ece.gatech.edu# notice, this list of conditions and the following disclaimer in the 1111666Stushar@ece.gatech.edu# documentation and/or other materials provided with the distribution; 1211666Stushar@ece.gatech.edu# neither the name of the copyright holders nor the names of its 1311666Stushar@ece.gatech.edu# contributors may be used to endorse or promote products derived from 1411666Stushar@ece.gatech.edu# this software without specific prior written permission. 1511666Stushar@ece.gatech.edu# 1611666Stushar@ece.gatech.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1711666Stushar@ece.gatech.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1811666Stushar@ece.gatech.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1911666Stushar@ece.gatech.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2011666Stushar@ece.gatech.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2111666Stushar@ece.gatech.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2211666Stushar@ece.gatech.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2311666Stushar@ece.gatech.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2411666Stushar@ece.gatech.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2511666Stushar@ece.gatech.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2611666Stushar@ece.gatech.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2711666Stushar@ece.gatech.edu# 2811666Stushar@ece.gatech.edu# Author: Tushar Krishna 2911666Stushar@ece.gatech.edu# 3011666Stushar@ece.gatech.edu 3111666Stushar@ece.gatech.edufrom m5.params import * 3211666Stushar@ece.gatech.edufrom m5.proxy import * 3311666Stushar@ece.gatech.edufrom Network import RubyNetwork 3411666Stushar@ece.gatech.edufrom BasicRouter import BasicRouter 3511666Stushar@ece.gatech.edufrom ClockedObject import ClockedObject 3611666Stushar@ece.gatech.edu 3711666Stushar@ece.gatech.educlass GarnetNetwork(RubyNetwork): 3811666Stushar@ece.gatech.edu type = 'GarnetNetwork' 3911666Stushar@ece.gatech.edu cxx_header = "mem/ruby/network/garnet2.0/GarnetNetwork.hh" 4011666Stushar@ece.gatech.edu num_rows = Param.Int(0, "number of rows if 2D (mesh/torus/..) topology"); 4111666Stushar@ece.gatech.edu ni_flit_size = Param.UInt32(16, "network interface flit size in bytes") 4211666Stushar@ece.gatech.edu vcs_per_vnet = Param.UInt32(4, "virtual channels per virtual network"); 4311666Stushar@ece.gatech.edu buffers_per_data_vc = Param.UInt32(4, "buffers per data virtual channel"); 4411666Stushar@ece.gatech.edu buffers_per_ctrl_vc = Param.UInt32(1, "buffers per ctrl virtual channel"); 4511666Stushar@ece.gatech.edu routing_algorithm = Param.Int(0, 4611666Stushar@ece.gatech.edu "0: Weight-based Table, 1: XY, 2: Custom"); 4711666Stushar@ece.gatech.edu enable_fault_model = Param.Bool(False, "enable network fault model"); 4811666Stushar@ece.gatech.edu fault_model = Param.FaultModel(NULL, "network fault model"); 4911666Stushar@ece.gatech.edu 5011666Stushar@ece.gatech.educlass GarnetNetworkInterface(ClockedObject): 5111666Stushar@ece.gatech.edu type = 'GarnetNetworkInterface' 5211666Stushar@ece.gatech.edu cxx_class = 'NetworkInterface' 5311666Stushar@ece.gatech.edu cxx_header = "mem/ruby/network/garnet2.0/NetworkInterface.hh" 5411666Stushar@ece.gatech.edu 5511666Stushar@ece.gatech.edu id = Param.UInt32("ID in relation to other network interfaces") 5611666Stushar@ece.gatech.edu vcs_per_vnet = Param.UInt32(Parent.vcs_per_vnet, 5711666Stushar@ece.gatech.edu "virtual channels per virtual network") 5811666Stushar@ece.gatech.edu virt_nets = Param.UInt32(Parent.number_of_virtual_networks, 5911666Stushar@ece.gatech.edu "number of virtual networks") 6011666Stushar@ece.gatech.edu 6111666Stushar@ece.gatech.educlass GarnetRouter(BasicRouter): 6211666Stushar@ece.gatech.edu type = 'GarnetRouter' 6311666Stushar@ece.gatech.edu cxx_class = 'Router' 6411666Stushar@ece.gatech.edu cxx_header = "mem/ruby/network/garnet2.0/Router.hh" 6511666Stushar@ece.gatech.edu vcs_per_vnet = Param.UInt32(Parent.vcs_per_vnet, 6611666Stushar@ece.gatech.edu "virtual channels per virtual network") 6711666Stushar@ece.gatech.edu virt_nets = Param.UInt32(Parent.number_of_virtual_networks, 6811666Stushar@ece.gatech.edu "number of virtual networks") 69