STA API changes¶
This file summarizes STA API changes for each release.
2026/06/22¶
Liberty::hasSequentials has been renamed isSequential.
Release 3.1.0 2026/03/25¶
OpenSTA now uses std::string and std::string_view instead of
const char *. Lookup functions such as Network::findPin use
std::string_view that accept a const char *, std::string, or
std::string_view caller argument.
2026/03/19¶
LibertyCell::footprint() returns const std::string& instead of
const char *.
LibertyCell::userFunctionClass returns const std::string& instead of
const char *.
The Sdc, Liberty, ConcreteLibrary, ConcreteNetwork classes have
been updated to use std::string and std::string_view instead of
const char *. std::string_view is used when the lifetime of the
string argument is only while the function is called. std::string is
used when the string value outlives the function call because it is
stored in data structures.
The LibertyPort functions relatedGroundPin and relatedPowerPin
are renamed to relatedGroundPort and relatedPowerPort and return
LibertyPorts instead of strings.
2026/03/12¶
The Report class used for reporting and error messages now uses
std::format instead of printf.
sta::format is a wrapper for std::format that will compile on gcc8,
which centos7 uses and does not support std::format.
stdstrPrint, stringPrint, stringAppend have been removed. Use
sta::format.
reportLineString is now reportLine.
Release 3.0.0 2026/01/03¶
OpenSTA now requires C++ 20.
Corner replaced by Scene:
mode()parasitics(min_max)
DcalcAnalysisPt replaced by scene/min_max.
PathAnalysisPt replaced by scene/min_max.
StaState::sdc_ moved to Mode.
StaState::sim_ moved to Mode.
StaState::clk_network_ moved to Mode.
StaState::parasitics_ moved to Scene.
Sta::findPathEnds group_paths arg has been changed from
PathGroupNameSet* to StringSeq&.
Sta::isClock has been removed. Use mode->clkNetwork()->isClock
instead.
| Old | New |
|---|---|
Sta::vertexSlew |
slew |
Sta::vertexSlack |
slack |
Sta::vertexSlacks |
slacks |
Sta::vertexArrival |
arrival |
Sta::vertexRequired |
required |
Sta::pinSlack |
slack |
Sta::pinArrival |
arrival |
FuncExpr::Operator::op_* renamed to FuncExpr::Op::*.
FuncExprPortIterator has been removed. Use FuncExpr::ports().
Sdc::clocks() now returns ClockSeq&.
Sdc::clks() has been removed.
The Vector/Map/Set/UnorderedSet classes have been removed and
replaced by the std containers. The member functions are now templated
functions found in ContainerHelpers.hh.
The Graph slew_rf_count option is no longer supported.
Release 2.6.2 2025/03/30¶
The following functions have been renamed to to_string and return
std::string instead of const char *:
Vertex::name
FuncExpr::asString
TimingRole::name
MinMax::asString
MinMaxAll::asString
RiseFall::asString
RiseFallBoth::asString
Transition::asString
Tag::asString
timingSenseString
The following classes now return const objects: MinMax, MinMaxAll,
RiseFall, RiseFallBoth, Transition, TimingRole.
Liberty PgPorts are now LibertyPorts with additional member
functions for Liberty pg_pins.
The write_verilog command always sorts the Verilog file instances.
The -sort argument is ignored.
Release 2.6.1 2025/03/??¶
The following classes have been replaced by the class Path:
PathEnumedPathPrevPathRefPathVertexPathVertexPtrPathVertexRep
The PathExpanded::prevArc function has been removed. Use
Path::prevArc instead.
Release 2.4.0 2023/01/19¶
The Network API and associated containers now const the network class
objects. The Network API now requires network objects to have an id
function that returns an ObjectId (unsigned int) that is unique to
the object among objects of the same type.
virtual ObjectId id(const Instance *instance) const = 0;
Object IDs are used for comparing and hashing network objects. If
network IDs are not available in the host application database, object
pointers can be cast to intptr_t. Using pointers as object IDs can
result in memory layout dependent results that are inconsistent from
run to run or across host systems.
Many Network and Sta class functions now return collections rather
than pointers to temporary collections that the caller would have to
delete.
Release 2.3.1 2022/06/12¶
LibertyCellTimingArcSetIterator has been removed. Use range iteration
as shown below:
for (TimingArcSet *arc_set : cell->timingArcSets())
for (TimingArcSet *arc_set : cell->timingArcSets(from, to))
TimingArcSetArcIterator has been removed. Use range iteration as
shown below:
for (TimingArc *arc : arc_set->arcs())
LibertyCellSequentialIterator has been removed.
for (Sequential *seq : cell->sequentials())
Release 2.1.1 2020/12/13¶
Report::error and Report::warn functions now take a unique message
ID as a first argument. InternalError has been renamed
Report::critical.
Release 2.1.0 2020/04/05¶
All public header files have been moved to include/sta.
The following iterators have been removed. Use range iteration on the returned collection shown next to them instead.
LibertyCellInternalPowerIterator cell->internalPowers()
LibertyCellLeakagePowerIterator cell->leakagePowers()
Release 2.0.18 2020/02/15¶
The following iterator functions are deprecated:
TimingArcSet::timingArcIterator()Sdc::clockIterator()
Use the iterator class constructor instead. This avoids new/deletes
of the iterators by stack allocating them. For example, instead of:
TimingArcSetArcIterator *arc_iter = arc_set->timingArcIterator();
while (arc_iter->hasNext()) {
TimingArc *arc = arc_iter->next();
}
delete arc_iter;
use the following:
TimingArcSetArcIterator arc_iter(arc_set);
while (arc_iter.hasNext()) {
TimingArc *arc = arc_iter.next();
}
StaException renamed to Exception.
Release 2.0.17 2019/11/11¶
Network::setVertexIndex renamed to setVertexId.
Network::vertexIndex renamed to vertexId.
TransRiseFall renamed to RiseFall.
TransRiseFallBoth renamed to RiseFallBoth.
Release 2.0.0 2018/06/11¶
Initial release.