SystemVerilog:功能覆盖的内省



不幸的是,SystemVerilog缺乏一种全面的内省方法。我所知道的唯一方法是利用VPI来获取有关对象的信息。然而,它似乎不包括功能覆盖的对象(覆盖组、覆盖点、箱)。

我想完成的是:

1) 获取某些bin的覆盖状态(get_coverage()只能返回单个覆盖点和交叉覆盖点的累计覆盖信息)。

2) 获得关于覆盖点的内容的关于它们的仓的信息,或者换言之获得覆盖点的所有仓定义。

到目前为止,我无法让VPI为我做这项工作。因此,我想知道是否有人已经在这个领域做了实验,并对我的问题有一些解决方案。如果VPI不提供这样的内省功能,我也会对供应商特定的方法来分析覆盖点及其垃圾箱感到高兴。

如果您的供应商支持统一覆盖互操作性标准(UCIS),您可能可以通过实现一些C代码来读取覆盖数据库并查询所需内容。

然后,您可以使用DPI/VPI将此C代码缝合到SV模拟器上。

没有必要在SystemVerilog语言中进行这种后处理工作。大多数工具都会为您提供包含所有这些信息并可以进行筛选的报告。UCIS API也是可用的,但可能会大材小用。

最新更新