The table below lists the VHDL linting rules that SVH can check automatically. The availability of linting rules depends on the license requirements.
Designer Edition Linting Rules
Designer Edition linting rules are available for all editions.
Description | ID | |
---|---|---|
Null range: The left argument is strictly larger than the right | 1 | |
Positional associations order | 2 | |
‘Others’ position in associations | 3 | |
Multiple others in associations | 4 | |
Input port cannot be assigned | 5 | |
Subprogram parameter cannot be assigned | 6 | |
Constant cannot be assigned | 7 | |
Deprecated IEEE packages | 8 | |
‘others’ has to be the last alternative in a case statement | 9 | |
Only one ‘others’ choice is allowed | 10 | |
Case statement does not cover all cases | 11 | |
Case alternative contains redundant choices | 12 | |
Case statement contains all choices explicitly. You can safely remove the redundant ‘others’ | 13 | |
Case alternative contains duplicate choices | 14 | |
C style equality operator | 15 | |
C style inequality operator | 16 | |
Incomplete associations | 17 | |
Duplicate associations | 18 | |
Invalid character literal | 19 | |
Infinite loop. Loop is missing a wait, return or exit statement | 20 | |
Function declarations in a package cannot have a function body | 21 | |
Missing function body | 22 | |
Invalid bit string literal | 23 | |
Null range: The left argument is strictly smaller than the right | 26 | |
Duplicate named associations | 27 | |
Duplicate ‘all’ -style binding for component declaration | 28 | |
Duplicate component instantiation binding | 29 | |
Duplicate component instantiation binding | 30 | |
Incorrect number of associations found in mapping | 32 | |
A positional association cannot follow after a named association | 33 | |
A signal cannot be the target of a variable assignment | 34 | |
A port cannot be the target of a variable assignment | 35 | |
A variable cannot be the target of a signal assignment | 36 | |
Non-standard packages | 37 | |
A process must either have a sensitivity list or contain one or more wait statements | 38 | |
A process with a sensitivity list cannot contain any wait statements | 39 | |
Procedure declarations in a package cannot have a procedure body | 40 | |
Procedure declarations in a package body must have a procedure body | 41 | |
Generate statements must have a label | 42 | |
Instantiation statements must have a label | 43 | |
Block statements must have a label | 44 | |
There has to be a whitespace before physical units | 47 | |
Unbound component instantiations | 48 | |
Superfluous library clause | 49 | |
Library is not available | 50 | |
Matching case statement | 51 | |
External name alias | 52 | |
VHDL version check | 53 | |
Duplicate declaration | 54 | |
Find unused declarations | 55 | |
Bitstrings may only contain std_logic metavalues | 57 | |
A unary condition operator parentheses | 58 | |
Duplicate design units | 64 | |
Find unused ports | 67 | |
Find unused generics | 68 | |
Duplicate enum literal | 69 | |
Invalid identifier | 70 | |
Find dead states in state machines | 71 | |
Find incomplete sensitivity lists | 72 | |
Find superfluous signals in sensitivity lists | 73 | |
Function pureness validation | 76 | |
Find dead code | 79 | |
Missing implementation | 80 | |
Incorrect attribute class | 81 | |
Invalid variable assignment | 82 | |
Invalid signal assignment | 83 | |
Report encrypted files | 84 | |
Find duplicate signals in sensitivity lists | 85 | |
A subprogram call cannot have an empty parameter lis | 86 | |
Detect signals and variables that are never written | 88 | |
Detect signals and variables that are never read | 89 | |
None or multiple matching entities for component | 90 | |
Unexpected tokens | 91 | |
Check naming conventions | 92 | |
Incomplete port map or generic map: using defaults | 94 | |
Check line length | 97 | |
Array assignment validation | 144 | |
All references must have the same capitalization as their declaration | 163 | |
Check for positional associations in instantiations | 164 | |
Protected type bodies are not allowed in a package | 168 | |
Invalid port associations | 169 | |
VHDL version mismatch | 170 | |
Invalid use of ‘bus’ keyword | 171 | |
Invalid function parameter mode | 172 | |
Invalid variable parameter in function | 173 | |
Invalid function return type | 174 | |
Invalid deferred constant declaration | 175 | |
This declaration is not allowed in the current declarative region | 176 | |
Order of generic and port associations | 177 | |
Name mismatch | 178 | |
Unexpected return type | 179 | |
Configuration issue: Incorrect component name | 180 | |
Configuration issue: Incorrect instantiation statement label | 181 | |
Configuration issue: Missing or incorrect binding indication | 182 | |
Configuration issue: Incorrect name in binding indication | 183 | |
Incorrect use of keyword all | 184 | |
Redundant boolean equality check with true | 185 | |
Boolean equality check with false | 186 | |
Check for component/entity mismatch | 187 | |
Header comment does not match pattern | 188 | |
Filename must contain primary unit name | 189 | |
Empty loop statement | 190 | |
VHDL 87 file declarations | 191 | |
Entity name is a keyword in Verilog and may cause problems in mixed projects | 192 | |
Concatenation of unconstrained aggregate | 194 | |
Empty sensitivity list | 197 | |
Instantiation mismatch | 198 | |
Range wrapped inside parentheses | 199 | |
Incomplete record aggregate | 200 | |
No elements in a list | 201 | |
Trailing separator in a list | 202 | |
Cannot case on a type declaration | 209 | |
Index out of range | 210 | |
Slice has wrong direction | 211 | |
VHDL version check | 212 | |
Invalid use of return type identifiers | 213 | |
Conditional return statements | 214 | |
String literal is not properly closed | 215 | |
An exponent for an integer literal shall not be negative | 218 | |
Declaring the library ‘work’ is not allowed inside a context declaration | 219 | |
Referencing the library ‘work’ is not allowed inside a context declaration | 220, 221 | |
Common Libraries version mismatch | 222 | |
VHDL version check | 223 | |
Check case of non-keywords | 224 | |
Type validation | 226 | |
Loop variables cannot be assigned | 227 | |
Whitespace in extended identifier | 228 | |
Declaration not found | 229 | |
Sequence of operators without parentheses | 230 | |
Constant width vector assigned to signal | 231 | |
Comparison of vectors with different sizes | 232 | |
Missing full constant declaration | 233 | |
Incorrect full constant subtype | 234 | |
Magic number, bitstring, or string in statement | 235 | |
Unconstrained signal or variable of integer type | 236 | |
Unexpected FSM state type | 237 | |
Incomplete reset branch | 238 | |
Deep nesting of conditional and loop statements | 239 | |
Unexpected keyword capitalization | 240 | |
Incorrect vector range direction | 241 | |
File contains multiple primary units | 242 | |
Secondary unit in unexpected file | 243 | |
Prohibited attribute | 244 | |
Prohibited keyword or operator | 245 | |
Prohibited package | 246 | |
Prohibited pragma | 247 | |
Prohibited library | 248 | |
Clock signal not used as clock | 249 | |
Unexpected clock edge specification | 250 | |
Missing label | 251 | |
Inconsistent reset style | 252 | |
Multiple objects in one declaration | 253 | |
Inconsistent clock edge usage | 254 | |
Illegal mode view element mode | 256 | |
Missing mode for record element in mode view | 257 |
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.
Description | Reason | ID |
---|---|---|
Invalid generic list | Superseded by 202 | 24 |
Invalid generic map | Superseded by 202 | 25 |
Duplicate architecture for entity | Superseded by 64 | 31 |
Port map lists cannot be terminated with a , | Superseded by 202 | 45 |
Port lists cannot be terminated with a , | Superseded by 202 | 46 |
Library is not available | Superseded by checks in the preferences | 50 |
Signal declarations are not allowed in a process statement | Superseded by 176 | 56 |
End clause validation | Superseded by 51 | 59 |
Duplicate entity for library | Superseded by 64 | 60 |
Duplicate package for library | Superseded by 64 | 61 |
Duplicate configuration for library | Superseded by 64 | 62 |
Invalid use clause | Removed as it was invalid | 63 |
Duplicate design unit in IEEE | Removed as it was invalid | 65 |
Find unregistered output ports | Removed as it was invalid | 75 |
Undefined identifier | Superseded by the linker | 87 |
RE2/J compatibility check | Superseded by checks in the preferences | 225 |