diff --git a/network/ConcreteNetwork.cc b/network/ConcreteNetwork.cc index 9586d2d1..46973913 100644 --- a/network/ConcreteNetwork.cc +++ b/network/ConcreteNetwork.cc @@ -1141,14 +1141,20 @@ ConcreteNetwork::makePins(Instance *inst) void ConcreteNetwork::replaceCell(Instance *inst, LibertyCell *cell) +{ + replaceCellIntenal(inst, cell); +} + +void +ConcreteNetwork::replaceCellIntenal(Instance *inst, + ConcreteCell *cell) { InstancePinIterator *pin_iter = pinIterator(inst); - ConcreteCell *ccell = cell; while (pin_iter->hasNext()) { Pin *pin = pin_iter->next(); ConcretePin *cpin = reinterpret_cast(pin); ConcretePort *pin_cport = reinterpret_cast(cpin->port()); - ConcretePort *cport = ccell->findPort(pin_cport->name()); + ConcretePort *cport = cell->findPort(pin_cport->name()); if (cport) cpin->port_ = cport; else @@ -1611,7 +1617,7 @@ ConcreteInstance::deleteNet(ConcreteNet *net) } void -ConcreteInstance::setCell(LibertyCell *cell) +ConcreteInstance::setCell(ConcreteCell *cell) { cell_ = cell; } diff --git a/network/ConcreteNetwork.hh b/network/ConcreteNetwork.hh index 5b1109e3..d43b66ec 100644 --- a/network/ConcreteNetwork.hh +++ b/network/ConcreteNetwork.hh @@ -247,6 +247,8 @@ protected: ConcretePin *cpin); void connectNetPin(ConcreteNet *cnet, ConcretePin *cpin); + void replaceCellIntenal(Instance *inst, + ConcreteCell *cell); // Cell lookup search order sequence. ConcreteLibrarySeq library_seq_; @@ -284,7 +286,7 @@ public: void addNet(const char *name, ConcreteNet *net); void deleteNet(ConcreteNet *net); - void setCell(LibertyCell *cell); + void setCell(ConcreteCell *cell); void initPins(); protected: diff --git a/tcl/NetworkEdit.tcl b/tcl/NetworkEdit.tcl index 1afb1ecd..8174560e 100644 --- a/tcl/NetworkEdit.tcl +++ b/tcl/NetworkEdit.tcl @@ -254,7 +254,10 @@ proc insert_buffer { buffer_name buffer_cell net load_pins buffer_out_net_name } lappend load_pins $pin1 } } - insert_buffer_cmd $buffer_name $buffer_cell $net $load_pins $buffer_out_net_name + if { $buffer_cell != "NULL" \ + && $net != "NULL" } { + insert_buffer_cmd $buffer_name $buffer_cell $net $load_pins $buffer_out_net_name + } } # sta namespace end.