searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

UVM数字验证覆盖率收集

2024-12-03 09:33:30
1
0

代码覆盖率是衡量验证进展的最简易的⽅式。它的作⽤是检查代码是否冗余,设计要点是否遍历,被检测的对象是RTL代码,⽽代码覆盖率的检测⼀般由⼯具⾃动⽣成的。⾏覆盖率(Line coverage)、分⽀覆盖率(Branch coverage)、路径覆盖率(Path Coverage)、翻转覆盖率(Toggle coverage)、条件覆盖率(Conditional coverage)、有限状态机覆盖率(FSM coverage)。

以下几种情况可以直接exclude:

1). 设计RTL代码中一个模块被多次复用,传参实现不同功能如:

此处复用了tx q和rx q的模块,由于cmd q描述符链表长度只能是3,因此该处不可能达到19所以此处覆盖率可以exclude

2).设计RTL代码中使用了某些厂商提供的库,如:

此处使用了ram的仿真模型,可以exclude

3).一个模块被多次例化,只分析其中一个即可,如:

此处一个模块被多次复用,将其中一个覆盖率提升至收敛后没问题,其余都可以exclude

以下几种情况需要补充测试用例:

1).现有测试用例没有覆盖到的点,如:

此处为tx q描述符长度,由于所有的测试用例描述符链表长度都没有达到19个,所以此处没有覆盖到,补充测试用例

2).仿真不容易覆盖到的点,直接force如:

Wcnt写进fifo计数,由于当该fifo为空或者rrsp fifo为空的时候读使能就拉高,而rdy得busy时才会拉低,因此该计数很难大于1000。所以直接force rdy为0

 

 

0条评论
0 / 1000
康****东
1文章数
0粉丝数
康****东
1 文章 | 0 粉丝
康****东
1文章数
0粉丝数
康****东
1 文章 | 0 粉丝
原创

UVM数字验证覆盖率收集

2024-12-03 09:33:30
1
0

代码覆盖率是衡量验证进展的最简易的⽅式。它的作⽤是检查代码是否冗余,设计要点是否遍历,被检测的对象是RTL代码,⽽代码覆盖率的检测⼀般由⼯具⾃动⽣成的。⾏覆盖率(Line coverage)、分⽀覆盖率(Branch coverage)、路径覆盖率(Path Coverage)、翻转覆盖率(Toggle coverage)、条件覆盖率(Conditional coverage)、有限状态机覆盖率(FSM coverage)。

以下几种情况可以直接exclude:

1). 设计RTL代码中一个模块被多次复用,传参实现不同功能如:

此处复用了tx q和rx q的模块,由于cmd q描述符链表长度只能是3,因此该处不可能达到19所以此处覆盖率可以exclude

2).设计RTL代码中使用了某些厂商提供的库,如:

此处使用了ram的仿真模型,可以exclude

3).一个模块被多次例化,只分析其中一个即可,如:

此处一个模块被多次复用,将其中一个覆盖率提升至收敛后没问题,其余都可以exclude

以下几种情况需要补充测试用例:

1).现有测试用例没有覆盖到的点,如:

此处为tx q描述符长度,由于所有的测试用例描述符链表长度都没有达到19个,所以此处没有覆盖到,补充测试用例

2).仿真不容易覆盖到的点,直接force如:

Wcnt写进fifo计数,由于当该fifo为空或者rrsp fifo为空的时候读使能就拉高,而rdy得busy时才会拉低,因此该计数很难大于1000。所以直接force rdy为0

 

 

文章来自个人专栏
virtioNET/BLK仿真
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0