Optimize covergroup bin metadata lookup (#8404)

This commit is contained in:
Marco Bartoli
2026-09-18 14:25:37 -04:00
committed by GitHub
parent ccb4ab9fe3
commit 830cb633e5
3 changed files with 70 additions and 5 deletions
+6 -5
View File
@@ -67,11 +67,12 @@ std::string VlCoverpoint::normalBinName(uint32_t crossIdx) const {
}
const VlCovNamer& VlCoverpoint::namerFor(uint32_t i) const {
// Namers are appended in ascending order covering [0, m_total),
for (const VlCovNamer& nm : m_namers) {
if (i < nm.base() + nm.count()) return nm;
}
VL_UNREACHABLE; // LCOV_EXCL_LINE
// Namers are appended in ascending order covering [0, m_total).
const auto it = std::upper_bound(
m_namers.begin(), m_namers.end(), i,
[](uint32_t bin, const VlCovNamer& namer) { return bin < namer.base(); });
assert(it != m_namers.begin());
return *std::prev(it);
}
std::string VlCoverpoint::binName(uint32_t i) const {