目录
定向测试和随机测试
随机化对象
功能覆盖率
反馈
测试分层
测试的三个阶段
定向测试和随机测试
定向测试指的是人为编写一些可以预想到的向量,针对有规范的测试点进行测试;随机测试指的是通过随机生成的激励来测试,通常随机激励覆盖率会更高,但不是所有的随机激励都是有效的,当遇到无效激励/违法激励时,要通过修改约束生成新的合法激励。
随机化对象
你应该对整个环境的配置进行随机化,包括仿真的时长、设备的数量,以及它们的配置方式
如果一个总线事务没有完成会怎么样?如果遇到一个非法的操作呢?设计规范中有没有指出哪两个信号互斥?要对这些情况一一尝试,然后确保设备还能继续正常运作。测试行为最好能在检测到错误的代码行停下,方便检索。
你的测试平台应该以多快的速度发送激励呢?如果输人以可能的最快速率到达,而输出却被卡在一个较低的速率上,该怎么办?如何处理来自多个输人的激励同时到达的情况?如果这些激励带有不同的时延又该怎么办?
如何运行测试?主要注意可以通过加入多个变量来初始化种子,得到新的测试激励。
功能覆盖率
每次要看报告判断哪些功能已经被测试过了,逐渐排除,最终找到尚未被测试的功能点。
反馈
这是一种比较少用的办法,它的思想是在每次测试过后,根据当前的功能覆盖率反馈给激励生成,这样让它生成新的互斥激励,但是这种反馈作用不大,目前主要还是手动分析。
测试分层
它的思想是把模块分而治之,每个小的测试模块只完成最简单的行为,这样可以把一些重复性的,比如总线写入,总线读出之类的行为包装起来反复使用。
测试的三个阶段
建立。包括初始化环境配置,复位待测设计等
运行。启动环境,运行测试
收尾。等待设计清空最后一个进入的事务,报告数据。