1:fcov(assert和功能)、ccov(行、分支、条件、fsm)、pcov
covergroup、coverpoint、cross
bins、ignore_bins、illegal_bins、binsof
default、default_sequence、$、item
6.2 详细
1:pcov:plan cov
验证计划目标覆盖率、代码覆盖率和功能覆盖率。
制定验证计划中的功能点的时候, 需要考虑如下三个问题。
哪些功能点需要检查?
这个功能点的哪些数据需要检查?
如何对这些数据进行采样?
一般情况下, 以下几类是参考的对象: 功能要求、 接口要求、 系统规范、 协议规范等。
2:code cov:分支:条件分支
条件、表达式:表达式的各种逻辑组合。
3:covergroup可以在module、program、class、interface、package等里定义。
覆盖组可以定义参数,在其例化时需传递实参,实参在 new 的过程中采样;时钟事件定义了功能覆盖组的采样条件,若不定义时钟采样条件,则需要通过调用内置的采样方法sample。
在类中可以不使用例化, 但仍需在类的构造函数中调用 new 对覆盖组进行分配初始化
4:coverpoint
lable是可选的覆盖点的名称,用户可指定具体的名字以便通过层次化引用来访问该覆盖点; 若不指定,则由仿真器自动分配。该覆盖点在采样事件激发或者内置sample被调用时采样统计。 iff结构可以指定采样条件,若指定条件不成立时,则不作覆盖率统计。
如果没有显示定义,自动创建分组柜的最大数目将由 auto_bin_max这个内置参数决定,默认64.。不管是显示定义还是自动生成,若分组柜中各种情况的总数除以分组柜的个数,其商就是每个组的平均个数,余数部分会归入最后一个分组柜中,如下例所示:
Bins fixed[3] = {1:10};
5:cross
Ignore_bins可以定义忽略的交叉覆盖点,该类交叉覆盖点出现的时候不列入统计的范围,计数器不做自加; illegal_bins可以定义非法的交叉覆盖点,一旦出现该类交叉覆盖点,系统会报告出错。
6:内置参数