All Projects → dalance → Svls

dalance / Svls

Licence: mit
SystemVerilog language server

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Svls

Hdl checker
Repurposing existing HDL tools to help writing better code
Stars: ✭ 103 (-13.45%)
Mutual labels:  verilog, language-server
Orpsoc Cores
Core description files for FuseSoC
Stars: ✭ 112 (-5.88%)
Mutual labels:  verilog
Icegdrom
An FPGA based GDROM emulator for the Sega Dreamcast
Stars: ✭ 103 (-13.45%)
Mutual labels:  verilog
Replace
RePlAce global placement tool
Stars: ✭ 109 (-8.4%)
Mutual labels:  verilog
Archexp
浙江大学计算机体系结构课程实验
Stars: ✭ 104 (-12.61%)
Mutual labels:  verilog
Autofpga
A utility for Composing FPGA designs from Peripherals
Stars: ✭ 108 (-9.24%)
Mutual labels:  verilog
Svlint
SystemVerilog linter
Stars: ✭ 103 (-13.45%)
Mutual labels:  verilog
Connectal
Connectal is a framework for software-driven hardware development.
Stars: ✭ 117 (-1.68%)
Mutual labels:  verilog
Raven Picorv32
Silicon-validated SoC implementation of the PicoSoc/PicoRV32
Stars: ✭ 110 (-7.56%)
Mutual labels:  verilog
A2o
Stars: ✭ 107 (-10.08%)
Mutual labels:  verilog
Metals
Scala language server with rich IDE features 🚀
Stars: ✭ 1,605 (+1248.74%)
Mutual labels:  language-server
Hardware Cnn
A convolutional neural network implemented in hardware (verilog)
Stars: ✭ 107 (-10.08%)
Mutual labels:  verilog
Livehd
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation
Stars: ✭ 110 (-7.56%)
Mutual labels:  verilog
Fft Dit Fpga
Verilog module for calculation of FFT.
Stars: ✭ 104 (-12.61%)
Mutual labels:  verilog
Vm80a
i8080 precise replica in Verilog, based on reverse engineering of real die
Stars: ✭ 114 (-4.2%)
Mutual labels:  verilog
Awesome Open Hardware Verification
A List of Free and Open Source Hardware Verification Tools and Frameworks
Stars: ✭ 103 (-13.45%)
Mutual labels:  verilog
Single instruction cycle openmips
通过学习《自己动手写CPU》,将书中实现的兼容MIPS32指令集架构的处理器——OpenMIPS(五级流水线结构),简化成单指令周期实现的处理器
Stars: ✭ 108 (-9.24%)
Mutual labels:  verilog
Surelog
SystemVerilog 2017 Pre-processor, Parser, Elaborator, UHDM Compiler. Provides IEEE Design/TB C/C++ VPI and Python AST API.
Stars: ✭ 116 (-2.52%)
Mutual labels:  verilog
Vscale
Verilog version of Z-scale (deprecated)
Stars: ✭ 116 (-2.52%)
Mutual labels:  verilog
Sv Tests
Test suite designed to check compliance with the SystemVerilog standard.
Stars: ✭ 108 (-9.24%)
Mutual labels:  verilog

svls

SystemVerilog language server

Actions Status

Crates.io svlint AUR version

test

Feature

Installation

Download binary

Download from release page, and extract to the directory in PATH.

snapcraft

You can install from snapcraft

sudo snap install svls

Cargo

You can install by cargo.

cargo install svls

Configuration

Language server

svls uses .svls.toml at the root of repository. The example of .svls.toml is below:

[verilog]
include_paths = ["src/header"]
defines = ["DEBUG", "VAR=1"]

[option]
linter = true

[verilog] section

include_paths is include paths from the root of repository. defines is define strings.

[option] section

linter shows whether linter feature is enabled.

Linter

Linter uses .svlint.toml at the root of repository. If .svlint.toml can't be used, all lint rules are enabled. Please see svlint#configuration for the detailed information.

Usage

Visual Studio Code

Please install svls-vscode extension from marketplace.

Vim/Neovim with LanguageClient-neovim

let g:LanguageClient_serverCommands = {
    \ 'systemverilog': ['svls'],
    \ }

Vim/Neovim with vim-lsp

if executable('svls')
    au User lsp_setup call lsp#register_server({
        \ 'name': 'svls',
        \ 'cmd': {server_info->['svls']},
        \ 'whitelist': ['systemverilog'],
        \ })
endif

Vim/Neovim with coc.nvim

In configuration file

"languageserver": {
    "svls": {
        "command": "svls",
        "filetypes": ["systemverilog"]
    }
}

Emacs with lsp-mode

(use-package flycheck
  :ensure t
  :defer t
  :init (global-flycheck-mode t))

(use-package company
  :ensure t
  :defer t
  :init (global-company-mode t)
  :config
  ;; Company Flx adds fuzzy matching to company, powered by the sophisticated
  ;; sorting heuristics  in =flx=
  (use-package company-flx
    :ensure t
    :after company
    :init (company-flx-mode t))
  ;; Company Quickhelp
  ;; When idling on a completion candidate the documentation for the
  ;; candidate will pop up after `company-quickhelp-delay' seconds.
  (use-package company-quickhelp
    :after company
    :ensure t
    ;; :init (company-quickhelp-mode t)
    :hook (prog-mode . (lambda ()
                         (when (window-system)
                           (company-quickhelp-local-mode))))
    :config
    (setq company-quickhelp-delay 0.2
          company-quickhelp-max-lines nil)))

(use-package lsp-mode
  :defer t
  :ensure t
  :commands lsp
  :config
  (setq lsp-log-io nil
        lsp-auto-configure t
        lsp-auto-guess-root t
        lsp-enable-completion-at-point t
        lsp-enable-xref t
        lsp-prefer-flymake nil
        lsp-use-native-json t
        lsp-enable-indentation t
        lsp-response-timeout 10
        lsp-restart 'auto-restart
        lsp-keep-workspace-alive t
        lsp-eldoc-render-all nil
        lsp-enable-snippet nil
        lsp-enable-folding t)
   ;;; lsp-ui gives us the blue documentation boxes and the sidebar info
  (use-package lsp-ui
    :defer t
    :ensure t
    :after lsp
    :commands lsp-ui-mode
    :config
    (setq lsp-ui-sideline-ignore-duplicate t
          lsp-ui-sideline-delay 0.5
          lsp-ui-sideline-show-symbol t
          lsp-ui-sideline-show-hover t
          lsp-ui-sideline-show-diagnostics t
          lsp-ui-sideline-show-code-actions t
          lsp-ui-peek-always-show t
          lsp-ui-doc-use-childframe t)
    :bind
    (:map lsp-ui-mode-map
          ([remap xref-find-definitions] . lsp-ui-peek-find-definitions)
          ([remap xref-find-references] . lsp-ui-peek-find-references))
    :hook
    ((lsp-mode . lsp-ui-mode)
     (lsp-after-open . (lambda ()
                         (lsp-ui-flycheck-enable t)
                         (lsp-ui-sideline-enable t)
                         (lsp-ui-imenu-enable t)
                         (lsp-lens-mode t)
                         (lsp-ui-peek-enable t)
                         (lsp-ui-doc-enable t)))))
  ;;; company lsp
  ;; install LSP company backend for LSP-driven completion
  (use-package company-lsp
    :defer t
    :ensure t
    :after company
    :commands company-lsp
    :config
    (setq company-lsp-cache-candidates t
          company-lsp-enable-recompletion t
          company-lsp-enable-snippet t
          company-lsp-async t)
    ;; avoid, as this changes it globally do it in the major mode instead (push
    ;; 'company-lsp company-backends) better set it locally
    :hook (lsp-after-open . (lambda()
                              (add-to-list (make-local-variable 'company-backends)
                                           'company-lsp)))))

(use-package verilog-mode
  :defer t
  :config
  (require 'lsp)
  (lsp-register-client
   (make-lsp-client :new-connection (lsp-stdio-connection '("svls"))
   :major-modes '(verilog-mode)
   :priority -1
   ))
  :hook (verilog-mode . (lambda()
      (lsp)
      (flycheck-mode t)
      (add-to-list 'lsp-language-id-configuration '(verilog-mode . "verilog")))))
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].