跳转到主要内容

Cocotb的功能覆盖和约束随机化扩展

项目描述

cocotb-coverage

Cocotb的功能覆盖和约束随机化扩展

Documentation Status Regression Tests PyPI

此软件包允许您使用从CRV(约束随机验证)和MDV(度量驱动验证)方法中已知的约束随机化和功能覆盖技术,这些技术可在SystemVerilog或e中找到。此类扩展可以实现复杂项目的先进验证环境。

实现的功能旨在使SystemVerilog用户易于理解,并且与硬件验证语言相比提供了显著的扩展。

可以选择将覆盖数据库导出为可读的XML或YML格式,并提供了一个允许合并此类文件的函数。

安装

此软件包可以使用pip安装。版本1.1.0是最新版本,也是推荐的。

pip install cocotb-coverage

参考文献

路线图

  • 1.1已发布 - 2020年8月7日
  • 计划基本支持UCIS覆盖数据库格式
  • 欢迎任何建议 - 鼓励您提交问题!

代码示例

# point represented by x and y coordinates in range (-10,10)
class Point(crv.Randomized):

    def __init__(self, x, y):
        crv.Randomized.__init__(self)
        self.x = x
        self.y = y

        self.add_rand("x", list(range(-10, 10)))
        self.add_rand("y", list(range(-10, 10)))
        # constraining the space so that x < y
        self.add_constraint(lambda x, y: x < y)

...

# create an arbitrary point
p = Point(0,0)

for _ in range (10):

    # cover example arithmetic properties
    @CoverPoint("top.x_negative", xf = lambda point : point.x < 0, bins = [True, False])
    @CoverPoint("top.y_negative", xf = lambda point : point.y < 0, bins = [True, False])
    @CoverPoint("top.xy_equal", xf = lambda point : point.x == point.y, bins = [True, False])
    @CoverCross("top.cross", items = ["top.x_negative", "top.y_negative"])
    def plot_point(point):
        ...

    p.randomize()  # randomize object
    plot_point(p)  # call a function which will sample the coverage

# export coverage to XML
coverage_db.export_to_xml(filename="coverage.xml")
# export coverage to YAML
coverage_db.export_to_yaml(filename="coverage.yml")

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

cocotb-coverage-1.2.0.tar.gz (22.3 kB 查看哈希值)

上传时间 源代码

构建分发

cocotb_coverage-1.2.0-py3-none-any.whl (21.4 kB 查看哈希值)

上传时间 Python 3

由以下支持