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