电子说
我们一般习惯在哪里开发我们的功能覆盖率模型呢?是使用module,还是class?
众所周知,module和class是2个完全不同的数据结构,一个静态,一个动态。也正因为如此,从而存在不同的特性和应用场景。
module比较适合抽取RTL信号构造功能覆盖率模型,而class比较适合根据验证环境中的变量构造功能覆盖率模型。
1. 上面class中声明了一个covergroup,可以对类中的属性m_x、m_y和m_z进行功能覆盖率建模。
2. 需要在类的new方法中对covergroup进行实例化。
3. 这种在class中声明covergroup的方法可以用来建模验证环境中某些变量的功能覆盖率,而不用依赖RTL 。
上图中的‘covergroup xyzCover’每一次在m_z发生变化时就会进行采样,其中包含了2个coverpoints,分别是‘m_x’ 和 ‘m_y’.
由于这个covergroup声明和实例化在一个class中,所以只有在这个class本身被实例化并且m_z不停地被改变赋值时才会进行采样,否则不会有任何bins被覆盖。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !