SVA Basics: Bind

Binding SVA module to design can be done using system verilog bind statement. This is semantically equivalent to instantiation of SVA module. The bind directive can be specified in a module, interface or a compilation unit scope.

There are many ways binding can be done. Following section discusses these.

Normal Bind
Binding fifo to fifo_sva assertion module can be done as follows

Bind using Implicit port connections
By using this method, port names need not be specified and all ports will be accessible to assertion module.

Bind to a lower level module
Hierarchy needs to be specified along with the bind statement.

Bind using different parameters/generic
Passing parameter values in bind can be done in the following way.

This helps to develop generic assertions.

Bind to a instance of a module
If there are multiple instances of fifo module, and need to bind assertion to two of the instances (fifo1,fifo2). This can be done in the following way.

So we can make the design untouched by developing assertions in a separate module and by using any of the above bind statements.

Leave a Reply

Your email address will not be published. Required fields are marked *