From 61333cd980bfff1aa55202a4c5f4f28b842ff819 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 26 Jun 2019 17:14:31 -0700 Subject: [PATCH] Network:bus_brkts_left/right --- network/ConcreteNetwork.cc | 6 ++---- network/ConcreteNetwork.hh | 4 +--- network/Network.cc | 12 +++++++++++- network/Network.hh | 11 ++++++++--- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/network/ConcreteNetwork.cc b/network/ConcreteNetwork.cc index 428f2a01..62c33b4a 100644 --- a/network/ConcreteNetwork.cc +++ b/network/ConcreteNetwork.cc @@ -624,12 +624,10 @@ ConcreteNetwork::makeBusPort(Cell *cell, } void -ConcreteNetwork::groupBusPorts(Cell *cell, - const char *bus_brkts_left, - const char *bus_brkts_right) +ConcreteNetwork::groupBusPorts(Cell *cell) { ConcreteCell *ccell = reinterpret_cast(cell); - ccell->groupBusPorts(bus_brkts_left, bus_brkts_right); + ccell->groupBusPorts(bus_brkts_left_, bus_brkts_right_); } Port * diff --git a/network/ConcreteNetwork.hh b/network/ConcreteNetwork.hh index a754e8f6..0bbc0ba2 100644 --- a/network/ConcreteNetwork.hh +++ b/network/ConcreteNetwork.hh @@ -177,9 +177,7 @@ public: const char *name, int from_index, int to_index); - virtual void groupBusPorts(Cell *cell, - const char *bus_brkts_left, - const char *bus_brkts_right); + virtual void groupBusPorts(Cell *cell); virtual Port *makeBundlePort(Cell *cell, const char *name, PortSeq *members); diff --git a/network/Network.cc b/network/Network.cc index f577034f..5694d194 100644 --- a/network/Network.cc +++ b/network/Network.cc @@ -27,7 +27,9 @@ namespace sta { Network::Network() : default_liberty_(nullptr), divider_('/'), - escape_('\\') + escape_('\\'), + bus_brkts_left_("["), + bus_brkts_right_("]") { } @@ -1048,6 +1050,14 @@ Network::setPathEscape(char escape) escape_ = escape; } +void +Network::setBusBrkts(char bus_brkt_left, + char bus_brkt_right) +{ + bus_brkts_left_ = new char[2]{bus_brkt_left, '\0'}; + bus_brkts_right_ = new char[2]{bus_brkt_right, '\0'}; +} + //////////////////////////////////////////////////////////////// typedef Vector InstanceChildIteratorSeq; diff --git a/network/Network.hh b/network/Network.hh index a7b1a00a..e572915d 100644 --- a/network/Network.hh +++ b/network/Network.hh @@ -425,6 +425,11 @@ public: // Escape prefix for path dividers in path names. virtual char pathEscape() const { return escape_; } virtual void setPathEscape(char escape); + // Multiple brakets are supported but generally there is only one. + virtual void setBusBrkts(char bus_brkt_left, + char bus_brkt_right); + virtual const char *busBrktsRight() const { return bus_brkts_right_; } + virtual const char *busBrktsLeft() const { return bus_brkts_left_; } protected: Pin *findPinLinear(const Instance *instance, @@ -469,6 +474,8 @@ protected: LibertyLibrary *default_liberty_; char divider_; char escape_; + const char *bus_brkts_left_; + const char *bus_brkts_right_; NetDrvrPinsMap net_drvr_pin_map_; private: @@ -541,9 +548,7 @@ public: const char *name, int from_index, int to_index) = 0; - virtual void groupBusPorts(Cell *cell, - const char *bus_brkts_left, - const char *bus_brkts_right) = 0; + virtual void groupBusPorts(Cell *cell) = 0; virtual Port *makeBundlePort(Cell *cell, const char *name, PortSeq *members) = 0;