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
This commit is contained in:
parent
7eec1f2efc
commit
01ecf2a75f
@ -1,6 +1,11 @@
|
|||||||
" Author: Masahiro H https://github.com/mshr-h
|
" Author: Masahiro H https://github.com/mshr-h
|
||||||
" Description: verilator for verilog files
|
" 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
|
function! ale_linters#verilog#verilator#GetCommand(buffer) abort
|
||||||
let l:filename = tempname() . '_verilator_linted.v'
|
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 ale#engine#ManageFile(a:buffer, l:filename)
|
||||||
call writefile(getbufline(a:buffer, 1, '$'), 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
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#verilog#verilator#Handle(buffer, lines) abort
|
function! ale_linters#verilog#verilator#Handle(buffer, lines) abort
|
||||||
|
43
doc/ale-verilog.txt
Normal file
43
doc/ale-verilog.txt
Normal file
@ -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:
|
@ -101,6 +101,9 @@ CONTENTS *ale-contents*
|
|||||||
eslint..............................|ale-typescript-eslint|
|
eslint..............................|ale-typescript-eslint|
|
||||||
tslint..............................|ale-typescript-tslint|
|
tslint..............................|ale-typescript-tslint|
|
||||||
tsserver............................|ale-typescript-tsserver|
|
tsserver............................|ale-typescript-tsserver|
|
||||||
|
verilog/systemverilog.................|ale-verilog-options|
|
||||||
|
iverilog............................|ale-verilog-iverilog|
|
||||||
|
verilator...........................|ale-verilog-verilator|
|
||||||
vim...................................|ale-vim-options|
|
vim...................................|ale-vim-options|
|
||||||
vint................................|ale-vim-vint|
|
vint................................|ale-vim-vint|
|
||||||
xml...................................|ale-xml-options|
|
xml...................................|ale-xml-options|
|
||||||
|
25
test/test_verilog_verilator_options.vader
Normal file
25
test/test_verilog_verilator_options.vader
Normal file
@ -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'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user