Add BADVLTPRAGMA on unknown Verilator pragmas (#5945).
This commit is contained in:
parent
8da539ed8a
commit
9b3fccdcb7
1
Changes
1
Changes
|
|
@ -13,6 +13,7 @@ Verilator 5.037 devel
|
||||||
|
|
||||||
**Other:**
|
**Other:**
|
||||||
|
|
||||||
|
* Add BADVLTPRAGMA on unknown Verilator pragmas (#5945). [Shou-Li Hsu]
|
||||||
* Fix sign extension of signed compared with unsigned case items (#5968).
|
* Fix sign extension of signed compared with unsigned case items (#5968).
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -167,6 +167,16 @@ List Of Warnings
|
||||||
'pragma protect'. Third-party pragmas not defined by IEEE 1800-2023 are
|
'pragma protect'. Third-party pragmas not defined by IEEE 1800-2023 are
|
||||||
ignored.
|
ignored.
|
||||||
|
|
||||||
|
This error may be disabled with a lint_off BADSTDPRAGMA metacomment.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: BADVLTPRAGMA
|
||||||
|
|
||||||
|
An error that a `/*verilator ...*/` metacomment pragma is badly formed
|
||||||
|
or not understood.
|
||||||
|
|
||||||
|
This error may be disabled with a lint_off BADVLTPRAGMA metacomment.
|
||||||
|
|
||||||
|
|
||||||
.. option:: BLKANDNBLK
|
.. option:: BLKANDNBLK
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ public:
|
||||||
ASSIGNDLY, // Assignment delays
|
ASSIGNDLY, // Assignment delays
|
||||||
ASSIGNIN, // Assigning to input
|
ASSIGNIN, // Assigning to input
|
||||||
BADSTDPRAGMA, // Any error related to pragmas
|
BADSTDPRAGMA, // Any error related to pragmas
|
||||||
|
BADVLTPRAGMA, // Unknown Verilator pragma
|
||||||
BLKANDNBLK, // Blocked and non-blocking assignments to same variable
|
BLKANDNBLK, // Blocked and non-blocking assignments to same variable
|
||||||
BLKLOOPINIT, // Delayed assignment to array inside for loops
|
BLKLOOPINIT, // Delayed assignment to array inside for loops
|
||||||
BLKSEQ, // Blocking assignments in sequential block
|
BLKSEQ, // Blocking assignments in sequential block
|
||||||
|
|
@ -193,7 +194,7 @@ public:
|
||||||
"LIFETIME", "NEEDTIMINGOPT", "NOTIMING", "PORTSHORT", "TASKNSVAR", "UNSUPPORTED",
|
"LIFETIME", "NEEDTIMINGOPT", "NOTIMING", "PORTSHORT", "TASKNSVAR", "UNSUPPORTED",
|
||||||
// Warnings
|
// Warnings
|
||||||
" EC_FIRST_WARN",
|
" EC_FIRST_WARN",
|
||||||
"ALWCOMBORDER", "ASCRANGE", "ASSIGNDLY", "ASSIGNIN", "BADSTDPRAGMA",
|
"ALWCOMBORDER", "ASCRANGE", "ASSIGNDLY", "ASSIGNIN", "BADSTDPRAGMA", "BADVLTPRAGMA",
|
||||||
"BLKANDNBLK", "BLKLOOPINIT", "BLKSEQ", "BSSPACE",
|
"BLKANDNBLK", "BLKLOOPINIT", "BLKSEQ", "BSSPACE",
|
||||||
"CASEINCOMPLETE", "CASEOVERLAP", "CASEWITHX", "CASEX", "CASTCONST", "CDCRSTLOGIC", "CLKDATA",
|
"CASEINCOMPLETE", "CASEOVERLAP", "CASEWITHX", "CASEX", "CASTCONST", "CDCRSTLOGIC", "CLKDATA",
|
||||||
"CMPCONST", "COLONPLUS", "COMBDLY", "CONSTRAINTIGN", "CONTASSREG", "COVERIGN",
|
"CMPCONST", "COLONPLUS", "COMBDLY", "CONSTRAINTIGN", "CONTASSREG", "COVERIGN",
|
||||||
|
|
@ -232,10 +233,10 @@ public:
|
||||||
// Warnings we'll present to the user as errors
|
// Warnings we'll present to the user as errors
|
||||||
// Later -Werror- options may make more of these.
|
// Later -Werror- options may make more of these.
|
||||||
bool pretendError() const VL_MT_SAFE {
|
bool pretendError() const VL_MT_SAFE {
|
||||||
return (m_e == ASSIGNIN || m_e == BADSTDPRAGMA || m_e == BLKANDNBLK || m_e == BLKLOOPINIT
|
return (m_e == ASSIGNIN || m_e == BADSTDPRAGMA || m_e == BADVLTPRAGMA || m_e == BLKANDNBLK
|
||||||
|| m_e == CONTASSREG || m_e == ENCAPSULATED || m_e == ENDLABEL || m_e == ENUMVALUE
|
|| m_e == BLKLOOPINIT || m_e == CONTASSREG || m_e == ENCAPSULATED
|
||||||
|| m_e == IMPURE || m_e == PINNOTFOUND || m_e == PKGNODECL || m_e == PROCASSWIRE
|
|| m_e == ENDLABEL || m_e == ENUMVALUE || m_e == IMPURE || m_e == PINNOTFOUND
|
||||||
|| m_e == ZEROREPL // Says IEEE
|
|| m_e == PKGNODECL || m_e == PROCASSWIRE || m_e == ZEROREPL // Says IEEE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Warnings to mention manual
|
// Warnings to mention manual
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,7 @@ void V3ParseImp::lexVerilatorCmtBad(FileLine* fl, const char* textp) {
|
||||||
string cmtname;
|
string cmtname;
|
||||||
for (int i = 0; std::isalnum(cmtparse[i]); i++) cmtname += cmtparse[i];
|
for (int i = 0; std::isalnum(cmtparse[i]); i++) cmtname += cmtparse[i];
|
||||||
if (!v3Global.opt.isFuture(cmtname)) {
|
if (!v3Global.opt.isFuture(cmtname)) {
|
||||||
fl->v3error("Unknown verilator comment: '" << textp << "'");
|
fl->v3warn(BADVLTPRAGMA, "Unknown verilator comment: '" << textp << "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,11 @@
|
||||||
8 | /*verilator lint_off FUTURE1*/
|
8 | /*verilator lint_off FUTURE1*/
|
||||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||||
%Error: t/t_flag_future.v:11:7: Unknown verilator comment: '/*verilator FUTURE2*/'
|
%Error-BADVLTPRAGMA: t/t_flag_future.v:11:7: Unknown verilator comment: '/*verilator FUTURE2*/'
|
||||||
11 | /*verilator FUTURE2*/
|
11 | /*verilator FUTURE2*/
|
||||||
| ^~~~~~~~~~~~~~~~~~~~~
|
| ^~~~~~~~~~~~~~~~~~~~~
|
||||||
%Error: t/t_flag_future.v:12:7: Unknown verilator comment: '/*verilator FUTURE2 blah blah*/'
|
... For error description see https://verilator.org/warn/BADVLTPRAGMA?v=latest
|
||||||
|
%Error-BADVLTPRAGMA: t/t_flag_future.v:12:7: Unknown verilator comment: '/*verilator FUTURE2 blah blah*/'
|
||||||
12 | /*verilator FUTURE2 blah blah*/
|
12 | /*verilator FUTURE2 blah blah*/
|
||||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@
|
||||||
%Error: t/t_pp_underline_bad.v:10:19: Extra underscore in meta-comment; use /*synopsys {...}*/ not /*synopsys_{...}*/
|
%Error: t/t_pp_underline_bad.v:10:19: Extra underscore in meta-comment; use /*synopsys {...}*/ not /*synopsys_{...}*/
|
||||||
10 | case (1'b1) // synopsys_full_case
|
10 | case (1'b1) // synopsys_full_case
|
||||||
| ^~~~~~~~~~~~~~~~~~~~~
|
| ^~~~~~~~~~~~~~~~~~~~~
|
||||||
%Error: t/t_pp_underline_bad.v:8:4: Unknown verilator comment: '/*verilator _no_inline_module*/'
|
%Error-BADVLTPRAGMA: t/t_pp_underline_bad.v:8:4: Unknown verilator comment: '/*verilator _no_inline_module*/'
|
||||||
8 | /*verilator _no_inline_module*/
|
8 | /*verilator _no_inline_module*/
|
||||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
... For error description see https://verilator.org/warn/BADVLTPRAGMA?v=latest
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue