There are two types of assertions.
Immediate assertions are useful for checking combinational expression. These are similar to if and else statement but with assertion control. Immediate assertions follow simulation event semantics for their execution and are executed like a statement in a procedural block.
EXAMPLE: time t;
always @(posedge clk)
if (state == REQ)
assert (req1 || req2);
elsebegin t = $time;
#5 $error("assert failed at time %0t",t);