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