write_sdc set_load net

This commit is contained in:
James Cherry 2020-07-05 16:37:50 -07:00
parent 3d4b0cf1a3
commit 6b448fe2c9
2 changed files with 45 additions and 3 deletions

View File

@ -1578,7 +1578,8 @@ WriteSdc::writeEnvironment() const
writeCommentSection("Environment"); writeCommentSection("Environment");
writeOperatingConditions(); writeOperatingConditions();
writeWireload(); writeWireload();
writePinLoads(); writePortLoads();
writeNetLoads();
writeDriveResistances(); writeDriveResistances();
writeDrivingCells(); writeDrivingCells();
writeInputTransitions(); writeInputTransitions();
@ -1606,7 +1607,44 @@ WriteSdc::writeWireload() const
} }
void void
WriteSdc::writePinLoads() const WriteSdc::writeNetLoads() const
{
if (sdc_->net_wire_cap_map_) {
for (auto net_cap : *sdc_->net_wire_cap_map_) {
Net *net = net_cap.first;
MinMaxFloatValues &caps = net_cap.second;
float min_cap, max_cap;
bool min_exists, max_exists;
caps.value(MinMax::min(), min_cap, min_exists);
caps.value(MinMax::max(), max_cap, max_exists);
if (min_exists && max_exists
&& min_cap == max_cap)
writeNetLoad(net, MinMaxAll::all(), min_cap);
else {
if (min_exists)
writeNetLoad(net, MinMaxAll::min(), min_cap);
if (max_exists)
writeNetLoad(net, MinMaxAll::max(), max_cap);
}
}
}
}
void
WriteSdc::writeNetLoad(Net *net,
const MinMaxAll *min_max,
float cap) const
{
fprintf(stream_, "set_load ");
fprintf(stream_, "%s ", minMaxFlag(min_max));
writeCapacitance(cap);
fprintf(stream_, " ");
writeGetNet(net);
fprintf(stream_, "\n");
}
void
WriteSdc::writePortLoads() const
{ {
CellPortBitIterator *port_iter = sdc_network_->portBitIterator(cell_); CellPortBitIterator *port_iter = sdc_network_->portBitIterator(cell_);
while (port_iter->hasNext()) { while (port_iter->hasNext()) {

View File

@ -117,7 +117,11 @@ public:
void writeEnvironment() const; void writeEnvironment() const;
void writeOperatingConditions() const; void writeOperatingConditions() const;
void writeWireload() const; void writeWireload() const;
void writePinLoads() const; void writeNetLoads() const;
void writeNetLoad(Net *net,
const MinMaxAll *min_max,
float cap) const;
void writePortLoads() const;
void writePortLoads(Port *port) const; void writePortLoads(Port *port) const;
void writePortFanout(Port *port) const; void writePortFanout(Port *port) const;
void writeDriveResistances() const; void writeDriveResistances() const;