19 #ifndef TORC_PACKER_COMBINATIONALPATH_HPP
20 #define TORC_PACKER_COMBINATIONALPATH_HPP
74 if(result != e)
return false;
86 if(result == e)
return false;
96 NetSharedPtr netPtr = instancePinPtr->getParentWeakPtr().lock();
97 if(netPtr->containsSource(instancePinPtr))
116 if((instance1Ptr->getType()==
"DFF")||(instance1Ptr->getType()==
"IOB")){
122 NetSharedPtr netPtr = instancePinPtr->getParentWeakPtr().lock();
128 routingNetPtr->setPathCount(instPin, 1);
135 bool repeatNeeded =
true;
136 size_t maxTotalCount = 0;
138 if(maxTotalCount>inDesignPtr->getInstanceCount()){
139 cout<<
"Combinational Loop !!!!!"<<endl;;
142 repeatNeeded =
false;
143 pi = inDesignPtr->instancesBegin();
144 ei = inDesignPtr->instancesEnd();
149 if((instance1Ptr->getType()!=
"DFF")&&(instance1Ptr->getType()!=
"IOB")){
156 NetSharedPtr netPtr = instancePinPtr->getParentWeakPtr().lock();
162 size_t currCount = routingNetPtr->getPathCount(instPin);
163 if(currCount>maxCount)
164 maxCount = currCount;
165 if(maxTotalCount<maxCount)
166 maxTotalCount=maxCount;
171 ipp = instance1Ptr->pinsBegin();
172 ipe = instance1Ptr->pinsEnd();
176 NetSharedPtr netPtr = instancePinPtr->getParentWeakPtr().lock();
178 if(routingNetPtr->getPathCount(instancePinPtr)<(maxCount+1)){
179 routingNetPtr->setPathCount(instancePinPtr,maxCount+1);
186 size_t currCount = routingNetPtr->getPathCount(instPin);
187 if(currCount<(maxCount+1)){
188 routingNetPtr->setPathCount(instPin, maxCount+1);
189 maxCount = currCount;
190 if(maxTotalCount<maxCount)
191 maxTotalCount=maxCount;
201 pn = inDesignPtr->netsBegin();
202 en = inDesignPtr->netsEnd();
211 if(setCount<routingNetPtr->getPathCount(*sop))
212 setCount = routingNetPtr->getPathCount(*sop);
219 if(routingNetPtr->getPathCount(*sip)==0)
220 routingNetPtr->setPathCount(*sip, setCount);
229 repeatNeeded =
false;
230 pi = inDesignPtr->instancesBegin();
231 ei = inDesignPtr->instancesEnd();
236 if((instance1Ptr->getType()!=
"DFF")&&(instance1Ptr->getType()!=
"IOB")){
243 NetSharedPtr netPtr = instancePinPtr->getParentWeakPtr().lock();
245 size_t currCount = routingNetPtr->getPathCount(instancePinPtr);
246 if(currCount>maxCount)
247 maxCount = currCount;
252 ipp = instance1Ptr->pinsBegin();
253 ipe = instance1Ptr->pinsEnd();
257 NetSharedPtr netPtr = instancePinPtr->getParentWeakPtr().lock();
259 if(routingNetPtr->getPathCount(instancePinPtr)<(maxCount)){
260 routingNetPtr->setPathCount(instancePinPtr,maxCount);
262 size_t minDiff = 100000000;
267 size_t currCount = maxCount - routingNetPtr->getPathCount(instPin);
268 if(currCount<minDiff){
272 sop = netPtr->sinksBegin();
273 soe = netPtr->sinksEnd();
276 size_t currCount = routingNetPtr->getPathCount(instPin);
277 routingNetPtr->setPathCount(instPin,currCount+minDiff);
311 #endif // TORC_PACKER_COMBINATIONALPATH_HPP
RoutingNetSharedPtrVector mRoutingNets
Vector of routing net shared pointers.
CombinationalPath()
Protected constructor.
size_t getRoutingNetCount(void) const
Returns the number of routingNets in the circuit.
RoutingNetSharedPtrVector::iterator RoutingNetSharedPtrIterator
Non-constant iterator to Routing Net shared pointers.
bool addRoutingNet(RoutingNetSharedPtr &inRoutingNetPtr)
Add a net to the set.
bool removeRoutingNet(RoutingNetSharedPtr &inRoutingNetPtr)
Remove a net from the circuit.
RoutingNetSharedPtrConstIterator routingNetsEnd(void) const
Returns the end constant iterator for routingNets.
InstanceSharedPtrVector::const_iterator InstanceSharedPtrConstIterator
Constant iterator to Instance shared pointers.
Header for the RoutingNet class.
std::string string
Imported type name.
RcFactory class for physical netlist elements.
RoutingNetSharedPtrIterator routingNetsEnd(void)
Returns the end non-constant iterator for routingNets.
std::vector< CombinationalPathSharedPtr > CombinationalPathSharedPtrVector
Vector of CombinationalPath shared pointers.
PinType getInstancePinType(InstancePinSharedPtr instancePinPtr)
Returns instance pin type.
boost::shared_ptr< class InstancePin > InstancePinSharedPtr
Shared pointer encapsulation of an InstancePin.
std::vector< RoutingNetSharedPtr > RoutingNetSharedPtrVector
Vector of RoutingNet shared pointers.
Comparator class to serve as a predicate when searching for names.
Header for the Design class.
RoutingNetSharedPtrIterator routingNetsBegin(void)
Returns the begin non-constant iterator for routingNets.
InstancePinMap::const_iterator InstancePinSharedPtrConstIterator
Constant iterator to InstancePin shared pointers.
boost::shared_ptr< Net > NetSharedPtr
Shared pointer encapsulation of a Net.
RoutingNetSharedPtrConstIterator routingNetsBegin(void) const
Returns the begin constant iterator for routingNets.
RoutingNetSharedPtrVector::const_iterator RoutingNetSharedPtrConstIterator
Constant iterator to Routing Net shared pointers.
boost::shared_ptr< Instance > InstanceSharedPtr
Shared pointer encapsulation of an Instance.
boost::shared_ptr< Design > DesignSharedPtr
Shared pointer encapsulation of a Design.
InstancePinSharedPtrVector::const_iterator InstancePinSharedPtrConstIterator
Constant iterator to InstancePin shared pointer objects.
Header for the Net class.
boost::shared_ptr< RoutingNet > RoutingNetSharedPtr
Shared pointer encapsulation of a RoutingNet.
boost::shared_ptr< CombinationalPath > CombinationalPathSharedPtr
Shared pointer encapsulation of a CombinationalPath.
RoutingNetSharedPtrIterator findRoutingNet(const string &inName)
Find a net by name.
bool setPatchCounts(DesignSharedPtr inDesignPtr)
Set combinational counts for all nets.
NetSharedPtrVector::const_iterator NetSharedPtrConstIterator
Constant iterator to Net shared pointers.