1)模块输入有没有X,Z态
2)发现design不支持的用法,报警
3)设计时的假设,包括接口的时序
4) buffer/FIFO 的overflow
5) 一些不能出现的情况,譬如read和write同时有效
6) 握手总是能够完成 (ack总是跟在req之后)
7) case语句不会进入未曾预料的区域
8) not duplicate RTL. (monitor output changes, and verifiy the input value will cause that changes)
Verification Engineer 用 assert 来
1) 进行functional coverage检测
2) 衡量仲裁的公平性。。。
两种类型的assertion
1) immediate
[ name : ] assert ( expression ) [ pass_statement ] [ else fail_statement ]
一般只是dynamic cast和randomize时使用,只在当前时刻做一次check
2) concurrent
[ name : ] assert property ( property_specification ) pass_statement [ else fail_statement ]