====== Assertion ======
===== assertion_statement =====
[ label : ] assertion ;
===== Parents =====
* function_statement_part
* procedure_statement_part
* process_statement_part
===== Further definitions =====
==== assertion ====
''**assert** [[.:bnf#condition]]''
''[ **report** expression ]''
''[ **severity** expression ]''
==== condition ====
''//boolean// _[[.:bnf#expression]]''
==== expression ====
* [[.:bnf#relation]] { and relation }
* relation { or relation }
* relation { xor relation }
* relation [ nand relation ]
* relation [ nor relation ]
* relation { xnor relation }
===== Comments =====
The **REPORT** expression have to be of type string.
In absence of the **REPORT** clause the default string "Assertion Violation." will be used.
The **SEVERITY** expression have be of type severity_level. Possible values are: note, warning, error, failure.
In absence of the **SEVERITY** clause the default error will be used.
===== Examples =====
It is checked whether //signal_reset// is not equal to //1// .
ASSERT signal_reset = '1' ;
----
If //variable_reset// is not equal to //1// the report ``Reset is active`` is given.
ASSERT variable_reset = '1'
REPORT "Reset is active !" ;
----
If the condition which is to be verified is not fulfilled an error is reported and measures in accordance with the severity level are taken.
ASSERT reset = '1' OR set = '1'
REPORT "Reset and Set" &
"simultaneously active !"
SEVERITY failure ;
----
If //data// is not equal to //0// a severity note containing the current value of //data// is given.
ASSERT data = 0
REPORT "Datum ist gleich " &
integer_to_string( data ) & " !"
SEVERITY note ;
----
This assertion automatically (false) stops (severity_level = failure) the simulation at the time evaluated
ASSERT false
REPORT "End of simulation!"
SEVERITY failure ;