Fix genvar check to be more strict about generate-for usage only

This commit is contained in:
Wilson Snyder
2025-08-03 16:57:12 -04:00
parent 309129ebcf
commit f106c1eaec
6 changed files with 79 additions and 48 deletions
+4 -4
View File
@@ -124,10 +124,10 @@ class UnrollVisitor final : public VNVisitor {
if (VN_IS(nodep, GenFor) && !m_forVarp->isGenVar()) {
nodep->v3error("Non-genvar used in generate for: " << m_forVarp->prettyNameQ());
} else if (!VN_IS(nodep, GenFor) && m_forVarp->isGenVar()) {
nodep->v3error("Genvar not legal in non-generate for (IEEE 1800-2023 27.4): "
<< m_forVarp->prettyNameQ() << '\n'
<< nodep->warnMore()
<< "... Suggest move for loop upwards to generate-level scope.");
// Likely impossible as V3LinkResolve will earlier throw bad genvar use error
nodep->v3error("Genvar not legal in non-generate for" // LCOV_EXCL_LINE
" (IEEE 1800-2023 27.4): "
<< m_forVarp->prettyNameQ());
}
if (m_generate) V3Const::constifyParamsEdit(initAssp->rhsp()); // rhsp may change