Skip to content

Language Server Protocol

Gonzalo Larumbe edited this page Apr 7, 2024 · 7 revisions

Supported servers

Requirements

  • Make sure that Language Server binary you are using is in the $PATH:
    $ which svlangserver
    /usr/local/bin/svlangserver
  • Configure verilog-ext to connect to that server:
    • Interactively:
      • For lsp-bridge: M-x verilog-ext-lsp-bridge-set-serverRET ve-svlangserver
      • For lsp-mode: M-x verilog-ext-lsp-set-serverRET ve-svlangserver
      • For eglot: M-x verilog-ext-eglot-set-serverRET ve-svlangserver
      • For lspce: M-x verilog-ext-lspce-set-serverRET ve-svlangserver
    • Programatically:
      ;; For `lsp-bridge:
      (verilog-ext-lsp-bridge-set-server 've-svlangserver)
      ;; For `lsp-mode':
      (verilog-ext-lsp-set-server 've-svlangserver)
      ;; For `eglot':
      (verilog-ext-eglot-set-server 've-svlangserver)
      ;; For `lspce':
      (verilog-ext-lspce-set-server 've-svlangserver)

Configuration

Depending on the Language Server you are using different configuration methods exist, such as YAML, JSON or TOML files placed at the project root. To know how to configure each Language Server refer to their respective documentation.

svlangserver

Configuration of svlangserver can be done exclusively through Emacs customization.

  • lsp-mode provides the variables lsp-clients-svlangserver-*
    • M-x customize-group RET lsp-verilog RET
  • verilog-ext-eglot provides the variables verilog-ext-eglot-svlangserver-*
    • M-x customize-group RET verilog-ext-eglot RET
  • verilog-ext-lspce provides the variables verilog-ext-lspce-svlangserver-*
    • M-x customize-group RET verilog-ext-lspce RET

In addition, some functions are defined to execute server commands to build the index and extract the hierarchy:

  • Provided by lsp-mode:
    • lsp-clients-svlangserver-build-index
    • lsp-clients-svlangserver-report-hierarchy
  • Provided by eglot and verilog-ext:
    • verilog-ext-eglot-svlangserver-build-index
    • verilog-ext-eglot-svlangserver-report-hierarchy
  • Provided by lspce and verilog-ext:
    • verilog-ext-lspce-svlangserver-build-index
    • verilog-ext-lspce-svlangserver-report-hierarchy

lsp-bridge provides the configuration file langserver/svlangserver.json. Set the value that better suits your needs in the settings field:

  "settings": {
    "systemverilog.includeIndexing": ["**/*.{sv,svh}"],
    "systemverilog.excludeIndexing": ["test/**/*.sv*"],
    "systemverilog.defines" : [],
    "systemverilog.launchConfiguration": "verilator -sv -Wall --lint-only",
    "systemverilog.formatCommand": "verible-verilog-format"
  }
Clone this wiki locally