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
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<ConcretePin*>(pin);
ConcretePort *pin_cport = reinterpret_cast<ConcretePort*>(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;
}

View File

@ -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:

View File

@ -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.