summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/specman.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/specman.vim')
-rw-r--r--runtime/syntax/specman.vim169
1 files changed, 169 insertions, 0 deletions
diff --git a/runtime/syntax/specman.vim b/runtime/syntax/specman.vim
new file mode 100644
index 0000000..79c94b7
--- /dev/null
+++ b/runtime/syntax/specman.vim
@@ -0,0 +1,169 @@
+" Vim syntax file
+" Language: SPECMAN E-LANGUAGE
+" Maintainer: Or Freund <or@mobilian.com ;omf@gmx.co.uk; OrMeir@yahoo.com>
+" Last Update: Wed Oct 24 2001
+
+"---------------------------------------------------------
+"| If anyone found an error or fix the parenthesis part |
+"| I will be happy to hear about it |
+"| Thanks Or. |
+"---------------------------------------------------------
+
+" Remove any old syntax stuff hanging around
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword specmanTodo contained TODO todo ToDo FIXME XXX
+
+syn keyword specmanStatement var instance on compute start event expect check that routine
+syn keyword specmanStatement specman is also first only with like
+syn keyword specmanStatement list of all radix hex dec bin ignore illegal
+syn keyword specmanStatement traceable untraceable
+syn keyword specmanStatement cover using count_only trace_only at_least transition item ranges
+syn keyword specmanStatement cross text call task within
+
+syn keyword specmanMethod initialize non_terminal testgroup delayed exit finish
+syn keyword specmanMethod out append print outf appendf
+syn keyword specmanMethod post_generate pre_generate setup_test finalize_test extract_test
+syn keyword specmanMethod init run copy as_a set_config dut_error add clear lock quit
+syn keyword specmanMethod lock unlock release swap quit to_string value stop_run
+syn keyword specmanMethod crc_8 crc_32 crc_32_flip get_config add0 all_indices and_all
+syn keyword specmanMethod apply average count delete exists first_index get_indices
+syn keyword specmanMethod has insert is_a_permutation is_empty key key_exists key_index
+syn keyword specmanMethod last last_index max max_index max_value min min_index
+syn keyword specmanMethod min_value or_all pop pop0 push push0 product resize reverse
+syn keyword specmanMethod sort split sum top top0 unique clear is_all_iterations
+syn keyword specmanMethod get_enclosing_unit hdl_path exec deep_compare deep_compare_physical
+syn keyword specmanMethod pack unpack warning error fatal
+syn match specmanMethod "size()"
+syn keyword specmanPacking packing low high
+syn keyword specmanType locker address
+syn keyword specmanType body code vec chars
+syn keyword specmanType integer real bool int long uint byte bits bit time string
+syn keyword specmanType byte_array external_pointer
+syn keyword specmanBoolean TRUE FALSE
+syn keyword specmanPreCondit #ifdef #ifndef #else
+
+syn keyword specmanConditional choose matches
+syn keyword specmanConditional if then else when try
+
+
+
+syn keyword specmanLabel case casex casez default
+
+syn keyword specmanLogical and or not xor
+
+syn keyword specmanRepeat until repeat while for from to step each do break continue
+syn keyword specmanRepeat before next sequence always -kind network
+syn keyword specmanRepeat index it me in new return result select
+
+syn keyword specmanTemporal cycle sample events forever
+syn keyword specmanTemporal wait change negedge rise fall delay sync sim true detach eventually emit
+
+syn keyword specmanConstant MAX_INT MIN_INT NULL UNDEF
+
+syn keyword specmanDefine define as computed type extend
+syn keyword specmanDefine verilog vhdl variable global sys
+syn keyword specmanStructure struct unit
+syn keyword specmanInclude import
+syn keyword specmanConstraint gen keep keeping soft before
+
+syn keyword specmanSpecial untyped symtab ECHO DOECHO
+syn keyword specmanFile files load module ntv source_ref script read write
+syn keyword specmanFSM initial idle others posedge clock cycles
+
+
+syn match specmanOperator "[&|~><!)(*%@+/=?:;}{,.\^\-\[\]]"
+syn match specmanOperator "+="
+syn match specmanOperator "-="
+syn match specmanOperator "*="
+
+syn match specmanComment "//.*" contains=specmanTodo
+syn match specmanComment "--.*"
+syn region specmanComment start="^'>"hs=s+2 end="^<'"he=e-2
+
+syn match specmanHDL "'[`.a-zA-Z0-9_@\[\]]\+\>'"
+
+
+syn match specmanCompare "=="
+syn match specmanCompare "!==="
+syn match specmanCompare "==="
+syn match specmanCompare "!="
+syn match specmanCompare ">="
+syn match specmanCompare "<="
+syn match specmanNumber "[0-9]:[0-9]"
+syn match specmanNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>"
+syn match specmanNumber "0[bB]\s*[0-1_xXzZ?]\+\>"
+syn match specmanNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>"
+syn match specmanNumber "0[oO]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match specmanNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>"
+syn match specmanNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match specmanNumber "0[xX]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match specmanNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>"
+
+syn region specmanString start=+"+ end=+"+
+
+
+
+"**********************************************************************
+" I took this section from c.vim but I didnt succeded to make it work
+" ANY one who dare jumping to this deep watter is more than welocome!
+"**********************************************************************
+""catch errors caused by wrong parenthesis and brackets
+
+"syn cluster specmanParenGroup contains=specmanParenError
+"" ,specmanNumbera,specmanComment
+"if exists("specman_no_bracket_error")
+"syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup
+"syn match specmanParenError ")"
+"syn match specmanErrInParen contained "[{}]"
+"else
+"syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup,specmanErrInBracket
+"syn match specmanParenError "[\])]"
+"syn match specmanErrInParen contained "[\]{}]"
+"syn region specmanBracket transparent start='\[' end=']' contains=ALLBUT,@specmanParenGroup,specmanErrInParen
+"syn match specmanErrInBracket contained "[);{}]"
+"endif
+"
+
+"Modify the following as needed. The trade-off is performance versus
+"functionality.
+
+syn sync lines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+" The default methods for highlighting. Can be overridden later
+hi def link specmanConditional Conditional
+hi def link specmanConstraint Conditional
+hi def link specmanRepeat Repeat
+hi def link specmanString String
+hi def link specmanComment Comment
+hi def link specmanConstant Macro
+hi def link specmanNumber Number
+hi def link specmanCompare Operator
+hi def link specmanOperator Operator
+hi def link specmanLogical Operator
+hi def link specmanStatement Statement
+hi def link specmanHDL SpecialChar
+hi def link specmanMethod Function
+hi def link specmanInclude Include
+hi def link specmanStructure Structure
+hi def link specmanBoolean Boolean
+hi def link specmanFSM Label
+hi def link specmanSpecial Special
+hi def link specmanType Type
+hi def link specmanTemporal Type
+hi def link specmanFile Include
+hi def link specmanPreCondit Include
+hi def link specmanDefine Typedef
+hi def link specmanLabel Label
+hi def link specmanPacking keyword
+hi def link specmanTodo Todo
+hi def link specmanParenError Error
+hi def link specmanErrInParen Error
+hi def link specmanErrInBracket Error
+
+let b:current_syntax = "specman"