SVAUnit 3.2 Release is Available

AMIQ is pleased to announce version 3.2 of the SVAUnit framework!

Highlights of SVAUnit 3.2 are:

Let’s go through the details of each improvement.

User guide

We added an User Guide which provides simple, step-by-step, usage examples.

setup_test() task

We added setup_test() task which can be used for signal initialization and test setup because it is called just before test() task.

class test extends svaunit_test;
   . . .
   // Interface containing the corresponding signals
   local virtual my_interface my_if;
   . . .

   virtual task setup_test();
      my_if.read  <= 1'b0;
      my_if.reset <= 1'b0;
      @(posedge my_if.clock);
   endtask

   virtual task test();
      . . .
      // test scenario
   endtask
endclass

Updated API

We revamp, based on users’ requests, the checks API in order to be more suggestive. We removed some of the check API which implied negative logic, e.g. fail_if_sva_succeeded.
Due to an inconsistency between simulators regarding how SVA are evaluated, two checks API are removed: pass/fail_if_sva_started_but_not_finished and pass/fail_if_sva_not_started. Check the release notes for more details.

Fixed check evaluation timing

We fixed the behavior regarding the moment when the information about SVA state is received by the framework. In the previous versions, the information about the SVA state was received when a check was performed, but in SVAUnit 3.2 this information is received when the SVA triggers.

Report messages

We fixed sequences printing in the test suite reports and renamed the categories to be more relevant. We also updated the messages verbosity to ease their filtering:

UVM_NONE prints the checks for each SVA statistics and the list of failed SVAs
UVM_LOW prints the status statistics, the checks status summary and the above ones
UVM_MEDIUM (default) prints the test suite hierarchy, the exercised SVAs and the above ones
UVM_DEBUG prints debug messages and the above ones

Support for HTML regression report

Starting with SVAUnit 3.2, a new API is available for generating HTML regression reports. The report contains the following information

  • the date, the author and the test used to create the report
  • total number of SVAs
  • total number of exercised SVAs
  • total number of executed SVAUnit checks
  • total number of failed SVAUnit checks
  • total number of passed SVAUnit checks
  • visualization matrix to quickly identify checks executed for each SVA

Fixed assertion registration issue

Users observed that SVAs defined under a generate block were not identified and registered correctly. The issue was traced to a packaging inconsistency across different simulators.

Where can I get the latest SVAUnit version?

You can download the latest version of the SVAUnit package from AMIQ’s GITHub repository.

About SVAUnit

SVAunit is a framework that targets SVA (SystemVerilog Assertions) verification in an isolated, simplified and standardized manner.
Previous releases are SVAUnit 2.0 and SVAUnit 1.0.

Comments

5 Responses

  1. Hello Team,
    The interface I am testing has both concurrent and immediate assertions. However, at the end of test, I see only concurrent assertion status and report. Is there any way by which immediate assertion list and status can also be reported?
    Thanks in advance!

    1. Hi,

      SVAUnit uses the simulator data to retrieve information on the SVAs status.
      The framework might require an update to its API to support recent simulator versions.
      Can you please let me know which simulator and version you encountered the issue?

      Thanks,
      Ionut

    2. Hi,

      Thank you for the details. I will investigate as soon as time permits.
      It might be a valid issue if there are any changes in the new simulator version regarding SVAUnit <-> simulator interaction.

      Best regards,
      Ionut

  2. Hello,
    To further elaborate on the problem I face, I am unable to use any API checks on immediate assertion.
    Say for example, if I try to use vpiw.check_sva_passed(“assert_immediate”, “The check should have passed”) , I get uvm_error “Assertion assert_immediate doesn’t exist.”

    Thanks

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Subscribe to our newsletter

Do you want to be up to date with our latest articles?