HDL代码检查器

hdl-checker的Python项目详细描述


HDL检查器

PyPI versionLinux Unit testsBuild statuscodecovJoin the chat at https://gitter.im/suoto/hdl_checkerMentioned in Awesome Computer ArchitectureAnalytics

HDL Checker是一种语言服务器,它封装了VHDL/Verilg/SystemVerilog工具 旨在减少设置所需的样板代码。它支持 Language Server Protocol或自定义HTTP接口;可以推断库 VHDL文件可能属于,除了计算混合语言依赖之外, 编译顺序,解释一些编译器消息并提供一些 (有限)静态检查。在


安装

pip install hdl-checker --upgrade

或者

^{pr2}$

注意:确保您可以运行hdl_checker --version,尤其是在使用PIP时 使用--user选项。在

编辑器支持

VS代码

在VS代码上安装HDL Checker VSCode client。在

Vim/NeoVim

使用dense-analysis/ale

见(PR#2804),一旦合并,ALE应该支持HDL Checker 开箱即用。在

使用coc.nvim

coc.nvim custom language server setup之后,添加 致您的coc.nvim configuration file

{"languageserver":{"hdlChecker":{"command":"hdl_checker","args":["--lsp"],"filetypes":["vhdl","verilog","systemverilog"]}}}
{h24}

将HDL检查器添加到服务器命令:

let g:LanguageClient_serverCommands = {
\   'vhdl': ['hdl_checker', '--lsp'],
\   'verilog': ['hdl_checker', '--lsp'],
\   'systemverilog': ['hdl_checker', '--lsp'],
\}

请注意,这将为每种语言启动一个服务器

Emacs

使用emacs-lsp/lsp-mode

将其添加到Emacs配置文件中

(require'use-package)(setqlsp-vhdl-server-path"~/.local/bin/hdl_checker"); only needed if hdl_checker is not already on the PATH(custom-set-variables'(lsp-vhdl-server'hdl-checker))(use-packagelsp-mode:config(add-hook'vhdl-mode-hook'lsp))

使用

{Checker>可以通过cdl命令启动。使用hdl_checker --help获取有关如何使用它的更多信息。在

$ hdl_checker -h
usage: hdl_checker [-h][--host HOST][--port PORT][--lsp][--attach-to-pid ATTACH_TO_PID][--log-level LOG_LEVEL][--log-stream LOG_STREAM][--stdout STDOUT][--stderr STDERR][--version]

optional arguments:
  -h, --help            show this help message and exit
  --host HOST           [HTTP] Host to serve
  --port PORT           [HTTP] Port to serve
  --lsp                 Starts the server in LSP mode. Defaults to false
  --attach-to-pid ATTACH_TO_PID
                        [HTTP, LSP] Stops the server if given PID is not
                        active
  --log-level LOG_LEVEL
                        [HTTP, LSP] Logging level
  --log-stream LOG_STREAM
                        [HTTP, LSP] Log file, defaults to stdout when in HTTP
                        or a temporary file named hdl_checker_log_pid<PID>.log when
                        in LSP mode
  --stdout STDOUT       [HTTP] File to redirect stdout to. Defaults to a
                        temporary file named hdl_checker_stdout_pid<PID>.log
  --stderr STDERR       [HTTP] File to redirect stdout to. Defaults to a
                        temporary file named hdl_checker_stderr_pid<PID>.log
  --version, -V         Prints hdl_checker version and exit

第三方工具

HDL检查器支持

配置HDL Checker

请参阅wiki上的Setting up a new project部分。在

LSP服务器

HDL Checker对Language Server Protocol有beta支持。从LSP开始 模式:

hdl_checker --lsp

在Linux系统上,日志文件将位于/tmp/hdl_checker_log_pid<PID_NUMBER>.log/tmp/hdl_checker_stderr_pid<PID_NUMBER>.log。在

作为一个语言服务器,HDL Checker将提供

  • 诊断学
  • 悬停信息
    • 依赖项:将报告已分配的路径和库
    • 设计单位:将上报编制顺序和库
  • 转到依赖项的定义

HTTP服务器

HDL检查器也可以在HTTP服务器模式下使用:

hdl_checker

请注意,此模式不使用http上的LSP进行通信。 请求/响应API尚不可用,将在中弃用 未来。参考实现可以在vim-hdl中找到

测试

HDL检查器使用docker容器来运行测试。如果你想跑 它们,克隆这个存储库并在根文件夹上运行

./run_tests.sh

用于测试的容器是suoto/hdl_checker_test

支持的系统

SystemCICI status
LinuxYesLinux Unit tests
WindowsYesBuild status

样式检查

样式检查独立于第三方编译器。检查内容包括:

  • 未使用的信号、常量、泛型、共享变量、库、类型和 属性
  • 注释标记(FIXMETODOXXX

注意,当前未使用的报告有一些警告,即声明 从中的组件、函数、过程等继承的相同名称 下面的示例中,信号rdy不会被报告为未使用,尽管 事实上它没有被使用。在

signalrdy,refclk,rst:std_logic;...idelay_ctrl_u:idelay_ctrlportmap(rdy=>open,refclk=>refclk,rst=>rst);

问题

您可以使用issue tracker来处理bug、特性请求等 打开。在

许可证

此软件是按GPL v3 license授权的。在

通知

Mentor Graphics®、ModelSim®及其各自的徽标是或 Mentor Graphics,Inc.的注册商标

Intel®及其徽标是Intel Corporation的商标或注册商标。在

Xilinx®及其徽标是Xilinx,Inc.的商标或注册商标

HDL Checker的作者没有connecti商标上的或与商标有关的 本软件提及或使用的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JLabel,将包装好的HTMLtext作为JScrollPane客户端   如何使用java程序运行命令提示符命令?   java SPINNER通信和结果   向Ruby编写C扩展的java好处   将原语数组从java传递到c   java如何读取图像,在其上绘制并保存结果?   java使用字符串。替换()以替换斜杠,即“\”   获取有关Java标准浏览器的信息   java是否可以将方法参数传递给方法上的注释?   java Spring启动两个数据库   java如何模拟不是由类的某些依赖项完成的方法调用?   java在RPM依赖项中指定替代项   java映射映射<接口,接口>与Hibernate   java JPQL按纬度和经度获取最近的记录   在java中查询xml的最快方法   java如何检测Unix终端字符编码?   java JAR文件NoClassDefFoundError   安卓在java中修改类的静态成员