00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef TORC_PHYSICAL_FACTORY_HPP
00020 #define TORC_PHYSICAL_FACTORY_HPP
00021
00022 #include "torc/physical/Design.hpp"
00023 #include <string>
00024 #include <boost/smart_ptr.hpp>
00025
00026 namespace torc {
00027 namespace physical {
00028
00029
00030
00031 class Factory {
00032 protected:
00033
00034
00035 typedef std::string string;
00036 public:
00037
00038
00039
00040
00041
00042
00043
00044 static DesignSharedPtr newDesignPtr(const string& inName, const string& inDevice,
00045 const string& inPackage, const string& inSpeedGrade, const string& inXdlVersion) {
00046 DesignSharedPtr designPtr(new Design(inName, inDevice, inPackage, inSpeedGrade,
00047 inXdlVersion));
00048 designPtr->setSelfWeakPtr(designPtr);
00049 return designPtr;
00050 }
00051
00052
00053
00054
00055 static ModuleSharedPtr newModulePtr(const string& inName, const string& inAnchor) {
00056 ModuleSharedPtr modulePtr(new Module(inName, inAnchor));
00057 modulePtr->Progenitor<Module>::setSelfWeakPtr(modulePtr);
00058 return modulePtr;
00059
00060 }
00061
00062
00063
00064
00065 static PortSharedPtr newPortPtr(const string& inName, InstanceSharedPtr inInstancePtr,
00066 const string& inPinName) {
00067 PortSharedPtr portPtr(new Port(inName, inInstancePtr, inPinName));
00068 return portPtr;
00069 }
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 static InstanceSharedPtr newInstancePtr(const string& inName, const string& inType,
00082 const string& inTile, const string& inSite,
00083 EInstanceBonding inBonding = eInstanceBondingUnknown,
00084 InstanceReferenceSharedPtr inInstanceReferencePtr = InstanceReferenceSharedPtr()) {
00085 InstanceSharedPtr instancePtr(new Instance(inName, inType, inTile, inSite, inBonding,
00086 inInstanceReferencePtr));
00087 instancePtr->setSelfWeakPtr(instancePtr);
00088 return instancePtr;
00089 }
00090
00091
00092
00093 static NetSharedPtr newNetPtr(const string& inName, ENetType inNetType = eNetTypeNormal) {
00094 NetSharedPtr netPtr(new Net(inName, inNetType));
00095 netPtr->setSelfWeakPtr(netPtr);
00096 return netPtr;
00097 }
00098
00099
00100
00101
00102 static InstanceReferenceSharedPtr newInstanceReferencePtr(const string& inInstantiationName,
00103 ModuleSharedPtr inModulePtr, InstanceSharedPtr inInstancePtr) {
00104 InstanceReferenceSharedPtr instanceReferencePtr(
00105 new InstanceReference(inInstantiationName, inModulePtr, inInstancePtr));
00106 return instanceReferencePtr;
00107 }
00108
00109
00110
00111 static InstancePinSharedPtr newInstancePinPtr(InstanceSharedPtr inInstancePtr,
00112 const string& inPinName) {
00113 InstancePinSharedPtr instancePinPtr(new InstancePin(inInstancePtr, inPinName));
00114 instancePinPtr->setSelfWeakPtr(instancePinPtr);
00115 return instancePinPtr;
00116 }
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 static torc::physical::Pip newPip(const string& inTileName, const string& inSourceWireName,
00127 const string& inSinkWireName, EPipDirection inPipDirection,
00128 RoutethroughSharedPtr inRoutethroughPtr = RoutethroughSharedPtr()) {
00129 return Pip::Pip(inTileName, inSourceWireName, inSinkWireName, inPipDirection,
00130 inRoutethroughPtr);
00131 }
00132
00133 static RoutethroughSharedPtr newRoutethroughPtr(const string& inSetting,
00134 const string& inName, const string& inValue, const InstanceWeakPtr& inInstancePtr,
00135 const string& inSourceWireName, const string& inSinkWireName) {
00136 RoutethroughSharedPtr routethroughPtr(new Routethrough(inSetting, inName, inValue,
00137 inInstancePtr, inSourceWireName, inSinkWireName));
00138 return routethroughPtr;
00139 }
00140 };
00141
00142 }
00143 }
00144
00145 #endif // TORC_PHYSICAL_FACTORY_HPP