replace_cell checks

This commit is contained in:
James Cherry 2019-05-20 11:35:22 -06:00
parent a988588dac
commit cfaef559e6
3 changed files with 16 additions and 5 deletions

View File

@ -1141,14 +1141,20 @@ ConcreteNetwork::makePins(Instance *inst)
void void
ConcreteNetwork::replaceCell(Instance *inst, ConcreteNetwork::replaceCell(Instance *inst,
LibertyCell *cell) LibertyCell *cell)
{
replaceCellIntenal(inst, cell);
}
void
ConcreteNetwork::replaceCellIntenal(Instance *inst,
ConcreteCell *cell)
{ {
InstancePinIterator *pin_iter = pinIterator(inst); InstancePinIterator *pin_iter = pinIterator(inst);
ConcreteCell *ccell = cell;
while (pin_iter->hasNext()) { while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next(); Pin *pin = pin_iter->next();
ConcretePin *cpin = reinterpret_cast<ConcretePin*>(pin); ConcretePin *cpin = reinterpret_cast<ConcretePin*>(pin);
ConcretePort *pin_cport = reinterpret_cast<ConcretePort*>(cpin->port()); ConcretePort *pin_cport = reinterpret_cast<ConcretePort*>(cpin->port());
ConcretePort *cport = ccell->findPort(pin_cport->name()); ConcretePort *cport = cell->findPort(pin_cport->name());
if (cport) if (cport)
cpin->port_ = cport; cpin->port_ = cport;
else else
@ -1611,7 +1617,7 @@ ConcreteInstance::deleteNet(ConcreteNet *net)
} }
void void
ConcreteInstance::setCell(LibertyCell *cell) ConcreteInstance::setCell(ConcreteCell *cell)
{ {
cell_ = cell; cell_ = cell;
} }

View File

@ -247,6 +247,8 @@ protected:
ConcretePin *cpin); ConcretePin *cpin);
void connectNetPin(ConcreteNet *cnet, void connectNetPin(ConcreteNet *cnet,
ConcretePin *cpin); ConcretePin *cpin);
void replaceCellIntenal(Instance *inst,
ConcreteCell *cell);
// Cell lookup search order sequence. // Cell lookup search order sequence.
ConcreteLibrarySeq library_seq_; ConcreteLibrarySeq library_seq_;
@ -284,7 +286,7 @@ public:
void addNet(const char *name, void addNet(const char *name,
ConcreteNet *net); ConcreteNet *net);
void deleteNet(ConcreteNet *net); void deleteNet(ConcreteNet *net);
void setCell(LibertyCell *cell); void setCell(ConcreteCell *cell);
void initPins(); void initPins();
protected: protected:

View File

@ -254,7 +254,10 @@ proc insert_buffer { buffer_name buffer_cell net load_pins buffer_out_net_name }
lappend load_pins $pin1 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. # sta namespace end.