功能覆盖率模型是一个component组件,派生自uvm_component
class function_cov extends uvm_component;
`uvm_component_utils_begin(function_cov)
`uvm_component_utils_end
endclass
option.name:
option.weight:用于此设置此仓值的权重。在计算覆盖的总数时,若这个仓的权重设置为0,即使这个仓又被击中,也不会计算。若设置权重为2,hit了一次,则hit总数据会加2。
option.at_least:默认情况下,数值采样了1次就可以计入有效的bin。可以通过修改at_least来修改每个bin的数值 最少的采样次数,如果低于at_least数值,则不会被计入bin中。
| 选项 | 说明 |
| option.weight=number | 计算覆盖率时所在covergroup或coverpoint或cross的权重。常用于在不关心的coverpoint种的weight设置为0 |
| option.at_least=number | 表示每个bin最少被采样多少次才算入命中 |
| option.goal=number | 覆盖率目标 |
| option.auto_bin_max=number | 自动产生bins的最大数量 |
| option.per_instance=boolean | 1表示例化多份时,每一个实例一个覆盖率;0表示覆盖率合并 |
| option.comment=string | 注释,若一个covergroup例化多份,可在例化时通过参数传入不同的comment |
| sample() | 采样 |
| start() | 开始覆盖率的收集 |
| stop() | 关闭覆盖率的收集 |
| get_coverage() | 获取所有覆盖率组的覆盖率,返回一个从0到100的实数(该方法可带参数) |
| get_inst_coverage() | 获取单个实例的覆盖率,需要用option指定(该方法可带参数) |
| $set_coverage_db_name ( name ) | 设置的覆盖率数据库文件名,在仿真结束后,用于保存覆盖率信息 |
| $load_coverage_db ( name ) | 从给定的文件名加载所有覆盖率组类型积累的覆盖率信息 |
| set_inst_name(string) | 设置covergroup的名称 |
一个覆盖组(covergroup)可以有多个覆盖点(coverpoint),一个覆盖点可以设置多个要覆盖的仓值(bin)。bin有显式bin和隐式bin。用bins关键字来定义显示的bin,隐式的bin是在变量的取值范围内被自动创建。
覆盖组选项auto_bin_max指明了自动创建仓的最大数目,缺省值是64。值域超过指定的最大值,SV会把值域范围平分到auto_bin_max个仓中。如果采样变量的域范围过大而又没有指定bin,那么系统会默认分配64个bin,将值域范围平均分配个这64个bin,例如一个16bit变量有65536个可能值,所以64个bin中的每一个都覆盖了1024个值。
binsof intersact
面向数据覆盖:
面向控制覆盖:行为序列,可通过编写SVA检测是否发生。如是否发生过反压。

457

被折叠的 条评论
为什么被折叠?



