00001
00002
00003
00004
00005
00006
00007
00008 #ifndef POWERMODEL_H_
00009 #define POWERMODEL_H_
00010
00011 #include <map>
00012 #include <set>
00013 #include "quantities/WiringPath.h"
00014 #include "quantities/onchipcommunication/LinkParameter.h"
00015 #include "quantities/onchipcommunication/Interface.h"
00016 #include "quantities/onchipcommunication/NodeParameter.h"
00017 #include "quantities/onchipcommunication/Ports.h"
00018 #include "quantities/CommoditySet.h"
00019 #include "quantities/Name.h"
00020
00021
00022 namespace cosi {
00023
00024 namespace models {
00025
00026 namespace onchipcommunication {
00027
00028 class LinkPowerModel {
00029 public:
00030 LinkPowerModel();
00031 virtual ~LinkPowerModel();
00032
00033
00034 virtual double GetDynamicPower(Name pName ,
00035 cosi::quantity::onchipcommunication::Interface pSource,
00036 cosi::quantity::onchipcommunication::Interface pDest,
00037 WiringPath pPath,
00038 CommoditySet pCommodities ,
00039 cosi::quantity::onchipcommunication::LinkParameter pParam) = 0 ;
00040 virtual double GetStaticPower(Name pName ,
00041 cosi::quantity::onchipcommunication::Interface pSource,
00042 cosi::quantity::onchipcommunication::Interface pDest,
00043 WiringPath pPath,
00044 cosi::quantity::onchipcommunication::LinkParameter pParam)= 0 ;
00045 };
00046
00047 class NodePowerModel {
00048 public:
00049 NodePowerModel();
00050 virtual ~NodePowerModel();
00051
00052
00053 virtual double GetDynamicPower(Name pName, cosi::quantity::onchipcommunication::Ports pPorts,
00054 std::map< std::string , CommoditySet > pCommodities ,
00055 cosi::quantity::onchipcommunication::NodeParameter pParam)= 0 ;
00056 virtual double GetStaticPower(Name pName , cosi::quantity::onchipcommunication::Ports pPorts,
00057 cosi::quantity::onchipcommunication::NodeParameter pParam)= 0 ;
00058
00059 };
00060
00061 }
00062
00063 }
00064
00065 }
00066
00067 #endif