Can someone point me out the differences between a checker and assertions?
Thanks in advance
Can someone point me out the differences between a checker and assertions?
Thanks in advance
In reply to shrads13:
The word checker has several meanings depending upon the context.
In my SVA Handbook 4th Edition, 2016 I provide a detailed explanation of those rules with lots of examples. Below is a brief intro into this topic.
The origin of the checker construct stems from the formal verification world, and hence, certain restrictions are imposed in the modeling styles of a checker. A checker is not intended to be a replacement to a module/interface, as its goal is strictly for verification, including formal verification. Hence the modeling styles allowed in a checker represent a subset suitable for the definition of assertions and coverage with the supporting environment.
IEEE 1800-2012 significantly enhanced the 1800-2009 version of a checker to encapsulate a set of properties, assertions, cover statements, assumptions, and any auxiliary procedural code needed to validate the behavior of the design in simulation and in formal verification. It is expected that the checker will play a significant role in the adoption of assertions and in the definition of assertion libraries. Since its last update, some vendors are now supporting the checker construct in simulation; however, as of the date of this publication, checker are weakly supported by very few formal verification tools with restrictions on types of assertions (e.g., static) and types of instantiations (e.g., static, rather than procedural). Checkers are ignored in synthesis, As users become more comfortable with checkers, it is expected to see more support in formal verification.
One significant advantage of checkers is that they clearly mark the scope of any auxiliary code used to support assertion and verification libraries. This clear demarcation between assertion library code and RTL code enhances code understanding; eliminates potential conflicts between RTL code and supporting code for assertions (such as the use of always blocks and updates of variables needed for assertions); and allows synthesis or other processing tools to concentrate on one specific region of the model, such as the RTL only.
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us