Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Design.cc
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ bool Design::isSequential(odb::dbMaster* master)
if (!lib_cell) {
return false;
}
return lib_cell->hasSequentials();
return lib_cell->isSequential();
}

bool Design::isInClock(odb::dbInst* inst)
Expand Down
2 changes: 1 addition & 1 deletion src/cts/src/LatencyBalancer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,7 @@ bool LatencyBalancer::propagateClock(odb::dbITerm* input)
return true;
}
// Combinational components
if (!libertyCell->hasSequentials()) {
if (!libertyCell->isSequential()) {
return true;
}
sta::LibertyPort* inputPort
Expand Down
2 changes: 1 addition & 1 deletion src/cut/src/abc_library_factory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ static bool IsCombinational(sta::LibertyCell* cell)
return false;
}
return (!cell->isClockGate() && !cell->isPad() && !cell->isMacro()
&& !cell->hasSequentials() && !cell->isLevelShifter()
&& !cell->isSequential() && !cell->isLevelShifter()
&& !cell->isIsolationCell() && !cell->isMemory());
}

Expand Down
6 changes: 3 additions & 3 deletions src/cut/src/blif.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ bool Blif::writeBlif(const char* file_name, bool write_arrival_requireds)
auto master_name = master->getName();

std::string current_gate
= ((cell->hasSequentials()) ? ".mlatch " : ".gate ") + master_name;
= ((cell->isSequential()) ? ".mlatch " : ".gate ") + master_name;
std::string current_connections, current_clock;
std::set<std::string> current_clocks;

Expand Down Expand Up @@ -250,10 +250,10 @@ bool Blif::writeBlif(const char* file_name, bool write_arrival_requireds)

current_gate += current_connections;

if (cell->hasSequentials() && current_clocks.size() != 1) {
if (cell->isSequential() && current_clocks.size() != 1) {
continue;
}
if (cell->hasSequentials()) {
if (cell->isSequential()) {
current_gate += " " + current_clock;
}

Expand Down
2 changes: 1 addition & 1 deletion src/cut/src/logic_cut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ void ConnectPinToDriver(
abc::Abc_Obj_t* abc_net = abc::Abc_NtkCreateNet(&abc_network);

if (network->isTopInstance(driver_instance)
|| network->libertyCell(driver_instance)->hasSequentials()) {
|| network->libertyCell(driver_instance)->isSequential()) {
abc::Abc_Obj_t* abc_input = abc::Abc_NtkCreatePi(&abc_network);
abc::Abc_ObjAddFanin(abc_net, abc_input);
std::string driver_name = network->name(driver);
Expand Down
2 changes: 1 addition & 1 deletion src/dbSta/src/dbNetwork.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5603,7 +5603,7 @@ bool dbNetwork::isValidFlop(odb::dbInst* FF) const
return false;
}
const LibertyCell* lib_cell = testCell(cell);
if (lib_cell == nullptr || !lib_cell->hasSequentials()) {
if (lib_cell == nullptr || !lib_cell->isSequential()) {
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion src/dbSta/src/dbSta.cc
Original file line number Diff line number Diff line change
Expand Up @@ -614,7 +614,7 @@ dbSta::InstType dbSta::getInstanceType(odb::dbInst* inst)
if (lib_cell->isLevelShifter()) {
return STD_LEVEL_SHIFT;
}
if (lib_cell->hasSequentials()) {
if (lib_cell->isSequential()) {
return STD_SEQUENTIAL;
}
if (lib_cell->portCount() == 0) {
Expand Down
2 changes: 1 addition & 1 deletion src/dft/src/cells/ScanCellFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ TypeOfCell IdentifyCell(odb::dbInst* inst, sta::dbSta* sta)
sta::dbNetwork* db_network = sta->getDbNetwork();
sta::LibertyCell* liberty_cell
= GetLibertyCell(inst->getMaster(), db_network);
if (liberty_cell != nullptr && liberty_cell->hasSequentials()
if (liberty_cell != nullptr && liberty_cell->isSequential()
&& !inst->getMaster()->isBlock()) {
// we assume that we are only dealing with one bit cells, but in the future
// we could deal with multibit cells too
Expand Down
4 changes: 2 additions & 2 deletions src/dft/src/replace/ScanReplace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ void ScanReplace::collectScanCellAvailable()
}

// We only care about sequential cells in DFT
if (!liberty_cell->hasSequentials()) {
if (!liberty_cell->isSequential()) {
continue;
}

Expand Down Expand Up @@ -389,7 +389,7 @@ void ScanReplace::scanReplace(odb::dbBlock* block)
continue;
}

if (!from_liberty_cell->hasSequentials()
if (!from_liberty_cell->isSequential()
|| from_liberty_cell->isClockGate()) {
// If the cell is not sequential, then there is nothing to replace
continue;
Expand Down
2 changes: 1 addition & 1 deletion src/dft/src/utils/Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ bool IsSequentialCell(sta::dbNetwork* db_network, odb::dbInst* instance)
odb::dbMaster* master = instance->getMaster();
sta::Cell* master_cell = db_network->dbToSta(master);
sta::LibertyCell* liberty_cell = db_network->libertyCell(master_cell);
return liberty_cell->hasSequentials();
return liberty_cell->isSequential();
}

odb::dbInst* ReplaceCell(
Expand Down
2 changes: 1 addition & 1 deletion src/est/src/EstimateParasitics.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ proc check_corner_wire_caps { } {
set have_rc 1
foreach corner [sta::scenes] {
if { [est::wire_signal_capacitance $corner] == 0.0 } {
utl::warn EST 18 "wire capacitance for corner $corner is zero.\
utl::warn EST 18 "wire capacitance for corner [get_name $corner] is zero.\
Use the set_wire_rc command to set wire resistance and capacitance."
set have_rc 0
}
Expand Down
2 changes: 1 addition & 1 deletion src/gpl/src/mbff.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2183,7 +2183,7 @@ bool MBFF::IsValidTray(dbInst* tray)
return false;
}
const sta::LibertyCell* lib_cell = network_->testCell(cell);
if (lib_cell == nullptr || !lib_cell->hasSequentials()) {
if (lib_cell == nullptr || !lib_cell->isSequential()) {
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion src/gui/src/gui.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ proc save_clocktree_image { args } {
utl::error GUI 88 "-clock is required"
}

gui::save_clocktree_image $path $clock $scene $width $height
gui::save_clocktree_image $path $clock [get_name $scene] $width $height
}

sta::define_cmd_args "save_histogram_image" {
Expand Down
2 changes: 1 addition & 1 deletion src/gui/src/staDescriptors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ Descriptor::Properties LibertyCellDescriptor::getProperties(
}
add_if_true(props, "Dont Use", cell->dontUse());
props.push_back({"Filename", cell->filename()});
add_if_true(props, "Has Sequentials", cell->hasSequentials());
add_if_true(props, "Has Sequentials", cell->isSequential());
add_if_true(props, "Is Always On", cell->alwaysOn());
add_if_true(props, "Is Buffer", cell->isBuffer());
add_if_true(props, "Is Clock Cell", cell->isClockCell());
Expand Down
2 changes: 1 addition & 1 deletion src/par/src/ArtNetSpec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ void PartitionMgr::getFromODB(
if (!lib_cell) {
logger_->error(PAR, 56, "Liberty cell not found: {}", inst->getName());
}
if (lib_cell->hasSequentials()) {
if (lib_cell->isSequential()) {
num_seq++;
}
auto [it, inserted]
Expand Down
4 changes: 2 additions & 2 deletions src/par/src/TritonPart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1292,7 +1292,7 @@ void TritonPart::ReadNetlist(const std::string& fixed_file,
vertex_weights_.emplace_back(vwts);
if (master->isBlock()) {
vertex_types_.emplace_back(kMacro);
} else if (liberty_cell->hasSequentials()) {
} else if (liberty_cell->isSequential()) {
vertex_types_.emplace_back(kSeqStdCell);
} else {
vertex_types_.emplace_back(kCombStdCell);
Expand Down Expand Up @@ -1336,7 +1336,7 @@ void TritonPart::ReadNetlist(const std::string& fixed_file,
vertex_weights_.emplace_back(vwts);
if (master->isBlock()) {
vertex_types_.emplace_back(kMacro);
} else if (liberty_cell->hasSequentials()) {
} else if (liberty_cell->isSequential()) {
vertex_types_.emplace_back(kSeqStdCell);
} else {
vertex_types_.emplace_back(kCombStdCell);
Expand Down
6 changes: 3 additions & 3 deletions src/psm/test/zerosoc_pads.ok
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ The NOWIREEXTENSIONATPIN statement will be ignored. See file sky130hd_data/io/sk
########## IR report #################
Net : vdd
Corner : default
Total power : 8.97e-03 W
Total power : 8.80e-03 W
Supply voltage : 1.80e+00 V
Worstcase voltage: 1.80e+00 V
Average voltage : 1.80e+00 V
Average IR drop : 1.62e-03 V
Worstcase IR drop: 2.34e-03 V
Average IR drop : 1.58e-03 V
Worstcase IR drop: 2.29e-03 V
Percentage drop : 0.13 %
######################################
2 changes: 1 addition & 1 deletion src/ram/src/ram.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ void RamGen::findMasters()
return false;
}
auto cell = port->libertyCell();
if (!cell->hasSequentials()) {
if (!cell->isSequential()) {
return false;
}
bool has_latch_data = false;
Expand Down
2 changes: 1 addition & 1 deletion src/rmp/src/Restructure.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ void Restructure::removeConstCells()
auto master = inst->getMaster();
sta::LibertyCell* cell = open_sta_->getDbNetwork()->libertyCell(
open_sta_->getDbNetwork()->dbToSta(master));
if (cell->hasSequentials()) {
if (cell->isSequential()) {
continue;
}

Expand Down
2 changes: 1 addition & 1 deletion src/rsz/src/MoveTracker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2020,7 +2020,7 @@ void MoveTracker::printTopBinEndpoints(const std::string& title,
sta::Instance* inst = sta_->network()->instance(pin);
if (inst) {
sta::LibertyCell* cell = sta_->network()->libertyCell(inst);
if (cell && cell->hasSequentials()) {
if (cell && cell->isSequential()) {
// This is a sequential cell - check if pin is an output
if (sta_->network()->direction(pin)->isOutput()) {
startpoint_pin = pin;
Expand Down
6 changes: 3 additions & 3 deletions src/rsz/src/Resizer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ void equivCellPinsForSwapReport(utl::Logger* logger,
sta::LibertyPort* input_port,
LibertyPortVec& ports)
{
if (cell->hasSequentials() || cell->isIsolationCell()) {
if (cell->isSequential() || cell->isIsolationCell()) {
ports.clear();
return;
}
Expand Down Expand Up @@ -1573,7 +1573,7 @@ bool Resizer::isCombinational(sta::LibertyCell* cell) const
return false;
}
return (!cell->isClockGate() && !cell->isPad() && !cell->isMacro()
&& !cell->hasSequentials());
&& !cell->isSequential());
}

std::vector<sta::LibertyPort*> Resizer::libraryOutputPins(
Expand Down Expand Up @@ -3334,7 +3334,7 @@ bool Resizer::isRegister(sta::Vertex* vertex)
sta::LibertyPort* port = network_->libertyPort(vertex->pin());
if (port) {
sta::LibertyCell* cell = port->libertyCell();
return cell && cell->hasSequentials();
return cell && cell->isSequential();
}
return false;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rsz/src/move/SizeDownFanoutGenerator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ SizeDownFanoutOutputProfile buildOutputProfile(
sta::Slack computeDelayBudget(const SizeDownFanoutContext& ctx,
const SizeDownFanoutLoadContext& load_ctx)
{
if (load_ctx.load_cell->hasSequentials()) {
if (load_ctx.load_cell->isSequential()) {
const sta::Slack worst_output_slack
= getWorstOutputSlack(ctx, load_ctx.load_inst);
debugPrint(
Expand Down Expand Up @@ -514,7 +514,7 @@ float computeWorstDelayChange(const SizeDownFanoutContext& ctx,
const float new_load_delay = ctx.resizer.gateDelay(
output_port, profile.output_caps[output_index], ctx.scene, ctx.min_max);
const float delay_change
= load_ctx.load_cell->hasSequentials()
= load_ctx.load_cell->isSequential()
? new_load_delay - profile.output_delays[output_index]
: new_load_delay + drvr_delta_delay
- profile.output_delays[output_index];
Expand Down
2 changes: 1 addition & 1 deletion src/rsz/src/move/SwapPinsGenerator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ void SwapPinsGenerator::equivCellPins(const sta::LibertyCell* cell,
sta::LibertyPort* input_port,
LibertyPortVec& ports) const
{
if (cell->hasSequentials() || cell->isIsolationCell()) {
if (cell->isSequential() || cell->isIsolationCell()) {
ports.clear();
return;
}
Expand Down
2 changes: 1 addition & 1 deletion src/sta
Submodule sta updated 56 files
+7 −0 .cursor/rules/cpp-coding-standards.mdc
+1 −1 .github/workflows/ci.yml
+169 −187 dcalc/DmpCeff.cc
+28 −18 dcalc/DmpCeff.hh
+30 −32 dcalc/GraphDelayCalc.cc
+5 −0 doc/ApiChanges.txt
+1 −1 doc/ChangeLog.txt
+1,309 −1,306 doc/OpenSTA.fodt
+93 −21 graph/Graph.cc
+2 −2 include/sta/ConcreteLibrary.hh
+1 −1 include/sta/ConcreteNetwork.hh
+30 −18 include/sta/Graph.hh
+2 −0 include/sta/GraphClass.hh
+6 −1 include/sta/Liberty.hh
+1 −0 include/sta/Network.hh
+6 −0 include/sta/Property.hh
+1 −0 include/sta/Sdc.hh
+14 −14 include/sta/Search.hh
+4 −4 include/sta/SearchPred.hh
+15 −1 liberty/Liberty.cc
+1 −1 liberty/LibertyWriter.cc
+3 −0 liberty/TimingArc.cc
+1 −1 liberty/test/cpp/TestLibertyClasses.cc
+3 −3 liberty/test/cpp/TestLibertyStaBasics.cc
+2 −2 liberty/test/cpp/TestLibertyStaBasicsB.cc
+2 −2 liberty/test/cpp/TestLibertyStaCallbacks.cc
+1 −1 network/ConcreteLibrary.cc
+10 −0 network/Network.cc
+47 −19 power/Power.cc
+2 −0 power/Power.hh
+1 −1 power/test/cpp/TestPower.cc
+12 −0 sdc/Sdc.cc
+2 −2 sdc/Sdc.tcl
+2 −10 search/Bfs.cc
+97 −70 search/Genclks.cc
+17 −9 search/Genclks.hh
+1 −10 search/Latches.cc
+1 −40 search/Levelize.cc
+0 −2 search/Levelize.hh
+44 −7 search/PathEnum.cc
+27 −0 search/Property.cc
+16 −0 search/Property.i
+154 −141 search/Search.cc
+14 −0 search/Search.i
+16 −6 search/Sta.cc
+1 −1 search/test/search_corner_skew.tcl
+15 −6 tcl/CmdArgs.tcl
+4 −0 tcl/Property.tcl
+15 −4 tcl/Sta.tcl
+35 −71 tcl/StaTclTypes.i
+6 −0 test/get_scenes.ok
+20 −0 test/get_scenes.tcl
+112 −0 test/input_delay_ref_pin_rebuild.ok
+28 −0 test/input_delay_ref_pin_rebuild.tcl
+2 −0 test/regression_vars.tcl
+3 −6 verilog/VerilogReader.cc
2 changes: 1 addition & 1 deletion src/syn/src/flow/combinational_mapper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ static void buildIndex(sta::Network* network,
sta::LibertyCellIterator cell_iter(lib);
while (cell_iter.hasNext()) {
sta::LibertyCell* cell = cell_iter.next();
if (cell->hasSequentials()) {
if (cell->isSequential()) {
debugPrint(logger,
utl::SYN,
"cm",
Expand Down
2 changes: 1 addition & 1 deletion src/syn/src/flow/liveness.cc
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ void livenessOpt(Graph& g, utl::Logger* logger, bool replace_combinational)

bool is_register = inst->is<Dff>();
if (auto* t = inst->try_as<Target>()) {
if (t->cell() && t->cell()->hasSequentials()) {
if (t->cell() && t->cell()->isSequential()) {
is_register = true;
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/syn/src/flow/opt_gatefusion.cc
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ static CellIndex buildIndex(sta::Network* network,
sta::LibertyCellIterator cell_iter(lib);
while (cell_iter.hasNext()) {
sta::LibertyCell* cell = cell_iter.next();
if (syn.dontUse(cell) || cell->hasSequentials()) {
if (syn.dontUse(cell) || cell->isSequential()) {
continue;
}

Expand Down
2 changes: 1 addition & 1 deletion src/syn/src/flow/sequential_mapper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ static int inputPortPosition(sta::LibertyCell* cell, sta::LibertyPort* target)

static bool detectCell(sta::LibertyCell* cell, MapTarget& result)
{
if (!cell->hasSequentials()) {
if (!cell->isSequential()) {
return false;
}
auto& seqs = cell->sequentials();
Expand Down
2 changes: 1 addition & 1 deletion src/syn/src/ir/Instance.cc
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,7 @@ bool Instance::hasState() const
case EntryType::kOther:
return true;
case EntryType::kTarget:
return static_cast<const Target*>(this)->cell()->hasSequentials();
return static_cast<const Target*>(this)->cell()->isSequential();
default:
return false;
}
Expand Down
2 changes: 1 addition & 1 deletion src/syn/src/ir/TritModel.cc
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,7 @@ void TritModel::encodeInstance(const Instance* inst)
} else if (inst->is<Target>()) {
auto* op = inst->as<Target>();
sta::LibertyCell* cell = op->cell();
if (!cell->hasSequentials()) {
if (!cell->isSequential()) {
// Build port→index map for inputs, collect output ports.
std::vector<sta::LibertyPort*> in_ports;
std::vector<sta::LibertyPort*> out_ports;
Expand Down
2 changes: 1 addition & 1 deletion src/web/src/request_handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1263,7 +1263,7 @@ static GateClass classifyGate(sta::dbNetwork* network, odb::dbInst* inst)
return result;
}
sta::LibertyCell* cell = network->libertyCell(inst);
if (cell == nullptr || cell->hasSequentials() || cell->isClockGate()
if (cell == nullptr || cell->isSequential() || cell->isClockGate()
|| cell->isMacro()) {
return result;
}
Expand Down
Loading