specialize DeratingFactors enums for insts

Signed-off-by: James Cherry <[email protected]>
This commit is contained in:
James Cherry
2022-01-13 16:29:38 -07:00
parent 49398a97c8
commit db7b807c6a
10 changed files with 76 additions and 53 deletions
+9 -5
View File
@@ -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
View File
@@ -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;
+3 -2
View File
@@ -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
View File
@@ -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,