GarnetLink.hh revision 11666:10d59d546ea2
19518SAndreas.Sandberg@ARM.com/*
29518SAndreas.Sandberg@ARM.com * Copyright (c) 2008 Princeton University
39518SAndreas.Sandberg@ARM.com * Copyright (c) 2016 Georgia Institute of Technology
49518SAndreas.Sandberg@ARM.com * All rights reserved.
59518SAndreas.Sandberg@ARM.com *
69518SAndreas.Sandberg@ARM.com * Redistribution and use in source and binary forms, with or without
79518SAndreas.Sandberg@ARM.com * modification, are permitted provided that the following conditions are
89518SAndreas.Sandberg@ARM.com * met: redistributions of source code must retain the above copyright
99518SAndreas.Sandberg@ARM.com * notice, this list of conditions and the following disclaimer;
109518SAndreas.Sandberg@ARM.com * redistributions in binary form must reproduce the above copyright
119518SAndreas.Sandberg@ARM.com * notice, this list of conditions and the following disclaimer in the
129518SAndreas.Sandberg@ARM.com * documentation and/or other materials provided with the distribution;
135347Ssaidi@eecs.umich.edu * neither the name of the copyright holders nor the names of its
147534Ssteve.reinhardt@amd.com * contributors may be used to endorse or promote products derived from
153395Shsul@eecs.umich.edu * this software without specific prior written permission.
163395Shsul@eecs.umich.edu *
173395Shsul@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
183395Shsul@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
193395Shsul@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
203395Shsul@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
213395Shsul@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
223395Shsul@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
233395Shsul@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
243395Shsul@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
253395Shsul@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
263395Shsul@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
273395Shsul@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
283395Shsul@eecs.umich.edu *
293395Shsul@eecs.umich.edu * Authors: Niket Agarwal
303395Shsul@eecs.umich.edu *          Tushar Krishna
313395Shsul@eecs.umich.edu */
323395Shsul@eecs.umich.edu
333395Shsul@eecs.umich.edu
343395Shsul@eecs.umich.edu#ifndef __MEM_RUBY_NETWORK_GARNET_LINK_HH__
353395Shsul@eecs.umich.edu#define __MEM_RUBY_NETWORK_GARNET_LINK_HH__
363395Shsul@eecs.umich.edu
373395Shsul@eecs.umich.edu#include <iostream>
383395Shsul@eecs.umich.edu#include <string>
393395Shsul@eecs.umich.edu#include <vector>
403395Shsul@eecs.umich.edu
413395Shsul@eecs.umich.edu#include "mem/ruby/network/BasicLink.hh"
429457Svilanova@ac.upc.edu#include "mem/ruby/network/garnet2.0/CreditLink.hh"
433395Shsul@eecs.umich.edu#include "mem/ruby/network/garnet2.0/NetworkLink.hh"
443509Shsul@eecs.umich.edu#include "params/GarnetExtLink.hh"
456654Snate@binkert.org#include "params/GarnetIntLink.hh"
469520SAndreas.Sandberg@ARM.com
479520SAndreas.Sandberg@ARM.comclass GarnetIntLink : public BasicLink
483395Shsul@eecs.umich.edu{
496654Snate@binkert.org  public:
503395Shsul@eecs.umich.edu    typedef GarnetIntLinkParams Params;
516654Snate@binkert.org    GarnetIntLink(const Params *p);
526654Snate@binkert.org
536654Snate@binkert.org    void init();
543395Shsul@eecs.umich.edu
559139Snilay@cs.wisc.edu    void print(std::ostream& out) const;
569520SAndreas.Sandberg@ARM.com
579520SAndreas.Sandberg@ARM.com    friend class GarnetNetwork;
589520SAndreas.Sandberg@ARM.com
599139Snilay@cs.wisc.edu  protected:
603481Shsul@eecs.umich.edu    NetworkLink* m_network_link;
619139Snilay@cs.wisc.edu    CreditLink* m_credit_link;
623481Shsul@eecs.umich.edu};
639139Snilay@cs.wisc.edu
649139Snilay@cs.wisc.eduinline std::ostream&
659139Snilay@cs.wisc.eduoperator<<(std::ostream& out, const GarnetIntLink& obj)
669139Snilay@cs.wisc.edu{
679139Snilay@cs.wisc.edu    obj.print(out);
689139Snilay@cs.wisc.edu    out << std::flush;
699139Snilay@cs.wisc.edu    return out;
709139Snilay@cs.wisc.edu}
713481Shsul@eecs.umich.edu
729518SAndreas.Sandberg@ARM.comclass GarnetExtLink : public BasicLink
739518SAndreas.Sandberg@ARM.com{
749518SAndreas.Sandberg@ARM.com  public:
753481Shsul@eecs.umich.edu    typedef GarnetExtLinkParams Params;
769139Snilay@cs.wisc.edu    GarnetExtLink(const Params *p);
779139Snilay@cs.wisc.edu
783481Shsul@eecs.umich.edu    void init();
799139Snilay@cs.wisc.edu
809139Snilay@cs.wisc.edu    void print(std::ostream& out) const;
819139Snilay@cs.wisc.edu
829139Snilay@cs.wisc.edu    friend class GarnetNetwork;
839139Snilay@cs.wisc.edu
843481Shsul@eecs.umich.edu  protected:
853481Shsul@eecs.umich.edu    NetworkLink* m_network_links[2];
863481Shsul@eecs.umich.edu    CreditLink* m_credit_links[2];
878919Snilay@cs.wisc.edu};
888919Snilay@cs.wisc.edu
898919Snilay@cs.wisc.eduinline std::ostream&
908919Snilay@cs.wisc.eduoperator<<(std::ostream& out, const GarnetExtLink& obj)
918919Snilay@cs.wisc.edu{
928919Snilay@cs.wisc.edu    obj.print(out);
938919Snilay@cs.wisc.edu    out << std::flush;
948919Snilay@cs.wisc.edu    return out;
958919Snilay@cs.wisc.edu}
968919Snilay@cs.wisc.edu
978919Snilay@cs.wisc.edu#endif // __MEM_RUBY_NETWORK_GARNET_LINK_HH__
988919Snilay@cs.wisc.edu