1" Vim syntax file
2" Language:	Hercules
3" Maintainer:	Dana Edwards <Dana_Edwards@avanticorp.com>
4" Extensions:   *.vc,*.ev,*.rs
5" Last change:  Nov. 9, 2001
6" Comment:      Hercules physical IC design verification software ensures
7"		that an IC's physical design matches its logical design and
8"		satisfies manufacturing rules.
9
10" quit when a syntax file was already loaded
11if exists("b:current_syntax")
12  finish
13endif
14
15" Ignore case
16syn case ignore
17
18" Hercules runset sections
19syn keyword   herculesType	  header assign_property alias assign
20syn keyword   herculesType	  options preprocess_options
21syn keyword   herculesType	  explode_options technology_options
22syn keyword   herculesType	  drc_options database_options
23syn keyword   herculesType	  text_options lpe_options evaccess_options
24syn keyword   herculesType	  check_point compare_group environment
25syn keyword   herculesType	  grid_check include layer_stats load_group
26syn keyword   herculesType	  restart run_only self_intersect set snap
27syn keyword   herculesType	  system variable waiver
28
29" Hercules commands
30syn keyword   herculesStatement   attach_property boolean cell_extent
31syn keyword   herculesStatement   common_hierarchy connection_points
32syn keyword   herculesStatement   copy data_filter alternate delete
33syn keyword   herculesStatement   explode explode_all fill_pattern find_net
34syn keyword   herculesStatement   flatten
35syn keyword   herculesStatement   level negate polygon_features push
36syn keyword   herculesStatement   rectangles relocate remove_overlap reverse select
37syn keyword   herculesStatement   select_cell select_contains select_edge select_net size
38syn keyword   herculesStatement   text_polygon text_property vertex area cut
39syn keyword   herculesStatement   density enclose external inside_edge
40syn keyword   herculesStatement   internal notch vectorize center_to_center
41syn keyword   herculesStatement   length mask_align moscheck rescheck
42syn keyword   herculesStatement   analysis buildsub init_lpe_db capacitor
43syn keyword   herculesStatement   device gendev nmos pmos diode npn pnp
44syn keyword   herculesStatement   resistor set_param save_property
45syn keyword   herculesStatement   connect disconnect text  text_boolean
46syn keyword   herculesStatement   replace_text create_ports label graphics
47syn keyword   herculesStatement   save_netlist_database lpe_stats netlist
48syn keyword   herculesStatement   spice graphics_property graphics_netlist
49syn keyword   herculesStatement   write_milkyway multi_rule_enclose
50syn keyword   herculesStatement   if error_property equate compare
51syn keyword   herculesStatement   antenna_fix c_thru dev_connect_check
52syn keyword   herculesStatement   dev_net_count device_count net_filter
53syn keyword   herculesStatement   net_path_check ratio process_text_opens
54
55" Hercules keywords
56syn keyword   herculesStatement   black_box_file block compare_dir equivalence
57syn keyword   herculesStatement   format gdsin_dir group_dir group_dir_usage
58syn keyword   herculesStatement   inlib layout_path outlib output_format
59syn keyword   herculesStatement   output_layout_path schematic schematic_format
60syn keyword   herculesStatement   scheme_file output_block else
61syn keyword   herculesStatement   and or not xor andoverlap inside outside by to
62syn keyword   herculesStatement   with connected connected_all texted_with texted
63syn keyword   herculesStatement   by_property cutting edge_touch enclosing inside
64syn keyword   herculesStatement   inside_hole interact touching vertex
65
66" Hercules comments
67syn region    herculesComment		start="/\*" skip="/\*" end="\*/" contains=herculesTodo
68syn match     herculesComment		"//.*" contains=herculesTodo
69
70" Preprocessor directives
71syn match     herculesPreProc "^#.*"
72syn match     herculesPreProc "^@.*"
73syn match     herculesPreProc "macros"
74
75" Hercules COMMENT option
76syn match     herculesCmdCmnt "comment.*=.*"
77
78" Spacings, Resolutions, Ranges, Ratios, etc.
79syn match     herculesNumber	      "-\=\<[0-9]\+L\=\>\|0[xX][0-9]\+\>"
80
81" Parenthesis sanity checker
82syn region    herculesZone       matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesCurlyError
83syn region    herculesZone       matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesParenError
84syn region    herculesZone       matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,herculesError,herculesCurlyError,herculesParenError
85syn match     herculesError      "[)\]}]"
86syn match     herculesBraceError "[)}]"  contained
87syn match     herculesCurlyError "[)\]]" contained
88syn match     herculesParenError "[\]}]" contained
89
90" Hercules output format
91"syn match  herculesOutput "([0-9].*)"
92"syn match  herculesOutput "([0-9].*\;.*)"
93syn match     herculesOutput "perm\s*=.*(.*)"
94syn match     herculesOutput "temp\s*=\s*"
95syn match     herculesOutput "error\s*=\s*(.*)"
96
97"Modify the following as needed.  The trade-off is performance versus functionality.
98syn sync      lines=100
99
100" Define the default highlighting.
101" Only when an item doesn't have highlighting yet
102
103hi def link herculesStatement  Statement
104hi def link herculesType       Type
105hi def link herculesComment    Comment
106hi def link herculesPreProc    PreProc
107hi def link herculesTodo       Todo
108hi def link herculesOutput     Include
109hi def link herculesCmdCmnt    Identifier
110hi def link herculesNumber     Number
111hi def link herculesBraceError herculesError
112hi def link herculesCurlyError herculesError
113hi def link herculesParenError herculesError
114hi def link herculesError      Error
115
116
117let b:current_syntax = "hercules"
118
119" vim: ts=8
120