]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/verilog.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / verilog.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <!-- Written By: Wojciech Stryjewski - thvortex@sourceforge.net -->
6
7 <MODE>
8         <PROPS>
9                 <!-- Rules for indenting:
10                    - Case expressions (a line ending with colon) are indented
11                    - Keywords begin, module, task, etc. always indented
12                    - Keywords if, while, etc. indent only if ; not on the same line
13                 -->
14                 <PROPERTY NAME="indentNextLines" VALUE="(.*:\s*)|(\s*(begin|fork|task|table|specify|primitive|module|generate|function|case[xz]?)\b.*)|(\s*(always|if|else|for|forever|initial|repeat|while)\b[^;]*)" />
15
16                 <PROPERTY NAME="commentStart" VALUE="/*" />
17                 <PROPERTY NAME="commentEnd" VALUE="*/" />
18                 <PROPERTY NAME="lineComment" VALUE="//" />
19                 <PROPERTY NAME="noWordSep" VALUE="_'" />
20                 <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />
21         </PROPS>
22         <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
23         DIGIT_RE="([\p{Digit}]|_|[a-fA-F])+" NO_WORD_SEP="'">
24                 <!-- Comments -->
25                 <SPAN TYPE="COMMENT1">
26                         <BEGIN>/*</BEGIN>
27                         <END>*/</END>
28                 </SPAN>
29                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
30
31                 <!--String Literals -->
32                 <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="FALSE">
33                         <BEGIN>"</BEGIN>
34                         <END>"</END>
35                 </SPAN>
36
37                 <SEQ TYPE="DIGIT">'d</SEQ>
38                 <SEQ TYPE="DIGIT">'h</SEQ>
39                 <SEQ TYPE="DIGIT">'b</SEQ>
40                 <SEQ TYPE="DIGIT">'o</SEQ>
41
42                 <!-- Function calls, module instantiation, system tasks with args -->
43                 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
44                 <SEQ TYPE="OPERATOR">)</SEQ>
45
46                 <!-- Operators -->
47                 <SEQ TYPE="OPERATOR">=</SEQ>
48                 <SEQ TYPE="OPERATOR">!</SEQ>
49                 <SEQ TYPE="OPERATOR">+</SEQ>
50                 <SEQ TYPE="OPERATOR">-</SEQ>
51                 <SEQ TYPE="OPERATOR">/</SEQ>
52                 <SEQ TYPE="OPERATOR">*</SEQ>
53                 <SEQ TYPE="OPERATOR">&gt;</SEQ>
54                 <SEQ TYPE="OPERATOR">&lt;</SEQ>
55                 <SEQ TYPE="OPERATOR">%</SEQ>
56                 <SEQ TYPE="OPERATOR">&amp;</SEQ>
57                 <SEQ TYPE="OPERATOR">|</SEQ>
58                 <SEQ TYPE="OPERATOR">^</SEQ>
59                 <SEQ TYPE="OPERATOR">~</SEQ>
60                 <SEQ TYPE="OPERATOR">}</SEQ>
61                 <SEQ TYPE="OPERATOR">{</SEQ>
62
63                 <KEYWORDS>
64                         <!-- Regular Keywords -->
65                         <KEYWORD1>always</KEYWORD1>
66                         <KEYWORD1>assign</KEYWORD1>
67                         <KEYWORD1>begin</KEYWORD1>
68                         <KEYWORD1>case</KEYWORD1>
69                         <KEYWORD1>casex</KEYWORD1>
70                         <KEYWORD1>casez</KEYWORD1>
71                         <KEYWORD1>default</KEYWORD1>
72                         <KEYWORD1>deassign</KEYWORD1>
73                         <KEYWORD1>disable</KEYWORD1>
74                         <KEYWORD1>else</KEYWORD1>
75                         <KEYWORD1>end</KEYWORD1>
76                         <KEYWORD1>endcase</KEYWORD1>
77                         <KEYWORD1>endfunction</KEYWORD1>
78                         <KEYWORD1>endgenerate</KEYWORD1>
79                         <KEYWORD1>endmodule</KEYWORD1>
80                         <KEYWORD1>endprimitive</KEYWORD1>
81                         <KEYWORD1>endspecify</KEYWORD1>
82                         <KEYWORD1>endtable</KEYWORD1>
83                         <KEYWORD1>endtask</KEYWORD1>
84                         <KEYWORD1>for</KEYWORD1>
85                         <KEYWORD1>force</KEYWORD1>
86                         <KEYWORD1>forever</KEYWORD1>
87                         <KEYWORD1>fork</KEYWORD1>
88                         <KEYWORD1>function</KEYWORD1>
89                         <KEYWORD1>generate</KEYWORD1>
90                         <KEYWORD1>if</KEYWORD1>
91                         <KEYWORD1>initial</KEYWORD1>
92                         <KEYWORD1>join</KEYWORD1>
93                         <KEYWORD1>macromodule</KEYWORD1>
94                         <KEYWORD1>module</KEYWORD1>
95                         <KEYWORD1>negedge</KEYWORD1>
96                         <KEYWORD1>posedge</KEYWORD1>
97                         <KEYWORD1>primitive</KEYWORD1>
98                         <KEYWORD1>repeat</KEYWORD1>
99                         <KEYWORD1>release</KEYWORD1>
100                         <KEYWORD1>specify</KEYWORD1>
101                         <KEYWORD1>table</KEYWORD1>
102                         <KEYWORD1>task</KEYWORD1>
103                         <KEYWORD1>wait</KEYWORD1>
104                         <KEYWORD1>while</KEYWORD1>
105
106                         <!-- Compiler Directives -->
107                         <KEYWORD2>`include</KEYWORD2>
108                         <KEYWORD2>`define</KEYWORD2>
109                         <KEYWORD2>`undef</KEYWORD2>
110                         <KEYWORD2>`ifdef</KEYWORD2>
111                         <KEYWORD2>`ifndef</KEYWORD2>
112                         <KEYWORD2>`else</KEYWORD2>
113                         <KEYWORD2>`elsif</KEYWORD2>
114                         <KEYWORD2>`endif</KEYWORD2>
115                         <KEYWORD2>`timescale</KEYWORD2>
116                         <KEYWORD2>`resetall</KEYWORD2>
117                         <KEYWORD2>`signed</KEYWORD2>
118                         <KEYWORD2>`unsigned</KEYWORD2>
119                         <KEYWORD2>`celldefine</KEYWORD2>
120                         <KEYWORD2>`endcelldefine</KEYWORD2>
121                         <KEYWORD2>`default_nettype</KEYWORD2>
122                         <KEYWORD2>`unconnected_drive</KEYWORD2>
123                         <KEYWORD2>`nounconnected_drive</KEYWORD2>
124                         <KEYWORD2>`protect</KEYWORD2>
125                         <KEYWORD2>`endprotect</KEYWORD2>
126                         <KEYWORD2>`protected</KEYWORD2>
127                         <KEYWORD2>`endprotected</KEYWORD2>
128                         <KEYWORD2>`remove_gatename</KEYWORD2>
129                         <KEYWORD2>`noremove_gatename</KEYWORD2>
130                         <KEYWORD2>`remove_netname</KEYWORD2>
131                         <KEYWORD2>`noremove_netname</KEYWORD2>
132                         <KEYWORD2>`expand_vectornets</KEYWORD2>
133                         <KEYWORD2>`noexpand_vectornets</KEYWORD2>
134                         <KEYWORD2>`autoexpand_vectornets</KEYWORD2>
135
136                         <!-- Type Declaration Keywords -->
137                         <KEYWORD3>integer</KEYWORD3>
138                         <KEYWORD3>reg</KEYWORD3>
139                         <KEYWORD3>time</KEYWORD3>
140                         <KEYWORD3>realtime</KEYWORD3>
141                         <KEYWORD3>defparam</KEYWORD3>
142                         <KEYWORD3>parameter</KEYWORD3>
143                         <KEYWORD3>event</KEYWORD3>
144                         <KEYWORD3>wire</KEYWORD3>
145                         <KEYWORD3>wand</KEYWORD3>
146                         <KEYWORD3>wor</KEYWORD3>
147                         <KEYWORD3>tri</KEYWORD3>
148                         <KEYWORD3>triand</KEYWORD3>
149                         <KEYWORD3>trior</KEYWORD3>
150                         <KEYWORD3>tri0</KEYWORD3>
151                         <KEYWORD3>tri1</KEYWORD3>
152                         <KEYWORD3>trireg</KEYWORD3>
153                         <KEYWORD3>vectored</KEYWORD3>
154                         <KEYWORD3>scalared</KEYWORD3>
155                         <KEYWORD3>input</KEYWORD3>
156                         <KEYWORD3>output</KEYWORD3>
157                         <KEYWORD3>inout</KEYWORD3>
158                         <KEYWORD3>logic</KEYWORD3>
159
160                         <!-- Signal Strengths -->
161                         <KEYWORD3>supply0</KEYWORD3>
162                         <KEYWORD3>supply1</KEYWORD3>
163                         <KEYWORD3>strong0</KEYWORD3>
164                         <KEYWORD3>strong1</KEYWORD3>
165                         <KEYWORD3>pull0</KEYWORD3>
166                         <KEYWORD3>pull1</KEYWORD3>
167                         <KEYWORD3>weak0</KEYWORD3>
168                         <KEYWORD3>weak1</KEYWORD3>
169                         <KEYWORD3>highz0</KEYWORD3>
170                         <KEYWORD3>highz1</KEYWORD3>
171                         <KEYWORD3>small</KEYWORD3>
172                         <KEYWORD3>medium</KEYWORD3>
173                         <KEYWORD3>large</KEYWORD3>
174
175                         <!-- System Tasks With No/Optional Arguments -->
176                         <FUNCTION>$stop</FUNCTION>
177                         <FUNCTION>$finish</FUNCTION>
178                         <FUNCTION>$time</FUNCTION>
179                         <FUNCTION>$stime</FUNCTION>
180                         <FUNCTION>$realtime</FUNCTION>
181                         <FUNCTION>$settrace</FUNCTION>
182                         <FUNCTION>$cleartrace</FUNCTION>
183                         <FUNCTION>$showscopes</FUNCTION>
184                         <FUNCTION>$showvars</FUNCTION>
185                         <FUNCTION>$monitoron</FUNCTION>
186                         <FUNCTION>$monitoroff</FUNCTION>
187                         <FUNCTION>$random</FUNCTION>
188                         <FUNCTION>$printtimescale</FUNCTION>
189                         <FUNCTION>$timeformat</FUNCTION>
190
191                         <!-- Built-in primitives -->
192                         <FUNCTION>and</FUNCTION>
193                         <FUNCTION>nand</FUNCTION>
194                         <FUNCTION>or</FUNCTION>
195                         <FUNCTION>nor</FUNCTION>
196                         <FUNCTION>xor</FUNCTION>
197                         <FUNCTION>xnor</FUNCTION>
198                         <FUNCTION>buf</FUNCTION>
199                         <FUNCTION>bufif0</FUNCTION>
200                         <FUNCTION>bufif1</FUNCTION>
201                         <FUNCTION>not</FUNCTION>
202                         <FUNCTION>notif0</FUNCTION>
203                         <FUNCTION>notif1</FUNCTION>
204                         <FUNCTION>nmos</FUNCTION>
205                         <FUNCTION>pmos</FUNCTION>
206                         <FUNCTION>cmos</FUNCTION>
207                         <FUNCTION>rnmos</FUNCTION>
208                         <FUNCTION>rpmos</FUNCTION>
209                         <FUNCTION>rcmos</FUNCTION>
210                         <FUNCTION>tran</FUNCTION>
211                         <FUNCTION>tranif0</FUNCTION>
212                         <FUNCTION>tranif1</FUNCTION>
213                         <FUNCTION>rtran</FUNCTION>
214                         <FUNCTION>rtranif0</FUNCTION>
215                         <FUNCTION>rtranif1</FUNCTION>
216                         <FUNCTION>pullup</FUNCTION>
217                         <FUNCTION>pulldown</FUNCTION>
218                 </KEYWORDS>
219         </RULES>
220 </MODE>
221