
上图是EDA仿真验证环境中一般都会存在的验证组件。
1. “sva cover”:使用SVA评估哪些场景被覆盖;
2. “sva assert”:用来检查设计的行为合法 。
sva cover 和sva assert需要组合使用。例如我们增加了sva assert:
每个 req 都应该跟一个 gnt。
如果这个sva assert没有失败可能有2种情况,
可能是设计确实符合这个断言,
也可能是仿真激励永远都没有触发过req,从而造成空pass。所以需要sva cover确认是否覆盖率这个场景,即收到过req。
第二个组件是Functional Coverage,它是EDA仿真验证交付的重点。功能覆盖率相对代码覆盖率而言,是主观衡量是否已经覆盖了设计需求规格。相比代码覆盖率,功能覆盖率能够支持更加复杂的场景构造。
实际上,covergroup中的illegal_bins也是能够做一定程度的check的,所以说covergroup和sva在一定程度上是存在功能重复的。