mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-06 12:44:23 +08:00
1. Add ale.setup and ale.setup.buffer for pure Lua configuration. 2. Update many global settings to use Booleans instead of numbers to make types easiert to work with in Lua. 3. Radically reformat documentation and fix errors to make documentation more usable for Neovim users.
177 lines
6.8 KiB
Plaintext
177 lines
6.8 KiB
Plaintext
===============================================================================
|
|
ALE Verilog/SystemVerilog Integration *ale-verilog-options*
|
|
|
|
|
|
===============================================================================
|
|
ALE can use seven different linters for Verilog HDL:
|
|
|
|
HDL Checker
|
|
Using `hdl_checker --lsp`
|
|
|
|
iverilog:
|
|
Using `iverilog -t null -Wall`
|
|
|
|
slang:
|
|
Using `slang -Weverything`
|
|
|
|
verilator
|
|
Using `verilator --lint-only -Wall`
|
|
|
|
ModelSim/Questa
|
|
Using `vlog -quiet -lint`
|
|
|
|
Vivado
|
|
Using `xvlog`
|
|
|
|
Yosys
|
|
Using `yosys -Q -T -p 'read_verilog'`
|
|
|
|
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'],}
|
|
<
|
|
|
|
===============================================================================
|
|
General notes
|
|
|
|
Linters/compilers that utilize a "work" directory for analyzing designs- such
|
|
as ModelSim and Vivado- can be passed the location of these directories as
|
|
part of their respective option strings listed below. This is useful for
|
|
holistic analysis of a file (e.g. a design with components, packages, or other
|
|
code defined external to the current file as part of a larger project) or
|
|
when wanting to simply pass an alternative location for the auto-generated
|
|
work directories (such as '/tmp') so as to not muddle the current directory.
|
|
Since these type of linters often use this work directory for holding compiled
|
|
design data as part of a single build process, they sometimes cannot handle
|
|
the frequent, asynchronous application launches when linting while text is
|
|
changing. This can happen in the form of hangs or crashes. To help prevent
|
|
this when using these linters, it may help to run linting less frequently; for
|
|
example, only when a file is saved.
|
|
|
|
HDL Checker is an alternative for some of the issues described above. It wraps
|
|
around ghdl, Vivado and ModelSim/Questa and, when using the latter, it can
|
|
handle mixed language (VHDL, Verilog, SystemVerilog) designs.
|
|
|
|
===============================================================================
|
|
hdl-checker *ale-verilog-hdl-checker*
|
|
|
|
See |ale-vhdl-hdl-checker|
|
|
|
|
|
|
===============================================================================
|
|
iverilog *ale-verilog-iverilog*
|
|
|
|
No additional options
|
|
|
|
===============================================================================
|
|
slang *ale-verilog-slang*
|
|
|
|
*ale-options.verilog_slang_option*
|
|
*g:ale_verilog_slang_option*
|
|
*b:ale_verilog_slang_options*
|
|
verilog_slang_option
|
|
g:ale_verilog_slang_option
|
|
Type: |String|
|
|
Default: `''`
|
|
|
|
This variable can be changed to modify 'slang' command arguments.
|
|
|
|
|
|
===============================================================================
|
|
verilator *ale-verilog-verilator*
|
|
|
|
*ale-options.verilog_verilator_options*
|
|
*g:ale_verilog_verilator_options*
|
|
*b:ale_verilog_verilator_options*
|
|
verilog_verilator_options
|
|
g: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.
|
|
|
|
|
|
===============================================================================
|
|
vlog *ale-verilog-vlog*
|
|
|
|
*ale-options.verilog_vlog_executable*
|
|
*g:ale_verilog_vlog_executable*
|
|
*b:ale_verilog_vlog_executable*
|
|
verilog_vlog_executable
|
|
g:ale_verilog_vlog_executable
|
|
Type: |String|
|
|
Default: `'vlog'`
|
|
|
|
This variable can be changed to the path to the 'vlog' executable.
|
|
|
|
*ale-options.verilog_vlog_options*
|
|
*g:ale_verilog_vlog_options*
|
|
*b:ale_verilog_vlog_options*
|
|
verilog_vlog_options
|
|
g:ale_verilog_vlog_options
|
|
Type: |String|
|
|
Default: `'-quiet -lint'`
|
|
|
|
This variable can be changed to modify the flags/options passed to 'vlog'.
|
|
|
|
|
|
===============================================================================
|
|
xvlog *ale-verilog-xvlog*
|
|
|
|
*ale-options.verilog_xvlog_executable*
|
|
*g:ale_verilog_xvlog_executable*
|
|
*b:ale_verilog_xvlog_executable*
|
|
verilog_xvlog_executable
|
|
g:ale_verilog_xvlog_executable
|
|
Type: |String|
|
|
Default: `'xvlog'`
|
|
|
|
This variable can be changed to the path to the 'xvlog' executable.
|
|
|
|
*ale-options.verilog_xvlog_options*
|
|
*g:ale_verilog_xvlog_options*
|
|
*b:ale_verilog_xvlog_options*
|
|
verilog_xvlog_options
|
|
g:ale_verilog_xvlog_options
|
|
Type: |String|
|
|
Default: `''`
|
|
|
|
This variable can be changed to modify the flags/options passed to 'xvlog'.
|
|
|
|
|
|
===============================================================================
|
|
yosys *ale-verilog-yosys*
|
|
|
|
*ale-options.verilog_yosys_executable*
|
|
*g:ale_verilog_yosys_executable*
|
|
*b:ale_verilog_yosys_executable*
|
|
verilog_yosys_executable
|
|
g:ale_verilog_yosys_executable
|
|
Type: |String|
|
|
Default: `'yosys'`
|
|
|
|
This variable can be changed to the path to the 'yosys' executable.
|
|
|
|
*ale-options.verilog_yosys_options*
|
|
*g:ale_verilog_yosys_options*
|
|
*b:ale_verilog_yosys_options*
|
|
verilog_yosys_options
|
|
g:ale_verilog_yosys_options
|
|
Type: |String|
|
|
Default: `'-Q -T -p ''read_verilog %s'''`
|
|
|
|
This variable can be changed to modify the flags/options passed to 'yosys'.
|
|
By default, Yosys is an interactive program. To obtain linting functionality,
|
|
the `'read_verilog'` command is used.
|
|
|
|
|
|
===============================================================================
|
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|