Replace Unicode em-dash and curly apostrophe with plain ASCII
equivalents to pass t_dist_whitespace CI check.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Coverage bin counters (__Vcov_* member variables) were being initialized
with VL_SCOPED_RAND_RESET_I because they are plain uint32 members with no
explicit initial value. This caused 0% coverage readings at runtime when
randReset != 0 (as used in CI).
Fix all 5 bin counter AstVar creation sites to set an explicit valuep of
AstConst(0), so V3EmitCFunc emits '= 0U' instead of VL_SCOPED_RAND_RESET_I.
Affects: regular bins, default bins, array bins, transition array bins,
and cross bins.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Two bugs fixed:
1. AstCReset: mark as ineligible for coverage expressions via
isExprCoverageEligible() override, preventing verilogForTree
from being called on CReset nodes (which has no V3EmitV handler).
2. generateCrossCode: when a cross references an unknown coverpoint,
don't delete the cross node early. The caller's cleanup loop
(in visit(AstClass*)) is responsible for deleting all coverpoints
and crosses. Early deletion left a dangling pointer in m_coverCrosses
causing a use-after-free segfault.
3. hasUnsupportedEvent path: added coverpoint/cross cleanup before
returning so AST nodes don't reach downstream passes (V3EmitCFunc,
V3MergeCond) which no longer have stub visitors for them.
All 60 covergroup tests now pass.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>