blob: 5d978ccd3912ebb62803db2066791cc750bb51a6 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: VHDL
3" Maintainer: Czo <Olivier.Sirol@lip6.fr>
4" Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
Bram Moolenaarc8734422012-06-01 22:38:45 +02005" Last Change: 2012 Jun 01
6" (Dominique Pelle added @Spell)
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
8" VHSIC Hardware Description Language
9" Very High Scale Integrated Circuit
10
11" For version 5.x: Clear all syntax items
12" For version 6.x: Quit when a syntax file was already loaded
13if version < 600
14 syntax clear
15elseif exists("b:current_syntax")
16 finish
17endif
18
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010019let s:cpo_save = &cpo
20set cpo&vim
21
Bram Moolenaar071d4272004-06-13 20:20:40 +000022" This is not VHDL. I use the C-Preprocessor cpp to generate different binaries
23" from one VHDL source file. Unfortunately there is no preprocessor for VHDL
24" available. If you don't like this, please remove the following lines.
25syn match cDefine "^#ifdef[ ]\+[A-Za-z_]\+"
26syn match cDefine "^#endif"
27
28" case is not significant
29syn case ignore
30
31" VHDL keywords
32syn keyword vhdlStatement access after alias all assert
33syn keyword vhdlStatement architecture array attribute
34syn keyword vhdlStatement begin block body buffer bus
35syn keyword vhdlStatement case component configuration constant
36syn keyword vhdlStatement disconnect downto
37syn keyword vhdlStatement elsif end entity exit
38syn keyword vhdlStatement file for function
39syn keyword vhdlStatement generate generic group guarded
40syn keyword vhdlStatement impure in inertial inout is
41syn keyword vhdlStatement label library linkage literal loop
42syn keyword vhdlStatement map
43syn keyword vhdlStatement new next null
44syn keyword vhdlStatement of on open others out
45syn keyword vhdlStatement package port postponed procedure process pure
46syn keyword vhdlStatement range record register reject report return
47syn keyword vhdlStatement select severity signal shared
48syn keyword vhdlStatement subtype
49syn keyword vhdlStatement then to transport type
50syn keyword vhdlStatement unaffected units until use
51syn keyword vhdlStatement variable wait when while with
52syn keyword vhdlStatement note warning error failure
53
54" Special match for "if" and "else" since "else if" shouldn't be highlighted.
55" The right keyword is "elsif"
56syn match vhdlStatement "\<\(if\|else\)\>"
57syn match vhdlNone "\<else\s\+if\>$"
58syn match vhdlNone "\<else\s\+if\>\s"
59
Bram Moolenaarc8734422012-06-01 22:38:45 +020060" Predefined VHDL types
Bram Moolenaar071d4272004-06-13 20:20:40 +000061syn keyword vhdlType bit bit_vector
62syn keyword vhdlType character boolean integer real time
63syn keyword vhdlType string severity_level
Bram Moolenaarc8734422012-06-01 22:38:45 +020064" Predefined standard ieee VHDL types
Bram Moolenaar071d4272004-06-13 20:20:40 +000065syn keyword vhdlType positive natural signed unsigned
66syn keyword vhdlType line text
67syn keyword vhdlType std_logic std_logic_vector
68syn keyword vhdlType std_ulogic std_ulogic_vector
69" Predefined non standard VHDL types for Mentor Graphics Sys1076/QuickHDL
70syn keyword vhdlType qsim_state qsim_state_vector
71syn keyword vhdlType qsim_12state qsim_12state_vector
72syn keyword vhdlType qsim_strength
73" Predefined non standard VHDL types for Alliance VLSI CAD
74syn keyword vhdlType mux_bit mux_vector reg_bit reg_vector wor_bit wor_vector
75
76" array attributes
77syn match vhdlAttribute "\'high"
78syn match vhdlAttribute "\'left"
79syn match vhdlAttribute "\'length"
80syn match vhdlAttribute "\'low"
81syn match vhdlAttribute "\'range"
82syn match vhdlAttribute "\'reverse_range"
83syn match vhdlAttribute "\'right"
84syn match vhdlAttribute "\'ascending"
85" block attributes
86syn match vhdlAttribute "\'behaviour"
87syn match vhdlAttribute "\'structure"
88syn match vhdlAttribute "\'simple_name"
89syn match vhdlAttribute "\'instance_name"
90syn match vhdlAttribute "\'path_name"
91syn match vhdlAttribute "\'foreign"
92" signal attribute
93syn match vhdlAttribute "\'active"
94syn match vhdlAttribute "\'delayed"
95syn match vhdlAttribute "\'event"
96syn match vhdlAttribute "\'last_active"
97syn match vhdlAttribute "\'last_event"
98syn match vhdlAttribute "\'last_value"
99syn match vhdlAttribute "\'quiet"
100syn match vhdlAttribute "\'stable"
101syn match vhdlAttribute "\'transaction"
102syn match vhdlAttribute "\'driving"
103syn match vhdlAttribute "\'driving_value"
104" type attributes
105syn match vhdlAttribute "\'base"
106syn match vhdlAttribute "\'high"
107syn match vhdlAttribute "\'left"
108syn match vhdlAttribute "\'leftof"
109syn match vhdlAttribute "\'low"
110syn match vhdlAttribute "\'pos"
111syn match vhdlAttribute "\'pred"
112syn match vhdlAttribute "\'rightof"
113syn match vhdlAttribute "\'succ"
114syn match vhdlAttribute "\'val"
115syn match vhdlAttribute "\'image"
116syn match vhdlAttribute "\'value"
117
118syn keyword vhdlBoolean true false
119
120" for this vector values case is significant
121syn case match
122" Values for standard VHDL types
123syn match vhdlVector "\'[0L1HXWZU\-\?]\'"
124" Values for non standard VHDL types qsim_12state for Mentor Graphics Sys1076/QuickHDL
125syn keyword vhdlVector S0S S1S SXS S0R S1R SXR S0Z S1Z SXZ S0I S1I SXI
126syn case ignore
127
128syn match vhdlVector "B\"[01_]\+\""
129syn match vhdlVector "O\"[0-7_]\+\""
130syn match vhdlVector "X\"[0-9a-f_]\+\""
131syn match vhdlCharacter "'.'"
Bram Moolenaarc8734422012-06-01 22:38:45 +0200132syn region vhdlString start=+"+ end=+"+ contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000133
134" floating numbers
135syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>"
136syn match vhdlNumber "-\=\<\d\+\.\d\+\>"
137syn match vhdlNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\="
138syn match vhdlNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
139" integer numbers
140syn match vhdlNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>"
141syn match vhdlNumber "-\=\<\d\+\>"
142syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\="
143syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
144" operators
145syn keyword vhdlOperator and nand or nor xor xnor
146syn keyword vhdlOperator rol ror sla sll sra srl
147syn keyword vhdlOperator mod rem abs not
148syn match vhdlOperator "[&><=:+\-*\/|]"
149syn match vhdlSpecial "[().,;]"
150" time
151syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
152syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
153
Bram Moolenaarc8734422012-06-01 22:38:45 +0200154syn match vhdlComment "--.*$" contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000155" syn match vhdlGlobal "[\'$#~!%@?\^\[\]{}\\]"
156
157" Define the default highlighting.
158" For version 5.7 and earlier: only when not done already
159" For version 5.8 and later: only when an item doesn't have highlighting yet
160if version >= 508 || !exists("did_vhdl_syntax_inits")
161 if version < 508
162 let did_vhdl_syntax_inits = 1
163 command -nargs=+ HiLink hi link <args>
164 else
165 command -nargs=+ HiLink hi def link <args>
166 endif
167
168 HiLink cDefine PreProc
169 HiLink vhdlSpecial Special
170 HiLink vhdlStatement Statement
171 HiLink vhdlCharacter String
172 HiLink vhdlString String
173 HiLink vhdlVector String
174 HiLink vhdlBoolean String
175 HiLink vhdlComment Comment
176 HiLink vhdlNumber String
177 HiLink vhdlTime String
178 HiLink vhdlType Type
179 HiLink vhdlOperator Type
180 HiLink vhdlGlobal Error
181 HiLink vhdlAttribute Type
182
183 delcommand HiLink
184endif
185
186let b:current_syntax = "vhdl"
187
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100188let &cpo = s:cpo_save
189unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000190" vim: ts=8