三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

SV学习记录(一)

SV学习记录(一)

目录

定向测试和随机测试

随机化对象

功能覆盖率

反馈

测试分层

测试的三个阶段


定向测试和随机测试

定向测试指的是人为编写一些可以预想到的向量,针对有规范的测试点进行测试;随机测试指的是通过随机生成的激励来测试,通常随机激励覆盖率会更高,但不是所有的随机激励都是有效的,当遇到无效激励/违法激励时,要通过修改约束生成新的合法激励。

随机化对象

你应该对整个环境的配置进行随机化,包括仿真的时长、设备的数量,以及它们的配置方式

如果一个总线事务没有完成会怎么样?如果遇到一个非法的操作呢?设计规范中有没有指出哪两个信号互斥?要对这些情况一一尝试,然后确保设备还能继续正常运作。测试行为最好能在检测到错误的代码行停下,方便检索。

你的测试平台应该以多快的速度发送激励呢?如果输人以可能的最快速率到达,而输出却被卡在一个较低的速率上,该怎么办?如何处理来自多个输人的激励同时到达的情况?如果这些激励带有不同的时延又该怎么办?

如何运行测试?主要注意可以通过加入多个变量来初始化种子,得到新的测试激励。

功能覆盖率

每次要看报告判断哪些功能已经被测试过了,逐渐排除,最终找到尚未被测试的功能点。

反馈

这是一种比较少用的办法,它的思想是在每次测试过后,根据当前的功能覆盖率反馈给激励生成,这样让它生成新的互斥激励,但是这种反馈作用不大,目前主要还是手动分析。

测试分层

它的思想是把模块分而治之,每个小的测试模块只完成最简单的行为,这样可以把一些重复性的,比如总线写入,总线读出之类的行为包装起来反复使用。

测试的三个阶段

建立。包括初始化环境配置,复位待测设计等

运行。启动环境,运行测试

收尾。等待设计清空最后一个进入的事务,报告数据。

← 返回列表