In errors, single quote signals and other from-user data.

This commit is contained in:
Wilson Snyder 2019-07-11 22:09:30 -04:00
parent 83cf1882de
commit 0f857ce423
88 changed files with 287 additions and 281 deletions

View File

@ -408,7 +408,7 @@ private:
// V3LinkResolve should have cleaned most of these up // V3LinkResolve should have cleaned most of these up
if (!nodep->varrefp()->width1()) { if (!nodep->varrefp()->width1()) {
nodep->v3error("Unsupported: Non-single bit wide signal pos/negedge sensitivity: " nodep->v3error("Unsupported: Non-single bit wide signal pos/negedge sensitivity: "
<<nodep->varrefp()->prettyName()); <<nodep->varrefp()->prettyNameQ());
} }
m_itemSequent = true; m_itemSequent = true;
nodep->varrefp()->varp()->usedClock(true); nodep->varrefp()->varp()->usedClock(true);

View File

@ -1264,10 +1264,13 @@ public:
string shortName() const; // Name with __PVT__ removed for concatenating scopes string shortName() const; // Name with __PVT__ removed for concatenating scopes
static string dedotName(const string& namein); // Name with dots removed static string dedotName(const string& namein); // Name with dots removed
static string prettyName(const string& namein); // Name for printing out to the user static string prettyName(const string& namein); // Name for printing out to the user
static string prettyNameQ(const string& namein) { // Quoted pretty name (for errors)
return string("'")+prettyName(namein)+"'"; }
static string encodeName(const string& namein); // Encode user name into internal C representation static string encodeName(const string& namein); // Encode user name into internal C representation
static string encodeNumber(vlsint64_t num); // Encode number into internal C representation static string encodeNumber(vlsint64_t num); // Encode number into internal C representation
static string vcdName(const string& namein); // Name for printing out to vcd files static string vcdName(const string& namein); // Name for printing out to vcd files
string prettyName() const { return prettyName(name()); } string prettyName() const { return prettyName(name()); }
string prettyNameQ() const { return prettyNameQ(name()); }
string prettyTypeName() const; // "VARREF" for error messages string prettyTypeName() const; // "VARREF" for error messages
virtual string prettyOperatorName() const { return "operator "+prettyTypeName(); } virtual string prettyOperatorName() const { return "operator "+prettyTypeName(); }
FileLine* fileline() const { return m_fileline; } FileLine* fileline() const { return m_fileline; }

View File

@ -65,7 +65,7 @@ void AstNodeClassDType::repairMemberCache() {
clearCache(); clearCache();
for (AstMemberDType* itemp = membersp(); itemp; itemp=VN_CAST(itemp->nextp(), MemberDType)) { for (AstMemberDType* itemp = membersp(); itemp; itemp=VN_CAST(itemp->nextp(), MemberDType)) {
if (m_members.find(itemp->name())!=m_members.end()) { if (m_members.find(itemp->name())!=m_members.end()) {
itemp->v3error("Duplicate declaration of member name: "<<itemp->prettyName()); } itemp->v3error("Duplicate declaration of member name: "<<itemp->prettyNameQ()); }
else m_members.insert(make_pair(itemp->name(), itemp)); else m_members.insert(make_pair(itemp->name(), itemp));
} }
} }

View File

@ -1634,7 +1634,7 @@ public:
return modVarp() ? ((modVarp()->direction().isAny() return modVarp() ? ((modVarp()->direction().isAny()
? modVarp()->direction().prettyName()+" " ? modVarp()->direction().prettyName()+" "
: "") : "")
+"port connection '"+modVarp()->prettyName()+"'") +"port connection "+modVarp()->prettyNameQ())
: "port connection"; } : "port connection"; }
bool dotStar() const { return name() == ".*"; } // Fake name for .* connections until linked bool dotStar() const { return name() == ".*"; } // Fake name for .* connections until linked
int pinNum() const { return m_pinNum; } int pinNum() const { return m_pinNum; }

View File

@ -424,7 +424,7 @@ private:
} }
//UINFO(9," finalflop "<<targetp->name()<<" "<<targetp->nodep()->fileline()<<endl); //UINFO(9," finalflop "<<targetp->name()<<" "<<targetp->nodep()->fileline()<<endl);
warnAndFile(markp->nodep(), V3ErrorCode::CDCRSTLOGIC, warnAndFile(markp->nodep(), V3ErrorCode::CDCRSTLOGIC,
"Logic in path that feeds async reset, via signal: "+nodep->prettyName()); "Logic in path that feeds async reset, via signal: "+nodep->prettyNameQ());
dumpAsyncRecurse(targetp, "", " ", 0); dumpAsyncRecurse(targetp, "", " ", 0);
} }
bool dumpAsyncRecurse(CdcEitherVertex* vertexp, const string& prefix, bool dumpAsyncRecurse(CdcEitherVertex* vertexp, const string& prefix,

View File

@ -182,7 +182,7 @@ private:
if (debug()) nodep->dumpTree(cout, "-DETECTARRAY-class-"); if (debug()) nodep->dumpTree(cout, "-DETECTARRAY-class-");
m_vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect changes on complex variable" m_vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect changes on complex variable"
" (probably with UNOPTFLAT warning suppressed): " " (probably with UNOPTFLAT warning suppressed): "
<<m_vscp->varp()->prettyName()); <<m_vscp->varp()->prettyNameQ());
} }
} }
virtual void visit(AstNode* nodep) { virtual void visit(AstNode* nodep) {
@ -190,7 +190,7 @@ private:
if (debug()) nodep->dumpTree(cout, "-DETECTARRAY-general-"); if (debug()) nodep->dumpTree(cout, "-DETECTARRAY-general-");
m_vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect changes on complex variable" m_vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect changes on complex variable"
" (probably with UNOPTFLAT warning suppressed): " " (probably with UNOPTFLAT warning suppressed): "
<<m_vscp->varp()->prettyName()); <<m_vscp->varp()->prettyNameQ());
} }
public: public:
// CONSTUCTORS // CONSTUCTORS
@ -241,7 +241,7 @@ private:
VL_DEBUG_FUNC; // Declare debug() VL_DEBUG_FUNC; // Declare debug()
void genChangeDet(AstVarScope* vscp) { void genChangeDet(AstVarScope* vscp) {
vscp->v3warn(IMPERFECTSCH, "Imperfect scheduling of variable: "<<vscp->prettyName()); vscp->v3warn(IMPERFECTSCH, "Imperfect scheduling of variable: "<<vscp->prettyNameQ());
ChangedInsertVisitor visitor (vscp, m_statep); ChangedInsertVisitor visitor (vscp, m_statep);
} }

View File

@ -74,7 +74,7 @@ private:
if (vscp->user1p()) return static_cast<AstVarScope*>(vscp->user1p()); if (vscp->user1p()) return static_cast<AstVarScope*>(vscp->user1p());
AstVar* varp = vscp->varp(); AstVar* varp = vscp->varp();
if (!varp->width1()) varp->v3error("Unsupported: Clock edge on non-single bit signal: " if (!varp->width1()) varp->v3error("Unsupported: Clock edge on non-single bit signal: "
<<varp->prettyName()); <<varp->prettyNameQ());
string newvarname = (string("__Vclklast__") string newvarname = (string("__Vclklast__")
+vscp->scopep()->nameDotless()+"__"+varp->name()); +vscp->scopep()->nameDotless()+"__"+varp->name());
AstVar* newvarp = new AstVar(vscp->fileline(), AstVar* newvarp = new AstVar(vscp->fileline(),

View File

@ -1622,7 +1622,7 @@ private:
} }
if (!did && m_required) { if (!did && m_required) {
nodep->v3error("Expecting expression to be constant, but variable isn't const: " nodep->v3error("Expecting expression to be constant, but variable isn't const: "
<<nodep->varp()->prettyName()); <<nodep->varp()->prettyNameQ());
} }
} }
virtual void visit(AstEnumItemRef* nodep) { virtual void visit(AstEnumItemRef* nodep) {
@ -1640,7 +1640,7 @@ private:
} }
if (!did && m_required) { if (!did && m_required) {
nodep->v3error("Expecting expression to be constant, but variable isn't const: " nodep->v3error("Expecting expression to be constant, but variable isn't const: "
<<nodep->itemp()->prettyName()); <<nodep->itemp()->prettyNameQ());
} }
} }

View File

@ -114,7 +114,7 @@ private:
nodep->user5( nodep->user5() | flags ); nodep->user5( nodep->user5() | flags );
if ((nodep->user5() & VU_DLY) && (nodep->user5() & VU_NONDLY)) { if ((nodep->user5() & VU_DLY) && (nodep->user5() & VU_NONDLY)) {
nodep->v3warn(BLKANDNBLK, "Unsupported: Blocked and non-blocking assignments to same variable: " nodep->v3warn(BLKANDNBLK, "Unsupported: Blocked and non-blocking assignments to same variable: "
<<nodep->varp()->prettyName()); <<nodep->varp()->prettyNameQ());
} }
} }
AstVarScope* createVarSc(AstVarScope* oldvarscp, const string& name, AstVarScope* createVarSc(AstVarScope* oldvarscp, const string& name,
@ -164,7 +164,7 @@ private:
&& !varrefp->varp()->user2()) { && !varrefp->varp()->user2()) {
varrefp->varp()->v3warn( varrefp->varp()->v3warn(
MULTIDRIVEN, "Signal has multiple driving blocks with different clocking: " MULTIDRIVEN, "Signal has multiple driving blocks with different clocking: "
<<varrefp->varp()->prettyName()<<endl <<varrefp->varp()->prettyNameQ()<<endl
<<varrefp->warnOther()<<"... Location of first driving block"<<endl <<varrefp->warnOther()<<"... Location of first driving block"<<endl
<<varrefp->varp()->warnContextPrimary()<<endl <<varrefp->varp()->warnContextPrimary()<<endl
<<oldactivep->warnOther()<<"... Location of other driving block"<<endl <<oldactivep->warnOther()<<"... Location of other driving block"<<endl

View File

@ -106,7 +106,7 @@ class EmitCSyms : EmitCBaseVisitor {
// We'll still check here because the compiler errors // We'll still check here because the compiler errors
// resulting if we miss this warning are SO nasty // resulting if we miss this warning are SO nasty
nodep->v3error("Symbol matching "+rsvd+" reserved word reached emitter," nodep->v3error("Symbol matching "+rsvd+" reserved word reached emitter,"
" should have hit SYMRSVDWORD: '"<<nodep->prettyName()<<"'"); " should have hit SYMRSVDWORD: "<<nodep->prettyNameQ());
} }
} }
} }

View File

@ -559,9 +559,9 @@ void GateVisitor::optimizeSignals(bool allowMultiIn) {
// reasonable logic may have disappeared. Issuing a warning would // reasonable logic may have disappeared. Issuing a warning would
// thus be confusing. V3Undriven now handles this. // thus be confusing. V3Undriven now handles this.
vvertexp->varScp()->varp()->v3warn vvertexp->varScp()->varp()->v3warn
(UNDRIVEN, "Signal has no drivers " (UNDRIVEN, "Signal has no drivers: '"
<<vvertexp->scopep()->prettyName()<<"." <<vvertexp->scopep()->prettyName()<<"."
<<vvertexp->varScp()->varp()->prettyName()); <<vvertexp->varScp()->varp()->prettyName()<<"'");
} }
} }
} }
@ -821,7 +821,7 @@ void GateVisitor::warnSignals() {
) { ) {
vscp->varp()->user2(true); // Warn only once per signal vscp->varp()->user2(true); // Warn only once per signal
vscp->v3warn(SYNCASYNCNET, "Signal flopped as both synchronous and async: " vscp->v3warn(SYNCASYNCNET, "Signal flopped as both synchronous and async: "
<<vscp->prettyName()<<endl <<vscp->prettyNameQ()<<endl
<<ap->warnOther()<<"... Location of async usage"<<endl <<ap->warnOther()<<"... Location of async usage"<<endl
<<ap->warnContextPrimary()<<endl <<ap->warnContextPrimary()<<endl
<<sp->warnOther()<<"... Location of sync usage"<<endl <<sp->warnOther()<<"... Location of sync usage"<<endl

View File

@ -409,7 +409,7 @@ private:
if (!varNewp) { if (!varNewp) {
if (debug()>=9) m_deModVars.dump(); if (debug()>=9) m_deModVars.dump();
nodep->v3fatalSrc("Module dearray failed for " nodep->v3fatalSrc("Module dearray failed for "
<<AstNode::prettyName(varNewName)); <<AstNode::prettyNameQ(varNewName));
} }
// But clone the pin for each module instance // But clone the pin for each module instance

View File

@ -79,7 +79,7 @@ public:
void LinkCellsGraph::loopsMessageCb(V3GraphVertex* vertexp) { void LinkCellsGraph::loopsMessageCb(V3GraphVertex* vertexp) {
if (LinkCellsVertex* vvertexp = dynamic_cast<LinkCellsVertex*>(vertexp)) { if (LinkCellsVertex* vvertexp = dynamic_cast<LinkCellsVertex*>(vertexp)) {
vvertexp->modp()->v3error("Unsupported: Recursive multiple modules (module instantiates something leading back to itself): " vvertexp->modp()->v3error("Unsupported: Recursive multiple modules (module instantiates something leading back to itself): "
<<vvertexp->modp()->prettyName()<<endl <<vvertexp->modp()->prettyNameQ()<<endl
<<V3Error::warnMore() <<V3Error::warnMore()
<<"... note: self-recursion (module instantiating itself directly) is supported."); <<"... note: self-recursion (module instantiating itself directly) is supported.");
V3Error::abortIfErrors(); V3Error::abortIfErrors();
@ -151,7 +151,7 @@ private:
if (!modp) { if (!modp) {
// This shouldn't throw a message as parseFile will create // This shouldn't throw a message as parseFile will create
// a AstNotFoundModule for us // a AstNotFoundModule for us
nodep->v3error("Can't resolve module reference: "<<prettyName); nodep->v3error("Can't resolve module reference: '"<<prettyName<<"'");
} }
} }
return modp; return modp;
@ -204,7 +204,7 @@ private:
m_declfnWarned.insert(nodep->fileline()->filename()); m_declfnWarned.insert(nodep->fileline()->filename());
nodep->v3warn(DECLFILENAME, "Filename '"<<nodep->fileline()->filebasenameNoExt() nodep->v3warn(DECLFILENAME, "Filename '"<<nodep->fileline()->filebasenameNoExt()
<<"' does not match "<<nodep->typeName() <<"' does not match "<<nodep->typeName()
<<" name: "<<nodep->prettyName()); <<" name: "<<nodep->prettyNameQ());
} }
} }
if (VN_IS(nodep, Iface) || VN_IS(nodep, Package)) nodep->inLibrary(true); // Interfaces can't be at top, unless asked if (VN_IS(nodep, Iface) || VN_IS(nodep, Package)) nodep->inLibrary(true); // Interfaces can't be at top, unless asked
@ -241,7 +241,7 @@ private:
if (!nodep->cellp()) nodep->ifacep(VN_CAST(modp, Iface)); if (!nodep->cellp()) nodep->ifacep(VN_CAST(modp, Iface));
} else if (VN_IS(modp, NotFoundModule)) { // Will error out later } else if (VN_IS(modp, NotFoundModule)) { // Will error out later
} else { } else {
nodep->v3error("Non-interface used as an interface: "<<nodep->prettyName()); nodep->v3error("Non-interface used as an interface: "<<nodep->prettyNameQ());
} }
} }
// Note cannot do modport resolution here; modports are allowed underneath generates // Note cannot do modport resolution here; modports are allowed underneath generates
@ -374,11 +374,11 @@ private:
if (!pinp->exprp()) { if (!pinp->exprp()) {
if (pinp->name().substr(0, 11) == "__pinNumber") { if (pinp->name().substr(0, 11) == "__pinNumber") {
pinp->v3warn(PINNOCONNECT, "Cell pin is not connected: " pinp->v3warn(PINNOCONNECT, "Cell pin is not connected: "
<<pinp->prettyName()); <<pinp->prettyNameQ());
} else { } else {
pinp->v3warn(PINCONNECTEMPTY, pinp->v3warn(PINCONNECTEMPTY,
"Cell pin connected by name with empty reference: " "Cell pin connected by name with empty reference: "
<<pinp->prettyName()); <<pinp->prettyNameQ());
} }
} }
if (ports.find(pinp->name()) == ports.end()) { if (ports.find(pinp->name()) == ports.end()) {
@ -403,7 +403,7 @@ private:
nodep->addPinsp(newp); nodep->addPinsp(newp);
} else { // warn on the CELL that needs it, not the port } else { // warn on the CELL that needs it, not the port
nodep->v3warn(PINMISSING, "Cell has missing pin: " nodep->v3warn(PINMISSING, "Cell has missing pin: "
<<portp->prettyName()); <<portp->prettyNameQ());
AstPin* newp = new AstPin(nodep->fileline(), 0, portp->name(), NULL); AstPin* newp = new AstPin(nodep->fileline(), 0, portp->name(), NULL);
nodep->addPinsp(newp); nodep->addPinsp(newp);
} }
@ -464,7 +464,7 @@ private:
if (!(foundp->fileline()->warnIsOff(V3ErrorCode::MODDUP) if (!(foundp->fileline()->warnIsOff(V3ErrorCode::MODDUP)
|| nodep->fileline()->warnIsOff(V3ErrorCode::MODDUP))) { || nodep->fileline()->warnIsOff(V3ErrorCode::MODDUP))) {
nodep->v3warn(MODDUP, "Duplicate declaration of module: " nodep->v3warn(MODDUP, "Duplicate declaration of module: "
<<nodep->prettyName()<<endl <<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<foundp->warnOther()<<"... Location of original declaration"<<endl <<foundp->warnOther()<<"... Location of original declaration"<<endl
<<foundp->warnContextSecondary()); <<foundp->warnContextSecondary());

View File

@ -226,14 +226,14 @@ public:
UINFO(4,"Var2 "<<fnodep<<endl); UINFO(4,"Var2 "<<fnodep<<endl);
if (nodep->type() == fnodep->type()) { if (nodep->type() == fnodep->type()) {
nodep->v3error("Duplicate declaration of "<<nodeTextType(fnodep) nodep->v3error("Duplicate declaration of "<<nodeTextType(fnodep)
<<": "<<nodep->prettyName()<<endl <<": "<<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<fnodep->warnOther()<<"... Location of original declaration\n" <<fnodep->warnOther()<<"... Location of original declaration\n"
<<fnodep->warnContextSecondary()); <<fnodep->warnContextSecondary());
} else { } else {
nodep->v3error("Unsupported in C: "<<ucfirst(nodeTextType(nodep)) nodep->v3error("Unsupported in C: "<<ucfirst(nodeTextType(nodep))
<<" has the same name as " <<" has the same name as "
<<nodeTextType(fnodep)<<": "<<nodep->prettyName()<<endl <<nodeTextType(fnodep)<<": "<<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<fnodep->warnOther()<<"... Location of original declaration\n" <<fnodep->warnOther()<<"... Location of original declaration\n"
<<fnodep->warnContextSecondary()); <<fnodep->warnContextSecondary());
@ -404,14 +404,14 @@ public:
if (!ifacerefp->ifaceViaCellp()) { if (!ifacerefp->ifaceViaCellp()) {
if (!ifacerefp->cellp()) { // Probably a NotFoundModule, or a normal module if made mistake if (!ifacerefp->cellp()) { // Probably a NotFoundModule, or a normal module if made mistake
ifacerefp->v3error("Cannot find file containing interface: " ifacerefp->v3error("Cannot find file containing interface: "
<<AstNode::prettyName(ifacerefp->ifaceName())); <<AstNode::prettyNameQ(ifacerefp->ifaceName()));
continue; continue;
} else { } else {
ifacerefp->v3fatalSrc("Unlinked interface"); ifacerefp->v3fatalSrc("Unlinked interface");
} }
} else if (ifacerefp->ifaceViaCellp()->dead()) { } else if (ifacerefp->ifaceViaCellp()->dead()) {
ifacerefp->v3error("Parent cell's interface is not found: " ifacerefp->v3error("Parent cell's interface is not found: "
<<AstNode::prettyName(ifacerefp->ifaceName())); <<AstNode::prettyNameQ(ifacerefp->ifaceName()));
continue; continue;
} }
VSymEnt* ifaceSymp = getNodeSym(ifacerefp->ifaceViaCellp()); VSymEnt* ifaceSymp = getNodeSym(ifacerefp->ifaceViaCellp());
@ -428,9 +428,9 @@ public:
ok = true; ok = true;
} }
} }
if (!ok) ifacerefp->v3error("Modport not found under interface '" if (!ok) ifacerefp->v3error("Modport not found under interface "
<<ifacerefp->prettyName(ifacerefp->ifaceName()) <<ifacerefp->prettyNameQ(ifacerefp->ifaceName())
<<"': "<<ifacerefp->prettyName(ifacerefp->modportName())); <<": "<<ifacerefp->prettyNameQ(ifacerefp->modportName()));
} }
// Alias won't expand until interfaces and modport names are known; see notes at top // Alias won't expand until interfaces and modport names are known; see notes at top
insertScopeAlias(SAMN_IFTOP, varSymp, ifOrPortSymp); insertScopeAlias(SAMN_IFTOP, varSymp, ifOrPortSymp);
@ -709,7 +709,7 @@ class LinkDotFindVisitor : public AstNVisitor {
int oldModBeginNum = m_modBeginNum; int oldModBeginNum = m_modBeginNum;
if (doit && nodep->user2()) { if (doit && nodep->user2()) {
nodep->v3error("Unsupported: Identically recursive module (module instantiates itself, without changing parameters): " nodep->v3error("Unsupported: Identically recursive module (module instantiates itself, without changing parameters): "
<<AstNode::prettyName(nodep->origName())); <<AstNode::prettyNameQ(nodep->origName()));
} else if (doit) { } else if (doit) {
UINFO(4," Link Module: "<<nodep<<endl); UINFO(4," Link Module: "<<nodep<<endl);
UASSERT_OBJ(!nodep->dead(), nodep, "Module in cell tree mislabeled as dead?"); UASSERT_OBJ(!nodep->dead(), nodep, "Module in cell tree mislabeled as dead?");
@ -783,7 +783,7 @@ class LinkDotFindVisitor : public AstNVisitor {
aboveSymp = m_statep->findDotted(aboveSymp, scope, baddot, okSymp); aboveSymp = m_statep->findDotted(aboveSymp, scope, baddot, okSymp);
UASSERT_OBJ(aboveSymp, nodep, UASSERT_OBJ(aboveSymp, nodep,
"Can't find cell insertion point at '" "Can't find cell insertion point at '"
<<baddot<<"' in: "<<nodep->prettyName()); <<baddot<<"' in: "<<nodep->prettyNameQ());
} }
{ {
m_scope = m_scope+"."+nodep->name(); m_scope = m_scope+"."+nodep->name();
@ -814,7 +814,7 @@ class LinkDotFindVisitor : public AstNVisitor {
aboveSymp = m_statep->findDotted(aboveSymp, dotted, baddot, okSymp); aboveSymp = m_statep->findDotted(aboveSymp, dotted, baddot, okSymp);
UASSERT_OBJ(aboveSymp, nodep, UASSERT_OBJ(aboveSymp, nodep,
"Can't find cellinline insertion point at '" "Can't find cellinline insertion point at '"
<<baddot<<"' in: "<<nodep->prettyName()); <<baddot<<"' in: "<<nodep->prettyNameQ());
m_statep->insertInline(aboveSymp, m_modSymp, nodep, ident); m_statep->insertInline(aboveSymp, m_modSymp, nodep, ident);
} else { // No __DOT__, just directly underneath } else { // No __DOT__, just directly underneath
m_statep->insertInline(aboveSymp, m_modSymp, nodep, nodep->name()); m_statep->insertInline(aboveSymp, m_modSymp, nodep, nodep->name());
@ -929,7 +929,7 @@ class LinkDotFindVisitor : public AstNVisitor {
} else if (!findvarp && foundp && m_curSymp->findIdFlat(nodep->name())) { } else if (!findvarp && foundp && m_curSymp->findIdFlat(nodep->name())) {
nodep->v3error("Unsupported in C: Variable has same name as " nodep->v3error("Unsupported in C: Variable has same name as "
<<LinkDotState::nodeTextType(foundp->nodep()) <<LinkDotState::nodeTextType(foundp->nodep())
<<": "<<nodep->prettyName()); <<": "<<nodep->prettyNameQ());
} else if (findvarp != nodep) { } else if (findvarp != nodep) {
UINFO(4,"DupVar: "<<nodep<<" ;; "<<foundp->nodep()<<endl); UINFO(4,"DupVar: "<<nodep<<" ;; "<<foundp->nodep()<<endl);
UINFO(4," found cur=se"<<cvtToHex(m_curSymp) UINFO(4," found cur=se"<<cvtToHex(m_curSymp)
@ -944,7 +944,7 @@ class LinkDotFindVisitor : public AstNVisitor {
bool ansiWarn = ansiBad && !nansiBad; bool ansiWarn = ansiBad && !nansiBad;
if (ansiWarn) { if (didAnsiWarn++) ansiWarn = false; } if (ansiWarn) { if (didAnsiWarn++) ansiWarn = false; }
nodep->v3error("Duplicate declaration of signal: " nodep->v3error("Duplicate declaration of signal: "
<<nodep->prettyName()<<endl <<nodep->prettyNameQ()<<endl
<<(ansiWarn <<(ansiWarn
? nodep->warnMore()+"... note: ANSI ports must have type declared with the I/O (IEEE 2017 23.2.2.2)\n" ? nodep->warnMore()+"... note: ANSI ports must have type declared with the I/O (IEEE 2017 23.2.2.2)\n"
: "") : "")
@ -977,7 +977,7 @@ class LinkDotFindVisitor : public AstNVisitor {
&& !nodep->fileline()->warnIsOff(V3ErrorCode::VARHIDDEN) && !nodep->fileline()->warnIsOff(V3ErrorCode::VARHIDDEN)
&& !foundp->nodep()->fileline()->warnIsOff(V3ErrorCode::VARHIDDEN)) { && !foundp->nodep()->fileline()->warnIsOff(V3ErrorCode::VARHIDDEN)) {
nodep->v3warn(VARHIDDEN, "Declaration of signal hides declaration in upper scope: " nodep->v3warn(VARHIDDEN, "Declaration of signal hides declaration in upper scope: "
<<nodep->prettyName()<<endl <<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<foundp->nodep()->warnOther() <<foundp->nodep()->warnOther()
<<"... Location of original declaration\n" <<"... Location of original declaration\n"
@ -1086,8 +1086,8 @@ class LinkDotFindVisitor : public AstNVisitor {
} else { } else {
VSymEnt* impp = srcp->findIdFlat(nodep->name()); VSymEnt* impp = srcp->findIdFlat(nodep->name());
if (!impp) { if (!impp) {
nodep->v3error("Import object not found: " nodep->v3error("Import object not found: '"
<<nodep->packagep()->prettyName()<<"::"<<nodep->prettyName()); <<nodep->packagep()->prettyName()<<"::"<<nodep->prettyName()<<"'");
} }
} }
m_curSymp->importFromPackage(m_statep->symsp(), srcp, nodep->name()); m_curSymp->importFromPackage(m_statep->symsp(), srcp, nodep->name());
@ -1100,8 +1100,8 @@ class LinkDotFindVisitor : public AstNVisitor {
if (nodep->name()!="*") { if (nodep->name()!="*") {
VSymEnt* impp = srcp->findIdFlat(nodep->name()); VSymEnt* impp = srcp->findIdFlat(nodep->name());
if (!impp) { if (!impp) {
nodep->v3error("Export object not found: " nodep->v3error("Export object not found: '"
<<nodep->packagep()->prettyName()<<"::"<<nodep->prettyName()); <<nodep->packagep()->prettyName()<<"::"<<nodep->prettyName()<<"'");
} }
} }
m_curSymp->exportFromPackage(m_statep->symsp(), srcp, nodep->name()); m_curSymp->exportFromPackage(m_statep->symsp(), srcp, nodep->name());
@ -1236,12 +1236,12 @@ private:
AstVar* refp = foundp ? VN_CAST(foundp->nodep(), Var) : NULL; AstVar* refp = foundp ? VN_CAST(foundp->nodep(), Var) : NULL;
if (!refp) { if (!refp) {
nodep->v3error("Input/output/inout declaration not found for port: " nodep->v3error("Input/output/inout declaration not found for port: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} else if (!refp->isIO() && !refp->isIfaceRef()) { } else if (!refp->isIO() && !refp->isIfaceRef()) {
nodep->v3error("Pin is not an in/out/inout/interface: "<<nodep->prettyName()); nodep->v3error("Pin is not an in/out/inout/interface: "<<nodep->prettyNameQ());
} else { } else {
if (refp->user4()) { if (refp->user4()) {
nodep->v3error("Duplicate declaration of port: "<<nodep->prettyName()<<endl nodep->v3error("Duplicate declaration of port: "<<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<refp->warnOther()<<"... Location of original declaration\n" <<refp->warnOther()<<"... Location of original declaration\n"
<<refp->warnContextSecondary()); <<refp->warnContextSecondary());
@ -1341,14 +1341,14 @@ class LinkDotScopeVisitor : public AstNVisitor {
string baddot; VSymEnt* okSymp; string baddot; VSymEnt* okSymp;
VSymEnt* cellSymp = m_statep->findDotted(m_modSymp, ifcellname, baddot, okSymp); VSymEnt* cellSymp = m_statep->findDotted(m_modSymp, ifcellname, baddot, okSymp);
UASSERT_OBJ(cellSymp, nodep, UASSERT_OBJ(cellSymp, nodep,
"No symbol for interface cell: "<<nodep->prettyName(ifcellname)); "No symbol for interface cell: "<<nodep->prettyNameQ(ifcellname));
UINFO(5, " Found interface cell: se"<<cvtToHex(cellSymp) UINFO(5, " Found interface cell: se"<<cvtToHex(cellSymp)
<<" "<<cellSymp->nodep()<<endl); <<" "<<cellSymp->nodep()<<endl);
if (dtypep->modportName()!="") { if (dtypep->modportName()!="") {
VSymEnt* mpSymp = m_statep->findDotted(m_modSymp, ifcellname, baddot, okSymp); VSymEnt* mpSymp = m_statep->findDotted(m_modSymp, ifcellname, baddot, okSymp);
UASSERT_OBJ(mpSymp, nodep, UASSERT_OBJ(mpSymp, nodep,
"No symbol for interface modport: " "No symbol for interface modport: "
<<nodep->prettyName(dtypep->modportName())); <<nodep->prettyNameQ(dtypep->modportName()));
cellSymp = mpSymp; cellSymp = mpSymp;
UINFO(5, " Found modport cell: se" UINFO(5, " Found modport cell: se"
<<cvtToHex(cellSymp)<<" "<<mpSymp->nodep()<<endl); <<cvtToHex(cellSymp)<<" "<<mpSymp->nodep()<<endl);
@ -1478,7 +1478,7 @@ class LinkDotIfaceVisitor : public AstNVisitor {
if (nodep->isExport()) nodep->v3error("Unsupported: modport export"); if (nodep->isExport()) nodep->v3error("Unsupported: modport export");
VSymEnt* symp = m_curSymp->findIdFallback(nodep->name()); VSymEnt* symp = m_curSymp->findIdFallback(nodep->name());
if (!symp) { if (!symp) {
nodep->v3error("Modport item not found: "<<nodep->prettyName()); nodep->v3error("Modport item not found: "<<nodep->prettyNameQ());
} else if (AstNodeFTask* ftaskp = VN_CAST(symp->nodep(), NodeFTask)) { } else if (AstNodeFTask* ftaskp = VN_CAST(symp->nodep(), NodeFTask)) {
// Make symbol under modport that points at the _interface_'s var, not the modport. // Make symbol under modport that points at the _interface_'s var, not the modport.
nodep->ftaskp(ftaskp); nodep->ftaskp(ftaskp);
@ -1486,7 +1486,7 @@ class LinkDotIfaceVisitor : public AstNVisitor {
ftaskp, NULL/*package*/); ftaskp, NULL/*package*/);
m_statep->insertScopeAlias(LinkDotState::SAMN_MODPORT, subSymp, symp); m_statep->insertScopeAlias(LinkDotState::SAMN_MODPORT, subSymp, symp);
} else { } else {
nodep->v3error("Modport item is not a function/task: "<<nodep->prettyName()); nodep->v3error("Modport item is not a function/task: "<<nodep->prettyNameQ());
} }
if (m_statep->forScopeCreation()) { if (m_statep->forScopeCreation()) {
// Done with AstModportFTaskRef. // Done with AstModportFTaskRef.
@ -1499,7 +1499,7 @@ class LinkDotIfaceVisitor : public AstNVisitor {
iterateChildren(nodep); iterateChildren(nodep);
VSymEnt* symp = m_curSymp->findIdFallback(nodep->name()); VSymEnt* symp = m_curSymp->findIdFallback(nodep->name());
if (!symp) { if (!symp) {
nodep->v3error("Modport item not found: "<<nodep->prettyName()); nodep->v3error("Modport item not found: "<<nodep->prettyNameQ());
} else if (AstVar* varp = VN_CAST(symp->nodep(), Var)) { } else if (AstVar* varp = VN_CAST(symp->nodep(), Var)) {
// Make symbol under modport that points at the _interface_'s var via the modport. // Make symbol under modport that points at the _interface_'s var via the modport.
// (Need modport still to test input/output markings) // (Need modport still to test input/output markings)
@ -1510,7 +1510,7 @@ class LinkDotIfaceVisitor : public AstNVisitor {
nodep->varp(vscp->varp()); nodep->varp(vscp->varp());
m_statep->insertSym(m_curSymp, nodep->name(), vscp, NULL/*package*/); m_statep->insertSym(m_curSymp, nodep->name(), vscp, NULL/*package*/);
} else { } else {
nodep->v3error("Modport item is not a variable: "<<nodep->prettyName()); nodep->v3error("Modport item is not a variable: "<<nodep->prettyNameQ());
} }
if (m_statep->forScopeCreation()) { if (m_statep->forScopeCreation()) {
// Done with AstModportVarRef. // Done with AstModportVarRef.
@ -1612,10 +1612,10 @@ private:
if (!noWarn) { if (!noWarn) {
if (nodep->fileline()->warnIsOff(V3ErrorCode::I_DEF_NETTYPE_WIRE)) { if (nodep->fileline()->warnIsOff(V3ErrorCode::I_DEF_NETTYPE_WIRE)) {
nodep->v3error("Signal definition not found, and implicit disabled with `default_nettype: " nodep->v3error("Signal definition not found, and implicit disabled with `default_nettype: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} else { } else {
nodep->v3warn(IMPLICIT, "Signal definition not found, creating implicitly: " nodep->v3warn(IMPLICIT, "Signal definition not found, creating implicitly: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} }
} }
AstVar* newp = new AstVar(nodep->fileline(), AstVarType::WIRE, AstVar* newp = new AstVar(nodep->fileline(), AstVarType::WIRE,
@ -1638,7 +1638,7 @@ private:
AstModportVarRef* snodep = VN_CAST(symp->nodep(), ModportVarRef); AstModportVarRef* snodep = VN_CAST(symp->nodep(), ModportVarRef);
AstVar* varp = snodep->varp(); AstVar* varp = snodep->varp();
if (lvalue && snodep->direction().isReadOnly()) { if (lvalue && snodep->direction().isReadOnly()) {
nodep->v3error("Attempt to drive input-only modport: "<<nodep->prettyName()); nodep->v3error("Attempt to drive input-only modport: "<<nodep->prettyNameQ());
} // else other simulators don't warn about reading, and IEEE doesn't say illegal } // else other simulators don't warn about reading, and IEEE doesn't say illegal
return varp; return varp;
} else { } else {
@ -1648,7 +1648,7 @@ private:
void taskFuncSwapCheck(AstNodeFTaskRef* nodep) { void taskFuncSwapCheck(AstNodeFTaskRef* nodep) {
if (nodep->taskp() && VN_IS(nodep->taskp(), Task) if (nodep->taskp() && VN_IS(nodep->taskp(), Task)
&& VN_IS(nodep, FuncRef)) nodep->v3error("Illegal call of a task as a function: " && VN_IS(nodep, FuncRef)) nodep->v3error("Illegal call of a task as a function: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} }
inline void checkNoDot(AstNode* nodep) { inline void checkNoDot(AstNode* nodep) {
if (VL_UNLIKELY(m_ds.m_dotPos != DP_NONE)) { if (VL_UNLIKELY(m_ds.m_dotPos != DP_NONE)) {
@ -1673,7 +1673,7 @@ private:
} }
void markAndCheckPinDup(AstNode* nodep, AstNode* refp, const char* whatp) { void markAndCheckPinDup(AstNode* nodep, AstNode* refp, const char* whatp) {
if (refp->user5p() && refp->user5p()!=nodep) { if (refp->user5p() && refp->user5p()!=nodep) {
nodep->v3error("Duplicate "<<whatp<<" connection: "<<nodep->prettyName()<<endl nodep->v3error("Duplicate "<<whatp<<" connection: "<<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<refp->user5p()->warnOther() <<refp->user5p()->warnOther()
<<"... Location of original "<<whatp<<" connection\n" <<"... Location of original "<<whatp<<" connection\n"
@ -1762,12 +1762,12 @@ private:
nodep->unlinkFrBack()->deleteTree(); VL_DANGLING(nodep); nodep->unlinkFrBack()->deleteTree(); VL_DANGLING(nodep);
return; return;
} }
nodep->v3error(ucfirst(whatp)<<" not found: "<<nodep->prettyName()); nodep->v3error(ucfirst(whatp)<<" not found: "<<nodep->prettyNameQ());
} }
else if (AstVar* refp = VN_CAST(foundp->nodep(), Var)) { else if (AstVar* refp = VN_CAST(foundp->nodep(), Var)) {
if (!refp->isIO() && !refp->isParam() && !refp->isIfaceRef()) { if (!refp->isIO() && !refp->isParam() && !refp->isIfaceRef()) {
nodep->v3error(ucfirst(whatp)<<" is not an in/out/inout/param/interface: " nodep->v3error(ucfirst(whatp)<<" is not an in/out/inout/param/interface: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} else { } else {
nodep->modVarp(refp); nodep->modVarp(refp);
markAndCheckPinDup(nodep, refp, whatp); markAndCheckPinDup(nodep, refp, whatp);
@ -1778,7 +1778,7 @@ private:
markAndCheckPinDup(nodep, refp, whatp); markAndCheckPinDup(nodep, refp, whatp);
} }
else { else {
nodep->v3error(ucfirst(whatp)<<" not found: "<<nodep->prettyName()); nodep->v3error(ucfirst(whatp)<<" not found: "<<nodep->prettyNameQ());
} }
} }
// Early return() above when deleted // Early return() above when deleted
@ -1950,7 +1950,7 @@ private:
nodep->replaceWith(newp); pushDeletep(nodep); VL_DANGLING(nodep); nodep->replaceWith(newp); pushDeletep(nodep); VL_DANGLING(nodep);
} else if (VN_IS(cellp->modp(), NotFoundModule)) { } else if (VN_IS(cellp->modp(), NotFoundModule)) {
cellp->v3error("Cannot find file containing interface: " cellp->v3error("Cannot find file containing interface: "
<<AstNode::prettyName(cellp->modp()->name())); <<cellp->modp()->prettyNameQ());
} }
} }
} }
@ -2005,11 +2005,11 @@ private:
|| !VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp() || !VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp()
|| !VN_IS(VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp(), Iface)) { || !VN_IS(VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp(), Iface)) {
nodep->v3error("Modport not referenced as <interface>." nodep->v3error("Modport not referenced as <interface>."
<<modportp->prettyName()); <<modportp->prettyNameQ());
} else if (!VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp() } else if (!VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp()
|| !VN_IS(VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp(), Iface)) { || !VN_IS(VN_CAST(m_ds.m_dotSymp->nodep(), Cell)->modp(), Iface)) {
nodep->v3error("Modport not referenced from underneath an interface: " nodep->v3error("Modport not referenced from underneath an interface: "
<<modportp->prettyName()); <<modportp->prettyNameQ());
} else { } else {
AstCell* cellp = VN_CAST(m_ds.m_dotSymp->nodep(), Cell); AstCell* cellp = VN_CAST(m_ds.m_dotSymp->nodep(), Cell);
UASSERT_OBJ(cellp, nodep, "Modport not referenced from a cell"); UASSERT_OBJ(cellp, nodep, "Modport not referenced from a cell");
@ -2051,12 +2051,12 @@ private:
UINFO(7," ErrParseRef curSymp=se"<<cvtToHex(m_curSymp) UINFO(7," ErrParseRef curSymp=se"<<cvtToHex(m_curSymp)
<<" ds="<<m_ds.ascii()<<endl); <<" ds="<<m_ds.ascii()<<endl);
nodep->v3error("Can't find definition of "<<expectWhat nodep->v3error("Can't find definition of "<<expectWhat
<<": "<<nodep->prettyName()); <<": "<<nodep->prettyNameQ());
} else { } else {
nodep->v3error("Can't find definition of '" nodep->v3error("Can't find definition of '"
<<(baddot!="" ? baddot : nodep->prettyName()) <<(baddot!="" ? baddot : nodep->prettyName())
<<"' in dotted " <<"' in dotted "<<expectWhat
<<expectWhat<<": "<<m_ds.m_dotText+"."+nodep->prettyName()); <<": '"<<m_ds.m_dotText+"."+nodep->prettyName()<<"'");
okSymp->cellErrorScopes(nodep, AstNode::prettyName(m_ds.m_dotText)); okSymp->cellErrorScopes(nodep, AstNode::prettyName(m_ds.m_dotText));
} }
m_ds.m_dotErr = true; m_ds.m_dotErr = true;
@ -2089,7 +2089,7 @@ private:
nodep->packagep(foundp->packagep()); // Generally set by parse, but might be an import nodep->packagep(foundp->packagep()); // Generally set by parse, but might be an import
} }
if (!nodep->varp()) { if (!nodep->varp()) {
nodep->v3error("Can't find definition of signal, again: "<<nodep->prettyName()); nodep->v3error("Can't find definition of signal, again: "<<nodep->prettyNameQ());
} }
} }
} }
@ -2123,8 +2123,8 @@ private:
UINFO(7," Resolved "<<nodep<<endl); // Also prints varp UINFO(7," Resolved "<<nodep<<endl); // Also prints varp
if (!nodep->varp()) { if (!nodep->varp()) {
nodep->v3error("Can't find definition of '" nodep->v3error("Can't find definition of '"
<<baddot<<"' in dotted signal: " <<baddot<<"' in dotted signal: '"
<<nodep->dotted()+"."+nodep->prettyName()); <<nodep->dotted()+"."+nodep->prettyName()<<"'");
okSymp->cellErrorScopes(nodep); okSymp->cellErrorScopes(nodep);
} }
// V3Inst may have expanded arrays of interfaces to // V3Inst may have expanded arrays of interfaces to
@ -2144,8 +2144,8 @@ private:
AstVarScope* vscp = foundp ? VN_CAST(foundp->nodep(), VarScope) : NULL; AstVarScope* vscp = foundp ? VN_CAST(foundp->nodep(), VarScope) : NULL;
if (!vscp) { if (!vscp) {
nodep->v3error("Can't find varpin scope of '"<<baddot nodep->v3error("Can't find varpin scope of '"<<baddot
<<"' in dotted signal: " <<"' in dotted signal: '"
<<nodep->dotted()+"."+nodep->prettyName()); <<nodep->dotted()+"."+nodep->prettyName()<<"'");
okSymp->cellErrorScopes(nodep); okSymp->cellErrorScopes(nodep);
} else { } else {
while (vscp->user2p()) { // If V3Inline aliased it, pick up the new signal while (vscp->user2p()) { // If V3Inline aliased it, pick up the new signal
@ -2183,7 +2183,7 @@ private:
iterateChildren(nodep); iterateChildren(nodep);
if (m_statep->forPrimary() && nodep->isIO() && !m_ftaskp && !nodep->user4()) { if (m_statep->forPrimary() && nodep->isIO() && !m_ftaskp && !nodep->user4()) {
nodep->v3error("Input/output/inout does not appear in port list: " nodep->v3error("Input/output/inout does not appear in port list: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} }
} }
virtual void visit(AstNodeFTaskRef* nodep) { virtual void visit(AstNodeFTaskRef* nodep) {
@ -2275,11 +2275,11 @@ private:
<<" but expected a task/function"); <<" but expected a task/function");
} else if (nodep->dotted() == "") { } else if (nodep->dotted() == "") {
nodep->v3error("Can't find definition of task/function: " nodep->v3error("Can't find definition of task/function: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} else { } else {
nodep->v3error("Can't find definition of '"<<baddot nodep->v3error("Can't find definition of '"<<baddot
<<"' in dotted task/function: " <<"' in dotted task/function: '"
<<nodep->dotted()+"."+nodep->prettyName()); <<nodep->dotted()+"."+nodep->prettyName()<<"'");
okSymp->cellErrorScopes(nodep); okSymp->cellErrorScopes(nodep);
} }
} }
@ -2394,7 +2394,7 @@ private:
nodep->packagep(foundp->packagep()); nodep->packagep(foundp->packagep());
} }
else { else {
nodep->v3error("Can't find typedef: "<<nodep->prettyName()); nodep->v3error("Can't find typedef: "<<nodep->prettyNameQ());
} }
} }
iterateChildren(nodep); iterateChildren(nodep);
@ -2406,10 +2406,10 @@ private:
VSymEnt* foundp = m_curSymp->findIdFallback(nodep->name()); VSymEnt* foundp = m_curSymp->findIdFallback(nodep->name());
AstNodeFTask* taskp = foundp ? VN_CAST(foundp->nodep(), NodeFTask) : NULL; AstNodeFTask* taskp = foundp ? VN_CAST(foundp->nodep(), NodeFTask) : NULL;
if (!taskp) { nodep->v3error("Can't find definition of exported task/function: " if (!taskp) { nodep->v3error("Can't find definition of exported task/function: "
<<nodep->prettyName()); } <<nodep->prettyNameQ()); }
else if (taskp->dpiExport()) { else if (taskp->dpiExport()) {
nodep->v3error("Function was already DPI Exported, duplicate not allowed: " nodep->v3error("Function was already DPI Exported, duplicate not allowed: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} else { } else {
taskp->dpiExport(true); taskp->dpiExport(true);
if (nodep->cname()!="") taskp->cname(nodep->cname()); if (nodep->cname()!="") taskp->cname(nodep->cname());

View File

@ -230,7 +230,7 @@ private:
} }
//if (debug()>=9) { UINFO(0,"\n"); beginp->dumpTree(cout, " labeli: "); } //if (debug()>=9) { UINFO(0,"\n"); beginp->dumpTree(cout, " labeli: "); }
if (!beginp) { nodep->v3error("disable isn't underneath a begin with name: " if (!beginp) { nodep->v3error("disable isn't underneath a begin with name: "
<<nodep->prettyName()); } <<nodep->prettyNameQ()); }
else { else {
// Jump to the end of the named begin // Jump to the end of the named begin
AstJumpLabel* labelp = findAddLabel(beginp, false); AstJumpLabel* labelp = findAddLabel(beginp, false);

View File

@ -59,7 +59,7 @@ private:
if (nodep->lvalue() && !m_ftaskp if (nodep->lvalue() && !m_ftaskp
&& nodep->varp()->isReadOnly()) { && nodep->varp()->isReadOnly()) {
nodep->v3warn(ASSIGNIN, "Assigning to input/const variable: " nodep->v3warn(ASSIGNIN, "Assigning to input/const variable: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} }
} }
iterateChildren(nodep); iterateChildren(nodep);

View File

@ -61,7 +61,7 @@ void V3LinkLevel::modSortByLevel() {
if (topp) { if (topp) {
static int warnedOnce = 0; static int warnedOnce = 0;
nodep->v3warn(MULTITOP, "Multiple top level modules: " nodep->v3warn(MULTITOP, "Multiple top level modules: "
<<nodep->prettyName()<<" and "<<topp->prettyName() <<nodep->prettyNameQ()<<" and "<<topp->prettyNameQ()
<<(!warnedOnce++ <<(!warnedOnce++
? ("\n"+nodep->warnMore() ? ("\n"+nodep->warnMore()
+"... Suggest see manual; fix the duplicates, or use --top-module to select top.") +"... Suggest see manual; fix the duplicates, or use --top-module to select top.")
@ -192,7 +192,7 @@ void V3LinkLevel::wrapTopCell(AstNetlist* rootp) {
} }
if (varp->direction().isRefOrConstRef()) { if (varp->direction().isRefOrConstRef()) {
varp->v3error("Unsupported: ref/const ref as primary input/output: " varp->v3error("Unsupported: ref/const ref as primary input/output: "
<<varp->prettyName()); <<varp->prettyNameQ());
} }
if (varp->isIO() && v3Global.opt.systemC()) { if (varp->isIO() && v3Global.opt.systemC()) {
varp->sc(true); varp->sc(true);

View File

@ -177,7 +177,7 @@ private:
AstNodeDType* dtypep = VN_CAST(nodep->valuep(), NodeDType); AstNodeDType* dtypep = VN_CAST(nodep->valuep(), NodeDType);
if (!dtypep) { if (!dtypep) {
nodep->v3error("Parameter type's initial value isn't a type: " nodep->v3error("Parameter type's initial value isn't a type: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
nodep->unlinkFrBack(); nodep->unlinkFrBack();
} else { } else {
dtypep->unlinkFrBack(); dtypep->unlinkFrBack();
@ -209,7 +209,8 @@ private:
if (nodep->isParam() || (m_ftaskp && nodep->isNonOutput())) { if (nodep->isParam() || (m_ftaskp && nodep->isNonOutput())) {
} }
else if (!m_ftaskp && nodep->isNonOutput()) { else if (!m_ftaskp && nodep->isNonOutput()) {
nodep->v3error("Unsupported: Default value on module input: "<<nodep->prettyName()); nodep->v3error("Unsupported: Default value on module input: "
<<nodep->prettyNameQ());
nodep->valuep()->unlinkFrBack()->deleteTree(); nodep->valuep()->unlinkFrBack()->deleteTree();
} // 2. Under modules, it's an initial value to be loaded at time 0 via an AstInitial } // 2. Under modules, it's an initial value to be loaded at time 0 via an AstInitial
else if (m_valueModp) { else if (m_valueModp) {

View File

@ -62,7 +62,7 @@ private:
string rsvd = m_words.isKeyword(nodep->name()); string rsvd = m_words.isKeyword(nodep->name());
if (rsvd != "") { if (rsvd != "") {
nodep->v3warn(SYMRSVDWORD, "Symbol matches "+rsvd nodep->v3warn(SYMRSVDWORD, "Symbol matches "+rsvd
+": '"<<nodep->prettyName()<<"'"); +": "<<nodep->prettyNameQ());
string newname = string("__SYM__")+nodep->name(); string newname = string("__SYM__")+nodep->name();
nodep->name(newname); nodep->name(newname);
} }

View File

@ -282,7 +282,7 @@ private:
if (varrefp->varp()->attrClocker() == AstVarAttrClocker::CLOCKER_YES) { if (varrefp->varp()->attrClocker() == AstVarAttrClocker::CLOCKER_YES) {
if (m_inClocked) { if (m_inClocked) {
varrefp->v3warn(CLKDATA, "Clock used as data (on rhs of assignment) in sequential block " varrefp->v3warn(CLKDATA, "Clock used as data (on rhs of assignment) in sequential block "
<<varrefp->prettyName()<<endl); <<varrefp->prettyNameQ()<<endl);
} else { } else {
m_hasClk = true; m_hasClk = true;
UINFO(5, "node is already marked as clocker "<<varrefp<<endl); UINFO(5, "node is already marked as clocker "<<varrefp<<endl);
@ -320,7 +320,7 @@ private:
if (m_inClocked) { if (m_inClocked) {
nodep->v3warn(CLKDATA, nodep->v3warn(CLKDATA,
"Clock used as data (on rhs of assignment) in sequential block " "Clock used as data (on rhs of assignment) in sequential block "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} else { } else {
m_hasClk = true; m_hasClk = true;
m_childClkWidth = nodep->width(); // Pass up m_childClkWidth = nodep->width(); // Pass up
@ -833,10 +833,10 @@ private:
// //
if (vertexp->isClock()) { if (vertexp->isClock()) {
// Seems obvious; no warning yet // Seems obvious; no warning yet
//nodep->v3warn(GENCLK,"Signal unoptimizable: Generated clock: "<<nodep->prettyName()); //nodep->v3warn(GENCLK, "Signal unoptimizable: Generated clock: "<<nodep->prettyNameQ());
} else if (nodep->varp()->isSigPublic()) { } else if (nodep->varp()->isSigPublic()) {
nodep->v3warn(UNOPT, "Signal unoptimizable: Feedback to public clock or circular logic: " nodep->v3warn(UNOPT, "Signal unoptimizable: Feedback to public clock or circular logic: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
if (!nodep->fileline()->warnIsOff(V3ErrorCode::UNOPT)) { if (!nodep->fileline()->warnIsOff(V3ErrorCode::UNOPT)) {
nodep->fileline()->modifyWarnOff(V3ErrorCode::UNOPT, true); // Complain just once nodep->fileline()->modifyWarnOff(V3ErrorCode::UNOPT, true); // Complain just once
// Give the user an example. // Give the user an example.
@ -850,7 +850,7 @@ private:
// it was needed, that aren't any more // it was needed, that aren't any more
// First v3warn not inside warnIsOff so we can see the suppressions with --debug // First v3warn not inside warnIsOff so we can see the suppressions with --debug
nodep->v3warn(UNOPTFLAT, "Signal unoptimizable: Feedback to clock or circular logic: " nodep->v3warn(UNOPTFLAT, "Signal unoptimizable: Feedback to clock or circular logic: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
if (!nodep->fileline()->warnIsOff(V3ErrorCode::UNOPTFLAT)) { if (!nodep->fileline()->warnIsOff(V3ErrorCode::UNOPTFLAT)) {
nodep->fileline()->modifyWarnOff(V3ErrorCode::UNOPTFLAT, true); // Complain just once nodep->fileline()->modifyWarnOff(V3ErrorCode::UNOPTFLAT, true); // Complain just once
// Give the user an example. // Give the user an example.

View File

@ -285,7 +285,7 @@ private:
if (!nodep->valuep()) { if (!nodep->valuep()) {
nodep->v3error("Parameter without initial value is never given value" nodep->v3error("Parameter without initial value is never given value"
<<" (IEEE 1800-2017 6.20.1): " <<" (IEEE 1800-2017 6.20.1): "
<<nodep->prettyName()); <<nodep->prettyNameQ());
} else { } else {
V3Const::constifyParamsEdit(nodep); // The variable, not just the var->init() V3Const::constifyParamsEdit(nodep); // The variable, not just the var->init()
if (!VN_IS(nodep->valuep(), Const)) { // Complex init, like an array if (!VN_IS(nodep->valuep(), Const)) { // Complex init, like an array
@ -400,7 +400,7 @@ private:
nodep->name()+"__BRA__"+index+"__KET__"); nodep->name()+"__BRA__"+index+"__KET__");
} else { } else {
nodep->v3error("Could not expand constant selection inside dotted reference: " nodep->v3error("Could not expand constant selection inside dotted reference: "
<<nodep->selp()->prettyName()); <<nodep->selp()->prettyNameQ());
return; return;
} }
} }
@ -582,7 +582,7 @@ void ParamVisitor::visitCell(AstCell* nodep) {
if (AstVar* modvarp = pinp->modVarp()) { if (AstVar* modvarp = pinp->modVarp()) {
if (!modvarp->isGParam()) { if (!modvarp->isGParam()) {
pinp->v3error("Attempted parameter setting of non-parameter: Param " pinp->v3error("Attempted parameter setting of non-parameter: Param "
<<pinp->prettyName()<<" of "<<nodep->prettyName()); <<pinp->prettyNameQ()<<" of "<<nodep->prettyNameQ());
} else if (VN_IS(pinp->exprp(), InitArray) } else if (VN_IS(pinp->exprp(), InitArray)
&& VN_IS(modvarp->subDTypep(), UnpackArrayDType)) { && VN_IS(modvarp->subDTypep(), UnpackArrayDType)) {
// Array assigned to array // Array assigned to array
@ -595,7 +595,7 @@ void ParamVisitor::visitCell(AstCell* nodep) {
if (!exprp) { if (!exprp) {
//if (debug()) pinp->dumpTree(cout, "error:"); //if (debug()) pinp->dumpTree(cout, "error:");
pinp->v3error("Can't convert defparam value to constant: Param " pinp->v3error("Can't convert defparam value to constant: Param "
<<pinp->name()<<" of "<<nodep->prettyName()); <<pinp->prettyNameQ()<<" of "<<nodep->prettyNameQ());
pinp->exprp()->replaceWith( pinp->exprp()->replaceWith(
new AstConst(pinp->fileline(), new AstConst(pinp->fileline(),
AstConst::WidthedValue(), modvarp->width(), 0)); AstConst::WidthedValue(), modvarp->width(), 0));
@ -620,10 +620,10 @@ void ParamVisitor::visitCell(AstCell* nodep) {
AstNodeDType* origp = modvarp->subDTypep(); AstNodeDType* origp = modvarp->subDTypep();
if (!exprp) { if (!exprp) {
pinp->v3error("Parameter type pin value isn't a type: Param " pinp->v3error("Parameter type pin value isn't a type: Param "
<<pinp->prettyName()<<" of "<<nodep->prettyName()); <<pinp->prettyNameQ()<<" of "<<nodep->prettyNameQ());
} else if (!origp) { } else if (!origp) {
pinp->v3error("Parameter type variable isn't a type: Param " pinp->v3error("Parameter type variable isn't a type: Param "
<<modvarp->prettyName()); <<modvarp->prettyNameQ());
} else { } else {
UINFO(9,"Parameter type assignment expr="<<exprp<<" to "<<origp<<endl); UINFO(9,"Parameter type assignment expr="<<exprp<<" to "<<origp<<endl);
if (origp && exprp->sameTree(origp)) { if (origp && exprp->sameTree(origp)) {
@ -638,7 +638,7 @@ void ParamVisitor::visitCell(AstCell* nodep) {
} }
} else { } else {
pinp->v3error("Parameter not found in sub-module: Param " pinp->v3error("Parameter not found in sub-module: Param "
<<pinp->prettyName()<<" of "<<nodep->prettyName()); <<pinp->prettyNameQ()<<" of "<<nodep->prettyNameQ());
} }
} }
IfaceRefRefs ifaceRefRefs; IfaceRefRefs ifaceRefRefs;
@ -680,11 +680,11 @@ void ParamVisitor::visitCell(AstCell* nodep) {
UINFO(9," portIfaceRef "<<portIrefp<<endl); UINFO(9," portIfaceRef "<<portIrefp<<endl);
if (!portIrefp) { if (!portIrefp) {
pinp->v3error("Interface port '"<<modvarp->prettyName() pinp->v3error("Interface port "<<modvarp->prettyNameQ()
<<"' is not an interface " << modvarp); <<" is not an interface " << modvarp);
} else if (!pinIrefp) { } else if (!pinIrefp) {
pinp->v3error("Interface port '"<<modvarp->prettyName() pinp->v3error("Interface port "<<modvarp->prettyNameQ()
<<"' is not connected to interface/modport pin expression"); <<" is not connected to interface/modport pin expression");
} else { } else {
UINFO(9," pinIfaceRef "<<pinIrefp<<endl); UINFO(9," pinIfaceRef "<<pinIrefp<<endl);
if (portIrefp->ifaceViaCellp() != pinIrefp->ifaceViaCellp()) { if (portIrefp->ifaceViaCellp() != pinIrefp->ifaceViaCellp()) {
@ -696,10 +696,11 @@ void ParamVisitor::visitCell(AstCell* nodep) {
if (portIrefp->ifacep() != pinIrefp->ifacep() if (portIrefp->ifacep() != pinIrefp->ifacep()
// Might be different only due to param cloning, so check names too // Might be different only due to param cloning, so check names too
&& portIrefp->ifaceName() != pinIrefp->ifaceName()) { && portIrefp->ifaceName() != pinIrefp->ifaceName()) {
pinp->v3error("Port '"<<pinp->prettyName()<<"' expects '" pinp->v3error("Port "<<pinp->prettyNameQ()<<" expects "
<<AstNode::prettyName(portIrefp->ifaceName()) <<AstNode::prettyNameQ(portIrefp->ifaceName())
<<"' interface but pin connects '" <<" interface but pin connects "
<<AstNode::prettyName(pinIrefp->ifaceName())<<"' interface"); <<AstNode::prettyNameQ(pinIrefp->ifaceName())
<<" interface");
} }
} }
} }

View File

@ -179,7 +179,7 @@ private:
if (m_splitVscp && m_splitVscp == lastSplitVscp) { if (m_splitVscp && m_splitVscp == lastSplitVscp) {
// We did this last time! Something's stuck! // We did this last time! Something's stuck!
nodep->v3fatalSrc("Infinite loop in isolate_assignments removal for: " nodep->v3fatalSrc("Infinite loop in isolate_assignments removal for: "
<<m_splitVscp->prettyName()) <<m_splitVscp->prettyNameQ())
m_splitVscp = NULL; m_splitVscp = NULL;
} }
lastSplitVscp = m_splitVscp; lastSplitVscp = m_splitVscp;

View File

@ -144,10 +144,10 @@ public:
void checkPurity(AstNodeFTask* nodep, TaskBaseVertex* vxp) { void checkPurity(AstNodeFTask* nodep, TaskBaseVertex* vxp) {
if (!vxp->pure()) { if (!vxp->pure()) {
nodep->v3warn(IMPURE, "Unsupported: External variable referenced by non-inlined function/task: " nodep->v3warn(IMPURE, "Unsupported: External variable referenced by non-inlined function/task: "
<<nodep->prettyName()<<endl <<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<vxp->impureNode()->warnOther()<<"... Location of the external reference: " <<vxp->impureNode()->warnOther()<<"... Location of the external reference: "
<<vxp->impureNode()->prettyName()<<endl <<vxp->impureNode()->prettyNameQ()<<endl
<<vxp->impureNode()->warnContextSecondary()); <<vxp->impureNode()->warnContextSecondary());
} }
// And, we need to check all tasks this task calls // And, we need to check all tasks this task calls
@ -388,7 +388,7 @@ private:
pinp->v3error("Function/task " pinp->v3error("Function/task "
+portp->direction().prettyName() // e.g. "output" +portp->direction().prettyName() // e.g. "output"
+" connected to constant instead of variable: " +" connected to constant instead of variable: "
+portp->prettyName()); +portp->prettyNameQ());
} }
else if (portp->isInoutish()) { else if (portp->isInoutish()) {
// Correct lvalue; see comments below // Correct lvalue; see comments below
@ -501,7 +501,7 @@ private:
pinp->v3error("Function/task " pinp->v3error("Function/task "
+portp->direction().prettyName() // e.g. "output" +portp->direction().prettyName() // e.g. "output"
+" connected to constant instead of variable: " +" connected to constant instead of variable: "
+portp->prettyName()); +portp->prettyNameQ());
} }
else if (portp->isInoutish()) { else if (portp->isInoutish()) {
// Correct lvalue; see comments below // Correct lvalue; see comments below
@ -617,7 +617,7 @@ private:
bool logicvec = (portp->basicp()->keyword().isDpiLogicVal() && portp->width() > 1); bool logicvec = (portp->basicp()->keyword().isDpiLogicVal() && portp->width() > 1);
if (isRtn && (bitvec || logicvec)) { if (isRtn && (bitvec || logicvec)) {
portp->v3error("DPI functions cannot return > 32 bits or four-state;" portp->v3error("DPI functions cannot return > 32 bits or four-state;"
" use a two-state type or task instead: "<<portp->prettyName()); " use a two-state type or task instead: "<<portp->prettyNameQ());
// Code below works, but won't compile right, and IEEE illegal // Code below works, but won't compile right, and IEEE illegal
} }
string stmt; string stmt;
@ -810,7 +810,7 @@ private:
void makeDpiImportProto(AstNodeFTask* nodep, AstVar* rtnvarp) { void makeDpiImportProto(AstNodeFTask* nodep, AstVar* rtnvarp) {
if (nodep->cname() != AstNode::prettyName(nodep->cname())) { if (nodep->cname() != AstNode::prettyName(nodep->cname())) {
nodep->v3error("DPI function has illegal characters in C identifier name: " nodep->v3error("DPI function has illegal characters in C identifier name: "
<<AstNode::prettyName(nodep->cname())); <<AstNode::prettyNameQ(nodep->cname()));
} }
AstCFunc* dpip = new AstCFunc(nodep->fileline(), AstCFunc* dpip = new AstCFunc(nodep->fileline(),
nodep->cname(), nodep->cname(),
@ -841,7 +841,7 @@ private:
} }
else if (iter->second.second != dpiproto) { else if (iter->second.second != dpiproto) {
nodep->v3error("Duplicate declaration of DPI function with different formal arguments: " nodep->v3error("Duplicate declaration of DPI function with different formal arguments: "
<<nodep->prettyName()<<endl <<nodep->prettyNameQ()<<endl
<<nodep->warnContextPrimary()<<endl <<nodep->warnContextPrimary()<<endl
<<nodep->warnMore()<<"... New prototype: "<<dpiproto<<endl <<nodep->warnMore()<<"... New prototype: "<<dpiproto<<endl
<<iter->second.first->warnOther()<<"... Original prototype: " <<iter->second.first->warnOther()<<"... Original prototype: "
@ -1244,7 +1244,7 @@ private:
if (nodep->dpiExport()) modes++; if (nodep->dpiExport()) modes++;
if (nodep->taskPublic()) modes++; if (nodep->taskPublic()) modes++;
if (modes > 1) nodep->v3error("Cannot mix DPI import, DPI export and/or public on same function: " if (modes > 1) nodep->v3error("Cannot mix DPI import, DPI export and/or public on same function: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
if (nodep->dpiImport() || nodep->dpiExport() if (nodep->dpiImport() || nodep->dpiExport()
|| nodep->taskPublic() || m_statep->ftaskNoInline(nodep)) { || nodep->taskPublic() || m_statep->ftaskNoInline(nodep)) {
@ -1382,14 +1382,14 @@ V3TaskConnects V3Task::taskConnects(AstNodeFTaskRef* nodep, AstNode* taskStmtsp)
// By name // By name
NameToIndex::iterator it = nameToIndex.find(argp->name()); NameToIndex::iterator it = nameToIndex.find(argp->name());
if (it == nameToIndex.end()) { if (it == nameToIndex.end()) {
pinp->v3error("No such argument '"<<argp->prettyName() pinp->v3error("No such argument "<<argp->prettyNameQ()
<<"' in function call to "<<nodep->taskp()->prettyTypeName()); <<" in function call to "<<nodep->taskp()->prettyTypeName());
// We'll just delete it; seems less error prone than making a false argument // We'll just delete it; seems less error prone than making a false argument
pinp->unlinkFrBack()->deleteTree(); VL_DANGLING(pinp); pinp->unlinkFrBack()->deleteTree(); VL_DANGLING(pinp);
} else { } else {
if (tconnects[it->second].second) { if (tconnects[it->second].second) {
pinp->v3error("Duplicate argument '"<<argp->prettyName() pinp->v3error("Duplicate argument "<<argp->prettyNameQ()
<<"' in function call to "<<nodep->taskp()->prettyTypeName()); <<" in function call to "<<nodep->taskp()->prettyTypeName());
} }
argp->name(""); // Can forget name as will add back in pin order argp->name(""); // Can forget name as will add back in pin order
tconnects[it->second].second = argp; tconnects[it->second].second = argp;
@ -1420,8 +1420,8 @@ V3TaskConnects V3Task::taskConnects(AstNodeFTaskRef* nodep, AstNode* taskStmtsp)
if (!tconnects[i].second || !tconnects[i].second->exprp()) { if (!tconnects[i].second || !tconnects[i].second->exprp()) {
AstNode* newvaluep = NULL; AstNode* newvaluep = NULL;
if (!portp->valuep()) { if (!portp->valuep()) {
nodep->v3error("Missing argument on non-defaulted argument '"<<portp->prettyName() nodep->v3error("Missing argument on non-defaulted argument "<<portp->prettyNameQ()
<<"' in function call to "<<nodep->taskp()->prettyTypeName()); <<" in function call to "<<nodep->taskp()->prettyTypeName());
newvaluep = new AstConst(nodep->fileline(), AstConst::Unsized32(), 0); newvaluep = new AstConst(nodep->fileline(), AstConst::Unsized32(), 0);
} else if (!VN_IS(portp->valuep(), Const)) { } else if (!VN_IS(portp->valuep(), Const)) {
// The default value for this port might be a constant // The default value for this port might be a constant
@ -1432,9 +1432,9 @@ V3TaskConnects V3Task::taskConnects(AstNodeFTaskRef* nodep, AstNode* taskStmtsp)
// Problem otherwise is we might have a varref, task // Problem otherwise is we might have a varref, task
// call, or something else that only makes sense in the // call, or something else that only makes sense in the
// domain of the function, not the callee. // domain of the function, not the callee.
nodep->v3error("Unsupported: Non-constant default value in missing argument '" nodep->v3error("Unsupported: Non-constant default value in missing argument "
<<portp->prettyName() <<portp->prettyNameQ()
<<"' in function call to "<<nodep->taskp()->prettyTypeName()); <<" in function call to "<<nodep->taskp()->prettyTypeName());
newvaluep = new AstConst(nodep->fileline(), AstConst::Unsized32(), 0); newvaluep = new AstConst(nodep->fileline(), AstConst::Unsized32(), 0);
} }
else { else {

View File

@ -390,7 +390,7 @@ class TristateVisitor : public TristateBaseVisitor {
invarp); invarp);
UINFO(9," newenv "<<newp<<endl); UINFO(9," newenv "<<newp<<endl);
if (!m_modp) { invarp->v3error("Unsupported: Creating tristate signal not underneath a module: " if (!m_modp) { invarp->v3error("Unsupported: Creating tristate signal not underneath a module: "
<<invarp->prettyName()); } <<invarp->prettyNameQ()); }
else m_modp->addStmtp(newp); else m_modp->addStmtp(newp);
invarp->user1p(newp); // find envar given invarp invarp->user1p(newp); // find envar given invarp
} }
@ -406,7 +406,7 @@ class TristateVisitor : public TristateBaseVisitor {
invarp); invarp);
UINFO(9," newout "<<newp<<endl); UINFO(9," newout "<<newp<<endl);
if (!m_modp) { invarp->v3error("Unsupported: Creating tristate signal not underneath a module: " if (!m_modp) { invarp->v3error("Unsupported: Creating tristate signal not underneath a module: "
<<invarp->prettyName()); } <<invarp->prettyNameQ()); }
else m_modp->addStmtp(newp); else m_modp->addStmtp(newp);
invarp->user4p(newp); // find outvar given invarp invarp->user4p(newp); // find outvar given invarp
} }

View File

@ -183,33 +183,34 @@ public:
// UNDRIVEN is considered more serious - as is more likely a bug, // UNDRIVEN is considered more serious - as is more likely a bug,
// thus undriven+unused bits get UNUSED warnings, as they're not as buggy. // thus undriven+unused bits get UNUSED warnings, as they're not as buggy.
if (!unusedMatch(nodep)) { if (!unusedMatch(nodep)) {
nodep->v3warn(UNUSED, "Signal is not driven, nor used: "<<nodep->prettyName()); nodep->v3warn(UNUSED, "Signal is not driven, nor used: "
<<nodep->prettyNameQ());
nodep->fileline()->modifyWarnOff(V3ErrorCode::UNUSED, true); // Warn only once nodep->fileline()->modifyWarnOff(V3ErrorCode::UNUSED, true); // Warn only once
} }
} else if (allD && !anyU) { } else if (allD && !anyU) {
if (!unusedMatch(nodep)) { if (!unusedMatch(nodep)) {
nodep->v3warn(UNUSED, "Signal is not used: "<<nodep->prettyName()); nodep->v3warn(UNUSED, "Signal is not used: "<<nodep->prettyNameQ());
nodep->fileline()->modifyWarnOff(V3ErrorCode::UNUSED, true); // Warn only once nodep->fileline()->modifyWarnOff(V3ErrorCode::UNUSED, true); // Warn only once
} }
} else if (!anyD && allU) { } else if (!anyD && allU) {
nodep->v3warn(UNDRIVEN, "Signal is not driven: "<<nodep->prettyName()); nodep->v3warn(UNDRIVEN, "Signal is not driven: "<<nodep->prettyNameQ());
nodep->fileline()->modifyWarnOff(V3ErrorCode::UNDRIVEN, true); // Warn only once nodep->fileline()->modifyWarnOff(V3ErrorCode::UNDRIVEN, true); // Warn only once
} else { } else {
// Bits have different dispositions // Bits have different dispositions
bool setU=false; bool setD=false; bool setU=false; bool setD=false;
if (anynotDU && !unusedMatch(nodep)) { if (anynotDU && !unusedMatch(nodep)) {
nodep->v3warn(UNUSED, "Bits of signal are not driven, nor used: " nodep->v3warn(UNUSED, "Bits of signal are not driven, nor used: "
<<nodep->prettyName() <<nodep->prettyNameQ()
<<bitNames(BN_BOTH)); <<bitNames(BN_BOTH));
setU = true; setU = true;
} }
if (anyDnotU && !unusedMatch(nodep)) { if (anyDnotU && !unusedMatch(nodep)) {
nodep->v3warn(UNUSED, "Bits of signal are not used: "<<nodep->prettyName() nodep->v3warn(UNUSED, "Bits of signal are not used: "<<nodep->prettyNameQ()
<<bitNames(BN_UNUSED)); <<bitNames(BN_UNUSED));
setU = true; setU = true;
} }
if (anyUnotD) { if (anyUnotD) {
nodep->v3warn(UNDRIVEN, "Bits of signal are not driven: "<<nodep->prettyName() nodep->v3warn(UNDRIVEN, "Bits of signal are not driven: "<<nodep->prettyNameQ()
<<bitNames(BN_UNDRIVEN)); <<bitNames(BN_UNDRIVEN));
setD = true; setD = true;
} }
@ -267,7 +268,7 @@ private:
&& !VN_IS(nodep, VarXRef) // Xrefs might point at two different instances && !VN_IS(nodep, VarXRef) // Xrefs might point at two different instances
&& !varp->fileline()->warnIsOff(V3ErrorCode::ALWCOMBORDER)) { // Warn only once per variable && !varp->fileline()->warnIsOff(V3ErrorCode::ALWCOMBORDER)) { // Warn only once per variable
nodep->v3warn(ALWCOMBORDER, "Always_comb variable driven after use: " nodep->v3warn(ALWCOMBORDER, "Always_comb variable driven after use: "
<<nodep->prettyName()); <<nodep->prettyNameQ());
varp->fileline()->modifyWarnOff(V3ErrorCode::ALWCOMBORDER, true); // Complain just once for any usage varp->fileline()->modifyWarnOff(V3ErrorCode::ALWCOMBORDER, true); // Complain just once for any usage
} }
} }
@ -333,13 +334,13 @@ private:
if (m_inProcAssign && !nodep->varp()->varType().isProcAssignable()) { if (m_inProcAssign && !nodep->varp()->varType().isProcAssignable()) {
nodep->v3warn(PROCASSWIRE, "Procedural assignment to wire, perhaps intended var" nodep->v3warn(PROCASSWIRE, "Procedural assignment to wire, perhaps intended var"
" (IEEE 2017 6.5): " " (IEEE 2017 6.5): "
+nodep->prettyName()); +nodep->prettyNameQ());
} }
if (m_inContAssign && !nodep->varp()->varType().isContAssignable() if (m_inContAssign && !nodep->varp()->varType().isContAssignable()
&& !nodep->fileline()->language().systemVerilog()) { && !nodep->fileline()->language().systemVerilog()) {
nodep->v3warn(CONTASSREG, "Continuous assignment to reg, perhaps intended wire" nodep->v3warn(CONTASSREG, "Continuous assignment to reg, perhaps intended wire"
" (IEEE 2005 6.1; Verilog only, legal in SV): " " (IEEE 2005 6.1; Verilog only, legal in SV): "
+nodep->prettyName()); +nodep->prettyNameQ());
} }
} }
for (int usr=1; usr<(m_alwaysCombp?3:2); ++usr) { for (int usr=1; usr<(m_alwaysCombp?3:2); ++usr) {

View File

@ -122,7 +122,7 @@ private:
m_forVarp = VN_CAST(initAssp->lhsp(), VarRef)->varp(); m_forVarp = VN_CAST(initAssp->lhsp(), VarRef)->varp();
m_forVscp = VN_CAST(initAssp->lhsp(), VarRef)->varScopep(); m_forVscp = VN_CAST(initAssp->lhsp(), VarRef)->varScopep();
if (VN_IS(nodep, GenFor) && !m_forVarp->isGenVar()) { if (VN_IS(nodep, GenFor) && !m_forVarp->isGenVar()) {
nodep->v3error("Non-genvar used in generate for: "<<m_forVarp->prettyName()<<endl); nodep->v3error("Non-genvar used in generate for: "<<m_forVarp->prettyNameQ()<<endl);
} }
if (m_generate) V3Const::constifyParamsEdit(initAssp->rhsp()); // rhsp may change if (m_generate) V3Const::constifyParamsEdit(initAssp->rhsp()); // rhsp may change

View File

@ -1220,7 +1220,7 @@ private:
if (nodep->didWidth()) return; if (nodep->didWidth()) return;
if (nodep->doingWidth()) { // Early exit if have circular parameter definition if (nodep->doingWidth()) { // Early exit if have circular parameter definition
UASSERT_OBJ(nodep->valuep(), nodep, "circular, but without value"); UASSERT_OBJ(nodep->valuep(), nodep, "circular, but without value");
nodep->v3error("Variable's initial value is circular: "<<nodep->prettyName()); nodep->v3error("Variable's initial value is circular: "<<nodep->prettyNameQ());
pushDeletep(nodep->valuep()->unlinkFrBack()); pushDeletep(nodep->valuep()->unlinkFrBack());
nodep->valuep(new AstConst(nodep->fileline(), AstConst::LogicTrue())); nodep->valuep(new AstConst(nodep->fileline(), AstConst::LogicTrue()));
nodep->dtypeFrom(nodep->valuep()); nodep->dtypeFrom(nodep->valuep());
@ -1318,7 +1318,7 @@ private:
if (!nodep->varp()) { if (!nodep->varp()) {
if (m_paramsOnly && VN_IS(nodep, VarXRef)) { if (m_paramsOnly && VN_IS(nodep, VarXRef)) {
checkConstantOrReplace(nodep, "Parameter-resolved constants must not use dotted references: " checkConstantOrReplace(nodep, "Parameter-resolved constants must not use dotted references: "
+nodep->prettyName()); VL_DANGLING(nodep); +nodep->prettyNameQ()); VL_DANGLING(nodep);
return; return;
} else { } else {
nodep->v3fatalSrc("Unlinked varref"); nodep->v3fatalSrc("Unlinked varref");
@ -1336,13 +1336,13 @@ private:
} }
//if (debug()>=9) nodep->dumpTree(cout, " VRout "); //if (debug()>=9) nodep->dumpTree(cout, " VRout ");
if (nodep->lvalue() && nodep->varp()->direction() == VDirection::CONSTREF) { if (nodep->lvalue() && nodep->varp()->direction() == VDirection::CONSTREF) {
nodep->v3error("Assigning to const ref variable: "<<nodep->prettyName()); nodep->v3error("Assigning to const ref variable: "<<nodep->prettyNameQ());
} }
else if (nodep->lvalue() && nodep->varp()->isConst() else if (nodep->lvalue() && nodep->varp()->isConst()
&& !m_paramsOnly && !m_paramsOnly
&& !m_initialp) { // Too loose, but need to allow our generated first assignment && !m_initialp) { // Too loose, but need to allow our generated first assignment
// // Move this to a property of the AstInitial block // // Move this to a property of the AstInitial block
nodep->v3error("Assigning to const variable: "<<nodep->prettyName()); nodep->v3error("Assigning to const variable: "<<nodep->prettyNameQ());
} }
nodep->didWidth(true); nodep->didWidth(true);
} }
@ -1387,7 +1387,7 @@ private:
// Look for duplicates // Look for duplicates
if (inits.find(num) != inits.end()) { // IEEE says illegal if (inits.find(num) != inits.end()) { // IEEE says illegal
AstNode* otherp = inits.find(num)->second; AstNode* otherp = inits.find(num)->second;
itemp->v3error("Overlapping enumeration value: "<<itemp->prettyName()<<endl itemp->v3error("Overlapping enumeration value: "<<itemp->prettyNameQ()<<endl
<<itemp->warnContextPrimary()<<endl <<itemp->warnContextPrimary()<<endl
<<otherp->warnOther() <<otherp->warnOther()
<<"... Location of original declaration\n" <<"... Location of original declaration\n"
@ -1553,7 +1553,7 @@ private:
// No need to width-resolve the class, as it was done when we did the child // No need to width-resolve the class, as it was done when we did the child
memberp = adtypep->findMember(nodep->name()); memberp = adtypep->findMember(nodep->name());
if (!memberp) { if (!memberp) {
nodep->v3error("Member '"<<nodep->prettyName()<<"' not found in structure"); nodep->v3error("Member "<<nodep->prettyNameQ()<<" not found in structure");
} }
} }
else if (VN_IS(fromDtp, EnumDType)) { else if (VN_IS(fromDtp, EnumDType)) {
@ -1690,7 +1690,7 @@ private:
0, selwidth)); 0, selwidth));
nodep->replaceWith(newp); nodep->deleteTree(); VL_DANGLING(nodep); nodep->replaceWith(newp); nodep->deleteTree(); VL_DANGLING(nodep);
} else { } else {
nodep->v3error("Unknown built-in enum method '"<<nodep->prettyName()<<"'"); nodep->v3error("Unknown built-in enum method "<<nodep->prettyNameQ());
} }
} }
else if (AstUnpackArrayDType* arrayType = VN_CAST(fromDtp, UnpackArrayDType)) { else if (AstUnpackArrayDType* arrayType = VN_CAST(fromDtp, UnpackArrayDType)) {
@ -1729,7 +1729,7 @@ private:
nodep->deleteTree(); VL_DANGLING(nodep); nodep->deleteTree(); VL_DANGLING(nodep);
} }
else { else {
nodep->v3error("Unknown built-in array method '"<<nodep->prettyName()<<"'"); nodep->v3error("Unknown built-in array method "<<nodep->prettyNameQ());
} }
} }
else if (basicp && basicp->isString()) { else if (basicp && basicp->isString()) {
@ -1751,7 +1751,7 @@ private:
} else if (nodep->name() == "realtoa") { } else if (nodep->name() == "realtoa") {
replaceWithSFormat(nodep, "%g"); VL_DANGLING(nodep); replaceWithSFormat(nodep, "%g"); VL_DANGLING(nodep);
} else { } else {
nodep->v3error("Unsupported: built-in string method '"<<nodep->prettyName()<<"'"); nodep->v3error("Unsupported: built-in string method "<<nodep->prettyNameQ());
} }
} }
else { else {
@ -2450,7 +2450,7 @@ private:
userIterateAndNext(nodep->exprp(), WidthVP(subDTypep, FINAL).p()); userIterateAndNext(nodep->exprp(), WidthVP(subDTypep, FINAL).p());
} else { } else {
if (nodep->modVarp()->direction() == VDirection::REF) { if (nodep->modVarp()->direction() == VDirection::REF) {
nodep->v3error("Ref connection '"<<nodep->modVarp()->prettyName()<<"'" nodep->v3error("Ref connection "<<nodep->modVarp()->prettyNameQ()
<<" requires matching types;" <<" requires matching types;"
<<" ref requires "<<pinDTypep->prettyTypeName() <<" ref requires "<<pinDTypep->prettyTypeName()
<<" but connection is " <<" but connection is "
@ -2702,13 +2702,13 @@ private:
if (portp->direction() == VDirection::REF if (portp->direction() == VDirection::REF
&& !similarDTypeRecurse(portp->dtypep(), pinp->dtypep())) { && !similarDTypeRecurse(portp->dtypep(), pinp->dtypep())) {
pinp->v3error("Ref argument requires matching types;" pinp->v3error("Ref argument requires matching types;"
<<" port '"<<portp->prettyName()<<"'" <<" port "<<portp->prettyNameQ()
<<" requires "<<portp->prettyTypeName() <<" requires "<<portp->prettyTypeName()
<<" but connection is "<<pinp->prettyTypeName()<<"."); <<" but connection is "<<pinp->prettyTypeName()<<".");
} else if (portp->isWritable() } else if (portp->isWritable()
&& pinp->width() != portp->width()) { && pinp->width() != portp->width()) {
pinp->v3error("Unsupported: Function output argument '" pinp->v3error("Unsupported: Function output argument "
<<portp->prettyName()<<"'" <<portp->prettyNameQ()
<<" requires "<<portp->width() <<" requires "<<portp->width()
<<" bits, but connection's "<<pinp->prettyTypeName() <<" bits, but connection's "<<pinp->prettyTypeName()
<<" generates "<<pinp->width()<<" bits."); <<" generates "<<pinp->width()<<" bits.");

View File

@ -1,3 +1,3 @@
%Error: t/t_assert_dup_bad.v:16: Duplicate declaration of block: covlabel %Error: t/t_assert_dup_bad.v:16: Duplicate declaration of block: 'covlabel'
t/t_assert_dup_bad.v:14: ... Location of original declaration t/t_assert_dup_bad.v:14: ... Location of original declaration
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,6 +1,6 @@
%Warning-CDCRSTLOGIC: t/t_cdc_async_bad.v:27: Logic in path that feeds async reset, via signal: t.rst2_bad_n %Warning-CDCRSTLOGIC: t/t_cdc_async_bad.v:27: Logic in path that feeds async reset, via signal: 't.rst2_bad_n'
... Use "/* verilator lint_off CDCRSTLOGIC */" and lint_on around source to disable this message. ... Use "/* verilator lint_off CDCRSTLOGIC */" and lint_on around source to disable this message.
%Warning-CDCRSTLOGIC: See details in obj_vlt/t_cdc_async_bad/Vt_cdc_async_bad__cdc.txt %Warning-CDCRSTLOGIC: See details in obj_vlt/t_cdc_async_bad/Vt_cdc_async_bad__cdc.txt
%Warning-CDCRSTLOGIC: t/t_cdc_async_bad.v:52: Logic in path that feeds async reset, via signal: t.rst6a_bad_n %Warning-CDCRSTLOGIC: t/t_cdc_async_bad.v:52: Logic in path that feeds async reset, via signal: 't.rst6a_bad_n'
%Warning-CDCRSTLOGIC: t/t_cdc_async_bad.v:53: Logic in path that feeds async reset, via signal: t.rst6b_bad_n %Warning-CDCRSTLOGIC: t/t_cdc_async_bad.v:53: Logic in path that feeds async reset, via signal: 't.rst6b_bad_n'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Warning-CLKDATA: t/t_clk_scope_bad.v:35: Clock used as data (on rhs of assignment) in sequential block clk %Warning-CLKDATA: t/t_clk_scope_bad.v:35: Clock used as data (on rhs of assignment) in sequential block 'clk'
... Use "/* verilator lint_off CLKDATA */" and lint_on around source to disable this message. ... Use "/* verilator lint_off CLKDATA */" and lint_on around source to disable this message.
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_dpi_2exp_bad.v:11: Function was already DPI Exported, duplicate not allowed: dpix_twice %Error: t/t_dpi_2exp_bad.v:11: Function was already DPI Exported, duplicate not allowed: 'dpix_twice'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_dpi_dup_bad.v:12: Duplicate declaration of DPI function with different formal arguments: t.oth_f_int2 %Error: t/t_dpi_dup_bad.v:12: Duplicate declaration of DPI function with different formal arguments: 't.oth_f_int2'
: ... New prototype: pure int dpii_fa_bit (int, int) : ... New prototype: pure int dpii_fa_bit (int, int)
t/t_dpi_dup_bad.v:11: ... Original prototype: int dpii_fa_bit (int) t/t_dpi_dup_bad.v:11: ... Original prototype: int dpii_fa_bit (int)
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_dpi_exp_bad.v:11: DPI functions cannot return > 32 bits or four-state; use a two-state type or task instead: dpix_f_bit48__Vfuncrtn %Error: t/t_dpi_exp_bad.v:11: DPI functions cannot return > 32 bits or four-state; use a two-state type or task instead: 'dpix_f_bit48__Vfuncrtn'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_dpi_name_bad.v:11: DPI function has illegal characters in C identifier name: badly.named %Error: t/t_dpi_name_bad.v:11: DPI function has illegal characters in C identifier name: 'badly.named'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_enum_overlap_bad.v:11: Overlapping enumeration value: e1b %Error: t/t_enum_overlap_bad.v:11: Overlapping enumeration value: 'e1b'
t/t_enum_overlap_bad.v:9: ... Location of original declaration t/t_enum_overlap_bad.v:9: ... Location of original declaration
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,5 +1,5 @@
%Error: t/t_flag_errorlimit_bad.v:9: Duplicate declaration of signal: u1 %Error: t/t_flag_errorlimit_bad.v:9: Duplicate declaration of signal: 'u1'
t/t_flag_errorlimit_bad.v:8: ... Location of original declaration t/t_flag_errorlimit_bad.v:8: ... Location of original declaration
%Error: t/t_flag_errorlimit_bad.v:10: Duplicate declaration of signal: u1 %Error: t/t_flag_errorlimit_bad.v:10: Duplicate declaration of signal: 'u1'
t/t_flag_errorlimit_bad.v:8: ... Location of original declaration t/t_flag_errorlimit_bad.v:8: ... Location of original declaration
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,5 +1,5 @@
%Warning-MULTITOP: t/t_flag_topmodule.v:14: Multiple top level modules: a2 and a %Warning-MULTITOP: t/t_flag_topmodule.v:14: Multiple top level modules: 'a2' and 'a'
: ... Suggest see manual; fix the duplicates, or use --top-module to select top. : ... Suggest see manual; fix the duplicates, or use --top-module to select top.
... Use "/* verilator lint_off MULTITOP */" and lint_on around source to disable this message. ... Use "/* verilator lint_off MULTITOP */" and lint_on around source to disable this message.
%Warning-MULTITOP: t/t_flag_topmodule.v:21: Multiple top level modules: b and a2 %Warning-MULTITOP: t/t_flag_topmodule.v:21: Multiple top level modules: 'b' and 'a2'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_func_task_bad.v:9: Illegal call of a task as a function: task_as_func %Error: t/t_func_task_bad.v:9: Illegal call of a task as a function: 'task_as_func'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_func_tie_bad.v:10: Function/task output connected to constant instead of variable: b %Error: t/t_func_tie_bad.v:10: Function/task output connected to constant instead of variable: 'b'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_gen_var_bad.v:9: Non-genvar used in generate for: i %Error: t/t_gen_var_bad.v:9: Non-genvar used in generate for: 'i'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,5 +1,5 @@
%Warning-PINNOCONNECT: t/t_inst_missing_bad.v:8: Cell pin is not connected: __pinNumber2 %Warning-PINNOCONNECT: t/t_inst_missing_bad.v:8: Cell pin is not connected: '__pinNumber2'
... Use "/* verilator lint_off PINNOCONNECT */" and lint_on around source to disable this message. ... Use "/* verilator lint_off PINNOCONNECT */" and lint_on around source to disable this message.
%Warning-PINCONNECTEMPTY: t/t_inst_missing_bad.v:8: Cell pin connected by name with empty reference: nc %Warning-PINCONNECTEMPTY: t/t_inst_missing_bad.v:8: Cell pin connected by name with empty reference: 'nc'
%Warning-PINMISSING: t/t_inst_missing_bad.v:8: Cell has missing pin: missing %Warning-PINMISSING: t/t_inst_missing_bad.v:8: Cell has missing pin: 'missing'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_inst_recurse2_bad.v:17: Unsupported: Identically recursive module (module instantiates itself, without changing parameters): looped %Error: t/t_inst_recurse2_bad.v:17: Unsupported: Identically recursive module (module instantiates itself, without changing parameters): 'looped'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_inst_recurse_bad.v:17: Unsupported: Recursive multiple modules (module instantiates something leading back to itself): looped %Error: t/t_inst_recurse_bad.v:17: Unsupported: Recursive multiple modules (module instantiates something leading back to itself): 'looped'
... note: self-recursion (module instantiating itself directly) is supported. ... note: self-recursion (module instantiating itself directly) is supported.
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_interface_array_bad.v:22: Expecting expression to be constant, but variable isn't const: bar %Error: t/t_interface_array_bad.v:22: Expecting expression to be constant, but variable isn't const: 'bar'
%Error: t/t_interface_array_bad.v:22: Could not expand constant selection inside dotted reference: bar %Error: t/t_interface_array_bad.v:22: Could not expand constant selection inside dotted reference: 'bar'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_interface_mismodport_bad.v:35: Can't find definition of 'bad' in dotted signal: isub.bad %Error: t/t_interface_mismodport_bad.v:35: Can't find definition of 'bad' in dotted signal: 'isub.bad'
... Known scopes under 'bad': <no cells found> ... Known scopes under 'bad': <no cells found>
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_interface_missing_bad.v:13: Cannot find file containing interface: foo_intf %Error: t/t_interface_missing_bad.v:13: Cannot find file containing interface: 'foo_intf'
%Error: t/t_interface_missing_bad.v:19: Cannot find file containing interface: foo_intf %Error: t/t_interface_missing_bad.v:19: Cannot find file containing interface: 'foo_intf'
%Error: t/t_interface_missing_bad.v:24: Found definition of 'the_foo' as a CELL but expected a variable %Error: t/t_interface_missing_bad.v:24: Found definition of 'the_foo' as a CELL but expected a variable
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_interface_modport_bad.v:22: Modport not found under interface 'ifc': oop_modport %Error: t/t_interface_modport_bad.v:22: Modport not found under interface 'ifc': 'oop_modport'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_interface_param_another_bad.v:8: Parameter-resolved constants must not use dotted references: dummy %Error: t/t_interface_param_another_bad.v:8: Parameter-resolved constants must not use dotted references: 'dummy'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_interface_top_bad.v:16: Unsupported: Interfaced port on top level module %Error: t/t_interface_top_bad.v:16: Unsupported: Interfaced port on top level module
%Error: t/t_interface_top_bad.v:16: Parent cell's interface is not found: ifc %Error: t/t_interface_top_bad.v:16: Parent cell's interface is not found: 'ifc'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_interface_typo_bad.v:13: Parent cell's interface is not found: foo_intf %Error: t/t_interface_typo_bad.v:13: Parent cell's interface is not found: 'foo_intf'
%Error: t/t_interface_typo_bad.v:21: Cannot find file containing interface: fo_intf %Error: t/t_interface_typo_bad.v:21: Cannot find file containing interface: 'fo_intf'
%Error: t/t_interface_typo_bad.v:26: Found definition of 'the_foo' as a CELL but expected a variable %Error: t/t_interface_typo_bad.v:26: Found definition of 'the_foo' as a CELL but expected a variable
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,6 +1,6 @@
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:28: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): temp1 %Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:28: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'temp1'
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:30: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): temp1 %Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:30: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'temp1'
%Warning-ALWCOMBORDER: t/t_lint_always_comb_bad.v:31: Always_comb variable driven after use: mid %Warning-ALWCOMBORDER: t/t_lint_always_comb_bad.v:31: Always_comb variable driven after use: 'mid'
... Use "/* verilator lint_off ALWCOMBORDER */" and lint_on around source to disable this message. ... Use "/* verilator lint_off ALWCOMBORDER */" and lint_on around source to disable this message.
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:45: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): temp1_d1r %Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:45: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'temp1_d1r'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Warning-DECLFILENAME: t/t_lint_declfilename.v:6: Filename 't_lint_declfilename' does not match MODULE name: t %Warning-DECLFILENAME: t/t_lint_declfilename.v:6: Filename 't_lint_declfilename' does not match MODULE name: 't'
... Use "/* verilator lint_off DECLFILENAME */" and lint_on around source to disable this message. ... Use "/* verilator lint_off DECLFILENAME */" and lint_on around source to disable this message.
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,6 +1,6 @@
%Warning-IMPLICIT: t/t_lint_implicit.v:10: Signal definition not found, creating implicitly: b %Warning-IMPLICIT: t/t_lint_implicit.v:10: Signal definition not found, creating implicitly: 'b'
... Use "/* verilator lint_off IMPLICIT */" and lint_on around source to disable this message. ... Use "/* verilator lint_off IMPLICIT */" and lint_on around source to disable this message.
%Warning-IMPLICIT: t/t_lint_implicit.v:12: Signal definition not found, creating implicitly: nt0 %Warning-IMPLICIT: t/t_lint_implicit.v:12: Signal definition not found, creating implicitly: 'nt0'
%Warning-IMPLICIT: t/t_lint_implicit.v:15: Signal definition not found, creating implicitly: dummy1 %Warning-IMPLICIT: t/t_lint_implicit.v:15: Signal definition not found, creating implicitly: 'dummy1'
%Warning-IMPLICIT: t/t_lint_implicit.v:15: Signal definition not found, creating implicitly: dummy2 %Warning-IMPLICIT: t/t_lint_implicit.v:15: Signal definition not found, creating implicitly: 'dummy2'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Warning-IMPLICIT: t/t_lint_implicit_def_bad.v:10: Signal definition not found, creating implicitly: imp_warn %Warning-IMPLICIT: t/t_lint_implicit_def_bad.v:10: Signal definition not found, creating implicitly: 'imp_warn'
... Use "/* verilator lint_off IMPLICIT */" and lint_on around source to disable this message. ... Use "/* verilator lint_off IMPLICIT */" and lint_on around source to disable this message.
%Error: t/t_lint_implicit_def_bad.v:15: Signal definition not found, and implicit disabled with `default_nettype: imp_err %Error: t/t_lint_implicit_def_bad.v:15: Signal definition not found, and implicit disabled with `default_nettype: 'imp_err'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_lint_import_name_bad.v:10: Import object not found: defs::sigs %Error: t/t_lint_import_name_bad.v:10: Import object not found: 'defs::sigs'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_lint_input_eq_bad.v:9: Unsupported: Default value on module input: i2 %Error: t/t_lint_input_eq_bad.v:9: Unsupported: Default value on module input: 'i2'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_lint_modport_dir_bad.v:25: Attempt to drive input-only modport: signal %Error: t/t_lint_modport_dir_bad.v:25: Attempt to drive input-only modport: 'signal'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,8 +1,8 @@
%Warning-MULTIDRIVEN: t/t_lint_multidriven_bad.v:20: Signal has multiple driving blocks with different clocking: t.mem %Warning-MULTIDRIVEN: t/t_lint_multidriven_bad.v:20: Signal has multiple driving blocks with different clocking: 't.mem'
t/t_lint_multidriven_bad.v:26: ... Location of first driving block t/t_lint_multidriven_bad.v:26: ... Location of first driving block
t/t_lint_multidriven_bad.v:23: ... Location of other driving block t/t_lint_multidriven_bad.v:23: ... Location of other driving block
... Use "/* verilator lint_off MULTIDRIVEN */" and lint_on around source to disable this message. ... Use "/* verilator lint_off MULTIDRIVEN */" and lint_on around source to disable this message.
%Warning-MULTIDRIVEN: t/t_lint_multidriven_bad.v:18: Signal has multiple driving blocks with different clocking: out2 %Warning-MULTIDRIVEN: t/t_lint_multidriven_bad.v:18: Signal has multiple driving blocks with different clocking: 'out2'
t/t_lint_multidriven_bad.v:34: ... Location of first driving block t/t_lint_multidriven_bad.v:34: ... Location of first driving block
t/t_lint_multidriven_bad.v:31: ... Location of other driving block t/t_lint_multidriven_bad.v:31: ... Location of other driving block
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Warning-UNUSED: t/t_lint_once_bad.v:18: Signal is not driven, nor used: unus1 %Warning-UNUSED: t/t_lint_once_bad.v:18: Signal is not driven, nor used: 'unus1'
... Use "/* verilator lint_off UNUSED */" and lint_on around source to disable this message. ... Use "/* verilator lint_off UNUSED */" and lint_on around source to disable this message.
%Warning-UNUSED: t/t_lint_once_bad.v:18: Signal is not driven, nor used: unus2 %Warning-UNUSED: t/t_lint_once_bad.v:18: Signal is not driven, nor used: 'unus2'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,6 +1,6 @@
%Error: t/t_lint_pindup_bad.v:17: Duplicate pin connection: i %Error: t/t_lint_pindup_bad.v:17: Duplicate pin connection: 'i'
t/t_lint_pindup_bad.v:16: ... Location of original pin connection t/t_lint_pindup_bad.v:16: ... Location of original pin connection
%Error: t/t_lint_pindup_bad.v:18: Pin not found: __pinNumber4 %Error: t/t_lint_pindup_bad.v:18: Pin not found: '__pinNumber4'
%Error: t/t_lint_pindup_bad.v:14: Duplicate parameter pin connection: P %Error: t/t_lint_pindup_bad.v:14: Duplicate parameter pin connection: 'P'
t/t_lint_pindup_bad.v:14: ... Location of original parameter pin connection t/t_lint_pindup_bad.v:14: ... Location of original parameter pin connection
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Warning-SYNCASYNCNET: t/t_lint_syncasyncnet_bad.v:15: Signal flopped as both synchronous and async: rst_both_l %Warning-SYNCASYNCNET: t/t_lint_syncasyncnet_bad.v:15: Signal flopped as both synchronous and async: 'rst_both_l'
t/t_lint_syncasyncnet_bad.v:90: ... Location of async usage t/t_lint_syncasyncnet_bad.v:90: ... Location of async usage
t/t_lint_syncasyncnet_bad.v:58: ... Location of sync usage t/t_lint_syncasyncnet_bad.v:58: ... Location of sync usage
... Use "/* verilator lint_off SYNCASYNCNET */" and lint_on around source to disable this message. ... Use "/* verilator lint_off SYNCASYNCNET */" and lint_on around source to disable this message.

View File

@ -1,8 +1,8 @@
%Warning-UNUSED: t/t_lint_unused_bad.v:16: Bits of signal are not used: assunu1[5:1] %Warning-UNUSED: t/t_lint_unused_bad.v:16: Bits of signal are not used: 'assunu1'[5:1]
... Use "/* verilator lint_off UNUSED */" and lint_on around source to disable this message. ... Use "/* verilator lint_off UNUSED */" and lint_on around source to disable this message.
%Warning-UNDRIVEN: t/t_lint_unused_bad.v:20: Bits of signal are not driven: udrb2[14:13,11] %Warning-UNDRIVEN: t/t_lint_unused_bad.v:20: Bits of signal are not driven: 'udrb2'[14:13,11]
%Warning-UNUSED: t/t_lint_unused_bad.v:25: Signal is not driven, nor used: unu3 %Warning-UNUSED: t/t_lint_unused_bad.v:25: Signal is not driven, nor used: 'unu3'
%Warning-UNUSED: t/t_lint_unused_bad.v:27: Bits of signal are not driven, nor used: mixed[3] %Warning-UNUSED: t/t_lint_unused_bad.v:27: Bits of signal are not driven, nor used: 'mixed'[3]
%Warning-UNUSED: t/t_lint_unused_bad.v:27: Bits of signal are not used: mixed[2] %Warning-UNUSED: t/t_lint_unused_bad.v:27: Bits of signal are not used: 'mixed'[2]
%Warning-UNDRIVEN: t/t_lint_unused_bad.v:27: Bits of signal are not driven: mixed[1] %Warning-UNDRIVEN: t/t_lint_unused_bad.v:27: Bits of signal are not driven: 'mixed'[1]
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Warning-UNDRIVEN: t/t_lint_unused_iface_bad.v:7: Signal is not driven: sig_udrv %Warning-UNDRIVEN: t/t_lint_unused_iface_bad.v:7: Signal is not driven: 'sig_udrv'
... Use "/* verilator lint_off UNDRIVEN */" and lint_on around source to disable this message. ... Use "/* verilator lint_off UNDRIVEN */" and lint_on around source to disable this message.
%Warning-UNUSED: t/t_lint_unused_iface_bad.v:8: Signal is not used: sig_uusd %Warning-UNUSED: t/t_lint_unused_iface_bad.v:8: Signal is not used: 'sig_uusd'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,6 +1,6 @@
%Warning-MODDUP: t/t_mod_dup_bad.v:13: Duplicate declaration of module: a %Warning-MODDUP: t/t_mod_dup_bad.v:13: Duplicate declaration of module: 'a'
t/t_mod_dup_bad.v:6: ... Location of original declaration t/t_mod_dup_bad.v:6: ... Location of original declaration
... Use "/* verilator lint_off MODDUP */" and lint_on around source to disable this message. ... Use "/* verilator lint_off MODDUP */" and lint_on around source to disable this message.
%Warning-MULTITOP: t/t_mod_dup_bad.v:16: Multiple top level modules: b and test %Warning-MULTITOP: t/t_mod_dup_bad.v:16: Multiple top level modules: 'b' and 'test'
: ... Suggest see manual; fix the duplicates, or use --top-module to select top. : ... Suggest see manual; fix the duplicates, or use --top-module to select top.
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,5 +1,5 @@
%Warning-MULTITOP: t/t_multitop_sig.v:14: Multiple top level modules: b and a %Warning-MULTITOP: t/t_multitop_sig.v:14: Multiple top level modules: 'b' and 'a'
: ... Suggest see manual; fix the duplicates, or use --top-module to select top. : ... Suggest see manual; fix the duplicates, or use --top-module to select top.
... Use "/* verilator lint_off MULTITOP */" and lint_on around source to disable this message. ... Use "/* verilator lint_off MULTITOP */" and lint_on around source to disable this message.
%Warning-MULTITOP: t/t_multitop_sig.v:22: Multiple top level modules: c and b %Warning-MULTITOP: t/t_multitop_sig.v:22: Multiple top level modules: 'c' and 'b'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,9 +1,9 @@
%Warning-IMPERFECTSCH: t/t_order_clkinst.v:17: Imperfect scheduling of variable: t.c1_start %Warning-IMPERFECTSCH: t/t_order_clkinst.v:17: Imperfect scheduling of variable: 't.c1_start'
... Use "/* verilator lint_off IMPERFECTSCH */" and lint_on around source to disable this message. ... Use "/* verilator lint_off IMPERFECTSCH */" and lint_on around source to disable this message.
%Warning-IMPERFECTSCH: t/t_order_clkinst.v:18: Imperfect scheduling of variable: t.c1_count %Warning-IMPERFECTSCH: t/t_order_clkinst.v:18: Imperfect scheduling of variable: 't.c1_count'
%Warning-IMPERFECTSCH: t/t_order_clkinst.v:22: Imperfect scheduling of variable: t.s2_count %Warning-IMPERFECTSCH: t/t_order_clkinst.v:22: Imperfect scheduling of variable: 't.s2_count'
%Warning-IMPERFECTSCH: t/t_order_clkinst.v:26: Imperfect scheduling of variable: t.c3_count %Warning-IMPERFECTSCH: t/t_order_clkinst.v:26: Imperfect scheduling of variable: 't.c3_count'
%Warning-IMPERFECTSCH: t/t_order_clkinst.v:70: Imperfect scheduling of variable: t.c1.runner %Warning-IMPERFECTSCH: t/t_order_clkinst.v:70: Imperfect scheduling of variable: 't.c1.runner'
%Warning-IMPERFECTSCH: t/t_order_clkinst.v:99: Imperfect scheduling of variable: t.s2.runner %Warning-IMPERFECTSCH: t/t_order_clkinst.v:99: Imperfect scheduling of variable: 't.s2.runner'
%Warning-IMPERFECTSCH: t/t_order_clkinst.v:70: Imperfect scheduling of variable: t.c3.runner %Warning-IMPERFECTSCH: t/t_order_clkinst.v:70: Imperfect scheduling of variable: 't.c3.runner'
%Error: Exiting due to %Error: Exiting due to

View File

@ -15,7 +15,7 @@ compile(
# However we no longer gate optimize this # However we no longer gate optimize this
# Can't use expect_filename here as unstable output # Can't use expect_filename here as unstable output
expect => expect =>
'%Warning-UNOPT: t/t_order_wireloop.v:\d+: Signal unoptimizable: Feedback to public clock or circular logic: bar '%Warning-UNOPT: t/t_order_wireloop.v:\d+: Signal unoptimizable: Feedback to public clock or circular logic: \'bar\'
', ',
); );

View File

@ -1,7 +1,7 @@
%Error: t/t_package_export.v:56: Can't find definition of scope/variable: PARAM2 %Error: t/t_package_export.v:56: Can't find definition of scope/variable: 'PARAM2'
%Error: t/t_package_export.v:57: Can't find definition of scope/variable: PARAM3 %Error: t/t_package_export.v:57: Can't find definition of scope/variable: 'PARAM3'
%Error: t/t_package_export.v:60: Can't find definition of scope/variable: PARAM2 %Error: t/t_package_export.v:60: Can't find definition of scope/variable: 'PARAM2'
%Error: t/t_package_export.v:61: Can't find definition of scope/variable: PARAM3 %Error: t/t_package_export.v:61: Can't find definition of scope/variable: 'PARAM3'
%Error: t/t_package_export.v:64: Can't find definition of scope/variable: PARAM2 %Error: t/t_package_export.v:64: Can't find definition of scope/variable: 'PARAM2'
%Error: t/t_package_export.v:65: Can't find definition of scope/variable: PARAM3 %Error: t/t_package_export.v:65: Can't find definition of scope/variable: 'PARAM3'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_param_circ_bad.v:10: Variable's initial value is circular: X %Error: t/t_param_circ_bad.v:10: Variable's initial value is circular: 'X'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_param_default_bad.v:6: Parameter without initial value is never given value (IEEE 1800-2017 6.20.1): Foo %Error: t/t_param_default_bad.v:6: Parameter without initial value is never given value (IEEE 1800-2017 6.20.1): 'Foo'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_param_up_bad.v:15: Can't find definition of scope/variable: bar %Error: t/t_param_up_bad.v:15: Can't find definition of scope/variable: 'bar'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Warning-UNOPTFLAT: t/t_unopt_combo.v:23: Signal unoptimizable: Feedback to clock or circular logic: t.c %Warning-UNOPTFLAT: t/t_unopt_combo.v:23: Signal unoptimizable: Feedback to clock or circular logic: 't.c'
... Use "/* verilator lint_off UNOPTFLAT */" and lint_on around source to disable this message. ... Use "/* verilator lint_off UNOPTFLAT */" and lint_on around source to disable this message.
t/t_unopt_combo.v:23: Example path: t.c t/t_unopt_combo.v:23: Example path: t.c
t/t_unopt_combo.v:80: Example path: ALWAYS t/t_unopt_combo.v:80: Example path: ALWAYS

View File

@ -1,4 +1,4 @@
%Warning-UNOPT: t/t_unopt_converge.v:18: Signal unoptimizable: Feedback to public clock or circular logic: x %Warning-UNOPT: t/t_unopt_converge.v:18: Signal unoptimizable: Feedback to public clock or circular logic: 'x'
... Use "/* verilator lint_off UNOPT */" and lint_on around source to disable this message. ... Use "/* verilator lint_off UNOPT */" and lint_on around source to disable this message.
t/t_unopt_converge.v:18: Example path: x t/t_unopt_converge.v:18: Example path: x
t/t_unopt_converge.v:21: Example path: ALWAYS t/t_unopt_converge.v:21: Example path: ALWAYS

View File

@ -1,4 +1,4 @@
%Warning-UNOPTFLAT: t/t_unoptflat_simple_2.v:14: Signal unoptimizable: Feedback to clock or circular logic: t.x %Warning-UNOPTFLAT: t/t_unoptflat_simple_2.v:14: Signal unoptimizable: Feedback to clock or circular logic: 't.x'
... Use "/* verilator lint_off UNOPTFLAT */" and lint_on around source to disable this message. ... Use "/* verilator lint_off UNOPTFLAT */" and lint_on around source to disable this message.
t/t_unoptflat_simple_2.v:14: Example path: t.x t/t_unoptflat_simple_2.v:14: Example path: t.x
t/t_unoptflat_simple_2.v:16: Example path: ASSIGNW t/t_unoptflat_simple_2.v:16: Example path: ASSIGNW

View File

@ -1,6 +1,6 @@
%Warning-VARHIDDEN: t/t_var_bad_hide.v:15: Declaration of signal hides declaration in upper scope: top %Warning-VARHIDDEN: t/t_var_bad_hide.v:15: Declaration of signal hides declaration in upper scope: 'top'
t/t_var_bad_hide.v:12: ... Location of original declaration t/t_var_bad_hide.v:12: ... Location of original declaration
... Use "/* verilator lint_off VARHIDDEN */" and lint_on around source to disable this message. ... Use "/* verilator lint_off VARHIDDEN */" and lint_on around source to disable this message.
%Warning-VARHIDDEN: t/t_var_bad_hide.v:21: Declaration of signal hides declaration in upper scope: top %Warning-VARHIDDEN: t/t_var_bad_hide.v:21: Declaration of signal hides declaration in upper scope: 'top'
t/t_var_bad_hide.v:12: ... Location of original declaration t/t_var_bad_hide.v:12: ... Location of original declaration
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Warning-VARHIDDEN: t/t_var_bad_hide2.v:13: Declaration of signal hides declaration in upper scope: t %Warning-VARHIDDEN: t/t_var_bad_hide2.v:13: Declaration of signal hides declaration in upper scope: 't'
t/t_var_bad_hide2.v:6: ... Location of original declaration t/t_var_bad_hide2.v:6: ... Location of original declaration
... Use "/* verilator lint_off VARHIDDEN */" and lint_on around source to disable this message. ... Use "/* verilator lint_off VARHIDDEN */" and lint_on around source to disable this message.
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,11 +1,11 @@
%Error: t/t_var_bad_sameas.v:9: Unsupported in C: Cell has the same name as variable: varfirst %Error: t/t_var_bad_sameas.v:9: Unsupported in C: Cell has the same name as variable: 'varfirst'
t/t_var_bad_sameas.v:8: ... Location of original declaration t/t_var_bad_sameas.v:8: ... Location of original declaration
%Error: t/t_var_bad_sameas.v:10: Unsupported in C: Task has the same name as cell: varfirst %Error: t/t_var_bad_sameas.v:10: Unsupported in C: Task has the same name as cell: 'varfirst'
t/t_var_bad_sameas.v:9: ... Location of original declaration t/t_var_bad_sameas.v:9: ... Location of original declaration
%Error: t/t_var_bad_sameas.v:13: Unsupported in C: Variable has same name as cell: cellfirst %Error: t/t_var_bad_sameas.v:13: Unsupported in C: Variable has same name as cell: 'cellfirst'
%Error: t/t_var_bad_sameas.v:14: Unsupported in C: Task has the same name as cell: cellfirst %Error: t/t_var_bad_sameas.v:14: Unsupported in C: Task has the same name as cell: 'cellfirst'
t/t_var_bad_sameas.v:12: ... Location of original declaration t/t_var_bad_sameas.v:12: ... Location of original declaration
%Error: t/t_var_bad_sameas.v:17: Unsupported in C: Variable has same name as task: taskfirst %Error: t/t_var_bad_sameas.v:17: Unsupported in C: Variable has same name as task: 'taskfirst'
%Error: t/t_var_bad_sameas.v:18: Unsupported in C: Cell has the same name as task: taskfirst %Error: t/t_var_bad_sameas.v:18: Unsupported in C: Cell has the same name as task: 'taskfirst'
t/t_var_bad_sameas.v:16: ... Location of original declaration t/t_var_bad_sameas.v:16: ... Location of original declaration
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_var_const_bad.v:16: Assigning to const variable: five %Error: t/t_var_const_bad.v:16: Assigning to const variable: 'five'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,6 +1,6 @@
%Error: t/t_var_dup2_bad.v:12: Duplicate declaration of signal: bad_o_w %Error: t/t_var_dup2_bad.v:12: Duplicate declaration of signal: 'bad_o_w'
: ... note: ANSI ports must have type declared with the I/O (IEEE 2017 23.2.2.2) : ... note: ANSI ports must have type declared with the I/O (IEEE 2017 23.2.2.2)
t/t_var_dup2_bad.v:9: ... Location of original declaration t/t_var_dup2_bad.v:9: ... Location of original declaration
%Error: t/t_var_dup2_bad.v:13: Duplicate declaration of signal: bad_o_r %Error: t/t_var_dup2_bad.v:13: Duplicate declaration of signal: 'bad_o_r'
t/t_var_dup2_bad.v:10: ... Location of original declaration t/t_var_dup2_bad.v:10: ... Location of original declaration
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,36 +1,36 @@
%Error: t/t_var_dup_bad.v:16: Duplicate declaration of signal: a %Error: t/t_var_dup_bad.v:16: Duplicate declaration of signal: 'a'
t/t_var_dup_bad.v:15: ... Location of original declaration t/t_var_dup_bad.v:15: ... Location of original declaration
%Error: t/t_var_dup_bad.v:19: Duplicate declaration of signal: l %Error: t/t_var_dup_bad.v:19: Duplicate declaration of signal: 'l'
t/t_var_dup_bad.v:18: ... Location of original declaration t/t_var_dup_bad.v:18: ... Location of original declaration
%Error: t/t_var_dup_bad.v:22: Duplicate declaration of signal: b %Error: t/t_var_dup_bad.v:22: Duplicate declaration of signal: 'b'
t/t_var_dup_bad.v:21: ... Location of original declaration t/t_var_dup_bad.v:21: ... Location of original declaration
%Error: t/t_var_dup_bad.v:25: Duplicate declaration of signal: o %Error: t/t_var_dup_bad.v:25: Duplicate declaration of signal: 'o'
t/t_var_dup_bad.v:24: ... Location of original declaration t/t_var_dup_bad.v:24: ... Location of original declaration
%Error: t/t_var_dup_bad.v:28: Duplicate declaration of signal: i %Error: t/t_var_dup_bad.v:28: Duplicate declaration of signal: 'i'
t/t_var_dup_bad.v:27: ... Location of original declaration t/t_var_dup_bad.v:27: ... Location of original declaration
%Error: t/t_var_dup_bad.v:31: Duplicate declaration of signal: oi %Error: t/t_var_dup_bad.v:31: Duplicate declaration of signal: 'oi'
t/t_var_dup_bad.v:30: ... Location of original declaration t/t_var_dup_bad.v:30: ... Location of original declaration
%Error: t/t_var_dup_bad.v:38: Duplicate declaration of signal: org %Error: t/t_var_dup_bad.v:38: Duplicate declaration of signal: 'org'
t/t_var_dup_bad.v:37: ... Location of original declaration t/t_var_dup_bad.v:37: ... Location of original declaration
%Error: t/t_var_dup_bad.v:65: Duplicate declaration of signal: bad_reout_port %Error: t/t_var_dup_bad.v:65: Duplicate declaration of signal: 'bad_reout_port'
t/t_var_dup_bad.v:63: ... Location of original declaration t/t_var_dup_bad.v:63: ... Location of original declaration
%Error: t/t_var_dup_bad.v:72: Duplicate declaration of signal: bad_rewire %Error: t/t_var_dup_bad.v:72: Duplicate declaration of signal: 'bad_rewire'
t/t_var_dup_bad.v:69: ... Location of original declaration t/t_var_dup_bad.v:69: ... Location of original declaration
%Error: t/t_var_dup_bad.v:73: Duplicate declaration of signal: bad_rereg %Error: t/t_var_dup_bad.v:73: Duplicate declaration of signal: 'bad_rereg'
t/t_var_dup_bad.v:70: ... Location of original declaration t/t_var_dup_bad.v:70: ... Location of original declaration
%Error: t/t_var_dup_bad.v:12: Duplicate declaration of port: oi %Error: t/t_var_dup_bad.v:12: Duplicate declaration of port: 'oi'
t/t_var_dup_bad.v:30: ... Location of original declaration t/t_var_dup_bad.v:30: ... Location of original declaration
%Error: t/t_var_dup_bad.v:49: Duplicate declaration of port: bad_duport %Error: t/t_var_dup_bad.v:49: Duplicate declaration of port: 'bad_duport'
t/t_var_dup_bad.v:51: ... Location of original declaration t/t_var_dup_bad.v:51: ... Location of original declaration
%Error: t/t_var_dup_bad.v:57: Duplicate declaration of port: bad_mixport %Error: t/t_var_dup_bad.v:57: Duplicate declaration of port: 'bad_mixport'
t/t_var_dup_bad.v:57: ... Location of original declaration t/t_var_dup_bad.v:57: ... Location of original declaration
%Error: t/t_var_dup_bad.v:40: Can't find definition of variable: bad_duport %Error: t/t_var_dup_bad.v:40: Can't find definition of variable: 'bad_duport'
%Error: t/t_var_dup_bad.v:40: Duplicate pin connection: bad_duport %Error: t/t_var_dup_bad.v:40: Duplicate pin connection: 'bad_duport'
t/t_var_dup_bad.v:40: ... Location of original pin connection t/t_var_dup_bad.v:40: ... Location of original pin connection
%Error: t/t_var_dup_bad.v:41: Can't find definition of variable: bad_mixport %Error: t/t_var_dup_bad.v:41: Can't find definition of variable: 'bad_mixport'
%Error: t/t_var_dup_bad.v:41: Duplicate pin connection: bad_mixport %Error: t/t_var_dup_bad.v:41: Duplicate pin connection: 'bad_mixport'
t/t_var_dup_bad.v:41: ... Location of original pin connection t/t_var_dup_bad.v:41: ... Location of original pin connection
%Error: t/t_var_dup_bad.v:42: Can't find definition of variable: bad_reout_port %Error: t/t_var_dup_bad.v:42: Can't find definition of variable: 'bad_reout_port'
%Error: t/t_var_dup_bad.v:43: Can't find definition of variable: bad_rewire %Error: t/t_var_dup_bad.v:43: Can't find definition of variable: 'bad_rewire'
%Error: t/t_var_dup_bad.v:43: Can't find definition of variable: bad_rereg %Error: t/t_var_dup_bad.v:43: Can't find definition of variable: 'bad_rereg'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error-ASSIGNIN: t/t_var_in_assign_bad.v:11: Assigning to input/const variable: value %Error-ASSIGNIN: t/t_var_in_assign_bad.v:11: Assigning to input/const variable: 'value'
%Error-ASSIGNIN: t/t_var_in_assign_bad.v:20: Assigning to input/const variable: valueSub %Error-ASSIGNIN: t/t_var_in_assign_bad.v:20: Assigning to input/const variable: 'valueSub'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,9 +1,9 @@
%Error: t/t_var_notfound_bad.v:17: Can't find definition of variable: nf %Error: t/t_var_notfound_bad.v:17: Can't find definition of variable: 'nf'
%Error: t/t_var_notfound_bad.v:18: Can't find definition of 'subsubz' in dotted scope/variable: sub.subsubz %Error: t/t_var_notfound_bad.v:18: Can't find definition of 'subsubz' in dotted scope/variable: 'sub.subsubz'
... Known scopes under 'sub': subsub ... Known scopes under 'sub': subsub
%Error: t/t_var_notfound_bad.v:19: Can't find definition of task/function: nofunc %Error: t/t_var_notfound_bad.v:19: Can't find definition of task/function: 'nofunc'
%Error: t/t_var_notfound_bad.v:20: Can't find definition of 'nofuncs' in dotted task/function: sub.nofuncs %Error: t/t_var_notfound_bad.v:20: Can't find definition of 'nofuncs' in dotted task/function: 'sub.nofuncs'
... Known scopes under 'nofuncs': <no cells found> ... Known scopes under 'nofuncs': <no cells found>
%Error: t/t_var_notfound_bad.v:21: Can't find definition of task/function: notask %Error: t/t_var_notfound_bad.v:21: Can't find definition of task/function: 'notask'
%Error: t/t_var_notfound_bad.v:22: Found definition of 'a_var' as a VAR but expected a task/function %Error: t/t_var_notfound_bad.v:22: Found definition of 'a_var' as a VAR but expected a task/function
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_var_port2_bad.v:6: Input/output/inout declaration not found for port: portwithoin %Error: t/t_var_port2_bad.v:6: Input/output/inout declaration not found for port: 'portwithoin'
%Error: t/t_var_port2_bad.v:7: Input/output/inout does not appear in port list: portwithin %Error: t/t_var_port2_bad.v:7: Input/output/inout does not appear in port list: 'portwithin'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_var_port_bad.v:15: Input/output/inout does not appear in port list: b %Error: t/t_var_port_bad.v:15: Input/output/inout does not appear in port list: 'b'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_var_ref_bad2.v:12: Assigning to const ref variable: bad_const_set %Error: t/t_var_ref_bad2.v:12: Assigning to const ref variable: 'bad_const_set'
%Error: t/t_var_ref_bad2.v:22: Ref argument requires matching types; port 'int_ref' requires VAR 'int_ref' but connection is VARREF 'bad_non_int'. %Error: t/t_var_ref_bad2.v:22: Ref argument requires matching types; port 'int_ref' requires VAR 'int_ref' but connection is VARREF 'bad_non_int'.
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,2 +1,2 @@
%Error: t/t_var_ref_bad3.v:9: Unsupported: ref/const ref as primary input/output: bad_primary_ref %Error: t/t_var_ref_bad3.v:9: Unsupported: ref/const ref as primary input/output: 'bad_primary_ref'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error: t/t_var_suggest_bad.v:12: Can't find definition of variable: foobat %Error: t/t_var_suggest_bad.v:12: Can't find definition of variable: 'foobat'
%Error: t/t_var_suggest_bad.v:13: Can't find definition of task/function: boobat %Error: t/t_var_suggest_bad.v:13: Can't find definition of task/function: 'boobat'
%Error: Exiting due to %Error: Exiting due to

View File

@ -1,3 +1,3 @@
%Error-CONTASSREG: t/t_wire_beh_bad.v:11: Continuous assignment to reg, perhaps intended wire (IEEE 2005 6.1; Verilog only, legal in SV): r %Error-CONTASSREG: t/t_wire_beh_bad.v:11: Continuous assignment to reg, perhaps intended wire (IEEE 2005 6.1; Verilog only, legal in SV): 'r'
%Error-PROCASSWIRE: t/t_wire_beh_bad.v:12: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): w %Error-PROCASSWIRE: t/t_wire_beh_bad.v:12: Procedural assignment to wire, perhaps intended var (IEEE 2017 6.5): 'w'
%Error: Exiting due to %Error: Exiting due to