00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef TORC_ARCHITECTURE_INSTANCEPIN_HPP
00020 #define TORC_ARCHITECTURE_INSTANCEPIN_HPP
00021
00022 #include "torc/physical/InstancePin.hpp"
00023 #include "torc/architecture/Tilewire.hpp"
00024
00025 namespace torc {
00026 namespace architecture {
00027
00028
00029
00030
00031 class InstancePin : public torc::physical::InstancePinBase, public Tilewire {
00032 protected:
00033
00034
00035
00036
00037 InstancePin(torc::physical::InstanceSharedPtr inInstancePtr, const string& inPinName)
00038 : InstancePinBase(inInstancePtr, inPinName), Tilewire() {}
00039 private:
00040
00041
00042 InstancePin(const InstancePin& rhs) : InstancePinBase(rhs), Tilewire() {}
00043 public:
00044
00045 typedef boost::shared_ptr<class ::torc::architecture::InstancePin> ArchitectureInstancePinPtr;
00046 typedef boost::shared_ptr<class ::torc::physical::InstancePin> PhysicalInstancePinPtr;
00047
00048
00049 inline static ArchitectureInstancePinPtr& physicalToArchitecture(
00050 PhysicalInstancePinPtr& inInstancePinSharedPtr) {
00051 return reinterpret_cast<ArchitectureInstancePinPtr&>(inInstancePinSharedPtr);
00052 }
00053 inline static PhysicalInstancePinPtr& architectureToPhysical(
00054 ArchitectureInstancePinPtr& inInstancePinSharedPtr) {
00055 return reinterpret_cast<PhysicalInstancePinPtr&>(inInstancePinSharedPtr);
00056 }
00057
00058
00059 void updateTilewire(class DDB& inDDB);
00060
00061
00062 Tilewire& getTilewire(void) { return static_cast<Tilewire&>(*this); }
00063 };
00064
00065
00066 typedef boost::shared_ptr<InstancePin> InstancePinSharedPtr;
00067
00068
00069 typedef boost::weak_ptr<InstancePin> InstancePinWeakPtr;
00070
00071
00072 typedef std::vector<InstancePinSharedPtr> InstancePinSharedPtrVector;
00073
00074
00075
00076 #define INSTANCE_PIN_PHYSICAL_TO_ARCHITECTURE(x) \
00077 ::torc::architecture::InstancePin::physicalToArchitecture(x)
00078
00079
00080
00081 #define INSTANCE_PIN_ARCHITECTURE_TO_PHYSICAL(x) \
00082 ::torc::architecture::InstancePin::architectureToPhysical(x)
00083
00084 }
00085 }
00086
00087 #endif // TORC_ARCHITECTURE_INSTANCEPIN_HPP