@@ -73,6 +73,7 @@ class ClkSkews;
7373class ReportField ;
7474class EquivCells ;
7575class StaSimObserver ;
76+ class LevelizeObserver ;
7677class GraphLoop ;
7778
7879using ModeNameMap = std::map<std::string, Mode*, std::less<>>;
@@ -83,6 +84,8 @@ using CheckErrorSeq = std::vector<CheckError*>;
8384enum class CmdNamespace { sta, sdc };
8485using ParasiticsNameMap = std::map<std::string, Parasitics*, std::less<>>;
8586using GraphLoopSeq = std::vector<GraphLoop*>;
87+ using ReportFieldGetValue = std::function<std::string (const Path *path,
88+ const StaState *sta)>;
8689
8790// Initialize sta functions that are not part of the Sta class.
8891void initSta ();
@@ -982,16 +985,16 @@ public:
982985 bool clk_gating_hold);
983986 void setReportPathFormat (ReportPathFormat format);
984987 void setReportPathFieldOrder (const StringSeq &field_names);
985- void setReportPathFields (bool report_input_pin,
986- bool report_hier_pins,
987- bool report_net,
988- bool report_cap,
989- bool report_slew,
990- bool report_fanout,
991- bool report_variation,
992- bool report_src_attr,
993- bool report_orig_name);
988+ void setReportPathFields (const StringSeq &fields);
994989 ReportField *findReportPathField (std::string_view name);
990+ ReportField *findReportPathFieldAbrev (std::string_view name);
991+ void makeReportPathField (std::string_view name,
992+ std::string_view name_abrev,
993+ std::string_view title,
994+ size_t width,
995+ bool left_justify,
996+ Unit *unit,
997+ const ReportFieldGetValue &get_value);
995998 void setReportPathDigits (int digits);
996999 void setReportPathNoSplit (bool no_split);
9971000 void reportPathEnd (PathEnd *end);
@@ -1327,6 +1330,10 @@ public:
13271330 // Ensure a network has been read, linked and liberty libraries exist.
13281331 Network *ensureLibLinked ();
13291332 void ensureLevelized ();
1333+ // Replace the Levelize observer. Takes ownership; deletes any prior
1334+ // observer. Subclass StaLevelizeObserver to extend the default behavior
1335+ // (Search + GraphDelayCalc forwarding) without re-implementing it.
1336+ void setLevelizeObserver (LevelizeObserver *observer);
13301337 // Ensure that the timing graph has been built.
13311338 Graph *ensureGraph ();
13321339 void ensureClkArrivals ();
0 commit comments