[SV]在module中使用covergroup cover一个多bit向量状态转移的方法

       SystemVerilog在module中cover一个多bit向量状态转移的方法

 

       前言:在验DSB(Data Send Back)的时候,我们经常会遇到这样的场景:需要Cover每个Channel的工作状态,需要看是否有IRQ发生,看这个IRQ能否被mask掉。如何去Cover这种状态呢?本文将推荐一种做法。

 

一、各个Channel的IDLE状态

 1.1、假设idle信号的逻辑如下:

bit [193:0]                        idle;
bit [193:0]                        req;
bit [193:0]                        work;

idle = ~(req | work);

 

 1.2、covergroup定义及例化

  • 在module中使用generate做“复制”的操作
  • 通过new函数(构造函数)给covergroup传参数
  • 注意:此处是创建多个covergroup的实例,就是说对每个bit单独收coverage,所以要打开per_instance
  • 若没有打开per_instance,最后只能收到一个实例的coverg
module dma_test_top();

  covergroup idle_chk_cvg(logic i) @(posedge clk);
    option.per_instance = 1;

    idle_trans : coverpoint idle_vector[i] {
      b
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章