libraries/wiredbas/node/ArcnetBus.h

Go to the documentation of this file.
00001 //============================================================================
00002 // Author      : Alessandro Pinto <apinto@eecs.berkeley.edu>
00003 //               University of California, Berkeley
00004 //               545 Cory Hall, Berkeley, CA 94720
00005 // Copyright   : See COPYING file that comes with this distribution
00006 //============================================================================
00007 
00008 #ifndef ARCNETBUS_H_
00009 #define ARCNETBUS_H_
00010 
00011 #include <string>
00012 #include "libraries/wiredbas/common/Bus.h"
00013 #include "rules/wiredbas/link/WiringRule.h"
00014 #include "rules/wiredbas/node/ArcnetBusRule.h"
00015 #include "models/wiredbas/common/WireCost.h"
00016 #include "models/wiredbas/common/WireDelayModel.h"
00017 #include "models/wiredbas/node/ArcnetBusCost.h"
00018 #include "models/wiredbas/node/ArcnetBusDelay.h"
00019 
00020 namespace cosi {
00021 
00022 namespace library {
00023 
00024 namespace wiredbas {
00025 
00026 class ArcnetBus : public Bus {
00027         //Wiring model
00028         cosi::rules::wiredbas::WiringRule* mWiringRule;
00029         //Bus rules
00030         cosi::rules::wiredbas::ArcnetBusRule* mArcnetBusRule;
00031         //Cost model
00032         cosi::models::wiredbas::WireCost* mWireCost;
00033         cosi::models::wiredbas::ArcnetBusCost* mBusCost;
00034         //Delay model
00035         cosi::models::wiredbas::WireDelay* mWireDelay;
00036         cosi::models::wiredbas::ArcnetBusDelay* mBusDelay;
00037 
00038         double mBusSpeed;
00039 public:
00040 
00041         ArcnetBus(double pBusSpeed, cosi::rules::wiredbas::WiringRule* pWiringRule,
00042                         cosi::models::wiredbas::WireCost* pWireCost,
00043                         cosi::models::wiredbas::WireDelay* pWireDelay);
00044 
00045         virtual ~ArcnetBus();
00046 
00047         void SetWiringRule(cosi::rules::wiredbas::WiringRule* pWiringRule);
00048         void SetWireCostModel(cosi::models::wiredbas::WireCost* pWireCost);
00049         void SetWireDelayModel(cosi::models::wiredbas::WireDelay* pWireDealy);
00050 
00051         double BusAccessLatencyValue(
00052                         cosi::commstruct::wiredbas::Implementation* pBus);
00053         double BusAccessLatencyValue(int pNodeId,
00054                         cosi::commstruct::wiredbas::Implementation* pBus);
00055         bool Satisfies(cosi::commstruct::wiredbas::Implementation* pBus);
00056 
00057         double
00058                         GetBusBandwidthValue(
00059                                         cosi::commstruct::wiredbas::Implementation* pBus);
00060 
00061         double GetCost(cosi::commstruct::wiredbas::Implementation* pBus);
00062 
00063         static std::string ComponentName;
00064         static std::string ComponentType;
00065 };
00066 
00067 }
00068 }
00069 }
00070 #endif /*ARCNET_H_*/

Generated on Sun Sep 7 18:37:42 2008 for COSI by  doxygen 1.5.4
Contact 
©2002-2018 U.C. Regents