mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-09-04 00:39:45 +02:00
specialize DeratingFactors enums for insts
Signed-off-by: James Cherry <[email protected]>
This commit is contained in:
@@ -68,6 +68,12 @@ public:
|
||||
const EarlyLate *early_late,
|
||||
float &factor,
|
||||
bool &exists) const;
|
||||
void factor(TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFall *rf,
|
||||
const EarlyLate *early_late,
|
||||
float &factor,
|
||||
bool &exists) const;
|
||||
DeratingFactors *factors(TimingDerateType type);
|
||||
void clear();
|
||||
|
||||
@@ -81,26 +87,24 @@ class DeratingFactorsCell
|
||||
{
|
||||
public:
|
||||
DeratingFactorsCell();
|
||||
void setFactor(TimingDerateType type,
|
||||
void setFactor(TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFallBoth *rf,
|
||||
const EarlyLate *early_late,
|
||||
float factor);
|
||||
void factor(TimingDerateType type,
|
||||
void factor(TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFall *rf,
|
||||
const EarlyLate *early_late,
|
||||
float &factor,
|
||||
bool &exists) const;
|
||||
DeratingFactors *factors(TimingDerateType type);
|
||||
DeratingFactors *factors(TimingDerateCellType type);
|
||||
void clear();
|
||||
void isOneValue(const EarlyLate *early_late,
|
||||
bool &is_one_value,
|
||||
float &value) const;
|
||||
|
||||
private:
|
||||
DISALLOW_COPY_AND_ASSIGN(DeratingFactorsCell);
|
||||
|
||||
DeratingFactors factors_[timing_derate_cell_type_count];
|
||||
};
|
||||
|
||||
|
||||
+3
-3
@@ -205,19 +205,19 @@ public:
|
||||
const EarlyLate *early_late,
|
||||
float derate);
|
||||
void setTimingDerate(const Instance *inst,
|
||||
TimingDerateType type,
|
||||
TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFallBoth *rf,
|
||||
const EarlyLate *early_late,
|
||||
float derate);
|
||||
void setTimingDerate(const LibertyCell *cell,
|
||||
TimingDerateType type,
|
||||
TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFallBoth *rf,
|
||||
const EarlyLate *early_late,
|
||||
float derate);
|
||||
float timingDerateInstance(const Pin *pin,
|
||||
TimingDerateType type,
|
||||
TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFall *rf,
|
||||
const EarlyLate *early_late) const;
|
||||
|
||||
@@ -97,7 +97,8 @@ enum class PathClkOrData { clk, data };
|
||||
const int path_clk_or_data_count = 2;
|
||||
|
||||
enum class TimingDerateType { cell_delay, cell_check, net_delay };
|
||||
const int timing_derate_type_count = int(TimingDerateType::net_delay) + 1 ;
|
||||
const int timing_derate_cell_type_count = 2;
|
||||
constexpr int timing_derate_type_count = 3;
|
||||
enum class TimingDerateCellType { cell_delay, cell_check };
|
||||
constexpr int timing_derate_cell_type_count = 2;
|
||||
|
||||
} // namespace
|
||||
|
||||
+2
-2
@@ -140,13 +140,13 @@ public:
|
||||
const EarlyLate *early_late,
|
||||
float derate);
|
||||
void setTimingDerate(const Instance *inst,
|
||||
TimingDerateType type,
|
||||
TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFallBoth *rf,
|
||||
const EarlyLate *early_late,
|
||||
float derate);
|
||||
void setTimingDerate(const LibertyCell *cell,
|
||||
TimingDerateType type,
|
||||
TimingDerateCellType type,
|
||||
PathClkOrData clk_data,
|
||||
const RiseFallBoth *rf,
|
||||
const EarlyLate *early_late,
|
||||
|
||||
Reference in New Issue
Block a user