Program Listing for File HSTimingSlackRange.h

Return to documentation for file (src/sta/HSTimingSlackRange.h)

#pragma once

namespace HSFullTiming {

inline constexpr int kDefaultSlackRange = 50;
inline int g_slack_range                = kDefaultSlackRange;

inline bool setSlackRange(int slack_range)
{
  if (slack_range <= 0) {
    return false;
  }
  g_slack_range = slack_range;
  return true;
}

inline bool initSlackRange(int slack_range)
{
  return setSlackRange(slack_range);
}

inline int getSlackRange()
{
  return g_slack_range;
}

inline int slackToBucketIndex(float slack)
{
  const int slack_range = getSlackRange();
  if (slack < 0) {
    return static_cast<int>(slack / slack_range) - 1;
  }
  return static_cast<int>(slack / slack_range);
}

inline int maxHopToSlackRangeStart(int max_hop)
{
  return -max_hop * getSlackRange();
}

inline int maxHopToSlackRangeEnd(int max_hop)
{
  return maxHopToSlackRangeStart(max_hop) + getSlackRange();
}

}  // namespace HSFullTiming