acmp模块代码相关

acmp对协议的检查

  1. 没有ready,valid信号与data没有hold住(在interface中通过property检查)
  2. 丢包头包尾
  3. 在等待读数据的过程中,ready信号拉高
  4. 获得的字节数对不上

covergroup怎么写的

主要在monitor中通过收集到的transaction进行收集。
针对首地址,长度,读写包类型,错误类型

normal case怎么编写

首地址 长度 读写包进行随机化。
pal_cm_valid连续/非连续,back2back,
pready有延迟,pal_cm_ready长时间拉低时读包是否正常。

验证过程中遇到的难点

开始是熟悉uvm的代码框架,文件的包含,组件之间的通信。
其次是组件行为的配置,包括back2back与valid间隔怎么配置。
最后是写添加必要的covergroup与assert,完成回归测试,收集与提高覆盖率,根据报告再添加不同的case,完成回归测试。

覆盖率不高的原因

  1. cfg配置参数没有翻转。
  2. fsm状态机没有发包中途reset。
  3. 一个包的长度比fifo的深度小,full信号一直没翻转过。

过程中遇到的问题

  1. 文件包含关系
  2. driver与sequencer通信有问题,导致进程卡住。
  3. uvm_do是包含创建这个过程的,原来create的东西会被覆盖掉。
  4. cfg是object,create时候不能用create("uvc_cfg",this);
  5. int是32位的,写ref_model时候可能出错。

为什么选择验证

  1. 验证能确保设计的正确性和可靠性,这对芯片开发至关重要。随着芯片复杂度增加,验证变得越来越重要,但同时难度也越来越大,很具有挑战性。
  2. 近年来,验证的发展越来越正规化,发展空间越来越大,通用性越来越强,不会被局限于某个领域。
  3. 学习验证可以在了解设计功能的同时,需要考虑验证的完备性与各种特殊情况。
  4. 验证中的团队合作比较多,通过协作解决复杂问题可以让我更快地学习到知识。
posted @ 2025-03-18 14:46  心比天高xzh  阅读(34)  评论(0)    收藏  举报