Initial Pass at Attribute parsing

This commit is contained in:
Ethan Mahintorabi
2024-03-09 22:02:19 +00:00
parent 2cfbeb4672
commit 414e4e44aa
16 changed files with 5101 additions and 56 deletions
+4
View File
@@ -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;
+12
View File
@@ -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;
+9
View File
@@ -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,
+2
View File
@@ -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;