功能覆盖率开发可能非常复杂并且容易出错,因为这是一个手动地将设计需求(High-level)描述翻译成一组可收集coverpoint(Low-level)的过程。同一个模块的功能覆盖率根据不同的业务使用场景也需要做相应的修改。
麦肯锡Mutually Exclusive, Collectively Exhaustive(MECE)思维方式可以用来帮助我们高效清晰地规划功能覆盖率。MECE,简单来说就是相互独立、完全穷尽,即所谓的“无重复、无遗漏”。
根据上面的这张图,我们可以将设计需求分解成一个个独立的coverpoint(definition1,definition2,definition3),最终使得coverpoint彼此互斥独立,同时所有的coverpoint的集合能够覆盖所有设计需求测试场景。
上面是一个非常理想的功能覆盖率建模结构,实际上可能无法做到完全的互斥独立(bins和illegal_bins之间肯定是需要完全互斥的),但是我们必须要做到“完全穷尽”。
如果没有做到完全穷尽,就存在漏测的风险,在功能覆盖率检视的时候,必须要检查功能覆盖率的完备性,即所有coverpoint集合能够覆盖所有场景。
下面是基于MECE原则进行的AXI总线功能覆盖率建模示例:
在上面的例子中,我们可以很容易地按独立的事务类型进行分组,然后根据该事务中的各个域段进行分解并且对必要的域段进行cross。
在进行AXI功能覆盖率建模时,视野无需太广,只要在总线级别进行覆盖。例如,对于RESP域段就不用进一步考虑收集系统上生成不同RESP的原因。
版权声明:本文为iNostory原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。