StdStringSeq -> StringSeq
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
4f540792a0
commit
859982bdc7
|
|
@ -84,10 +84,10 @@ isDelayCalcName(const std::string &name)
|
|||
return delay_calcs.contains(name);
|
||||
}
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
delayCalcNames()
|
||||
{
|
||||
StdStringSeq names;
|
||||
StringSeq names;
|
||||
for (const auto &[name, make_dcalc] : delay_calcs)
|
||||
names.push_back(name);
|
||||
return names;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
%inline %{
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
delay_calc_names()
|
||||
{
|
||||
return sta::delayCalcNames();
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ StaState::clk_network__ moved to Mode
|
|||
StaState::parasitics_ moved to Scene
|
||||
|
||||
Sta::findPathEnds group_paths arg has been changed from PathGroupNameSet*
|
||||
to StdStringSeq&.
|
||||
to StringSeq&.
|
||||
|
||||
Sta::isClock has been removed. Use mode->clkNetwork()->isClock instead.
|
||||
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ to remove paths through identical pins and rise/fall edges.
|
|||
Instances now have pins for verilog netlist power/ground connections,
|
||||
|
||||
Sta::findPathEnds group_paths arg has been changed from PathGroupNameSet*
|
||||
to StdStringSeq&.
|
||||
to StringSeq&.
|
||||
|
||||
Release 2.6.1 2025/03/30
|
||||
-------------------------
|
||||
|
|
|
|||
|
|
@ -229,12 +229,12 @@ arc_delays(TimingArc *arc)
|
|||
return delays;
|
||||
}
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
arc_delay_strings(TimingArc *arc,
|
||||
int digits)
|
||||
{
|
||||
Sta *sta = Sta::sta();
|
||||
StdStringSeq delays;
|
||||
StringSeq delays;
|
||||
DcalcAPIndex ap_count = sta->dcalcAnalysisPtCount();
|
||||
for (DcalcAPIndex ap_index = 0; ap_index < ap_count; ap_index++)
|
||||
delays.push_back(delayAsString(sta->arcDelay(self, arc, ap_index),
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ registerDelayCalc(const std::string &name,
|
|||
MakeArcDelayCalc maker);
|
||||
bool
|
||||
isDelayCalcName(const std::string &name);
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
delayCalcNames();
|
||||
void
|
||||
deleteDelayCalcs();
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public:
|
|||
bool unique_edges,
|
||||
float min_slack,
|
||||
float max_slack,
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ public:
|
|||
bool unique_edges,
|
||||
float slack_min,
|
||||
float slack_max,
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
@ -144,7 +144,7 @@ public:
|
|||
PathGroup *findPathGroup(const Clock *clock,
|
||||
const MinMax *min_max) const;
|
||||
PathGroupSeq pathGroups(const PathEnd *path_end) const;
|
||||
static StdStringSeq pathGroupNames(const PathEnd *path_end,
|
||||
static StringSeq pathGroupNames(const PathEnd *path_end,
|
||||
const StaState *sta);
|
||||
static const char *asyncPathGroupName() { return async_group_name_; }
|
||||
static const char *pathDelayGroupName() { return path_delay_group_name_; }
|
||||
|
|
@ -194,7 +194,7 @@ protected:
|
|||
StdStringSet &group_names) const;
|
||||
static GroupPath *groupPathTo(const PathEnd *path_end,
|
||||
const StaState *sta);
|
||||
StdStringSeq pathGroupNames();
|
||||
StringSeq pathGroupNames();
|
||||
|
||||
const Mode *mode_;
|
||||
int group_path_count_;
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ public:
|
|||
float slack_min,
|
||||
float slack_max,
|
||||
bool sort_by_slack,
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ class GraphLoop;
|
|||
using ModeNameMap = std::map<std::string, Mode*>;
|
||||
using SceneNameMap = std::map<std::string, Scene*>;
|
||||
using SlowDrvrIterator = Iterator<Instance*>;
|
||||
using CheckError = StdStringSeq;
|
||||
using CheckError = StringSeq;
|
||||
using CheckErrorSeq = std::vector<CheckError*>;
|
||||
enum class CmdNamespace { sta, sdc };
|
||||
using ParasiticsNameMap = std::map<std::string, Parasitics*>;
|
||||
|
|
@ -125,11 +125,11 @@ public:
|
|||
void setThreadCount(int thread_count);
|
||||
|
||||
// define_corners compatibility.
|
||||
void makeScenes(const StdStringSeq &scene_names);
|
||||
void makeScenes(const StringSeq &scene_names);
|
||||
void makeScene(const std::string &name,
|
||||
const std::string &mode_name,
|
||||
const StdStringSeq &liberty_min_files,
|
||||
const StdStringSeq &liberty_max_files,
|
||||
const StringSeq &liberty_min_files,
|
||||
const StringSeq &liberty_max_files,
|
||||
const std::string &spef_min_file,
|
||||
const std::string &spef_max_file);
|
||||
Scene *findScene(const std::string &name) const;
|
||||
|
|
@ -652,7 +652,7 @@ public:
|
|||
const Sdc *sdc) __attribute__ ((deprecated));
|
||||
bool isPathGroupName(const char *group_name,
|
||||
const Sdc *sdc) const;
|
||||
StdStringSeq pathGroupNames(const Sdc *sdc) const;
|
||||
StringSeq pathGroupNames(const Sdc *sdc) const;
|
||||
void resetPath(ExceptionFrom *from,
|
||||
ExceptionThruSeq *thrus,
|
||||
ExceptionTo *to,
|
||||
|
|
@ -965,7 +965,7 @@ public:
|
|||
bool sort_by_slack,
|
||||
// Path groups to report.
|
||||
// Empty list reports all groups.
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
// Predicates to filter the type of path
|
||||
// ends returned.
|
||||
bool setup,
|
||||
|
|
@ -975,7 +975,7 @@ public:
|
|||
bool clk_gating_setup,
|
||||
bool clk_gating_hold);
|
||||
void setReportPathFormat(ReportPathFormat format);
|
||||
void setReportPathFieldOrder(const StdStringSeq &field_names);
|
||||
void setReportPathFieldOrder(const StringSeq &field_names);
|
||||
void setReportPathFields(bool report_input_pin,
|
||||
bool report_hier_pins,
|
||||
bool report_net,
|
||||
|
|
@ -1582,8 +1582,8 @@ protected:
|
|||
void setThreadCount1(int thread_count);
|
||||
void updateLibertyScenes();
|
||||
void updateSceneLiberty(Scene *scene,
|
||||
const StdStringSeq &liberty_min_files,
|
||||
const StdStringSeq &liberty_max_files);
|
||||
const StringSeq &liberty_min_files,
|
||||
const StringSeq &liberty_max_files);
|
||||
|
||||
Scene *makeScene(const std::string &name,
|
||||
Mode *mode,
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
namespace sta {
|
||||
|
||||
using StdStringSeq = std::vector<std::string>;
|
||||
using StringSeq = std::vector<std::string>;
|
||||
using StdStringSet = std::set<std::string>;
|
||||
|
||||
inline bool
|
||||
|
|
@ -206,7 +206,7 @@ void
|
|||
trimRight(std::string &str);
|
||||
|
||||
// Spit text into delimiter separated tokens and skip whitepace.
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
parseTokens(const std::string &s,
|
||||
const char delimiter);
|
||||
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@ namespace sta {
|
|||
typedef int Tcl_Size;
|
||||
#endif
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
tclListSeqStdString(Tcl_Obj *const source,
|
||||
Tcl_Interp *interp);
|
||||
StdStringSeq *
|
||||
StringSeq *
|
||||
tclListSeqStdStringPtr(Tcl_Obj *const source,
|
||||
Tcl_Interp *interp);
|
||||
StdStringSet *
|
||||
|
|
|
|||
|
|
@ -1894,8 +1894,8 @@ LibertyReader::makeTimingArcs(LibertyCell *cell,
|
|||
|
||||
LibertyPort *related_output_port = findLibertyPort(cell, timing_group,
|
||||
"related_output_pin");
|
||||
StdStringSeq related_port_names = findAttributStrings(timing_group, "related_pin");
|
||||
StdStringSeq related_bus_names=findAttributStrings(timing_group,"related_bus_pins");
|
||||
StringSeq related_port_names = findAttributStrings(timing_group, "related_pin");
|
||||
StringSeq related_bus_names=findAttributStrings(timing_group,"related_bus_pins");
|
||||
TimingType timing_type = timing_attrs->timingType();
|
||||
|
||||
for (LibertyPort *to_port : ports) {
|
||||
|
|
@ -2743,7 +2743,7 @@ LibertyReader::findLibertyPort(LibertyCell *cell,
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
LibertyReader::findAttributStrings(const LibertyGroup *group,
|
||||
const char *name_attr)
|
||||
{
|
||||
|
|
@ -2754,7 +2754,7 @@ LibertyReader::findAttributStrings(const LibertyGroup *group,
|
|||
return parseTokens(*strings, ' ');
|
||||
}
|
||||
}
|
||||
return StdStringSeq();
|
||||
return StringSeq();
|
||||
}
|
||||
|
||||
LibertyPortSeq
|
||||
|
|
@ -2763,7 +2763,7 @@ LibertyReader::findLibertyPorts(LibertyCell *cell,
|
|||
const char *port_name_attr)
|
||||
{
|
||||
LibertyPortSeq ports;
|
||||
StdStringSeq port_names = findAttributStrings(group, port_name_attr);
|
||||
StringSeq port_names = findAttributStrings(group, port_name_attr);
|
||||
for (const std::string &port_name : port_names) {
|
||||
LibertyPort *port = findPort(cell, port_name.c_str());
|
||||
if (port)
|
||||
|
|
@ -2915,40 +2915,40 @@ LibertyReader::readStatetable(LibertyCell *cell,
|
|||
const char *input_ports_arg = statetable_group->firstName();
|
||||
const char *internal_ports_arg = statetable_group->params().size() >= 2
|
||||
? statetable_group->secondName() : nullptr;
|
||||
StdStringSeq input_ports;
|
||||
StringSeq input_ports;
|
||||
if (input_ports_arg)
|
||||
input_ports = parseTokens(input_ports_arg, ' ');
|
||||
StdStringSeq internal_ports;
|
||||
StringSeq internal_ports;
|
||||
if (internal_ports_arg)
|
||||
internal_ports = parseTokens(internal_ports_arg, ' ');
|
||||
|
||||
const LibertySimpleAttr *table_attr = statetable_group->findSimpleAttr("table");
|
||||
if (table_attr) {
|
||||
const std::string *table_str = table_attr->stringValue();
|
||||
StdStringSeq table_rows = parseTokens(table_str->c_str(), ',');
|
||||
StringSeq table_rows = parseTokens(table_str->c_str(), ',');
|
||||
size_t input_count = input_ports.size();
|
||||
size_t internal_count = internal_ports.size();
|
||||
StatetableRows table;
|
||||
for (const std::string &row : table_rows) {
|
||||
const StdStringSeq row_groups = parseTokens(row, ':');
|
||||
const StringSeq row_groups = parseTokens(row, ':');
|
||||
if (row_groups.size() != 3) {
|
||||
libWarn(1300, table_attr, "table row must have 3 groups separated by ':'.");
|
||||
break;
|
||||
}
|
||||
StdStringSeq inputs = parseTokens(row_groups[0], ' ');
|
||||
StringSeq inputs = parseTokens(row_groups[0], ' ');
|
||||
if (inputs.size() != input_count) {
|
||||
libWarn(1301,table_attr,"table row has %zu input values but %zu are required.",
|
||||
inputs.size(), input_count);
|
||||
break;
|
||||
}
|
||||
StdStringSeq currents = parseTokens(row_groups[1], ' ');
|
||||
StringSeq currents = parseTokens(row_groups[1], ' ');
|
||||
if (currents.size() != internal_count) {
|
||||
libWarn(1302,table_attr,
|
||||
"table row has %zu current values but %zu are required.",
|
||||
currents.size(), internal_count);
|
||||
break;
|
||||
}
|
||||
StdStringSeq nexts = parseTokens(row_groups[2], ' ');
|
||||
StringSeq nexts = parseTokens(row_groups[2], ' ');
|
||||
if (nexts.size() != internal_count) {
|
||||
libWarn(1303, table_attr, "table row has %zu next values but %zu are required.",
|
||||
nexts.size(), internal_count);
|
||||
|
|
@ -3087,7 +3087,7 @@ static EnumNameMap<StateInternalValue> state_internal_value_name_map =
|
|||
};
|
||||
|
||||
StateInputValues
|
||||
LibertyReader::parseStateInputValues(StdStringSeq &inputs,
|
||||
LibertyReader::parseStateInputValues(StringSeq &inputs,
|
||||
const LibertySimpleAttr *attr)
|
||||
{
|
||||
StateInputValues input_values;
|
||||
|
|
@ -3106,7 +3106,7 @@ LibertyReader::parseStateInputValues(StdStringSeq &inputs,
|
|||
}
|
||||
|
||||
StateInternalValues
|
||||
LibertyReader::parseStateInternalValues(StdStringSeq &states,
|
||||
LibertyReader::parseStateInternalValues(StringSeq &states,
|
||||
const LibertySimpleAttr *attr)
|
||||
{
|
||||
StateInternalValues state_values;
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ public:
|
|||
|
||||
LibertyPort *findPort(LibertyCell *cell,
|
||||
const char *port_name);
|
||||
StdStringSeq findAttributStrings(const LibertyGroup *group,
|
||||
StringSeq findAttributStrings(const LibertyGroup *group,
|
||||
const char *name_attr);
|
||||
|
||||
protected:
|
||||
|
|
@ -402,9 +402,9 @@ protected:
|
|||
|
||||
float defaultCap(LibertyPort *port);
|
||||
void visitPorts(std::function<void (LibertyPort *port)> func);
|
||||
StateInputValues parseStateInputValues(StdStringSeq &inputs,
|
||||
StateInputValues parseStateInputValues(StringSeq &inputs,
|
||||
const LibertySimpleAttr *attr);
|
||||
StateInternalValues parseStateInternalValues(StdStringSeq &states,
|
||||
StateInternalValues parseStateInternalValues(StringSeq &states,
|
||||
const LibertySimpleAttr *attr);
|
||||
|
||||
void getAttrInt(const LibertySimpleAttr *attr,
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ sta::SpefParse::error(const location_type &loc,
|
|||
char *string;
|
||||
int integer;
|
||||
float number;
|
||||
sta::StdStringSeq *std_string_seq;
|
||||
sta::StringSeq *std_string_seq;
|
||||
sta::PortDirection *port_dir;
|
||||
sta::SpefRspfPi *pi;
|
||||
sta::SpefTriple *triple;
|
||||
|
|
@ -220,7 +220,7 @@ design_flow:
|
|||
|
||||
qstrings:
|
||||
QSTRING
|
||||
{ $$ = new sta::StdStringSeq;
|
||||
{ $$ = new sta::StringSeq;
|
||||
$$->push_back($1);
|
||||
sta::stringDelete($1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ SpefReader::portDirection(char *spef_dir)
|
|||
}
|
||||
|
||||
void
|
||||
SpefReader::setDesignFlow(StdStringSeq *flow)
|
||||
SpefReader::setDesignFlow(StringSeq *flow)
|
||||
{
|
||||
design_flow_ = std::move(*flow);
|
||||
delete flow;
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ public:
|
|||
void makeNameMapEntry(const char *index,
|
||||
const char *name);
|
||||
const char *nameMapLookup(const char *index);
|
||||
void setDesignFlow(StdStringSeq *flow_keys);
|
||||
void setDesignFlow(StringSeq *flow_keys);
|
||||
Pin *findPin(char *name);
|
||||
Net *findNet(const char *name);
|
||||
void rspfBegin(Net *net,
|
||||
|
|
@ -139,7 +139,7 @@ private:
|
|||
float res_scale_;
|
||||
float induct_scale_;
|
||||
SpefNameMap name_map_;
|
||||
StdStringSeq design_flow_;
|
||||
StringSeq design_flow_;
|
||||
Parasitics *parasitics_;
|
||||
Parasitic *parasitic_;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1580,12 +1580,12 @@ filter_timing_arcs(const char *property,
|
|||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
group_path_names()
|
||||
{
|
||||
Sta *sta = Sta::sta();
|
||||
Sdc *sdc = sta->cmdSdc();
|
||||
StdStringSeq pg_names;
|
||||
StringSeq pg_names;
|
||||
for (auto const& [name, group] : sdc->groupPaths())
|
||||
pg_names.push_back(name);
|
||||
return pg_names;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ namespace sta {
|
|||
|
||||
class ClkNetwork;
|
||||
|
||||
using CheckError = StdStringSeq;
|
||||
using CheckError = StringSeq;
|
||||
using CheckErrorSeq = std::vector<CheckError*>;
|
||||
|
||||
class CheckTiming : public StaState
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ Mode::makePathGroups(int group_path_count,
|
|||
bool unique_edges,
|
||||
float slack_min,
|
||||
float slack_max,
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ PathGroups::PathGroups(int group_path_count,
|
|||
bool unique_edges,
|
||||
float slack_min,
|
||||
float slack_max,
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
@ -479,11 +479,11 @@ PathGroups::pathGroups(const PathEnd *path_end) const
|
|||
}
|
||||
|
||||
// Mirrors PathGroups::pathGroup.
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
PathGroups::pathGroupNames(const PathEnd *path_end,
|
||||
const StaState *sta)
|
||||
{
|
||||
StdStringSeq group_names;
|
||||
StringSeq group_names;
|
||||
const char *group_name = nullptr;
|
||||
const Search *search = sta->search();
|
||||
ExceptionPathSeq group_paths = search->groupPathsTo(path_end);
|
||||
|
|
@ -576,14 +576,14 @@ PathGroups::pushEnds(PathEndSeq &path_ends)
|
|||
}
|
||||
}
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
PathGroups::pathGroupNames()
|
||||
{
|
||||
std::set<std::string> group_names1;
|
||||
const Sdc *sdc = mode_->sdc();
|
||||
for (const auto& [name, group] : sdc->groupPaths())
|
||||
group_names1.insert(name);
|
||||
StdStringSeq group_names2;
|
||||
StringSeq group_names2;
|
||||
for (const std::string &name : group_names1)
|
||||
group_names2.push_back(name);
|
||||
sort(group_names2);
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ ReportPath::findField(const char *name) const
|
|||
}
|
||||
|
||||
void
|
||||
ReportPath::setReportFieldOrder(const StdStringSeq &field_names)
|
||||
ReportPath::setReportFieldOrder(const StringSeq &field_names)
|
||||
{
|
||||
// Disable all fields.
|
||||
for (ReportField *field : fields_)
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
virtual ~ReportPath();
|
||||
ReportPathFormat pathFormat() const { return format_; }
|
||||
void setPathFormat(ReportPathFormat format);
|
||||
void setReportFieldOrder(const StdStringSeq &field_names);
|
||||
void setReportFieldOrder(const StringSeq &field_names);
|
||||
void setReportFields(bool report_input_pin,
|
||||
bool report_hier_pins,
|
||||
bool report_net,
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@ Search::findPathEnds(ExceptionFrom *from,
|
|||
float slack_min,
|
||||
float slack_max,
|
||||
bool sort_by_slack,
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ endpoint_slack(const Pin *pin,
|
|||
}
|
||||
}
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
path_group_names()
|
||||
{
|
||||
Sta *sta = Sta::sta();
|
||||
|
|
@ -359,7 +359,7 @@ find_path_ends(ExceptionFrom *from,
|
|||
float slack_min,
|
||||
float slack_max,
|
||||
bool sort_by_slack,
|
||||
StdStringSeq path_groups,
|
||||
StringSeq path_groups,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
@ -395,7 +395,7 @@ set_report_path_format(ReportPathFormat format)
|
|||
}
|
||||
|
||||
void
|
||||
set_report_path_field_order(const StdStringSeq &field_names)
|
||||
set_report_path_field_order(const StringSeq &field_names)
|
||||
{
|
||||
Sta::sta()->setReportPathFieldOrder(field_names);
|
||||
}
|
||||
|
|
@ -740,8 +740,8 @@ write_timing_model_cmd(const char *lib_name,
|
|||
void
|
||||
define_scene_cmd(const char *name,
|
||||
const char *mode_name,
|
||||
const StdStringSeq liberty_min_files,
|
||||
const StdStringSeq liberty_max_files,
|
||||
const StringSeq liberty_min_files,
|
||||
const StringSeq liberty_max_files,
|
||||
const char *spef_min_file,
|
||||
const char *spef_max_file)
|
||||
{
|
||||
|
|
@ -752,7 +752,7 @@ define_scene_cmd(const char *name,
|
|||
}
|
||||
|
||||
void
|
||||
define_scenes_cmd(const StdStringSeq &scene_names)
|
||||
define_scenes_cmd(const StringSeq &scene_names)
|
||||
{
|
||||
Sta *sta = Sta::sta();
|
||||
sta->makeScenes(scene_names);
|
||||
|
|
|
|||
|
|
@ -2075,10 +2075,10 @@ Sta::isPathGroupName(const char *group_name,
|
|||
|| stringEq(group_name, PathGroups::unconstrainedGroupName());
|
||||
}
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
Sta::pathGroupNames(const Sdc *sdc) const
|
||||
{
|
||||
StdStringSeq names;
|
||||
StringSeq names;
|
||||
for (const Clock *clk : sdc->clocks())
|
||||
names.push_back(clk->name());
|
||||
|
||||
|
|
@ -2450,7 +2450,7 @@ void
|
|||
Sta::makeDefaultScene()
|
||||
{
|
||||
const char *name = "default";
|
||||
StdStringSeq scene_names;
|
||||
StringSeq scene_names;
|
||||
scene_names.push_back(name);
|
||||
Parasitics *parasitics = makeConcreteParasitics(name, "");
|
||||
|
||||
|
|
@ -2468,7 +2468,7 @@ Sta::makeDefaultScene()
|
|||
|
||||
// define_corners (before read_liberty).
|
||||
void
|
||||
Sta::makeScenes(const StdStringSeq &scene_names)
|
||||
Sta::makeScenes(const StringSeq &scene_names)
|
||||
{
|
||||
if (scene_names.size() > scene_count_max)
|
||||
report_->error(1553, "maximum scene count exceeded");
|
||||
|
|
@ -2490,8 +2490,8 @@ Sta::makeScenes(const StdStringSeq &scene_names)
|
|||
void
|
||||
Sta::makeScene(const std::string &name,
|
||||
const std::string &mode_name,
|
||||
const StdStringSeq &liberty_min_files,
|
||||
const StdStringSeq &liberty_max_files,
|
||||
const StringSeq &liberty_min_files,
|
||||
const StringSeq &liberty_max_files,
|
||||
const std::string &spef_min_file,
|
||||
const std::string &spef_max_file)
|
||||
{
|
||||
|
|
@ -2598,12 +2598,12 @@ Sta::findScenes(const std::string &name,
|
|||
|
||||
void
|
||||
Sta::updateSceneLiberty(Scene *scene,
|
||||
const StdStringSeq &liberty_min_files,
|
||||
const StdStringSeq &liberty_max_files)
|
||||
const StringSeq &liberty_min_files,
|
||||
const StringSeq &liberty_max_files)
|
||||
{
|
||||
StdStringSet warned_files;
|
||||
for (const MinMax *min_max : MinMax::range()) {
|
||||
const StdStringSeq &liberty_files = min_max == MinMax::min()
|
||||
const StringSeq &liberty_files = min_max == MinMax::min()
|
||||
? liberty_min_files
|
||||
: liberty_max_files;
|
||||
for (const std::string &lib_file : liberty_files) {
|
||||
|
|
@ -2678,7 +2678,7 @@ Sta::findPathEnds(ExceptionFrom *from,
|
|||
float slack_min,
|
||||
float slack_max,
|
||||
bool sort_by_slack,
|
||||
StdStringSeq &group_names,
|
||||
StringSeq &group_names,
|
||||
bool setup,
|
||||
bool hold,
|
||||
bool recovery,
|
||||
|
|
@ -2729,7 +2729,7 @@ Sta::setReportPathFormat(ReportPathFormat format)
|
|||
}
|
||||
|
||||
void
|
||||
Sta::setReportPathFieldOrder(const StdStringSeq &field_names)
|
||||
Sta::setReportPathFieldOrder(const StringSeq &field_names)
|
||||
{
|
||||
report_path_->setReportFieldOrder(field_names);
|
||||
}
|
||||
|
|
@ -3214,7 +3214,7 @@ void
|
|||
EndpointPathEndVisitor::visit(PathEnd *path_end)
|
||||
{
|
||||
if (path_end->minMax(sta_) == min_max_) {
|
||||
StdStringSeq group_names = PathGroups::pathGroupNames(path_end, sta_);
|
||||
StringSeq group_names = PathGroups::pathGroupNames(path_end, sta_);
|
||||
for (std::string &group_name : group_names) {
|
||||
if (group_name == path_group_name_) {
|
||||
Slack end_slack = path_end->slack(sta_);
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ WritePathSpice::writeHeader()
|
|||
void
|
||||
WritePathSpice::writePrintStmt()
|
||||
{
|
||||
StdStringSeq node_names;
|
||||
StringSeq node_names;
|
||||
for (Stage stage = stageFirst(); stage <= stageLast(); stage++) {
|
||||
node_names.push_back(stageDrvrPinName(stage));
|
||||
node_names.push_back(stageLoadPinName(stage));
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ WriteSpice::writeHeader(std::string &title,
|
|||
}
|
||||
|
||||
void
|
||||
WriteSpice::writePrintStmt(StdStringSeq &node_names)
|
||||
WriteSpice::writePrintStmt(StringSeq &node_names)
|
||||
{
|
||||
streamPrint(spice_stream_, ".print tran");
|
||||
if (ckt_sim_ == CircuitSim::xyce) {
|
||||
|
|
@ -176,7 +176,7 @@ WriteSpice::replaceFileExt(std::string filename,
|
|||
|
||||
// Write gnuplot command file for use with xyce csv file.
|
||||
void
|
||||
WriteSpice::writeGnuplotFile(StdStringSeq &node_nanes)
|
||||
WriteSpice::writeGnuplotFile(StringSeq &node_nanes)
|
||||
{
|
||||
std::string gnuplot_filename = replaceFileExt(spice_filename_, "gnuplot");
|
||||
std::string csv_filename = replaceFileExt(spice_filename_, "csv");
|
||||
|
|
@ -209,7 +209,7 @@ WriteSpice::writeSubckts(StdStringSet &cell_names)
|
|||
std::string line;
|
||||
while (std::getline(lib_subckts_stream, line)) {
|
||||
// .subckt <cell_name> [args..]
|
||||
StdStringSeq tokens = parseTokens(line, ' ');
|
||||
StringSeq tokens = parseTokens(line, ' ');
|
||||
if (tokens.size() >= 2
|
||||
&& stringEqual(tokens[0].c_str(), ".subckt")) {
|
||||
const char *cell_name = tokens[1].c_str();
|
||||
|
|
@ -256,11 +256,11 @@ WriteSpice::writeSubckts(StdStringSet &cell_names)
|
|||
|
||||
void
|
||||
WriteSpice::recordSpicePortNames(const char *cell_name,
|
||||
StdStringSeq &tokens)
|
||||
StringSeq &tokens)
|
||||
{
|
||||
LibertyCell *cell = network_->findLibertyCell(cell_name);
|
||||
if (cell) {
|
||||
StdStringSeq &spice_port_names = cell_spice_port_names_[cell_name];
|
||||
StringSeq &spice_port_names = cell_spice_port_names_[cell_name];
|
||||
for (size_t i = 2; i < tokens.size(); i++) {
|
||||
const char *port_name = tokens[i].c_str();
|
||||
LibertyPort *port = cell->findLibertyPort(port_name);
|
||||
|
|
@ -285,7 +285,7 @@ WriteSpice::findCellSubckts(StdStringSet &cell_names)
|
|||
std::string line;
|
||||
while (std::getline(lib_subckts_stream, line)) {
|
||||
// .subckt <cell_name> [args..]
|
||||
StdStringSeq tokens = parseTokens(line, ' ');
|
||||
StringSeq tokens = parseTokens(line, ' ');
|
||||
if (tokens.size() >= 2
|
||||
&& stringEqual(tokens[0].c_str(), ".subckt")) {
|
||||
const char *cell_name = tokens[1].c_str();
|
||||
|
|
@ -298,7 +298,7 @@ WriteSpice::findCellSubckts(StdStringSet &cell_names)
|
|||
else {
|
||||
// Process previous statement.
|
||||
if (tolower(stmt[0]) == 'x') {
|
||||
StdStringSeq tokens = parseTokens(line, ' ');
|
||||
StringSeq tokens = parseTokens(line, ' ');
|
||||
std::string &subckt_cell = tokens[tokens.size() - 1];
|
||||
cell_names.insert(subckt_cell);
|
||||
}
|
||||
|
|
@ -323,7 +323,7 @@ WriteSpice::writeSubcktInst(const Instance *inst)
|
|||
const char *inst_name = network_->pathName(inst);
|
||||
LibertyCell *cell = network_->libertyCell(inst);
|
||||
const char *cell_name = cell->name();
|
||||
StdStringSeq &spice_port_names = cell_spice_port_names_[cell_name];
|
||||
StringSeq &spice_port_names = cell_spice_port_names_[cell_name];
|
||||
streamPrint(spice_stream_, "x%s", inst_name);
|
||||
for (std::string subckt_port_name : spice_port_names) {
|
||||
const char *subckt_port_cname = subckt_port_name.c_str();
|
||||
|
|
@ -351,7 +351,7 @@ WriteSpice::writeSubcktInstVoltSrcs(const Instance *inst,
|
|||
{
|
||||
LibertyCell *cell = network_->libertyCell(inst);
|
||||
const char *cell_name = cell->name();
|
||||
StdStringSeq &spice_port_names = cell_spice_port_names_[cell_name];
|
||||
StringSeq &spice_port_names = cell_spice_port_names_[cell_name];
|
||||
const char *inst_name = network_->pathName(inst);
|
||||
|
||||
debugPrint(debug_, "write_spice", 2, "subckt %s", cell->name());
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
namespace sta {
|
||||
|
||||
using ParasiticNodeMap = std::map<const ParasiticNode*, int>;
|
||||
using CellSpicePortNames = std::map<std::string, StdStringSeq>;
|
||||
using CellSpicePortNames = std::map<std::string, StringSeq>;
|
||||
using LibertyPortLogicValues = std::map<const LibertyPort*, LogicValue>;
|
||||
|
||||
// Utilities for writing a spice deck.
|
||||
|
|
@ -63,12 +63,12 @@ protected:
|
|||
void writeHeader(std::string &title,
|
||||
float max_time,
|
||||
float time_step);
|
||||
void writePrintStmt(StdStringSeq &node_names);
|
||||
void writeGnuplotFile(StdStringSeq &node_nanes);
|
||||
void writePrintStmt(StringSeq &node_names);
|
||||
void writeGnuplotFile(StringSeq &node_nanes);
|
||||
void writeSubckts(StdStringSet &cell_names);
|
||||
void findCellSubckts(StdStringSet &cell_names);
|
||||
void recordSpicePortNames(const char *cell_name,
|
||||
StdStringSeq &tokens);
|
||||
StringSeq &tokens);
|
||||
void writeSubcktInst(const Instance *inst);
|
||||
void writeSubcktInstVoltSrcs(const Instance *inst,
|
||||
LibertyPortLogicValues &port_values,
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace sta {
|
|||
void
|
||||
readXyceCsv(const char *csv_filename,
|
||||
// Return values.
|
||||
StdStringSeq &titles,
|
||||
StringSeq &titles,
|
||||
WaveformSeq &waveforms)
|
||||
{
|
||||
std::ifstream file(csv_filename);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ using WaveformSeq = std::vector<Table>;
|
|||
void
|
||||
readXyceCsv(const char *csv_filename,
|
||||
// Return values.
|
||||
StdStringSeq &titles,
|
||||
StringSeq &titles,
|
||||
WaveformSeq &waveforms);
|
||||
|
||||
} // namespace
|
||||
|
|
|
|||
|
|
@ -294,16 +294,16 @@ using namespace sta;
|
|||
$1 = tclListSetStdString($input, interp);
|
||||
}
|
||||
|
||||
%typemap(in) StdStringSeq {
|
||||
%typemap(in) StringSeq {
|
||||
$1 = tclListSeqStdString($input, interp);
|
||||
}
|
||||
|
||||
%typemap(in) const StdStringSeq & (StdStringSeq seq) {
|
||||
%typemap(in) const StringSeq & (StringSeq seq) {
|
||||
seq = tclListSeqStdString($input, interp);
|
||||
$1 = &seq;
|
||||
}
|
||||
|
||||
%typemap(in) StdStringSeq* {
|
||||
%typemap(in) StringSeq* {
|
||||
$1 = tclListSeqStdStringPtr($input, interp);
|
||||
}
|
||||
|
||||
|
|
@ -311,12 +311,12 @@ using namespace sta;
|
|||
$1 = tclListSetStdString($input, interp);
|
||||
}
|
||||
|
||||
%typemap(in) StdStringSeq {
|
||||
%typemap(in) StringSeq {
|
||||
$1 = tclListSeqStdString($input, interp);
|
||||
}
|
||||
|
||||
%typemap(out) StdStringSeq {
|
||||
StdStringSeq &strs = $1;
|
||||
%typemap(out) StringSeq {
|
||||
StringSeq &strs = $1;
|
||||
Tcl_Obj *list = Tcl_NewListObj(0, nullptr);
|
||||
for (const std::string &str : strs) {
|
||||
Tcl_Obj *obj = Tcl_NewStringObj(str.c_str(), str.size());
|
||||
|
|
|
|||
|
|
@ -30,14 +30,14 @@
|
|||
|
||||
namespace sta {
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
tclListSeqStdString(Tcl_Obj *const source,
|
||||
Tcl_Interp *interp)
|
||||
{
|
||||
Tcl_Size argc;
|
||||
Tcl_Obj **argv;
|
||||
|
||||
StdStringSeq seq;
|
||||
StringSeq seq;
|
||||
if (Tcl_ListObjGetElements(interp, source, &argc, &argv) == TCL_OK) {
|
||||
for (int i = 0; i < argc; i++) {
|
||||
int length;
|
||||
|
|
@ -48,7 +48,7 @@ tclListSeqStdString(Tcl_Obj *const source,
|
|||
return seq;
|
||||
}
|
||||
|
||||
StdStringSeq *
|
||||
StringSeq *
|
||||
tclListSeqStdStringPtr(Tcl_Obj *const source,
|
||||
Tcl_Interp *interp)
|
||||
{
|
||||
|
|
@ -56,7 +56,7 @@ tclListSeqStdStringPtr(Tcl_Obj *const source,
|
|||
Tcl_Obj **argv;
|
||||
|
||||
if (Tcl_ListObjGetElements(interp, source, &argc, &argv) == TCL_OK) {
|
||||
StdStringSeq *seq = new StdStringSeq;
|
||||
StringSeq *seq = new StringSeq;
|
||||
for (int i = 0; i < argc; i++) {
|
||||
int length;
|
||||
const char *str = Tcl_GetStringFromObj(argv[i], &length);
|
||||
|
|
|
|||
|
|
@ -265,11 +265,11 @@ trimRight(std::string &str)
|
|||
str.erase(str.find_last_not_of(" ") + 1);
|
||||
}
|
||||
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
split(const std::string &text,
|
||||
const std::string &delims)
|
||||
{
|
||||
StdStringSeq tokens;
|
||||
StringSeq tokens;
|
||||
auto start = text.find_first_not_of(delims);
|
||||
auto end = text.find_first_of(delims, start);
|
||||
while (end != std::string::npos) {
|
||||
|
|
@ -283,11 +283,11 @@ split(const std::string &text,
|
|||
}
|
||||
|
||||
// Parse space separated tokens.
|
||||
StdStringSeq
|
||||
StringSeq
|
||||
parseTokens(const std::string &s,
|
||||
const char delimiter)
|
||||
{
|
||||
StdStringSeq tokens;
|
||||
StringSeq tokens;
|
||||
size_t i = 0;
|
||||
while (i < s.size()) {
|
||||
while (i < s.size() && std::isspace(s[i]))
|
||||
|
|
|
|||
|
|
@ -535,7 +535,7 @@ VerilogReader::makeModuleInst(const std::string *module_vname,
|
|||
if (liberty_cell
|
||||
&& hasScalarNamedPortRefs(liberty_cell, pins)) {
|
||||
const int port_count = liberty_cell->portBitCount();
|
||||
StdStringSeq net_names(port_count);
|
||||
StringSeq net_names(port_count);
|
||||
for (VerilogNet *vnet : *pins) {
|
||||
VerilogNetPortRefScalarNet *vpin =
|
||||
dynamic_cast<VerilogNetPortRefScalarNet*>(vnet);
|
||||
|
|
@ -953,7 +953,7 @@ VerilogModuleInst::namedPins()
|
|||
|
||||
VerilogLibertyInst::VerilogLibertyInst(LibertyCell *cell,
|
||||
const std::string &inst_name,
|
||||
const StdStringSeq &net_names,
|
||||
const StringSeq &net_names,
|
||||
VerilogAttrStmtSeq *attr_stmts,
|
||||
const int line) :
|
||||
VerilogInst(inst_name, attr_stmts, line),
|
||||
|
|
@ -2008,7 +2008,7 @@ VerilogReader::makeLibertyInst(VerilogLibertyInst *lib_inst,
|
|||
network_->setAttribute(inst, entry->key(), entry->value());
|
||||
}
|
||||
}
|
||||
const StdStringSeq &net_names = lib_inst->netNames();
|
||||
const StringSeq &net_names = lib_inst->netNames();
|
||||
LibertyCellPortBitIterator port_iter(lib_cell);
|
||||
while (port_iter.hasNext()) {
|
||||
LibertyPort *port = port_iter.next();
|
||||
|
|
|
|||
|
|
@ -216,16 +216,16 @@ class VerilogLibertyInst : public VerilogInst
|
|||
public:
|
||||
VerilogLibertyInst(LibertyCell *cell,
|
||||
const std::string &inst_name,
|
||||
const StdStringSeq &net_names,
|
||||
const StringSeq &net_names,
|
||||
VerilogAttrStmtSeq *attr_stmts,
|
||||
const int line);
|
||||
virtual bool isLibertyInst() const { return true; }
|
||||
LibertyCell *cell() const { return cell_; }
|
||||
const StdStringSeq &netNames() const { return net_names_; }
|
||||
const StringSeq &netNames() const { return net_names_; }
|
||||
|
||||
private:
|
||||
LibertyCell *cell_;
|
||||
StdStringSeq net_names_;
|
||||
StringSeq net_names_;
|
||||
};
|
||||
|
||||
// Abstract base class for nets.
|
||||
|
|
|
|||
Loading…
Reference in New Issue