mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-08-31 10:04:55 +02:00
Initial Pass at Attribute parsing
This commit is contained in:
@@ -38,6 +38,7 @@ class LibertyCell;
|
||||
class LibertyPort;
|
||||
|
||||
typedef Map<const char*, ConcreteCell*, CharPtrLess> ConcreteCellMap;
|
||||
typedef Map<std::string, const char*> AttributeMap;
|
||||
typedef Vector<ConcretePort*> ConcretePortSeq;
|
||||
typedef Map<const char*, ConcretePort*, CharPtrLess> ConcretePortMap;
|
||||
typedef ConcreteCellMap::ConstIterator ConcreteLibraryCellIterator;
|
||||
@@ -105,6 +106,8 @@ public:
|
||||
ConcreteCellPortBitIterator *portBitIterator() const;
|
||||
bool isLeaf() const { return is_leaf_; }
|
||||
void setIsLeaf(bool is_leaf);
|
||||
void setAttribute(const char *key, const char *value);
|
||||
const char *getAttribute(const char *key) const;
|
||||
|
||||
// Cell acts as port factory.
|
||||
ConcretePort *makePort(const char *name);
|
||||
@@ -158,6 +161,7 @@ protected:
|
||||
// Port bit count (expanded buses).
|
||||
int port_bit_count_;
|
||||
bool is_leaf_;
|
||||
AttributeMap attribute_map_;
|
||||
|
||||
private:
|
||||
friend class ConcreteLibrary;
|
||||
|
||||
@@ -38,6 +38,7 @@ class ConcreteBindingTbl;
|
||||
class ConcreteLibertyLibraryIterator;
|
||||
|
||||
typedef Vector<ConcreteLibrary*> ConcreteLibrarySeq;
|
||||
typedef Map<std::string, const char*> AttributeMap;
|
||||
typedef Map<const char*, ConcreteLibrary*, CharPtrLess> ConcreteLibraryMap;
|
||||
typedef ConcreteLibrarySeq::ConstIterator ConcreteLibraryIterator;
|
||||
typedef Map<const char *, ConcreteInstance*,
|
||||
@@ -74,6 +75,7 @@ public:
|
||||
const PatternMatch *pattern) const override;
|
||||
|
||||
const char *name(const Cell *cell) const override;
|
||||
const char *getAttribute(const Cell *cell, const char *key) const override;
|
||||
ObjectId id(const Cell *cell) const override;
|
||||
Library *library(const Cell *cell) const override;
|
||||
LibertyCell *libertyCell(Cell *cell) const override;
|
||||
@@ -108,6 +110,7 @@ public:
|
||||
PortMemberIterator *memberIterator(const Port *port) const override;
|
||||
|
||||
const char *name(const Instance *instance) const override;
|
||||
const char *getAttribute(const Instance *inst, const char *key) const override;
|
||||
ObjectId id(const Instance *instance) const override;
|
||||
Cell *cell(const Instance *instance) const override;
|
||||
Instance *parent(const Instance *instance) const override;
|
||||
@@ -175,6 +178,9 @@ public:
|
||||
const char *name) override;
|
||||
void setIsLeaf(Cell *cell,
|
||||
bool is_leaf) override;
|
||||
void setAttribute(Cell *cell,
|
||||
const char *key,
|
||||
const char *value) override;
|
||||
Port *makePort(Cell *cell,
|
||||
const char *name) override;
|
||||
Port *makeBusPort(Cell *cell,
|
||||
@@ -206,6 +212,9 @@ public:
|
||||
Pin *connect(Instance *inst,
|
||||
LibertyPort *port,
|
||||
Net *net) override;
|
||||
void setAttribute(Instance *inst,
|
||||
const char *key,
|
||||
const char *value) override;
|
||||
void disconnectPin(Pin *pin) override;
|
||||
void deletePin(Pin *pin) override;
|
||||
Net *makeNet(const char *name,
|
||||
@@ -285,6 +294,8 @@ public:
|
||||
InstanceNetIterator *netIterator() const;
|
||||
Instance *findChild(const char *name) const;
|
||||
InstanceChildIterator *childIterator() const;
|
||||
void setAttribute(const char *key, const char *value);
|
||||
const char *getAttribute(const char *key) const;
|
||||
void addChild(ConcreteInstance *child);
|
||||
void deleteChild(ConcreteInstance *child);
|
||||
void addPin(ConcretePin *pin);
|
||||
@@ -310,6 +321,7 @@ protected:
|
||||
ConcretePinSeq pins_;
|
||||
ConcreteInstanceChildMap *children_;
|
||||
ConcreteInstanceNetMap *nets_;
|
||||
AttributeMap attribute_map_;
|
||||
|
||||
private:
|
||||
friend class ConcreteNetwork;
|
||||
|
||||
@@ -144,6 +144,8 @@ public:
|
||||
virtual Cell *cell(LibertyCell *cell) const = 0;
|
||||
// Filename may return null.
|
||||
virtual const char *filename(const Cell *cell) = 0;
|
||||
// Attributes can be null
|
||||
virtual const char *getAttribute(const Cell *cell, const char *key) const = 0;
|
||||
// Name can be a simple, bundle, bus, or bus bit name.
|
||||
virtual Port *findPort(const Cell *cell,
|
||||
const char *name) const = 0;
|
||||
@@ -206,6 +208,7 @@ public:
|
||||
const PatternMatch *pattern) const;
|
||||
virtual InstanceSeq findInstancesHierMatching(const Instance *instance,
|
||||
const PatternMatch *pattern) const;
|
||||
virtual const char *getAttribute(const Instance *inst, const char *key) const = 0;
|
||||
// Hierarchical path name.
|
||||
virtual const char *pathName(const Instance *instance) const;
|
||||
bool pathNameLess(const Instance *inst1,
|
||||
@@ -544,6 +547,12 @@ public:
|
||||
const char *name) = 0;
|
||||
virtual void setIsLeaf(Cell *cell,
|
||||
bool is_leaf) = 0;
|
||||
virtual void setAttribute(Cell *cell,
|
||||
const char *key,
|
||||
const char *value) = 0;
|
||||
virtual void setAttribute(Instance *instance,
|
||||
const char *key,
|
||||
const char *value) = 0;
|
||||
virtual Port *makePort(Cell *cell,
|
||||
const char *name) = 0;
|
||||
virtual Port *makeBusPort(Cell *cell,
|
||||
|
||||
@@ -45,6 +45,7 @@ public:
|
||||
const PatternMatch *pattern) const override;
|
||||
|
||||
const char *name(const Cell *cell) const override;
|
||||
const char *getAttribute(const Cell *cell, const char* key) const override;
|
||||
ObjectId id(const Cell *cell) const override;
|
||||
Library *library(const Cell *cell) const override;
|
||||
LibertyCell *libertyCell(Cell *cell) const override;
|
||||
@@ -80,6 +81,7 @@ public:
|
||||
bool hasMembers(const Port *port) const override;
|
||||
|
||||
ObjectId id(const Instance *instance) const override;
|
||||
const char *getAttribute(const Instance *inst, const char* key) const override;
|
||||
Instance *topInstance() const override;
|
||||
Cell *cell(const Instance *instance) const override;
|
||||
Instance *parent(const Instance *instance) const override;
|
||||
|
||||
Reference in New Issue
Block a user