Support covergroup events with reference members or ref arguments (#8201)

This commit is contained in:
Marco Bartoli
2026-08-23 10:35:43 -04:00
committed by GitHub
parent d5f7878eb4
commit c4b84b20f7
7 changed files with 154 additions and 71 deletions
-13
View File
@@ -1707,11 +1707,6 @@ class FunctionalCoverageVisitor final : public VNVisitor {
return found;
}
static bool hasInstanceMemberEventRef(const AstCovergroup* cgp) {
return cgp->eventp()->exists(
[](const AstVarRef* refp) { return isEnclosingInstanceVar(refp->varp()); });
}
static bool parseEmbeddedEventExpr(AstNodeExpr* exprp, AstVar*& baseVarp,
AstVar*& memberVarp) {
if (AstVarRef* const refp = VN_CAST(exprp, VarRef)) {
@@ -2085,14 +2080,6 @@ class FunctionalCoverageVisitor final : public VNVisitor {
itemp = nextp;
continue;
}
if (hasInstanceMemberEventRef(cgp)) {
cgp->v3warn(COVERIGN, "Unsupported: 'covergroup' clocking event "
"on member variable");
hasUnsupportedEvent = true;
VL_DO_DANGLING(pushDeletep(cgp->unlinkFrBack()), cgp);
itemp = nextp;
continue;
}
// V3Active handles events that do not depend on an enclosing instance.
UINFO(4, "Keeping covergroup event node for V3Active: " << nodep->name());
itemp = nextp;