{ "info": { "author": "Marek Cieplucha", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)" ], "description": "# cocotb-coverage\nFunctional Coverage and Constrained Randomization Extensions for Cocotb\n\n[![Documentation Status](https://readthedocs.org/projects/cocotb-coverage/badge/?version=latest)](http://cocotb-coverage.readthedocs.org/en/latest/)\n[![Build Status](https://travis-ci.org/mciepluc/cocotb-coverage.svg?branch=master)](https://travis-ci.org/mciepluc/cocotb-coverage)\n[![PyPI](https://img.shields.io/pypi/dm/cocotb-coverage.svg?label=PyPI%20downloads)](https://pypi.org/project/cocotb-coverage/)\n\nThis package allows you to use constrained randomization and functional coverage techniques known from CRV (constrained random verification) and MDV (metric-driven verification) methodologies, available in SystemVerilog or _e_. Such extensions enable the implementation of an advanced verification environment for complex projects.\n\nThe implemented functionality is intended to be easily understandable by SystemVerilog users and provides significant extensions compared to Hardware Verification Languages. \n\nThere is an option to export coverage database to a readable XML format and a function which allows for merging such files is provided. \n\nReferences:\n* cocotb core package - [cocotb](https://github.com/potentialventures/cocotb)\n* Constraint Solving Problem resolver used in this project - [python-constraint](https://github.com/python-constraint/python-constraint)\n* [documentation](https://cocotb-coverage.readthedocs.io/en/latest/) \n* [PyPI package](https://pypi.org/project/cocotb-coverage/)\n* DVCon 2017 Paper - [New Constrained Random and MDV Methodology using Python](http://events.dvcon.org/2017/proceedings/papers/02_3.pdf)\n* DVCon 2017 Presentation - [SLIDES](http://events.dvcon.org/2017/proceedings/slides/02_3.pdf)\n* example advanced verification project - [apbi2c_cocotb_example](https://github.com/mciepluc/apbi2c_cocotb_example)\n\nSimple example below:\n```Python\n# point represented by x and y coordinates in range (-10,10)\nclass Point(crv.Randomized):\n\n def __init__(self, x, y):\n crv.Randomized.__init__(self)\n self.x = x\n self.y = y\n\n self.add_rand(\"x\", list(range(-10, 10)))\n self.add_rand(\"y\", list(range(-10, 10)))\n # constraining the space so that x < y\n self.add_constraint(lambda x, y: x < y)\n\n...\n\n# create an arbitrary point\np = Point(0,0)\n\nfor _ in range (10):\n\n # cover example arithmetic properties\n @CoverPoint(\"top.x_negative\", xf = lambda point : point.x < 0, bins = [True, False])\n @CoverPoint(\"top.y_negative\", xf = lambda point : point.y < 0, bins = [True, False])\n @CoverPoint(\"top.xy_equal\", xf = lambda point : point.x == point.y, bins = [True, False])\n @CoverCross(\"top.cross\", items = [\"top.x_negative\", \"top.y_negative\"])\n def plot_point(point):\n ...\n\n p.randomize() # randomize object\n plot_point(p) # call a function which will sample the coverage\n\n#export coverage to XML\ncoverage_db.export_to_xml(xml_name=\"coverage.xml\")\n\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mciepluc/cocotb-coverage", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "cocotb-coverage", "package_url": "https://pypi.org/project/cocotb-coverage/", "platform": "any", "project_url": "https://pypi.org/project/cocotb-coverage/", "project_urls": { "Homepage": "https://github.com/mciepluc/cocotb-coverage" }, "release_url": "https://pypi.org/project/cocotb-coverage/1.0.0/", "requires_dist": [ "cocotb", "python-constraint" ], "requires_python": ">=3.3", "summary": "Functional Coverage and Constrained Randomization Extensions for Cocotb", "version": "1.0.0" }, "last_serial": 5607150, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "84dc135112cc1067c998d0128988edcc", "sha256": "83574415c87083cd7329f7fa67f4c6c5669855723cb2e80103df379dd87cce41" }, "downloads": -1, "filename": "cocotb_coverage-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "84dc135112cc1067c998d0128988edcc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 19582, "upload_time": "2019-05-22T07:54:32", "url": "https://files.pythonhosted.org/packages/e8/e4/fd78fcd83c56d6c439e92261b21face8c0144291fab0be1ac9244d1853da/cocotb_coverage-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e05cf4eb0c08201161ec6772d3f31e90", "sha256": "8d024ca748f044fb7162d09dee3923da5cf33e6d66efd6ad3293d4f4b47bb43a" }, "downloads": -1, "filename": "cocotb-coverage-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e05cf4eb0c08201161ec6772d3f31e90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 18579, "upload_time": "2019-05-22T07:54:34", "url": "https://files.pythonhosted.org/packages/37/2b/f8be95582a6f7718c240453dcb5352e5eaa0fb647cfe32dcaff40005dfcb/cocotb-coverage-0.1.0.tar.gz" } ], "0.1.dev0": [ { "comment_text": "", "digests": { "md5": "60dd465b68132275d0a2481894bbabee", "sha256": "4e7db7dc233f5c4861a680608a3f55c682f0753805ca96c64d8c3a1873e96b25" }, "downloads": -1, "filename": "cocotb-coverage-0.1.dev0.tar.gz", "has_sig": false, "md5_digest": "60dd465b68132275d0a2481894bbabee", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.0", "size": 17261, "upload_time": "2019-05-05T19:31:02", "url": "https://files.pythonhosted.org/packages/9c/6f/a9bc429a44249711e5c643f15e58a4d796fdc7f2c6c2ea5fe4931d59a15d/cocotb-coverage-0.1.dev0.tar.gz" } ], "0.1.dev1": [ { "comment_text": "", "digests": { "md5": "c15aaf897578c267185b6842bad46cb1", "sha256": "8890f2b03378adabbb39ef4ba1856d84e0207809502094a660301b31abe24000" }, "downloads": -1, "filename": "cocotb-coverage-0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "c15aaf897578c267185b6842bad46cb1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.0", "size": 17243, "upload_time": "2019-05-05T19:47:11", "url": "https://files.pythonhosted.org/packages/ad/44/f21ee0f059865b1989c4e83662dfcbc7a9e1ed2692fa1cc296b6b6461654/cocotb-coverage-0.1.dev1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "09a6c99612d4dff83027e8130982764a", "sha256": "69dfd345a6d716e4070d4c8f6c433a7d71c4dbe5d4e688bb045e825641138c03" }, "downloads": -1, "filename": "cocotb_coverage-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09a6c99612d4dff83027e8130982764a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 19884, "upload_time": "2019-07-30T11:17:00", "url": "https://files.pythonhosted.org/packages/08/4e/0d1c2a29024082d9588380bf8b6ff23e10dcf47368d1decfa9065ede0699/cocotb_coverage-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "542eac38b7b89b7b2ced594e121764fb", "sha256": "35a661626d7f6b4569967ea67ab693365b7f0d85f6b45e0ee337b28f4bf974f0" }, "downloads": -1, "filename": "cocotb-coverage-1.0.0.tar.gz", "has_sig": false, "md5_digest": "542eac38b7b89b7b2ced594e121764fb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 20162, "upload_time": "2019-07-30T11:17:03", "url": "https://files.pythonhosted.org/packages/c0/3a/22065254287827c77ee822154ddc853b68c1c9c2ba2cb1a18417cb8e9738/cocotb-coverage-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "09a6c99612d4dff83027e8130982764a", "sha256": "69dfd345a6d716e4070d4c8f6c433a7d71c4dbe5d4e688bb045e825641138c03" }, "downloads": -1, "filename": "cocotb_coverage-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09a6c99612d4dff83027e8130982764a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 19884, "upload_time": "2019-07-30T11:17:00", "url": "https://files.pythonhosted.org/packages/08/4e/0d1c2a29024082d9588380bf8b6ff23e10dcf47368d1decfa9065ede0699/cocotb_coverage-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "542eac38b7b89b7b2ced594e121764fb", "sha256": "35a661626d7f6b4569967ea67ab693365b7f0d85f6b45e0ee337b28f4bf974f0" }, "downloads": -1, "filename": "cocotb-coverage-1.0.0.tar.gz", "has_sig": false, "md5_digest": "542eac38b7b89b7b2ced594e121764fb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 20162, "upload_time": "2019-07-30T11:17:03", "url": "https://files.pythonhosted.org/packages/c0/3a/22065254287827c77ee822154ddc853b68c1c9c2ba2cb1a18417cb8e9738/cocotb-coverage-1.0.0.tar.gz" } ] }