Hi,
Assertion is widely used in software engineer.
Assertion means the logic *must output* that way, if not, the logic must be wrong.
Check the assert function in <assert.h> in C language.
For example,
//--code--
assert(x>0);
//--code--
If x<0, the program will show you assertion failed.
Like in software, hardware can do assertions like that, but the procedure is more complicated!
For example,
@(posedge clk)
if logic_output != 0, assertion failed!
I think you may refer to OVL(open verification library), search it in Google.
The difference with testbench and assertion is:
testbench is stimulus and monitor but assertion is to add some testpin in the logic.
BTW, I will study OVL in few days, and if you are interested in it, we may have a discusstion
Regards,
Davy