Network::attributeMap resolves #245
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
b32eed9a84
commit
ac02981b62
|
|
@ -46,7 +46,6 @@ class LibertyCell;
|
||||||
class LibertyPort;
|
class LibertyPort;
|
||||||
|
|
||||||
typedef Map<std::string, ConcreteCell*> ConcreteCellMap;
|
typedef Map<std::string, ConcreteCell*> ConcreteCellMap;
|
||||||
typedef std::map<std::string, std::string> AttributeMap;
|
|
||||||
typedef Vector<ConcretePort*> ConcretePortSeq;
|
typedef Vector<ConcretePort*> ConcretePortSeq;
|
||||||
typedef Map<std::string, ConcretePort*> ConcretePortMap;
|
typedef Map<std::string, ConcretePort*> ConcretePortMap;
|
||||||
typedef ConcreteCellMap::ConstIterator ConcreteLibraryCellIterator;
|
typedef ConcreteCellMap::ConstIterator ConcreteLibraryCellIterator;
|
||||||
|
|
@ -117,6 +116,7 @@ public:
|
||||||
void setAttribute(const std::string &key,
|
void setAttribute(const std::string &key,
|
||||||
const std::string &value);
|
const std::string &value);
|
||||||
std::string getAttribute(const std::string &key) const;
|
std::string getAttribute(const std::string &key) const;
|
||||||
|
const AttributeMap &attributeMap() const { return attribute_map_; }
|
||||||
|
|
||||||
// Cell acts as port factory.
|
// Cell acts as port factory.
|
||||||
ConcretePort *makePort(const char *name);
|
ConcretePort *makePort(const char *name);
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,6 @@ class ConcreteBindingTbl;
|
||||||
class ConcreteLibertyLibraryIterator;
|
class ConcreteLibertyLibraryIterator;
|
||||||
|
|
||||||
typedef Vector<ConcreteLibrary*> ConcreteLibrarySeq;
|
typedef Vector<ConcreteLibrary*> ConcreteLibrarySeq;
|
||||||
typedef std::map<std::string, std::string> AttributeMap;
|
|
||||||
typedef Map<const char*, ConcreteLibrary*, CharPtrLess> ConcreteLibraryMap;
|
typedef Map<const char*, ConcreteLibrary*, CharPtrLess> ConcreteLibraryMap;
|
||||||
typedef ConcreteLibrarySeq::ConstIterator ConcreteLibraryIterator;
|
typedef ConcreteLibrarySeq::ConstIterator ConcreteLibraryIterator;
|
||||||
typedef Map<const char *, ConcreteInstance*,
|
typedef Map<const char *, ConcreteInstance*,
|
||||||
|
|
@ -85,6 +84,7 @@ public:
|
||||||
const char *name(const Cell *cell) const override;
|
const char *name(const Cell *cell) const override;
|
||||||
std::string getAttribute(const Cell *cell,
|
std::string getAttribute(const Cell *cell,
|
||||||
const std::string &key) const override;
|
const std::string &key) const override;
|
||||||
|
const AttributeMap &attributeMap(const Cell *cell) const override;
|
||||||
ObjectId id(const Cell *cell) const override;
|
ObjectId id(const Cell *cell) const override;
|
||||||
Library *library(const Cell *cell) const override;
|
Library *library(const Cell *cell) const override;
|
||||||
LibertyCell *libertyCell(Cell *cell) const override;
|
LibertyCell *libertyCell(Cell *cell) const override;
|
||||||
|
|
@ -121,6 +121,7 @@ public:
|
||||||
const char *name(const Instance *instance) const override;
|
const char *name(const Instance *instance) const override;
|
||||||
std::string getAttribute(const Instance *inst,
|
std::string getAttribute(const Instance *inst,
|
||||||
const std::string &key) const override;
|
const std::string &key) const override;
|
||||||
|
const AttributeMap &attributeMap(const Instance *inst) const override;
|
||||||
ObjectId id(const Instance *instance) const override;
|
ObjectId id(const Instance *instance) const override;
|
||||||
Cell *cell(const Instance *instance) const override;
|
Cell *cell(const Instance *instance) const override;
|
||||||
Instance *parent(const Instance *instance) const override;
|
Instance *parent(const Instance *instance) const override;
|
||||||
|
|
@ -307,6 +308,7 @@ public:
|
||||||
void setAttribute(const std::string &key,
|
void setAttribute(const std::string &key,
|
||||||
const std::string &value);
|
const std::string &value);
|
||||||
std::string getAttribute(const std::string &key) const;
|
std::string getAttribute(const std::string &key) const;
|
||||||
|
const AttributeMap &attributeMap() const { return attribute_map_; }
|
||||||
void addChild(ConcreteInstance *child);
|
void addChild(ConcreteInstance *child);
|
||||||
void deleteChild(ConcreteInstance *child);
|
void deleteChild(ConcreteInstance *child);
|
||||||
void addPin(ConcretePin *pin);
|
void addPin(ConcretePin *pin);
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,7 @@ public:
|
||||||
// Attributes can be null
|
// Attributes can be null
|
||||||
virtual std::string getAttribute(const Cell *cell,
|
virtual std::string getAttribute(const Cell *cell,
|
||||||
const std::string &key) const = 0;
|
const std::string &key) const = 0;
|
||||||
|
virtual const AttributeMap &attributeMap(const Cell *cell) const = 0;
|
||||||
// Name can be a simple, bundle, bus, or bus bit name.
|
// Name can be a simple, bundle, bus, or bus bit name.
|
||||||
virtual Port *findPort(const Cell *cell,
|
virtual Port *findPort(const Cell *cell,
|
||||||
const char *name) const = 0;
|
const char *name) const = 0;
|
||||||
|
|
@ -217,6 +218,7 @@ public:
|
||||||
const PatternMatch *pattern) const;
|
const PatternMatch *pattern) const;
|
||||||
virtual std::string getAttribute(const Instance *inst,
|
virtual std::string getAttribute(const Instance *inst,
|
||||||
const std::string &key) const = 0;
|
const std::string &key) const = 0;
|
||||||
|
virtual const AttributeMap &attributeMap(const Instance *inst) const = 0;
|
||||||
// Hierarchical path name.
|
// Hierarchical path name.
|
||||||
virtual const char *pathName(const Instance *instance) const;
|
virtual const char *pathName(const Instance *instance) const;
|
||||||
bool pathNameLess(const Instance *inst1,
|
bool pathNameLess(const Instance *inst1,
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
#include "Set.hh"
|
#include "Set.hh"
|
||||||
#include "Vector.hh"
|
#include "Vector.hh"
|
||||||
|
|
@ -70,6 +72,7 @@ typedef Iterator<const Pin*> ConnectedPinIterator;
|
||||||
typedef ConnectedPinIterator NetConnectedPinIterator;
|
typedef ConnectedPinIterator NetConnectedPinIterator;
|
||||||
typedef ConnectedPinIterator PinConnectedPinIterator;
|
typedef ConnectedPinIterator PinConnectedPinIterator;
|
||||||
typedef uint32_t ObjectId;
|
typedef uint32_t ObjectId;
|
||||||
|
typedef std::map<std::string, std::string> AttributeMap;
|
||||||
|
|
||||||
enum class LogicValue : unsigned { zero, one, unknown, rise, fall };
|
enum class LogicValue : unsigned { zero, one, unknown, rise, fall };
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ public:
|
||||||
const char *name(const Cell *cell) const override;
|
const char *name(const Cell *cell) const override;
|
||||||
std::string getAttribute(const Cell *cell,
|
std::string getAttribute(const Cell *cell,
|
||||||
const std::string &key) const override;
|
const std::string &key) const override;
|
||||||
|
const AttributeMap &attributeMap(const Cell *cell) const override;
|
||||||
ObjectId id(const Cell *cell) const override;
|
ObjectId id(const Cell *cell) const override;
|
||||||
Library *library(const Cell *cell) const override;
|
Library *library(const Cell *cell) const override;
|
||||||
LibertyCell *libertyCell(Cell *cell) const override;
|
LibertyCell *libertyCell(Cell *cell) const override;
|
||||||
|
|
@ -93,6 +94,7 @@ public:
|
||||||
ObjectId id(const Instance *instance) const override;
|
ObjectId id(const Instance *instance) const override;
|
||||||
std::string getAttribute(const Instance *inst,
|
std::string getAttribute(const Instance *inst,
|
||||||
const std::string &key) const override;
|
const std::string &key) const override;
|
||||||
|
const AttributeMap &attributeMap(const Instance *inst) const override;
|
||||||
Instance *topInstance() const override;
|
Instance *topInstance() const override;
|
||||||
Cell *cell(const Instance *instance) const override;
|
Cell *cell(const Instance *instance) const override;
|
||||||
Instance *parent(const Instance *instance) const override;
|
Instance *parent(const Instance *instance) const override;
|
||||||
|
|
|
||||||
|
|
@ -624,6 +624,13 @@ ConcreteNetwork::getAttribute(const Cell *cell,
|
||||||
return ccell->getAttribute(key);
|
return ccell->getAttribute(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const AttributeMap &
|
||||||
|
ConcreteNetwork::attributeMap(const Cell *cell) const
|
||||||
|
{
|
||||||
|
const ConcreteCell *ccell = reinterpret_cast<const ConcreteCell*>(cell);
|
||||||
|
return ccell->attributeMap();
|
||||||
|
}
|
||||||
|
|
||||||
Port *
|
Port *
|
||||||
ConcreteNetwork::findPort(const Cell *cell,
|
ConcreteNetwork::findPort(const Cell *cell,
|
||||||
const char *name) const
|
const char *name) const
|
||||||
|
|
@ -956,6 +963,13 @@ ConcreteNetwork::getAttribute(const Instance *inst,
|
||||||
return cinst->getAttribute(key);
|
return cinst->getAttribute(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const AttributeMap &
|
||||||
|
ConcreteNetwork::attributeMap(const Instance *inst) const
|
||||||
|
{
|
||||||
|
const ConcreteInstance *cinst = reinterpret_cast<const ConcreteInstance*>(inst);
|
||||||
|
return cinst->attributeMap();
|
||||||
|
}
|
||||||
|
|
||||||
Cell *
|
Cell *
|
||||||
ConcreteNetwork::cell(const Instance *instance) const
|
ConcreteNetwork::cell(const Instance *instance) const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,12 @@ NetworkNameAdapter::getAttribute(const Cell *cell,
|
||||||
return network_->getAttribute(cell, key);
|
return network_->getAttribute(cell, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const AttributeMap &
|
||||||
|
NetworkNameAdapter::attributeMap(const Cell *cell) const
|
||||||
|
{
|
||||||
|
return network_->attributeMap(cell);
|
||||||
|
}
|
||||||
|
|
||||||
Library *
|
Library *
|
||||||
NetworkNameAdapter::library(const Cell *cell) const
|
NetworkNameAdapter::library(const Cell *cell) const
|
||||||
{
|
{
|
||||||
|
|
@ -356,6 +362,12 @@ NetworkNameAdapter::getAttribute(const Instance *inst,
|
||||||
return network_->getAttribute(inst, key);
|
return network_->getAttribute(inst, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const AttributeMap &
|
||||||
|
NetworkNameAdapter::attributeMap(const Instance *inst) const
|
||||||
|
{
|
||||||
|
return network_->attributeMap(inst);
|
||||||
|
}
|
||||||
|
|
||||||
Instance *
|
Instance *
|
||||||
NetworkNameAdapter::parent(const Instance *instance) const
|
NetworkNameAdapter::parent(const Instance *instance) const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue