mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-05-30 00:24:12 +08:00
tidy round1
This commit is contained in:
136
power/Power.cc
136
power/Power.cc
@@ -26,38 +26,53 @@
|
||||
|
||||
#include <algorithm> // max
|
||||
#include <cmath> // abs
|
||||
#include <cstddef>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "cudd.h"
|
||||
#include "ContainerHelpers.hh"
|
||||
#include "Stats.hh"
|
||||
#include "Debug.hh"
|
||||
#include "EnumNameMap.hh"
|
||||
#include "Hash.hh"
|
||||
#include "MinMax.hh"
|
||||
#include "Units.hh"
|
||||
#include "Transition.hh"
|
||||
#include "TimingRole.hh"
|
||||
#include "Liberty.hh"
|
||||
#include "InternalPower.hh"
|
||||
#include "LeakagePower.hh"
|
||||
#include "Sequential.hh"
|
||||
#include "TimingArc.hh"
|
||||
#include "FuncExpr.hh"
|
||||
#include "PortDirection.hh"
|
||||
#include "Network.hh"
|
||||
#include "Clock.hh"
|
||||
#include "Sdc.hh"
|
||||
#include "Mode.hh"
|
||||
#include "Graph.hh"
|
||||
#include "GraphDelayCalc.hh"
|
||||
#include "Scene.hh"
|
||||
#include "Path.hh"
|
||||
#include "search/Levelize.hh"
|
||||
#include "search/Sim.hh"
|
||||
#include "Search.hh"
|
||||
|
||||
#include "Bfs.hh"
|
||||
#include "ClkNetwork.hh"
|
||||
#include "Clock.hh"
|
||||
#include "ContainerHelpers.hh"
|
||||
#include "Debug.hh"
|
||||
#include "Delay.hh"
|
||||
#include "EnumNameMap.hh"
|
||||
#include "Error.hh"
|
||||
#include "FuncExpr.hh"
|
||||
#include "Graph.hh"
|
||||
#include "GraphClass.hh"
|
||||
#include "GraphDelayCalc.hh"
|
||||
#include "Hash.hh"
|
||||
#include "InternalPower.hh"
|
||||
#include "LeakagePower.hh"
|
||||
#include "Liberty.hh"
|
||||
#include "LibertyClass.hh"
|
||||
#include "MinMax.hh"
|
||||
#include "Mode.hh"
|
||||
#include "Network.hh"
|
||||
#include "NetworkClass.hh"
|
||||
#include "NetworkCmp.hh"
|
||||
#include "Path.hh"
|
||||
#include "PortDirection.hh"
|
||||
#include "PowerClass.hh"
|
||||
#include "ReportPower.hh"
|
||||
#include "Scene.hh"
|
||||
#include "Sdc.hh"
|
||||
#include "SdcClass.hh"
|
||||
#include "Search.hh"
|
||||
#include "SearchClass.hh"
|
||||
#include "Sequential.hh"
|
||||
#include "Stats.hh"
|
||||
#include "TimingArc.hh"
|
||||
#include "TimingRole.hh"
|
||||
#include "Transition.hh"
|
||||
#include "Units.hh"
|
||||
#include "VertexVisitor.hh"
|
||||
#include "search/Levelize.hh"
|
||||
#include "search/Sim.hh"
|
||||
|
||||
// Related liberty not supported:
|
||||
// library
|
||||
@@ -90,16 +105,7 @@ static EnumNameMap<PwrActivityOrigin> pwr_activity_origin_map = {
|
||||
|
||||
Power::Power(StaState *sta) :
|
||||
StaState(sta),
|
||||
scene_(nullptr),
|
||||
global_activity_(),
|
||||
input_activity_(), // default set in ensureActivities.
|
||||
seq_activity_map_(100,
|
||||
SeqPinHash(network_),
|
||||
SeqPinEqual()),
|
||||
activities_valid_(false),
|
||||
bdd_(sta),
|
||||
instance_powers_(InstanceIdLess(network_)),
|
||||
instance_powers_valid_(false)
|
||||
bdd_(sta)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -399,7 +405,7 @@ Power::sortInstsByPower(const InstanceSeq &insts,
|
||||
InstPowers inst_pwrs;
|
||||
for (const Instance *inst : insts) {
|
||||
PowerResult inst_power = power(inst, scene);
|
||||
inst_pwrs.push_back(std::make_pair(inst, inst_power));
|
||||
inst_pwrs.emplace_back(inst, inst_power);
|
||||
}
|
||||
|
||||
// Sort by total power (descending)
|
||||
@@ -505,7 +511,7 @@ Power::highestInstPowers(size_t count,
|
||||
while (inst_iter->hasNext()) {
|
||||
Instance *inst = inst_iter->next();
|
||||
PowerResult pwr = power(inst, scene);
|
||||
inst_pwrs.push_back(std::make_pair(inst, pwr));
|
||||
inst_pwrs.emplace_back(inst, pwr);
|
||||
}
|
||||
delete inst_iter;
|
||||
|
||||
@@ -564,14 +570,15 @@ ActivitySrchPred::searchTo(const Vertex *,
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
// NOLINTNEXTLINE(misc-multiple-inheritance)
|
||||
class PropActivityVisitor : public VertexVisitor, StaState
|
||||
{
|
||||
public:
|
||||
PropActivityVisitor(Power *power,
|
||||
const Mode *mode,
|
||||
BfsFwdIterator *bfs);
|
||||
virtual VertexVisitor *copy() const;
|
||||
virtual void visit(Vertex *vertex);
|
||||
VertexVisitor *copy() const override;
|
||||
void visit(Vertex *vertex) override;
|
||||
InstanceSet &visitedRegs() { return visited_regs_; }
|
||||
void init();
|
||||
float maxChange() const { return max_change_; }
|
||||
@@ -583,8 +590,8 @@ private:
|
||||
|
||||
static constexpr float change_tolerance_ = .01;
|
||||
InstanceSet visited_regs_;
|
||||
float max_change_;
|
||||
const Pin *max_change_pin_;
|
||||
float max_change_{0.0};
|
||||
const Pin *max_change_pin_{nullptr};
|
||||
BfsFwdIterator *bfs_;
|
||||
Power *power_;
|
||||
const Mode *mode_;
|
||||
@@ -595,8 +602,6 @@ PropActivityVisitor::PropActivityVisitor(Power *power,
|
||||
BfsFwdIterator *bfs) :
|
||||
StaState(power),
|
||||
visited_regs_(network_),
|
||||
max_change_(0.0),
|
||||
max_change_pin_(nullptr),
|
||||
bfs_(bfs),
|
||||
power_(power),
|
||||
mode_(mode)
|
||||
@@ -1445,28 +1450,15 @@ Power::findSwitchingPower(const Instance *inst,
|
||||
class LeakageSummary
|
||||
{
|
||||
public:
|
||||
LeakageSummary();
|
||||
|
||||
bool cond_exists;
|
||||
float cond_leakage;
|
||||
float cond_duty_sum;
|
||||
bool cond_true_exists;
|
||||
float cond_true_leakage;
|
||||
bool uncond_exists;
|
||||
float uncond_leakage;
|
||||
bool cond_exists{false};
|
||||
float cond_leakage{0.0};
|
||||
float cond_duty_sum{0.0};
|
||||
bool cond_true_exists{false};
|
||||
float cond_true_leakage{0.0};
|
||||
bool uncond_exists{false};
|
||||
float uncond_leakage{0.0};
|
||||
};
|
||||
|
||||
LeakageSummary::LeakageSummary() :
|
||||
cond_exists(false),
|
||||
cond_leakage(0.0),
|
||||
cond_duty_sum(0.0),
|
||||
cond_true_exists(false),
|
||||
cond_true_leakage(0.0),
|
||||
uncond_exists(false),
|
||||
uncond_leakage(0.0)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
Power::findLeakagePower(const Instance *inst,
|
||||
LibertyCell *cell,
|
||||
@@ -1804,13 +1796,6 @@ Power::powerInvalid()
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
PowerResult::PowerResult() :
|
||||
internal_(0.0),
|
||||
switching_(0.0),
|
||||
leakage_(0.0)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
PowerResult::clear()
|
||||
{
|
||||
@@ -1863,13 +1848,6 @@ PwrActivity::PwrActivity(float density,
|
||||
check();
|
||||
}
|
||||
|
||||
PwrActivity::PwrActivity() :
|
||||
density_(0.0),
|
||||
duty_(0.0),
|
||||
origin_(PwrActivityOrigin::unknown)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
PwrActivity::setDensity(float density)
|
||||
{
|
||||
|
||||
@@ -107,20 +107,20 @@ public:
|
||||
PowerResult power(const Instance *inst,
|
||||
const Scene *scene);
|
||||
|
||||
void setGlobalActivity(float activity,
|
||||
void setGlobalActivity(float density,
|
||||
float duty);
|
||||
void unsetGlobalActivity();
|
||||
void setInputActivity(float activity,
|
||||
void setInputActivity(float density,
|
||||
float duty);
|
||||
void unsetInputActivity();
|
||||
void setInputPortActivity(const Port *input_port,
|
||||
float activity,
|
||||
float density,
|
||||
float duty);
|
||||
void unsetInputPortActivity(const Port *input_port);
|
||||
PwrActivity pinActivity(const Pin *pin,
|
||||
const Scene *scene);
|
||||
void setUserActivity(const Pin *pin,
|
||||
float activity,
|
||||
float density,
|
||||
float duty,
|
||||
PwrActivityOrigin origin);
|
||||
void unsetUserActivity(const Pin *pin);
|
||||
@@ -255,7 +255,7 @@ protected:
|
||||
size_t pinCount();
|
||||
|
||||
private:
|
||||
const Scene *scene_;
|
||||
const Scene *scene_{nullptr};
|
||||
// Port/pin activities set by set_pin_activity.
|
||||
// set_pin_activity -global
|
||||
PwrActivity global_activity_;
|
||||
@@ -265,15 +265,18 @@ private:
|
||||
PwrActivityMap user_activity_map_;
|
||||
// Propagated activities.
|
||||
PwrActivityMap activity_map_;
|
||||
PwrSeqActivityMap seq_activity_map_;
|
||||
bool activities_valid_;
|
||||
PwrSeqActivityMap seq_activity_map_{100,
|
||||
SeqPinHash(network_),
|
||||
SeqPinEqual()};
|
||||
bool activities_valid_{false};
|
||||
Bdd bdd_;
|
||||
std::map<const Instance*, PowerResult, InstanceIdLess> instance_powers_;
|
||||
bool instance_powers_valid_;
|
||||
std::map<const Instance*, PowerResult, InstanceIdLess> instance_powers_{
|
||||
InstanceIdLess(network_)};
|
||||
bool instance_powers_valid_{false};
|
||||
|
||||
static constexpr int max_activity_passes_ = 50;
|
||||
|
||||
friend class PropActivityVisitor;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
} // namespace sta
|
||||
|
||||
@@ -90,4 +90,4 @@ private:
|
||||
int digits);
|
||||
};
|
||||
|
||||
} // namespace
|
||||
} // namespace sta
|
||||
|
||||
@@ -33,4 +33,4 @@ readSaif(const char *filename,
|
||||
const char *scope,
|
||||
Sta *sta);
|
||||
|
||||
} // namespace
|
||||
} // namespace sta
|
||||
|
||||
@@ -84,4 +84,4 @@ private:
|
||||
Power *power_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
} // namespace sta
|
||||
|
||||
@@ -44,8 +44,6 @@ public:
|
||||
const std::string &filename,
|
||||
SaifReader *reader,
|
||||
Report *report);
|
||||
virtual ~SaifScanner() {}
|
||||
|
||||
virtual int lex(SaifParse::semantic_type *const yylval,
|
||||
SaifParse::location_type *yylloc);
|
||||
// YY_DECL defined in SaifLex.ll
|
||||
@@ -63,4 +61,4 @@ private:
|
||||
std::string token_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
} // namespace sta
|
||||
|
||||
@@ -97,7 +97,7 @@ private:
|
||||
class VcdReader
|
||||
{
|
||||
public:
|
||||
virtual ~VcdReader() {}
|
||||
virtual ~VcdReader() = default;
|
||||
virtual void setDate(std::string_view date) = 0;
|
||||
virtual void setComment(std::string_view comment) = 0;
|
||||
virtual void setVersion(std::string_view version) = 0;
|
||||
@@ -139,4 +139,4 @@ private:
|
||||
uint64_t bus_value_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
} // namespace sta
|
||||
|
||||
@@ -36,4 +36,4 @@ readVcdActivities(std::string_view filename,
|
||||
std::string_view mode_name,
|
||||
Sta *sta);
|
||||
|
||||
} // namespace
|
||||
} // namespace sta
|
||||
|
||||
Reference in New Issue
Block a user