Skip to content

Requirements

Gonzalo Larumbe edited this page Sep 14, 2023 · 10 revisions

verilog-mode

Latest verilog-mode version is required since verilog-ext relies on much of its latest patches to work correctly. The version included with Emacs is not tested and most likely will not work.

Installing verilog-ext through package.el or straight will update automatically the version for verilog-mode.

(straight-use-package 'use-package)
(use-package verilog-mode
  :straight (:repo "veripool/verilog-mode"))
  • Other installation methods

verilog-ts-mode

Installing verilog-ext through package.el or straight will install automatically verilog-ts-mode since it is a dependency.

It will still be needed to install tree-sitter and Verilog grammar to use tree-sitter as a backend for some verilog-ext features.

verilog-ts-mode has instructions about how to set up tree-sitter:

Binaries

verilog-ext makes use of several binaries as backend engines to support IDE-like functionality.

List of required binaries:

  • Definitions and references navigation: global, gtags, universal-ctags, python, pygments
  • Jump to parent module: ag, ripgrep
  • Hierarchy extraction: vhier
  • Linting: verilator, iverilog, verible-verilog-lint, slang, svlint, surelog, xrun/hal
  • LSP: hdl_checker, svlangserver, verible-verilog-ls, svls, veridian

For information on how to install/configure some of these binaries refer to the corresponding feature wiki page.

You can also check Bash script test-hdl/verilog/scripts/setup-env.sh used in ERT regressions.

Packages

These should be handled automatically by straight or package.el.

If you want more information about these packages to change customization or extend functionality refer to their respective websites:

  • verilog-ts-mode: SystemVerilog tree-sitter major-mode
  • eglot: language server protocol client, bundled with Emacs 29
  • lsp-mode: language server protocol client
  • ag: frontend for the silversearcher, used to find parent module
  • ripgrep: frontend for ripgrep, used to find parent module
  • hydra: tie related commands into a family of short bindings with a common prefix, used for templates
  • apheleia: frontend for code formatter
  • flycheck: syntax checker for linters
  • outshine: extension of outline-minor-mode used to navigate design hierarchy
  • async: module for doing asynchronous processing in Emacs
Clone this wiki locally