acmp模块代码相关
acmp对协议的检查
- 没有ready,valid信号与data没有hold住(在interface中通过property检查)
- 丢包头包尾
- 在等待读数据的过程中,ready信号拉高
- 获得的字节数对不上
covergroup怎么写的
主要在monitor中通过收集到的transaction进行收集。
针对首地址,长度,读写包类型,错误类型
normal case怎么编写
首地址 长度 读写包进行随机化。
pal_cm_valid连续/非连续,back2back,
pready有延迟,pal_cm_ready长时间拉低时读包是否正常。
验证过程中遇到的难点
开始是熟悉uvm的代码框架,文件的包含,组件之间的通信。
其次是组件行为的配置,包括back2back与valid间隔怎么配置。
最后是写添加必要的covergroup与assert,完成回归测试,收集与提高覆盖率,根据报告再添加不同的case,完成回归测试。
覆盖率不高的原因
- cfg配置参数没有翻转。
- fsm状态机没有发包中途reset。
- 一个包的长度比fifo的深度小,full信号一直没翻转过。
过程中遇到的问题
- 文件包含关系
- driver与sequencer通信有问题,导致进程卡住。
- uvm_do是包含创建这个过程的,原来create的东西会被覆盖掉。
- cfg是object,create时候不能用create("uvc_cfg",this);
- int是32位的,写ref_model时候可能出错。
为什么选择验证
- 验证能确保设计的正确性和可靠性,这对芯片开发至关重要。随着芯片复杂度增加,验证变得越来越重要,但同时难度也越来越大,很具有挑战性。
- 近年来,验证的发展越来越正规化,发展空间越来越大,通用性越来越强,不会被局限于某个领域。
- 学习验证可以在了解设计功能的同时,需要考虑验证的完备性与各种特殊情况。
- 验证中的团队合作比较多,通过协作解决复杂问题可以让我更快地学习到知识。

浙公网安备 33010602011771号