* Bug: In CellCollection::Cell_HyperNetRootNetOccurrences::progress(),
skip Nets that are inside Terminal Netlist master cells. Was done ine the locator constructor but forgotten in the progress().
This commit is contained in:
parent
86b184dd1e
commit
ea38329de1
|
@ -4694,7 +4694,8 @@ Cell_HyperNetRootNetOccurrences::Locator::Locator(const Cell* cell, Path path)
|
|||
while (not _hyperNetRootNetOccurrenceLocator.isValid() and _instanceLocator.isValid())
|
||||
{
|
||||
Instance* instance = _instanceLocator.getElement();
|
||||
_hyperNetRootNetOccurrenceLocator=Locator(instance->getMasterCell(),Path(_path,instance));
|
||||
if (not instance->isTerminalNetlist())
|
||||
_hyperNetRootNetOccurrenceLocator=Locator(instance->getMasterCell(),Path(_path,instance));
|
||||
_instanceLocator.progress();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -120,15 +120,17 @@ class HyperNet_NetOccurrencesUnder : public Collection<Occurrence> {
|
|||
public: typedef Hurricane::Locator<Occurrence> Inherit;
|
||||
|
||||
private: const HyperNet* _hyperNet;
|
||||
private: Box _area;
|
||||
private: Box _area;
|
||||
private: bool _doExtraction;
|
||||
private: bool _allowInterruption;
|
||||
private: set<Occurrence> _netOccurrenceSet;
|
||||
private: stack<Occurrence> _netOccurrenceStack;
|
||||
|
||||
public: Locator();
|
||||
public: Locator(const HyperNet* hyperNet, Box area,
|
||||
bool doExtraction = false, bool allowInterruption = false);
|
||||
public: Locator(const HyperNet* hyperNet
|
||||
, Box area
|
||||
, bool doExtraction = false
|
||||
, bool allowInterruption = false);
|
||||
public: Locator(const Locator& locator);
|
||||
|
||||
public: Locator& operator=(const Locator& locator);
|
||||
|
@ -148,7 +150,7 @@ class HyperNet_NetOccurrencesUnder : public Collection<Occurrence> {
|
|||
// **********
|
||||
|
||||
private: const HyperNet* _hyperNet;
|
||||
private: Box _area;
|
||||
private: Box _area;
|
||||
private: bool _doExtraction;
|
||||
private: bool _allowInterruption;
|
||||
|
||||
|
|
|
@ -105,6 +105,19 @@ bool Occurrence::operator<(const Occurrence& occurrence) const
|
|||
// ((_entity == occurrence._entity) and (_sharedPath < occurrence._sharedPath)));
|
||||
}
|
||||
|
||||
bool Occurrence::isBelowTerminalNetlist() const
|
||||
// ********************************************
|
||||
{
|
||||
SharedPath* tail = _sharedPath;
|
||||
while ( tail ) {
|
||||
Instance* instance = tail->getHeadInstance();
|
||||
tail = tail->getTailSharedPath();
|
||||
|
||||
if (tail and instance->isTerminalNetlist()) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Cell* Occurrence::getOwnerCell() const
|
||||
// **********************************
|
||||
{
|
||||
|
|
|
@ -79,6 +79,7 @@ class Occurrence {
|
|||
// **********
|
||||
|
||||
public: bool isValid() const {return (_entity != NULL);};
|
||||
public: bool isBelowTerminalNetlist() const;
|
||||
public: bool hasProperty() const;
|
||||
|
||||
// Updators
|
||||
|
|
Loading…
Reference in New Issue