]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/verilog.xml
ee1602ec43b26a34015c61b39b3a5843175187f3
[factor.git] / basis / xmode / modes / verilog.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \r
5 <!-- Written By: Wojciech Stryjewski - thvortex@sourceforge.net -->\r
6 \r
7 <MODE>\r
8         <PROPS>\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
13                 -->\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
15 \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=",+-=&lt;&gt;/?^&amp;*" />\r
21         </PROPS>\r
22         <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"\r
23                 DIGIT_RE="([\p{Digit}]|_)+" NO_WORD_SEP="'">\r
24                 <!-- Comments -->\r
25                 <SPAN TYPE="COMMENT1">\r
26                         <BEGIN>/*</BEGIN>\r
27                         <END>*/</END>\r
28                 </SPAN>\r
29                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>\r
30 \r
31                 <!--String Literals -->\r
32                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE">\r
33                         <BEGIN>"</BEGIN>\r
34                         <END>"</END>\r
35                 </SPAN>\r
36 \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
41 \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
45 \r
46                 <!-- Operators -->\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">&gt;</SEQ>\r
54                 <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
55                 <SEQ TYPE="OPERATOR">%</SEQ>\r
56                 <SEQ TYPE="OPERATOR">&amp;</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
62 \r
63                 <KEYWORDS>\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
105 \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
134 \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
157 \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
172 \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
188 \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
216                 </KEYWORDS>\r
217         </RULES>\r
218 </MODE>\r
219 \r