Assertion Based Verification

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.

3 Comments

3 Comments

  1. Swastika

    April 22, 2017 at 8:29 am

    Can someone please tell how do I access the internal signals of DUT ?

    • mm

      Sini Balakrishnan

      April 22, 2017 at 3:08 pm

      Swastika, You can use $nc_mirror if you use Incisive tool.

      For eg:
      top_tb.dut:inst_block1:inst_block2:sig1 signal can be mirrored to sig1 in the following way.
      $nc_mirror(“sig1″,”top_tb.dut:inst_block1:inst_block2:sig1″,””);

      Please check in the user manual if you use other simulators.

  2. Debashis

    February 27, 2018 at 3:22 pm

    Hi Sini, I have a basic doubt. Please help.

    bind module1 dbg_client_mux_if if_dbg_client_port_0_mux_0(
    .idebug0 (tb.u_blk1.mux0_identify[31:0]),

    …….

    In the above code snippet,if my understanding is correct, it will bind the signals of dbg_client_mux_if with interface of module1.

    But in top level module “module1”, there is no interface/signals of name “mux0_identify” and no instantiation of “tb” inside “module1”.

    So my doubt is , how does the bind happens. How it is able to see “tb” ?

    the interface do exists in tb.u_blk1.mux0_identify.

Leave a Reply

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

Most Popular

VLSI Pro is a professional network of VLSI engineers. Here you can find latest news, helpful articles and more on VLSI technology.

Copyright © 2016 VLSI Pro

To Top