option.per_instance, type_option.merge_instances和option.get_inst_coverage的默认值都是1。要注意的是merge_instances是type_option,也就是说这个coverage group不管例化多少份,merge_instances都是一样的,也可以理解为class里的static变量 (The identifier type_option is a built-in static member of every covergroup, coverpoint, and cross)。其它两个是instanceoption,也就是说在例化covergroup的时候可以更改它们的值,从而造成各种类型的instances,可以理解为内部变量 (Instance-specific option assignment statements in the covergroup definition are evaluated at the time that the covergroup is instantiated. Each instance of a covergroup can initialize an instance-specific option to a different value. The initialized option value affects only that instance.)。
结合上述3个options的功能,我们来看如何解决最开始提出的3个问题。
解决第一个问题
可以把option.per_instance设置为0,或者不配置,因为它的default值是0。这样我们看到的questasim覆盖率结果页面如下: