Verilog and SystemVerilog Linting


List of Verilog and SystemVerilog Linting Rules

The table below lists the Verilog and SystemVerilog linting rules that can be checked automatically by Sigasi. The availability of linting rules depends on the license requirements.

ST Linting Rules

ST linting rules are available for all licenses including Sigasi Studio Starter .

DescriptionID
errorNamed and positional port connections cannot be mixed5
errorThe packed keyword is required in packed structs and unions6
errorThe for loop statement misses mandatory part (Verilog)9
errorParameter port list cannot be empty11
errorNo semicolon expected at this point (Verilog)12
errorVerilog disallows empty assignments of ordered parameters (Verilog)13
errorNamed and positional parameter overrides cannot be mixed25
errorOnly one default member expression is allowed per assignment pattern29
errorOnly variable output ports can have a default value in non-ANSI notation33
errorOnly input or variable output ports can have a default value in ANSI notation34
errorDuplicate formal item within the instantiated unit37
errorExcessive number of actuals in ordered notation39
errorTiming controls are not allowed in functions46
errorNet data types must be 4-state50
errorNet data types integral51
errorEmpty parameters53, 54
errorInvalid package item55
errorUnexpected preprocessor directive inside design elements57
errorNon-packed member in packed structure59
errorIllegal type in untagged union60
errorIllegal class member access61
errorDeclaration not found71
errorAttempted implicit declaration with default nettype none73
errorInvalid enumeration element range format74
errorRange of enumeration element is too large75
errorInvalid construct76
errorInvalid randomize argument77
errorNot a value expression78
errorType not assignment compatible79
errorConstraint class scope missing80
errorConstraint class with packed dimensions81
errorAmbiguous reference93
errorDuplicate declaration95
errorInvalid UDP initial value96
errorDifferent file encoding for including file and included file102
errorMissing macro identifier103
errorUndefined macro104
errorForbidden macro identifier105
errorMissing `endif106
errorMissing identifier following expansion107
error with lightbulbFailed include108
errorMacro expansion depth limit reached109
errorInclusion loop110
errorIssues found while expanding macro111
errorMissing macro argument list112
errorMismatched number of arguments113
errorUnexpected directive operand114
errorIdentifier expansion with an invalid sequence of tokens115
errorUnexpected conditional compiler directive116
errorUnknown time literal118
errorUnexpected operand119
errorMissing operand120
errorUnsupported include path122
errorSyntax error123, 124
errorInvalid macro argument list125
errorUnbalanced expression126
errorUnbalanced directive invocation127
errorIncorect port declaration135-139
errorEmpty port in ANSI port list141

XL Linting Rules

XL linting rules require a Sigasi Studio XL or Sigasi Studio XPRT license.

DescriptionID
warningEmpty loops and conditional branches1
warningCheck naming conventions2
ignore with lightbulbDisallow reg datatype3
infoThe module name is a keyword in VHDL and may cause problems in mixed language projects7
warningCase statement does not cover all cases8
warning with lightbulbFunction prototype has implicit return type10
info with lightbulbImplicit subprogram port direction14
warningDefault clause has to be the last item in a case statement15
errorCase statement has multiple default clauses, but only one default clause is allowed16
warningFile name does not match design unit17
warningFile contains multiple design units18
infoParameters must have a default value19
ignoreVerilog code line too long20
ignoreTabs are not allowed21
ignoreFile header comment does not match required pattern22
warningNamed port connections have to be used for all instances with many ports24
warningNamed parameter overrides have to be used for all instantiations with many parameters26
warningNo event control at the top of always construct27
warningDefault member must be last in assignment pattern28
warningOverwritten type key in assignment pattern30
errorDuplicate member key in structure assignment pattern31
warningMixed named and ordered notation in assignment pattern32
warningRegister initialization in declarations35
warningMissing actuals for formals that have no default value38
warningDefault clause missing from case statement40
errorNon-blocking assignments are not allowed in functions41
warningConsecutive underscores in unit / port identifier42
warningUnderscores at end of unit / port identifier43
ignoreReport encrypted regions44
warningMultiple statements per line47
warningMissing bit width for parameters wider than 32 bits48
warningNamed connections are not allowed with blank ports56
errorOverridden method signature mismatch62-68
errorLocal parameter has to be initialized69
errorLocal parameter cannot be overridden70
errorType checking78, 79, 94, 100, 131
errorOut-of-bound method signature mismatch82-92
warningImplicit net97
warningDuplicate conditions98
warningUpward reference99
warningDuplicate continuous assignments101
warningWhitespace following a backtick117
warningInvalid preprocessor syntax121
warningUnused macros128
ignoreProhibited macro129
warningUnused declaration130
warningHidden non-virtual methods132
errorUnexpected empty concatenation133
errorUnexpected empty assignment pattern134
warningDuplicate port140
warningEmpty port142
warningVector as edge event expression143
ignoreImplicit vector to boolean conversion144
warning with lightbulbMissing include path in preprocessor configuration155

UVM Linting Rules (XPRT preview)

UVM preview linting rules require a Sigasi Studio XL or Sigasi Studio XPRT license.
In future releases, these will require a Sigasi Studio XPRT license.

DescriptionID
warningUnregistered UVM object145
warning with lightbulbIncorrect utility macro146
warningType argument value does not match containing class147
warningIncorrect UVM object instantiation148
ignoreUVM object name does not match variable name149
ignoreUnexpected output system task150
warningIncorrect override of UVM object151
warningDeprecated UVM API152
warningUVM phase method does not call superclass method153
warningIncorrect constructor for UVM object or component154

Deprecated Linting Rules

Deprecated linting rules were used by Sigasi at some point, but they’ve been removed or superseded in the most recent version.

DescriptionReasonID
A Verilog net type keyword cannot be followed directly by the reg keywordSuperseded by a syntax error4
Formal item not found within the instantiated unitSuperseded by a syntax error36
Unexpected trailing , in parameter listSuperseded by the Empty parameters rule (rule 53)52
Regular expressions (RE2/J) compatibility checkSuperseded by checks in the preferences58
Ambiguous design unit referenceSuperseded by the more general Ambiguous reference (rule 93)72