{ "info": { "author": "Andre Souto", "author_email": "andre820@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)", "Topic :: Software Development", "Topic :: Text Editors :: Integrated Development Environments (IDE)" ], "description": "# HDL Code Checker\n\n[![PyPI version](https://badge.fury.io/py/hdlcc.svg)](https://badge.fury.io/py/hdlcc)\n[![Build Status](https://travis-ci.org/suoto/hdlcc.svg?branch=master)](https://travis-ci.org/suoto/hdlcc)\n[![Build status](https://ci.appveyor.com/api/projects/status/kbvor84i6xlnw79f/branch/master?svg=true)](https://ci.appveyor.com/project/suoto/hdlcc/branch/master)\n[![codecov](https://codecov.io/gh/suoto/hdlcc/branch/master/graph/badge.svg)](https://codecov.io/gh/suoto/hdlcc)\n[![Code Climate](https://codeclimate.com/github/suoto/hdlcc/badges/gpa.svg)](https://codeclimate.com/github/suoto/hdlcc)\n[![Join the chat at https://gitter.im/suoto/hdlcc](https://badges.gitter.im/suoto/hdlcc.svg)](https://gitter.im/suoto/hdlcc?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Analytics](https://ga-beacon.appspot.com/UA-68153177-4/hdlcc/README.md?pixel)](https://github.com/suoto/hdlcc)\n\nHDL Code Checker provides a Python API that uses HDL compilers to build a project\nand return info that can be used to populate syntax checkers. It works out mixed\nlanguage dependencies and compile ordering, interprets some compilers messages\nand provides some (limited) static checks.\n\n---\n\n* [Installation](#installation)\n* [Usage](#usage)\n * [Third-party tools](#third-party-tools)\n * [Configuration file](#configuration-file)\n * [LSP server](#lsp-server)\n * [HTTP server](#http-server)\n* [Testing](#testing)\n* [Supported systems](#supported-systems)\n* [Editor support](#editor-support)\n* [Style checking](#style-checking)\n* [Issues](#issues)\n* [License](#license)\n\n## Installation\n\n```sh\npip install hdlcc\n```\n\n## Usage\n\nHDL Code Checker server can be started via `hdlcc` command. Use `hdlcc --help`\nfor more info on how to use it.\n\n```bash\n$ hdlcc -h\nusage: hdlcc [-h] [--host HOST] [--port PORT] [--lsp]\n [--attach-to-pid ATTACH_TO_PID] [--log-level LOG_LEVEL]\n [--log-stream LOG_STREAM] [--nocolor] [--stdout STDOUT]\n [--stderr STDERR] [--version]\n\noptional arguments:\n -h, --help show this help message and exit\n --host HOST [HTTP] Host to serve\n --port PORT [HTTP] Port to serve\n --lsp Starts the server in LSP mode. Defaults to false\n --attach-to-pid ATTACH_TO_PID\n [HTTP, LSP] Stops the server if given PID is not\n active\n --log-level LOG_LEVEL\n [HTTP, LSP] Logging level\n --log-stream LOG_STREAM\n [HTTP, LSP] Log file, defaults to stdout when in HTTP\n or a temporary file named hdlcc_log_pid.log when\n in LSP mode\n --nocolor [HTTP, LSP] Enables colored logging (defaults to\n false)\n --stdout STDOUT [HTTP] File to redirect stdout to. Defaults to a\n temporary file named hdlcc_stdout_pid.log\n --stderr STDERR [HTTP] File to redirect stdout to. Defaults to a\n temporary file named hdlcc_stderr_pid.log\n --version, -V Prints hdlcc version and exit\n```\n\n### Third-party tools\n\nHDL Code Checker supports\n\n* [Mentor ModelSim][Mentor_msim]\n* [ModelSim Intel FPGA Edition][Intel_msim]\n* [GHDL][GHDL]\n* [Vivado Simulator][Vivado_Simulator] (bundled with [Xilinx\n Vivado][Xilinx_Vivado])\n\n### Configuration file\n\nHDL Code Checker requires a configuration file listing libraries, source files,\nbuild flags, etc.\n\nBasic syntax is\n\n```bash\n# This is a comment\n\n[ builder = (msim|ghdl|xvhdl) ] # This is being deprecated\n\n[ global_build_flags[ (vhdl|verilog|systemverilog) ] = ]\n\n# Specifying sources\n(vhdl|verilog|systemverilog) [file specific flags]\n```\n\nAn example project file could be:\n\n```bash\n# Specifying builder\n# HDL Code Checker will try to use ModelSim, GHDL and XVHDL in this order, so\n# only add this if you want to force to a particular one\nbuilder = msim\n\nglobal_build_flags[vhdl] = -rangecheck\nglobal_build_flags[verilog] = -lint\nglobal_build_flags[systemverilog] = -lint\n\n# Relative paths (relative to the project file if using HTTP mode or the project\n# root if using LSP mode)\nvhdl my_library foo.vhd -check_synthesis\nvhdl my_library foo_tb.vhd -2008\nverilog my_library verilog/a_verilog_file.v -pedanticerrors\n# Absolute paths are handled as such\nsystemverilog my_library /home/user/some_systemverilog_file.sv -pedanticerrors\n# Wildcards are supported\nvhdl my_library library/*.vhd\nvhdl my_library library/*/*.vhd\n```\n\nSetting specific flags can be done per language or per file:\n\n```\nglobal_build_flags[vhdl] = \nglobal_build_flags[verilog] = \nglobal_build_flags[systemverilog] = \n```\n\nWhen unset, HDL Code Checker sets the following default values depending on the\ncompiler being used:\n\n* ModelSim\n\n| Compiler | ModelSim |\n| :---: | :--- |\n| VHDL | `-lint -pedanticerrors -check_synthesis -rangecheck -explicit` |\n| Verilog | `-lint -pedanticerrors -hazards` |\n| SystemVerilog | `-lint -pedanticerrors -hazards` |\n\n* GHDL\n\n| Language | Flags |\n| :---: | :--- |\n| VHDL | `-fexplicit -frelaxed-rules` |\n| Verilog | N/A |\n| SystemVerilog | N/A |\n\n### LSP server\n\nHDL Code Checker has beta support for [Language Server Protocol][LSP]. To start\nin LSP mode:\n\n```bash\nhdlcc --lsp\n```\n\nOn a Linux system, log file will be at `/tmp/hdlcc_log_pid.log` and\n`/tmp/hdlcc_stderr_pid.log`.\n\n### HTTP server\n\nHDL Code Checker can be used in HTTP server mode also:\n\n```bash\nhdlcc\n```\n\n*Please note that this mode **does not use LSP to communicate**. Request/response\nAPI is not yet available, but a reference implementation can be found in\n[vim-hdl][vim-hdl]*\n\n## Testing\n\nHDL Code Checker uses a [docker][docker] container to run tests. If you wish to\nrun them, clone this repository and on the root folder run\n\n```bash\n./run_tests.sh\n```\n\nThe container used for testing is [suoto/hdlcc][hdlcc_container]\n\n## Supported systems\n\n| System | CI | CI status |\n| :--: | :--: | :--: |\n| Linux | Yes | [![Build Status](https://travis-ci.org/suoto/hdlcc.svg?branch=master)](https://travis-ci.org/suoto/hdlcc) |\n| Windows | Yes | [![Build status](https://ci.appveyor.com/api/projects/status/kbvor84i6xlnw79f/branch/master?svg=true)](https://ci.appveyor.com/project/suoto/hdlcc/branch/master) |\n\n## Editor support\n\n* Vim: [vim-hdl](https://github.com/suoto/vim-hdl/)\n\n---\n\n## Style checking\n\nStyle checks are independent of a third-party compiler. Checking includes:\n\n* Unused signals, constants, generics, shared variables, libraries, types and\n attributes\n* Comment tags (`FIXME`, `TODO`, `XXX`)\n\nNotice that currently the unused reports has caveats, namely declarations with\nthe same name inherited from a component, function, procedure, etc. In the\nfollowing example, the signal `rdy` won't be reported as unused in spite of the\nfact it is not used.\n\n```vhdl\nsignal rdy, refclk, rst : std_logic;\n...\n\nidelay_ctrl_u : idelay_ctrl\n port map (rdy => open,\n refclk => refclk,\n rst => rst);\n```\n\n---\n\n## Issues\n\nYou can use the [issue tracker][issue_tracker] for bugs, feature request and so on.\n\n## License\n\nThis software is licensed under the [GPL v3 license][gpl].\n\n## Notice\n\nMentor Graphics\u00ae, ModelSim\u00ae and their respective logos are trademarks or registered\ntrademarks of Mentor Graphics, Inc.\n\nIntel\u00ae and its logo is a trademark or registered trademark of Intel Corporation.\n\nXilinx\u00ae and its logo is a trademark or registered trademark of Xilinx, Inc.\n\nHDL Code Checker's author has no connection or affiliation to any of the\ntrademarks mentioned or used by this software.\n\n[docker]: https://www.docker.com/\n[GHDL]: https://github.com/ghdl/ghdl\n[gpl]: http://www.gnu.org/copyleft/gpl.html\n[hdlcc_container]: https://cloud.docker.com/u/suoto/repository/docker/suoto/hdlcc\n[Intel_msim]: https://www.intel.com/content/www/us/en/software/programmable/quartus-prime/model-sim.html\n[issue_tracker]: https://github.com/suoto/hdlcc/issues\n[LSP]: https://en.wikipedia.org/wiki/Language_Server_Protocol\n[Mentor_msim]: http://www.mentor.com/products/fv/modelsim/\n[vim-hdl]: https://github.com/suoto/vim-hdl/\n[Vivado_Simulator]: https://www.xilinx.com/products/design-tools/vivado/simulator.html\n[Xilinx_Vivado]: http://www.xilinx.com/products/design-tools/vivado/vivado-webpack.html", "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/suoto/hdlcc", "keywords": "VHDL Verilog SystemVerilog linter LSP language server protocol vimhdl vim-hdl", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "hdlcc", "package_url": "https://pypi.org/project/hdlcc/", "platform": "any", "project_url": "https://pypi.org/project/hdlcc/", "project_urls": { "Homepage": "https://github.com/suoto/hdlcc" }, "release_url": "https://pypi.org/project/hdlcc/0.5.2/", "requires_dist": null, "requires_python": "", "summary": "HDL code checker", "version": "0.5.2" }, "last_serial": 5676187, "releases": { "0.4.1": [ { "comment_text": "", "digests": { "md5": "be798cbf436d4293fa512c1c5b65bbe6", "sha256": "e2dd31bbabf7b0db46a0a20047fb84bcc20170eff9b74c5ca79c505dd91ac758" }, "downloads": -1, "filename": "hdlcc-0.4.1.tar.gz", "has_sig": false, "md5_digest": "be798cbf436d4293fa512c1c5b65bbe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91727, "upload_time": "2019-07-21T17:12:32", "url": "https://files.pythonhosted.org/packages/5d/ce/3085787a881600d53f9b33f80695ead4079938c7c2ae00332260f10a7b43/hdlcc-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "9320dc29a5283578482abec90c30ae20", "sha256": "498b80902c87dd7ef5e01c8aff78e8aab00a79c406a8e363a485e5a565b3b5bb" }, "downloads": -1, "filename": "hdlcc-0.4.2.tar.gz", "has_sig": false, "md5_digest": "9320dc29a5283578482abec90c30ae20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92438, "upload_time": "2019-07-21T19:34:05", "url": "https://files.pythonhosted.org/packages/e3/f1/df70226c1f4d2f7d8f04fa3607a7a59d719be4ad60a6a656e8863a4dc065/hdlcc-0.4.2.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "52504e15abbeff08f551e620068a691a", "sha256": "792ec3563ed63dcafcfb9d2494c407e9f4772e0f561673b94c267e1f2824d38e" }, "downloads": -1, "filename": "hdlcc-0.5.tar.gz", "has_sig": false, "md5_digest": "52504e15abbeff08f551e620068a691a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92764, "upload_time": "2019-07-21T22:35:09", "url": "https://files.pythonhosted.org/packages/06/63/3ad1065ad6832f53407a90410f8b572d67a0b2affc51c7220d7580a15d54/hdlcc-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "4745fdf3b0b78f2a0fb84dbdf6ef390f", "sha256": "27beb8ca095ebb3c12589a6d359617408dcf8344472de8d8ced0be0db1d85355" }, "downloads": -1, "filename": "hdlcc-0.5.1.tar.gz", "has_sig": false, "md5_digest": "4745fdf3b0b78f2a0fb84dbdf6ef390f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95644, "upload_time": "2019-07-27T09:32:29", "url": "https://files.pythonhosted.org/packages/03/94/a79ce4552ef4a80ccdebe7afe1df24bc905b7a53d6addd10fc57d248d350/hdlcc-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "dbb06f1a467e6d16d95931be380ea1c0", "sha256": "6f98d82346a0a8a4888c104755332347f0fb83fc4750fc95ce78dbfd677d50f4" }, "downloads": -1, "filename": "hdlcc-0.5.2.tar.gz", "has_sig": false, "md5_digest": "dbb06f1a467e6d16d95931be380ea1c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95885, "upload_time": "2019-08-14T10:08:05", "url": "https://files.pythonhosted.org/packages/40/3c/5afa0ef4aa6d80b94085e7f23c66811fa8e060ce8a0291d8f1216ca29044/hdlcc-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dbb06f1a467e6d16d95931be380ea1c0", "sha256": "6f98d82346a0a8a4888c104755332347f0fb83fc4750fc95ce78dbfd677d50f4" }, "downloads": -1, "filename": "hdlcc-0.5.2.tar.gz", "has_sig": false, "md5_digest": "dbb06f1a467e6d16d95931be380ea1c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95885, "upload_time": "2019-08-14T10:08:05", "url": "https://files.pythonhosted.org/packages/40/3c/5afa0ef4aa6d80b94085e7f23c66811fa8e060ce8a0291d8f1216ca29044/hdlcc-0.5.2.tar.gz" } ] }