Non Standard Checks in the DVT Eclipse IDE

Description

DVT warns about language constructs accepted by various simulators although not described by the IEEE LRM.

DVT understands non-LRM compliant constructs and flags them as NON_STANDARD warnings. This video walks through a handful of examples and shows how you can disable or promote them to errors using compile waivers. Keeping your codebase standard-compliant is good practice and will save a lot of time in case you ever need to add another SystemVerilog tool to your flows or switch to a different vendor.

This video was shot using DVT 21.1.6

Explore the design and verification tools: https://www.dvteclipse.com
Or request a license: https://www.dvteclipse.com/request-license

Transcript

Introduction

Over time, various language constructs, which are either not described or not allowed by the reference manual, have come to be used in SystemVerilog code.

DVT understands such constructs which are accepted by various simulators, although not described by the IEEE LRM, and flags them as non-standard warnings.

Keeping your codebase standard compliant is good practice and will save a lot of time in case you ever need to add another SystemVerilog tool to your flows or switch to a different vendor.

Examples of Non-Standard Constructs

Let's look at a few examples.

Assignments to Array Variables

In these assignments to array variables, you should use an assignment pattern, according to the LRM. DVT flags the use of the concatenation with a non-standard warning.

Comparing Enum Values

When comparing enum values, the standard enforces their types to be the same. However, each enum name has an associated numeric value, and some compilers accept comparing enums of different types based on their numeric value.

Array Select After Method Call

Here, DVT marks that using an array select after a method call is not allowed by the LRM.

Incorrect Usage of the Begin-End Block

While here, it marks an incorrect usage of the begin-end block.

There are many more examples, all of which can be found in the user guide under the Non Standard Checks section.

Customizing Severity and Visibility

As with all other compilation problems, DVT allows you to fully customize their severity and visibility in your project. For example, by using the Wave Problem context menu option, you can promote this particular class of non-standard warnings to errors. Similarly, you can easily hide specific problems.