xref: /vim-8.2.3635/runtime/syntax/verilog.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Verilog
3d5ab34bdSBram Moolenaar" Maintainer:	Mun Johl <[email protected]>
45302d9ebSBram Moolenaar" Last Update:  Wed Jul 20 16:04:19 PDT 2011
5071d4279SBram Moolenaar
689bcfda6SBram Moolenaar" quit when a syntax file was already loaded
789bcfda6SBram Moolenaarif exists("b:current_syntax")
8071d4279SBram Moolenaar   finish
9071d4279SBram Moolenaarendif
10071d4279SBram Moolenaar
115302d9ebSBram Moolenaar" Set the local value of the 'iskeyword' option.
125302d9ebSBram Moolenaar" NOTE: '?' was added so that verilogNumber would be processed correctly when
135302d9ebSBram Moolenaar"       '?' is the last character of the number.
145302d9ebSBram Moolenaarsetlocal iskeyword=@,48-57,63,_,192-255
15071d4279SBram Moolenaar
16071d4279SBram Moolenaar" A bunch of useful Verilog keywords
17071d4279SBram Moolenaar
18071d4279SBram Moolenaarsyn keyword verilogStatement   always and assign automatic buf
19071d4279SBram Moolenaarsyn keyword verilogStatement   bufif0 bufif1 cell cmos
20071d4279SBram Moolenaarsyn keyword verilogStatement   config deassign defparam design
21071d4279SBram Moolenaarsyn keyword verilogStatement   disable edge endconfig
22071d4279SBram Moolenaarsyn keyword verilogStatement   endfunction endgenerate endmodule
23071d4279SBram Moolenaarsyn keyword verilogStatement   endprimitive endspecify endtable endtask
24071d4279SBram Moolenaarsyn keyword verilogStatement   event force function
25071d4279SBram Moolenaarsyn keyword verilogStatement   generate genvar highz0 highz1 ifnone
26071d4279SBram Moolenaarsyn keyword verilogStatement   incdir include initial inout input
27071d4279SBram Moolenaarsyn keyword verilogStatement   instance integer large liblist
28071d4279SBram Moolenaarsyn keyword verilogStatement   library localparam macromodule medium
29071d4279SBram Moolenaarsyn keyword verilogStatement   module nand negedge nmos nor
30071d4279SBram Moolenaarsyn keyword verilogStatement   noshowcancelled not notif0 notif1 or
31071d4279SBram Moolenaarsyn keyword verilogStatement   output parameter pmos posedge primitive
32071d4279SBram Moolenaarsyn keyword verilogStatement   pull0 pull1 pulldown pullup
33071d4279SBram Moolenaarsyn keyword verilogStatement   pulsestyle_onevent pulsestyle_ondetect
34071d4279SBram Moolenaarsyn keyword verilogStatement   rcmos real realtime reg release
35071d4279SBram Moolenaarsyn keyword verilogStatement   rnmos rpmos rtran rtranif0 rtranif1
36071d4279SBram Moolenaarsyn keyword verilogStatement   scalared showcancelled signed small
37071d4279SBram Moolenaarsyn keyword verilogStatement   specify specparam strong0 strong1
38071d4279SBram Moolenaarsyn keyword verilogStatement   supply0 supply1 table task time tran
39071d4279SBram Moolenaarsyn keyword verilogStatement   tranif0 tranif1 tri tri0 tri1 triand
40071d4279SBram Moolenaarsyn keyword verilogStatement   trior trireg unsigned use vectored wait
41071d4279SBram Moolenaarsyn keyword verilogStatement   wand weak0 weak1 wire wor xnor xor
42071d4279SBram Moolenaarsyn keyword verilogLabel       begin end fork join
43071d4279SBram Moolenaarsyn keyword verilogConditional if else case casex casez default endcase
44071d4279SBram Moolenaarsyn keyword verilogRepeat      forever repeat while for
45071d4279SBram Moolenaar
465302d9ebSBram Moolenaarsyn keyword verilogTodo contained TODO FIXME
47071d4279SBram Moolenaar
48071d4279SBram Moolenaarsyn match   verilogOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]"
49071d4279SBram Moolenaar
503982c541SBram Moolenaarsyn region  verilogComment start="/\*" end="\*/" contains=verilogTodo,@Spell
513982c541SBram Moolenaarsyn match   verilogComment "//.*" contains=verilogTodo,@Spell
52071d4279SBram Moolenaar
53071d4279SBram Moolenaar"syn match   verilogGlobal "`[a-zA-Z0-9_]\+\>"
54071d4279SBram Moolenaarsyn match verilogGlobal "`celldefine"
55071d4279SBram Moolenaarsyn match verilogGlobal "`default_nettype"
56071d4279SBram Moolenaarsyn match verilogGlobal "`define"
57071d4279SBram Moolenaarsyn match verilogGlobal "`else"
58071d4279SBram Moolenaarsyn match verilogGlobal "`elsif"
59071d4279SBram Moolenaarsyn match verilogGlobal "`endcelldefine"
60071d4279SBram Moolenaarsyn match verilogGlobal "`endif"
61071d4279SBram Moolenaarsyn match verilogGlobal "`ifdef"
62071d4279SBram Moolenaarsyn match verilogGlobal "`ifndef"
63071d4279SBram Moolenaarsyn match verilogGlobal "`include"
64071d4279SBram Moolenaarsyn match verilogGlobal "`line"
65071d4279SBram Moolenaarsyn match verilogGlobal "`nounconnected_drive"
66071d4279SBram Moolenaarsyn match verilogGlobal "`resetall"
67071d4279SBram Moolenaarsyn match verilogGlobal "`timescale"
68071d4279SBram Moolenaarsyn match verilogGlobal "`unconnected_drive"
69071d4279SBram Moolenaarsyn match verilogGlobal "`undef"
70071d4279SBram Moolenaarsyn match   verilogGlobal "$[a-zA-Z0-9_]\+\>"
71071d4279SBram Moolenaar
72071d4279SBram Moolenaarsyn match   verilogConstant "\<[A-Z][A-Z0-9_]\+\>"
73071d4279SBram Moolenaar
74d5ab34bdSBram Moolenaarsyn match   verilogNumber "\(\<\d\+\|\)'[sS]\?[bB]\s*[0-1_xXzZ?]\+\>"
75d5ab34bdSBram Moolenaarsyn match   verilogNumber "\(\<\d\+\|\)'[sS]\?[oO]\s*[0-7_xXzZ?]\+\>"
76d5ab34bdSBram Moolenaarsyn match   verilogNumber "\(\<\d\+\|\)'[sS]\?[dD]\s*[0-9_xXzZ?]\+\>"
77d5ab34bdSBram Moolenaarsyn match   verilogNumber "\(\<\d\+\|\)'[sS]\?[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
78071d4279SBram Moolenaarsyn match   verilogNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>"
79071d4279SBram Moolenaar
803982c541SBram Moolenaarsyn region  verilogString start=+"+ skip=+\\"+ end=+"+ contains=verilogEscape,@Spell
81071d4279SBram Moolenaarsyn match   verilogEscape +\\[nt"\\]+ contained
82071d4279SBram Moolenaarsyn match   verilogEscape "\\\o\o\=\o\=" contained
83071d4279SBram Moolenaar
84071d4279SBram Moolenaar" Directives
85071d4279SBram Moolenaarsyn match   verilogDirective   "//\s*synopsys\>.*$"
86071d4279SBram Moolenaarsyn region  verilogDirective   start="/\*\s*synopsys\>" end="\*/"
87071d4279SBram Moolenaarsyn region  verilogDirective   start="//\s*synopsys dc_script_begin\>" end="//\s*synopsys dc_script_end\>"
88071d4279SBram Moolenaar
89071d4279SBram Moolenaarsyn match   verilogDirective   "//\s*\$s\>.*$"
90071d4279SBram Moolenaarsyn region  verilogDirective   start="/\*\s*\$s\>" end="\*/"
91071d4279SBram Moolenaarsyn region  verilogDirective   start="//\s*\$s dc_script_begin\>" end="//\s*\$s dc_script_end\>"
92071d4279SBram Moolenaar
93071d4279SBram Moolenaar"Modify the following as needed.  The trade-off is performance versus
94071d4279SBram Moolenaar"functionality.
953982c541SBram Moolenaarsyn sync minlines=50
96071d4279SBram Moolenaar
97071d4279SBram Moolenaar" Define the default highlighting.
9889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
99071d4279SBram Moolenaar
100071d4279SBram Moolenaar" The default highlighting.
101*f37506f6SBram Moolenaarhi def link verilogCharacter       Character
102*f37506f6SBram Moolenaarhi def link verilogConditional     Conditional
103*f37506f6SBram Moolenaarhi def link verilogRepeat          Repeat
104*f37506f6SBram Moolenaarhi def link verilogString          String
105*f37506f6SBram Moolenaarhi def link verilogTodo            Todo
106*f37506f6SBram Moolenaarhi def link verilogComment         Comment
107*f37506f6SBram Moolenaarhi def link verilogConstant        Constant
108*f37506f6SBram Moolenaarhi def link verilogLabel           Label
109*f37506f6SBram Moolenaarhi def link verilogNumber          Number
110*f37506f6SBram Moolenaarhi def link verilogOperator        Special
111*f37506f6SBram Moolenaarhi def link verilogStatement       Statement
112*f37506f6SBram Moolenaarhi def link verilogGlobal          Define
113*f37506f6SBram Moolenaarhi def link verilogDirective       SpecialComment
114*f37506f6SBram Moolenaarhi def link verilogEscape		 Special
115071d4279SBram Moolenaar
116071d4279SBram Moolenaar
117071d4279SBram Moolenaarlet b:current_syntax = "verilog"
118071d4279SBram Moolenaar
119071d4279SBram Moolenaar" vim: ts=8
120