cocotb的函数覆盖与约束随机化扩展
cocotb-coverage的Python项目详细描述
cocotb覆盖率
cocotb的函数覆盖和约束随机化扩展
此软件包允许您使用SystemVerilog或e中提供的CRV(约束随机验证)和MDV(度量驱动验证)方法中已知的约束随机化和功能覆盖技术。这样的扩展可以实现复杂项目的高级验证环境。
与硬件验证语言相比,实现的功能易于SystemVerilog用户理解,并提供了重要的扩展。
有一个选项可以将覆盖率数据库导出为可读的xml格式,并提供了一个允许合并此类文件的函数。
参考文献:
- COCOTB核心包-cocotb
- 此项目中使用的约束解决问题解决程序-python-constraint
- documentation
- PyPI package
- DVCON 2017论文-New Constrained Random and MDV Methodology using Python
- DVCON 2017演示-SLIDES
- 高级验证项目示例-apbi2c_cocotb_example
下面的简单示例:
# point represented by x and y coordinates in range (-10,10)classPoint(crv.Randomized):def__init__(self,x,y):crv.Randomized.__init__(self)self.x=xself.y=yself.add_rand("x",list(range(-10,10)))self.add_rand("y",list(range(-10,10)))# constraining the space so that x < yself.add_constraint(lambdax,y:x<y)...# create an arbitrary pointp=Point(0,0)for_inrange(10):# cover example arithmetic properties@CoverPoint("top.x_negative",xf=lambdapoint:point.x<0,bins=[True,False])@CoverPoint("top.y_negative",xf=lambdapoint:point.y<0,bins=[True,False])@CoverPoint("top.xy_equal",xf=lambdapoint:point.x==point.y,bins=[True,False])@CoverCross("top.cross",items=["top.x_negative","top.y_negative"])defplot_point(point):...p.randomize()# randomize objectplot_point(p)# call a function which will sample the coverage#export coverage to XMLcoverage_db.export_to_xml(xml_name="coverage.xml")