====== Concurrent assertion ====== ===== concurrent_assertion_statement ===== [ label : ] [ postponed ] assertion ; ===== Parents ===== * entity_statement_part * architecture_statement_part * block_statement_part ===== Further definitions ===== ==== label ==== * [[.:bnf#identifier]] ==== assertion ==== ''**assert** [[.:bnf#condition]] \\ [ **report** [[.:bnf#expression]] ] \\ [ **severity** expression ]'' ===== Comment ===== For any concurrent assertion statement, there is an equivalent (passive) process statement. The equivalent process statement of a concurrent assertion statement including the keyword **POSTPONED** is a postponed process. If the concurrent assertion contains a static condition then the assertion will be executed only once at the beginning of the simulation. ===== Examples ===== These are two different examples of assertions. One condition at a time is checked ( **ASSERT** ) and if it is not fulfilled a report is given ( **REPORT** ). The severity level determines which actions are carried out if the condition which is to be checked is not fulfilled. ASSERT reset = '1' ; ASSERT reset = '1' REPORT "Reset ist aktiv !" ; lbl : ASSERT reset = '1' REPORT "Reset ist aktiv !" SEVERITY warning ; latch_check : ASSERT reset = '1' OR set = '1' REPORT "Reset und Set sind" & "gleichzeitig aktiv !" SEVERITY failure ; lbl : ASSERT data = 0 REPORT "Datum ist gleich " & integer_to_string ( data ) & " !" SEVERITY note ;