====== 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 ;