summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTarik Graba <tarikgraba@users.noreply.github.com>2017-06-29 10:15:52 +0200
committerw0rp <w0rp@users.noreply.github.com>2017-06-29 09:15:52 +0100
commit01ecf2a75f60fff8884ad7858da44b3c5f71bc11 (patch)
treee22a78c39ecf0a71612ee71e4c10f9ed99e249d9
parent7eec1f2efc01b0674ccc96baaa4f529d803ddf55 (diff)
downloadale-01ecf2a75f60fff8884ad7858da44b3c5f71bc11.zip
Adds an option to pass additional arguments to the verilog/verilator … (#698)
* Adds an option to pass additional arguments to the verilog/verilator linter The new otion is g:ale_verilog_verilator_options + doc * Spell check verilog linter doc file * Add entries to the verilog linters in the doc table of content * Vader test for verilog/verilator linter args option verilog_verilator_options
-rw-r--r--ale_linters/verilog/verilator.vim9
-rw-r--r--doc/ale-verilog.txt43
-rw-r--r--doc/ale.txt3
-rw-r--r--test/test_verilog_verilator_options.vader25
4 files changed, 79 insertions, 1 deletions
diff --git a/ale_linters/verilog/verilator.vim b/ale_linters/verilog/verilator.vim
index b44731c7..aa5e7047 100644
--- a/ale_linters/verilog/verilator.vim
+++ b/ale_linters/verilog/verilator.vim
@@ -1,6 +1,11 @@
" Author: Masahiro H https://github.com/mshr-h
" Description: verilator for verilog files
+" Set this option to change Verilator lint options
+if !exists('g:ale_verilog_verilator_options')
+ let g:ale_verilog_verilator_options = ''
+endif
+
function! ale_linters#verilog#verilator#GetCommand(buffer) abort
let l:filename = tempname() . '_verilator_linted.v'
@@ -8,7 +13,9 @@ function! ale_linters#verilog#verilator#GetCommand(buffer) abort
call ale#engine#ManageFile(a:buffer, l:filename)
call writefile(getbufline(a:buffer, 1, '$'), l:filename)
- return 'verilator --lint-only -Wall -Wno-DECLFILENAME ' . ale#Escape(l:filename)
+ return 'verilator --lint-only -Wall -Wno-DECLFILENAME '
+ \ . ale#Var(a:buffer, 'verilog_verilator_options') .' '
+ \ . ale#Escape(l:filename)
endfunction
function! ale_linters#verilog#verilator#Handle(buffer, lines) abort
diff --git a/doc/ale-verilog.txt b/doc/ale-verilog.txt
new file mode 100644
index 00000000..6566ad42
--- /dev/null
+++ b/doc/ale-verilog.txt
@@ -0,0 +1,43 @@
+===============================================================================
+ALE Verilog/SystemVerilog Integration *ale-verilog-options*
+
+
+-------------------------------------------------------------------------------
+ALE can use two different linters for Verilog HDL:
+
+ iverilog:
+ Using `iverilog -t null -Wall`
+
+ verilator
+ Using `verilator --lint-only -Wall`
+
+By default, both 'verilog' and 'systemverilog' filetypes are checked.
+
+You can limit 'systemverilog' files to be checked using only 'verilator' by
+defining 'g:ale_linters' variable:
+>
+ au FileType systemverilog
+ \ let g:ale_linters = {'systemverilog' : ['verilator'],}
+<
+
+-------------------------------------------------------------------------------
+iverilog *ale-verilog-iverilog*
+
+ No additional options
+
+
+-------------------------------------------------------------------------------
+verilator *ale-verilog-verilator*
+
+g:ale_verilog_verilator_options *g:ale_verilog_verilator_options*
+ *b:ale_verilog_verilator_options*
+ Type: |String|
+ Default: `''`
+
+ This variable can be changed to modify 'verilator' command arguments
+
+ For example `'-sv --default-language "1800-2012"'` if you want to enable
+ SystemVerilog parsing and select the 2012 version of the language.
+
+-------------------------------------------------------------------------------
+ vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
diff --git a/doc/ale.txt b/doc/ale.txt
index 0c2ecbb7..f9532fc4 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -101,6 +101,9 @@ CONTENTS *ale-contents*
eslint..............................|ale-typescript-eslint|
tslint..............................|ale-typescript-tslint|
tsserver............................|ale-typescript-tsserver|
+ verilog/systemverilog.................|ale-verilog-options|
+ iverilog............................|ale-verilog-iverilog|
+ verilator...........................|ale-verilog-verilator|
vim...................................|ale-vim-options|
vint................................|ale-vim-vint|
xml...................................|ale-xml-options|
diff --git a/test/test_verilog_verilator_options.vader b/test/test_verilog_verilator_options.vader
new file mode 100644
index 00000000..561786ee
--- /dev/null
+++ b/test/test_verilog_verilator_options.vader
@@ -0,0 +1,25 @@
+Before:
+ Save g:ale_verilog_verilator_options
+ let g:ale_verilog_verilator_options = ''
+
+After:
+ Restore
+ call ale#linter#Reset()
+
+Execute(Set Verilog Verilator linter additional options to `-sv --default-language "1800-2012"`):
+ runtime! ale_linters/verilog/verilator.vim
+
+ " Additional args for the linter
+ let g:ale_verilog_verilator_options = '-sv --default-language "1800-2012"'
+
+ call ale#Lint()
+
+ let g:run_cmd = ale_linters#verilog#verilator#GetCommand(bufnr(''))
+ let g:matched = match(g:run_cmd, '\s' . g:ale_verilog_verilator_options . '\s')
+
+ " match returns -1 if not found
+ AssertNotEqual
+ \ g:matched ,
+ \ -1 ,
+ \ 'Additionnal arguments not found in the run command'
+