Contact us Start a Trial

Functional safety

Modern digital design requires rigorous adherence to functional safety standards to ensure reliability and predictability in complex electronic systems. Sigasi provides a comprehensive suite of linting rules mapped to industry-standard guidelines, such as STARC (Semiconductor Technology Academic Research Center) and DO-254 (Design Assurance Guidance for Airborne Electronic Hardware).

STARC

The STARC guidelines provide a set of design rules for VHDL and Verilog to ensure design quality and reusability. Adhering to these rules helps maintain a consistent coding style and prevents common design pitfalls.

VHDL STARC mapping

Documentation on configuring STARC rules in Sigasi.

STARC ruleRule nameSigasi Rule
1.1.1.1.File names should be as follows: <entity name>.vhd.189
1.1.1.2.Only alphanumeric characters and the underscore _ should be used, and the first character should be a letter of the alphabet.92
1.1.1.3.Reserved words in Verilog (IEEE1364), EDIF, and SDF must not be used.192 ((System)Verilog only)
1.1.1.4.Names beginning with VDD, VSS, VCC, GND or VREF must not be used (uppercase or lowercase).92
1.1.1.5.Do not distinguish names by using upper or lower case English letters (Abc, abc).163
1.1.1.6.Entity name and component name should be the same.90
1.1.1.9.At the top level, entity names and port names should consist of 16 or fewer characters and should not be distinguished by upper or lower case alphabet letters.92
1.1.2.1.Entity names and instance names should be between 2 and 32 characters in length.92
1.1.2.5.Naming conventions for input port names and output port names for each block should be different from those for internal signal names.92
1.1.3.1.Naming conventions for internal signal names of blocks should be different from those for input and output ports.92
1.1.3.3.Signal names, variable names, type names, label names and function names should be between 2 and 40 characters in length.92
1.1.4.1.Use <name> + pac.vhd for package files198
1.1.4.2.For constant declarations, names should start with C_ or P_ and all characters of the names should be in upper case letters92
1.1.6.1.The architecture name in RTL description should be RTL92
1.1.6.2.The architecture name in behavior description should be BEH92
1.1.6.3.The architecture name in test bench description should be SIM or TB92
1.1.6.4.The entity description and RTL architecture description should be made in the same file243
1.3.1.6.Do not have both asynchronous reset and synchronous reset on the same reset line252
1.4.3.1.Avoid inverting logic on the same clock line. Also avoid using gated clocks and using FFs with different edges.254
1.4.3.4.Do not supply clock signals to pins other than FF clock input pins (such as D input)249
1.4.3.6.Do not use FFs with inverted edges254
2.1.2.3.Specify range when using integer236
2.1.2.5.Do not use attribute enum_encoding244
2.1.6.1.Specification of a range should be downto, if it is one-dimensional211, 241
2.1.8.8.Do not use procedure in RTL description245
2.1.9.1.Use attributes with array; range, length, left, right, high, low, and reverse_range244
2.1.9.2.Attribute to signal, event, is used for FF inference description244
2.1.9.3.Do not infer FF by using stable244
2.1.9.4.Do not use embedded attributes other than the above244
2.1.9.5.Do not use user-defined attributes244
2.1.10.1.Do not use block statement245
2.1.10.2.Do not use record type245
2.1.10.3.Do not use shared variable245
2.1.10.4.Do not use while loop245
2.1.10.5.Do not use procedure245
2.1.10.6.Do not use with -select245
2.1.10.7.Do not use configuration245
2.1.10.8.Do not use synopsys attribute245
2.1.10.9.Do not use access type245
2.1.10.10.Do not use alias245
2.1.10.11.Do not use bus and register245
2.1.10.12.Do not use disconnect245
2.1.10.13.Do not use waveform245
2.2.1.1.Latches are generated unless all conditions have been described11
2.2.2.1.All signals at the right of the conditional expression and the assignment statement in the process statement of the combinational circuit must be defined in the sensitivity list.72
2.2.2.2.Do not define constants and unnecessary signals in the sensitivity list73
2.2.2.3.Do not use wait statement in process statement (Sensitivity list is required)39
2.2.2.4.The sensitivity list should be verified with a RTL check tool rather than a logic synthesis tool38, 39, 72, 73, 85, 197
2.3.1.2.Do not use unsynthesizable FF inference styles250, 252, 254
2.3.2.2.Do not use variable in process statement245
2.3.6.1.Do not mix FF inferences with and without asynchronous resets in the same process statement238
2.7.2.2.Avoid describing conditions that will not be executed79
2.7.3.1.The number of nests for if-if and elsif is best at five or less239
2.8.1.3.Avoid the overlapping of case items14
2.8.1.4.Always add others choices13
2.8.3.4.A syntax error does not occur even if there is no others choice when using integral or enumeration types, however it is better to use others choices13
2.9.3.1.Do not use exit and next in for-loop statement245
2.10.3.1.Match the bit width of relational operator232
3.1.2.1.Follow the basic naming conventions92
3.1.3.4.Define one signal per line in I/O and declaration statement. Always add comments253
3.1.4.3.Replace tabs with spaces after editing99
3.1.4.5.The maximum number of characters in one line should be about 11097
3.2.2.1.Describe constants by constants as much as possible235
3.2.3.1.For component instantiations, connect ports by name connections, not by ordered list164
3.2.3.2.Match the bit width of the component port and the bit width of the net to be connected144
3.3.3.1.A clock must not be connected to the D input of a FF249
3.3.6.2.Do not mix clock lines and reset lines249
3.5.2.2.The file name of a RTL description should consist of <entity name> + .vhd189
3.5.3.1.Indicate the circuit name, circuit function, author, and creation date in the file header188
3.5.3.2.Indicate who made changes and which item was modified in the case of reuse188
3.5.3.3.Standardize file headers188

Verilog STARC mapping

Documentation on configuring STARC rules in Sigasi.

STARC ruleRule nameSigasi Rule
1.1.1.1.File names should be as follows: <module name>.v or <module name>.sv.17
1.1.1.2.Only alphanumeric characters and the underscore _ should be used, and the first character should be a letter of the alphabet.2
1.1.1.3.Reserved words in Verilog HDL (IEEE 1364) SystemVerilog (IEEE 1800) and VHDL (IEEE 1076.X) must not be used.7 (VHDL only)
1.1.1.4.Names beginning with VDD, VSS, VCC, GND or VREF must not be used (uppercase or lowercase).2
1.1.1.5.Do not distinguish names by using upper or lower case English letters (Abc, abc).166
1.1.1.6.Do not use an _ (underscore) at the end of the primary port name or module name, and do not use _ consecutively.2
1.1.1.9.At the top level, module names and port names should consist of 16 or fewer characters and should not be distinguished by upper or lower case alphabet letters.2
1.1.2.1.Module names and instance names should be between 2 and 32 characters in length.2
1.1.2.5.Naming conventions for input port names and output port names for each block should be different from those for internal signal names.2
1.1.3.1.Naming conventions for internal signal names of blocks should be different from those for input and output ports.2
1.1.3.3.Signal names, port names, parameter names, ```define` names and function names should be between 2 and 40 characters in length.2
1.1.4.2.Parameter names should have a different naming convention.2
2.1.1.2.Describe every case statement expressions in a function statement8
2.1.2.2.A non-blocking assignment <= should not be used in function statements41
2.1.4.5.Logical operators should not be used for vectors144
2.1.5.3.In the conditional expression of an if statement or the conditional operator (?) the result should not be a vector144
2.2.1.1.Latches are generated unless all conditions have been described8
2.2.2.2.Do not define constants and unnecessary signals in the sensitivity list160
2.7.3.1.The nesting level for if-if and else if should seven or less.167
2.8.1.4.Always add default clauses.40
2.8.3.5.Describe a default clause at the end of a case statement40, 15
2.10.2.2.Results of logical operation will be 1 bit144
3.1.2.1.Follow the basic naming conventions2
3.1.3.1.Standardize the description order of the port declaration, port list and module instantiation port lists defined in the modules163
3.1.4.4.Do not describe multiple assignments in one line47
3.1.4.5.The maximum number of characters in one line should be about 11020
3.1.5.3.Set parameter default values19
3.2.3.1For component instantiations, connect ports by name connections, not by ordered list24
3.5.2.2.The file name of a RTL description should consist of <module name>.v or <module name>.sv17
3.5.3.1.Indicate the circuit name, circuit function, author, and creation date in the file header22
3.5.3.2.Indicate who made changes and which item was modified in the case of reuse22
3.5.3.3.Standardize file headers22

DO-254

The DO-254 standard (Design Assurance Guidance for Airborne Electronic Hardware) provides guidance for the development of airborne electronic hardware.

VHDL DO-254 mapping

Documentation on configuring DO-254 rules in Sigasi.

DO-254 ruleRule nameSigasi Rule
CP1Avoid Incorrect VHDL Type Usage144
CP3Avoid Hard-Coded Numeric Values235
CP5Ensure Consistent FSM State Encoding Style237, 71
CP7Avoid Mismatching Ranges1, 26
CP8Ensure Complete Sensitivity List72, 73
CP9Ensure Proper Sub-Program Body76
CP11Avoid Unconnected Input Ports17
CP12Avoid Unconnected Output Ports94
CP14Avoid Unused Declarations88, 89, 55, 67, 68
SS2Ensure Proper Case Statement Specification11, 13, 14
SS7Avoid Uninitialized VHDL Deferred Constants175
SS8Avoid Clock Used as Data249
SS9Avoid Shared Clock and Reset Signal249
SS10Avoid Gated Clocks249
SS13Avoid Mixed Polarity Reset252
SS21Ensure Consistent Vector Order211, 241
DR1Use Statement Labels42, 43, 44
DR2Avoid Mixed Case Naming for Differentiation163
DR4Use Separate Declaration Style253
DR7Avoid Using Tabs99
DR10Ensure Consistent File Header188
DR13Ensure Company Specific Naming Standards92

Verilog DO-254 mapping

Documentation on configuring DO-254 rules in Sigasi.

DO-254 ruleRule nameSigasi Rule
CP1Avoid Incorrect VHDL Type Usage78, 79, 94, 100, 131
CP8Ensure Complete Sensitivity List27, 160
CP14Avoid Unused Declarations128, 130, 169
SS2Ensure Proper Case Statement Specification8, 16, 40
SS4Avoid Latch Inference8
SS20Ensure Nesting Limits167
DR2Avoid Mixed Case Naming for Differentiation166
DR5Use Separate Statement Style47
DR7Avoid Using Tabs21
DR10Ensure Consistent File Header22
DR13Ensure Company Specific Naming Standards2