mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-08-31 10:04:55 +02:00
pickup changes from upstream, latest on 4/27
Signed-off-by: dsengupta0628 <[email protected]>
This commit is contained in:
@@ -90,7 +90,7 @@ public:
|
||||
// Return values.
|
||||
float &slew,
|
||||
bool &exists) const;
|
||||
ClockUncertainties *uncertainties() const { return uncertainties_; }
|
||||
const ClockUncertainties &uncertainties() const { return uncertainties_; }
|
||||
void uncertainty(const SetupHold *setup_hold,
|
||||
// Return values.
|
||||
float &uncertainty,
|
||||
@@ -180,7 +180,7 @@ protected:
|
||||
bool is_propagated_{false};
|
||||
RiseFallMinMax slews_;
|
||||
RiseFallMinMax slew_limits_[path_clk_or_data_count];
|
||||
ClockUncertainties *uncertainties_{nullptr};
|
||||
ClockUncertainties uncertainties_;
|
||||
bool is_generated_{false};
|
||||
// Generated clock variables.
|
||||
Pin *src_pin_{nullptr};
|
||||
|
||||
@@ -169,6 +169,11 @@ public:
|
||||
static int cmp(const MinMaxValues *values1,
|
||||
const MinMaxValues *values2)
|
||||
{
|
||||
if (!values1->exists_[MinMax::minIndex()]
|
||||
&& !values2->exists_[MinMax::minIndex()]
|
||||
&& !values1->exists_[MinMax::maxIndex()]
|
||||
&& !values2->exists_[MinMax::maxIndex()])
|
||||
return 0;
|
||||
if (!values1->exists_[MinMax::minIndex()]
|
||||
&& values2->exists_[MinMax::minIndex()])
|
||||
return -1;
|
||||
|
||||
+10
-10
@@ -99,25 +99,25 @@ public:
|
||||
// return PropertyValue("bar");
|
||||
// });
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const Library *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const Library *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const LibertyLibrary *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const LibertyLibrary *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const Cell *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const Cell *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const LibertyCell *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const LibertyCell *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const Port *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const Port *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const LibertyPort *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const LibertyPort *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const Instance *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const Instance *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const Pin *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const Pin *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const Net *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const Net *>::PropertyHandler &handler);
|
||||
void defineProperty(std::string_view property,
|
||||
PropertyRegistry<const Clock *>::PropertyHandler &handler);
|
||||
const PropertyRegistry<const Clock *>::PropertyHandler &handler);
|
||||
|
||||
protected:
|
||||
PropertyValue portSlew(const Port *port,
|
||||
|
||||
@@ -89,7 +89,7 @@ protected:
|
||||
std::string name_;
|
||||
size_t index_;
|
||||
Mode *mode_;
|
||||
LibertySeq liberty_[MinMax::index_count];
|
||||
std::array<LibertySeq, MinMax::index_count> liberty_;
|
||||
std::array<Parasitics*, MinMax::index_count> parasitics_;
|
||||
|
||||
friend class Scenes;
|
||||
|
||||
@@ -409,6 +409,11 @@ public:
|
||||
void saveEnumPath(Path *path);
|
||||
bool isSrchRoot(Vertex *vertex,
|
||||
const Mode *mode) const;
|
||||
DelaysWrtClks arrivalsWrtClks(Vertex *vertex,
|
||||
const Scene *scene);
|
||||
DelaysWrtClks delaysWrtClks(Vertex *vertex,
|
||||
const Scene *scene,
|
||||
const PathDelayFunc &get_path_delay);
|
||||
|
||||
protected:
|
||||
void initVars();
|
||||
|
||||
@@ -24,14 +24,18 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <limits>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include "Delay.hh"
|
||||
#include "GraphClass.hh"
|
||||
#include "LibertyClass.hh"
|
||||
#include "MinMaxValues.hh"
|
||||
#include "NetworkClass.hh"
|
||||
#include "RiseFallMinMaxDelay.hh"
|
||||
#include "SdcClass.hh"
|
||||
#include "VectorMap.hh"
|
||||
|
||||
namespace sta {
|
||||
@@ -111,6 +115,9 @@ using SlackSeq = std::vector<Slack>;
|
||||
using Crpr = Delay;
|
||||
using PathSeq = std::vector<Path*>;
|
||||
using ConstPathSeq = std::vector<const Path*>;
|
||||
// Path::slack/arrival/required function.
|
||||
using PathDelayFunc = std::function<Delay (const Path *path)>;
|
||||
using DelaysWrtClks = std::map<const ClockEdge*, RiseFallMinMaxDelay>;
|
||||
|
||||
enum class ReportPathFormat { full,
|
||||
full_clock,
|
||||
|
||||
+4
-11
@@ -24,7 +24,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <vector>
|
||||
@@ -82,8 +82,6 @@ using CheckError = StringSeq;
|
||||
using CheckErrorSeq = std::vector<CheckError*>;
|
||||
enum class CmdNamespace { sta, sdc };
|
||||
using ParasiticsNameMap = std::map<std::string, Parasitics*, std::less<>>;
|
||||
// Path::slack/arrival/required function.
|
||||
using PathDelayFunc = std::function<Delay (const Path *path)>;
|
||||
using GraphLoopSeq = std::vector<GraphLoop*>;
|
||||
|
||||
// Initialize sta functions that are not part of the Sta class.
|
||||
@@ -1531,16 +1529,10 @@ protected:
|
||||
int digits,
|
||||
bool find_required,
|
||||
const PathDelayFunc &get_path_delay);
|
||||
void reportDelaysWrtClks(Vertex *vertex,
|
||||
const ClockEdge *clk_edge,
|
||||
const Scene *scene,
|
||||
void reportDelaysWrtClks(const ClockEdge *clk_edge,
|
||||
bool report_variance,
|
||||
int digits,
|
||||
const PathDelayFunc &get_path_delay);
|
||||
RiseFallMinMaxDelay findDelaysWrtClks(Vertex *vertex,
|
||||
const ClockEdge *clk_edge,
|
||||
const Scene *scene,
|
||||
const PathDelayFunc &get_path_delay);
|
||||
DelaysWrtClks &clk_delays);
|
||||
std::string formatDelay(const RiseFall *rf,
|
||||
const MinMax *min_max,
|
||||
const RiseFallMinMaxDelay &delays,
|
||||
@@ -1616,6 +1608,7 @@ protected:
|
||||
Mode *mode,
|
||||
Parasitics *parasitics);
|
||||
void deleteScenes();
|
||||
void checkLibrarayPocv();
|
||||
|
||||
Scene *cmd_scene_{nullptr};
|
||||
CmdNamespace cmd_namespace_{CmdNamespace::sdc};
|
||||
|
||||
Reference in New Issue
Block a user