
用于功能验证的 SystemVerilog Covergroup 覆盖率
SystemVerilog covergroup 通过采样事件、coverpoint、数值分箱、跳变分箱、交叉覆盖、选项和方法来定义数据导向功能覆盖率。它们用于在仿真过程中度量预期数据行为、数值组合、非法情况、忽略情况以及覆盖率进展。
SystemVerilog covergroup 通过采样事件、coverpoint、数值分箱、跳变分箱、交叉覆盖、选项和方法来定义数据导向功能覆盖率。它们用于在仿真过程中度量预期数据行为、数值组合、非法情况、忽略情况以及覆盖率进展。
This resource includes
Description
SystemVerilog covergroup 覆盖率为度量数据导向功能验证进展提供了一种结构化机制。它通过用户定义的采样、coverpoint、分箱、交叉、选项和方法来捕获验证意图。Covergroup 不只是报告哪些代码被执行过,而是描述哪些数值、跳变、范围、组合和特殊情况已经在仿真过程中真实发生。 Coverpoint 定义需要采样的表达式,并把观察到的数值转换为可度量的覆盖分箱。自动分箱为数值覆盖提供快速起点,而显式分箱可以精确控制哪些数值被跟踪以及如何分组。标量分箱把相关数值归入一个计数器,而向量分箱为单个数值或分布式数值组提供独立计数器。忽略分箱从覆盖率计算中移除无关数值,非法分箱识别禁止数值,默认分箱在合适情况下收集剩余数值。 跳变覆盖把数值覆盖扩展到时间维度。跳变分箱记录跨采样事件的有序数值变化,包括单次变化、更长序列、重复数值,以及数组或范围之间的跳变。这使覆盖模型能够度量动态数据行为,而不仅仅是静态数值命中。当功能正确性取决于数值出现顺序时,这种机制非常有用。 交叉覆盖度量覆盖项之间的关系。Cover cross 会为 coverpoint 或变量之间的组合创建分箱,从而可以验证重要数值组合是否曾经一起出现。自动交叉分箱提供广泛的组合覆盖,而显式交叉分箱使用 binsof、intersect 和逻辑选择操作符聚焦于有意义的交叉乘积区域。非法和忽略交叉分箱通过移除无关组合以及标记禁止组合来细化交叉空间。 Covergroup 可以用于类内部,从而把覆盖率直接绑定到对象数据和行为。基于类的 covergroup 可以访问类属性,包括 protected 和 local 成员,并且每个类对象都可以单独跟踪覆盖率。对于活动组件,采样可以基于事件;对于数据对象和事务式活动,采样可以通过 sample() 手动完成。 覆盖率选项控制计算、报告、采样、分箱创建、缺失分箱报告、重叠检测以及按实例跟踪。类型选项影响某个 covergroup 类型的所有实例,而实例选项支持更局部化的控制。sample()、get_coverage()、get_inst_coverage()、set_inst_name()、start() 和 stop() 等 covergroup 方法,为采样、状态、命名和收集控制提供过程化访问。通过这些机制,covergroup 成为构建可度量功能覆盖模型的精确且实用的工具。 Catalogue: 结构覆盖率与功能覆盖率 功能覆盖率的两种方向 数据导向功能覆盖率 Covergroup 覆盖模型基础 覆盖点与自动分箱 显式覆盖点分箱 显式标量分箱和向量分箱 示例: 显式标量分箱和向量分箱 Covergroup 分箱数量统计 交叉覆盖基础 示例: 自动交叉分箱 显式交叉分箱 非法与忽略交叉分箱 简化交叉分箱 类中的 Cover...
This resource includes
Description
SystemVerilog covergroup 覆盖率为度量数据导向功能验证进展提供了一种结构化机制。它通过用户定义的采样、coverpoint、分箱、交叉、选项和方法来捕获验证意图。Covergroup 不只是报告哪些代码被执行过,而是描述哪些数值、跳变、范围、组合和特殊情况已经在仿真过程中真实发生。 Coverpoint 定义需要采样的表达式,并把观察到的数值转换为可度量的覆盖分箱。自动分箱为数值覆盖提供快速起点,而显式分箱可以精确控制哪些数值被跟踪以及如何分组。标量分箱把相关数值归入一个计数器,而向量分箱为单个数值或分布式数值组提供独立计数器。忽略分箱从覆盖率计算中移除无关数值,非法分箱识别禁止数值,默认分箱在合适情况下收集剩余数值。 跳变覆盖把数值覆盖扩展到时间维度。跳变分箱记录跨采样事件的有序数值变化,包括单次变化、更长序列、重复数值,以及数组或范围之间的跳变。这使覆盖模型能够度量动态数据行为,而不仅仅是静态数值命中。当功能正确性取决于数值出现顺序时,这种机制非常有用。 交叉覆盖度量覆盖项之间的关系。Cover cross 会为 coverpoint 或变量之间的组合创建分箱,从而可以验证重要数值组合是否曾经一起出现。自动交叉分箱提供广泛的组合覆盖,而显式交叉分箱使用 binsof、intersect 和逻辑选择操作符聚焦于有意义的交叉乘积区域。非法和忽略交叉分箱通过移除无关组合以及标记禁止组合来细化交叉空间。 Covergroup 可以用于类内部,从而把覆盖率直接绑定到对象数据和行为。基于类的 covergroup 可以访问类属性,包括 protected 和 local 成员,并且每个类对象都可以单独跟踪覆盖率。对于活动组件,采样可以基于事件;对于数据对象和事务式活动,采样可以通过 sample() 手动完成。 覆盖率选项控制计算、报告、采样、分箱创建、缺失分箱报告、重叠检测以及按实例跟踪。类型选项影响某个 covergroup 类型的所有实例,而实例选项支持更局部化的控制。sample()、get_coverage()、get_inst_coverage()、set_inst_name()、start() 和 stop() 等 covergroup 方法,为采样、状态、命名和收集控制提供过程化访问。通过这些机制,covergroup 成为构建可度量功能覆盖模型的精确且实用的工具。 Catalogue: 结构覆盖率与功能覆盖率 功能覆盖率的两种方向 数据导向功能覆盖率 Covergroup 覆盖模型基础 覆盖点与自动分箱 显式覆盖点分箱 显式标量分箱和向量分箱 示例: 显式标量分箱和向量分箱 Covergroup 分箱数量统计 交叉覆盖基础 示例: 自动交叉分箱 显式交叉分箱 非法与忽略交叉分箱 简化交叉分箱 类中的 Cover...
Recommended

EDA Academy is a practical learning platform for engineers in the VLSI and semiconductor industry. We offer structured courses, technical resources, and career-focused training across all major areas of chip design and verification — from Verilog to Physical Design, from fundamentals to advanced topics. Learn at your own pace, explore member-exclusive content, or join as an instructor to share your expertise. Lear...
