AMIQ is pleased to announce version 3.2 of the SVAUnit framework!
Highlights of SVAUnit 3.2 are:
- Added an SVAUnit User Guide with complete examples
- Added setup_test() task
- Updated checks API
- Fixed check evaluation timing to be more accurate
- Fixed printed messages
- Support for HTML regression report
- Fixed assertion registration issue
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.
5 Responses
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!
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
Hello,
I am using VCS version 2020.12-SP2-4
Thanks!
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
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