Merge pull request #758 from YosysHQ/gatecat/hist-oob

timing: Fix out-of-bounds histogram bins in all cases
This commit is contained in:
gatecat 2021-07-11 08:10:57 +01:00 committed by GitHub
commit eecc6147df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1363,7 +1363,12 @@ void timing_analysis(Context *ctx, bool print_histogram, bool print_fmax, bool p
std::vector<unsigned> bins(num_bins);
unsigned max_freq = 0;
for (const auto &i : slack_histogram) {
auto &bin = bins[(i.first - min_slack) / bin_size];
int bin_idx = int((i.first - min_slack) / bin_size);
if (bin_idx < 0)
bin_idx = 0;
else if (bin_idx >= int(num_bins))
bin_idx = num_bins - 1;
auto &bin = bins.at(bin_idx);
bin += i.second;
max_freq = std::max(max_freq, bin);
}