diff --git a/.gitignore b/.gitignore index 1377554..3819313 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.swp +*.swo diff --git a/bash/bashrc.synopsys b/bash/bashrc.synopsys index ee9bf7e..1453bb3 100755 --- a/bash/bashrc.synopsys +++ b/bash/bashrc.synopsys @@ -232,7 +232,7 @@ alias fwtags="find . -type d -exec /depot/ctag-5.5.4/bin/ctags -R --verbose --include \*.h --include \*.c --include \*.cpp --exclude=\"boost\" --exclude=\"hp64*\" --exclude=\"sparc64*\" --exclude=\"linux*\" --exclude=\"aix64*\" --exclude=\"suse32*\" --exclude=\"suse64*\" --exclude=\"win32\" --exclude=\"*stage*\" --exclude=\"*no_sync*\" -f \{\}/tags \{\} \;" alias cleantemp="rm -rf ~/temp/*icwb*" alias vncserver="/usr/bin/vncserver" -alias mygrep="grep -R --include *.cpp --include *.h" +alias cgrep="grep --include \*.cpp --include \*.h --include \*.c" alias localParse="/remote/nti/test_suite/icwb/common/utilities/localParse.pl" # diff --git a/gdb/gdbinit b/gdb/gdbinit new file mode 100644 index 0000000..cd7c483 --- /dev/null +++ b/gdb/gdbinit @@ -0,0 +1,18 @@ +set disassembly-flavor intel +set confirm off +#set follow-fork-mode child +#set detach-on-fork off + +# +# C++ related beautifiers +# +set print pretty on +set print object on +#set print static-members on +set print vtbl on +set print demangle on +set demangle-style gnu-v3 +set print sevenbit-strings off + +source ~/devel/scripts/gdb/print_stl + diff --git a/gdb/print_stl b/gdb/print_stl new file mode 100644 index 0000000..76da9b6 --- /dev/null +++ b/gdb/print_stl @@ -0,0 +1,680 @@ +# +# STL GDB evaluators/views/utilities - 1.03 +# +# The new GDB commands: +# are entirely non instrumental +# do not depend on any "inline"(s) - e.g. size(), [], etc +# are extremely tolerant to debugger settings +# +# This file should be "included" in .gdbinit as following: +# source stl-views.gdb or just paste it into your .gdbinit file +# +# The following STL containers are currently supported: +# +# std::vector -- via pvector command +# std::list -- via plist or plist_member command +# std::map -- via pmap or pmap_member command +# std::multimap -- via pmap or pmap_member command +# std::set -- via pset command +# std::multiset -- via pset command +# std::deque -- via pdequeue command +# std::stack -- via pstack command +# std::queue -- via pqueue command +# std::priority_queue -- via ppqueue command +# std::bitset -- via pbitset command +# std::string -- via pstring command +# std::widestring -- via pwstring command +# +# The end of this file contains (optional) C++ beautifiers +# Make sure your debugger supports $argc +# +# Simple GDB Macros writen by Dan Marinescu (H-PhD) - License GPL +# Inspired by intial work of Tom Malnar, +# Tony Novac (PhD) / Cornell / Stanford, +# Gilad Mishne (PhD) and Many Many Others. +# Contact: dan_c_marinescu@yahoo.com (Subject: STL) +# +# Modified to work with g++ 4.3 by Anders Elton +# Also added _member functions, that instead of printing the entire class in map, prints a member. + + + +# +# std::vector<> +# +define pvector + if $argc == 0 + help pvector + else + set $size = $arg0._M_impl._M_finish - $arg0._M_impl._M_start + set $capacity = $arg0._M_impl._M_end_of_storage - $arg0._M_impl._M_start + set $size_max = $size - 1 + end + if $argc == 1 + set $i = 0 + while $i < $size + printf "elem[%u]: ", $i + p *($arg0._M_impl._M_start + $i) + set $i++ + end + end + if $argc == 2 + set $idx = $arg1 + if $idx < 0 || $idx > $size_max + printf "idx1, idx2 are not in acceptable range: [0..%u].\n", $size_max + else + printf "elem[%u]: ", $idx + p *($arg0._M_impl._M_start + $idx) + end + end + if $argc == 3 + set $start_idx = $arg1 + set $stop_idx = $arg2 + if $start_idx > $stop_idx + set $tmp_idx = $start_idx + set $start_idx = $stop_idx + set $stop_idx = $tmp_idx + end + if $start_idx < 0 || $stop_idx < 0 || $start_idx > $size_max || $stop_idx > $size_max + printf "idx1, idx2 are not in acceptable range: [0..%u].\n", $size_max + else + set $i = $start_idx + while $i <= $stop_idx + printf "elem[%u]: ", $i + p *($arg0._M_impl._M_start + $i) + set $i++ + end + end + end + if $argc > 0 + printf "Vector size = %u\n", $size + printf "Vector capacity = %u\n", $capacity + printf "Element " + whatis $arg0._M_impl._M_start + end +end +document pvector + Prints std::vector information. + Syntax: pvector + Note: idx, idx1 and idx2 must be in acceptable range [0...size()-1]. + Examples: + pvector v - Prints vector content, size, capacity and T typedef + pvector v 0 - Prints element[idx] from vector + pvector v 1 2 - Prints elements in range [idx1..idx2] from vector +end + +# +# std::list<> +# +define plist + if $argc == 0 + help plist + else + set $head = &$arg0._M_impl._M_node + set $current = $arg0._M_impl._M_node._M_next + set $size = 0 + while $current != $head + if $argc == 2 + printf "elem[%u]: ", $size + p *($arg1*)($current + 1) + end + if $argc == 3 + if $size == $arg2 + printf "elem[%u]: ", $size + p *($arg1*)($current + 1) + end + end + set $current = $current._M_next + set $size++ + end + printf "List size = %u \n", $size + if $argc == 1 + printf "List " + whatis $arg0 + printf "Use plist to see the elements in the list.\n" + end + end +end + +document plist + Prints std::list information. + Syntax: plist : Prints list size, if T defined all elements or just element at idx + Examples: + plist l - prints list size and definition + plist l int - prints all elements and list size + plist l int 2 - prints the third element in the list (if exists) and list size +end + +define plist_member + if $argc == 0 + help plist_member + else + set $head = &$arg0._M_impl._M_node + set $current = $arg0._M_impl._M_node._M_next + set $size = 0 + while $current != $head + if $argc == 3 + printf "elem[%u]: ", $size + p (*($arg1*)($current + 1)).$arg2 + end + if $argc == 4 + if $size == $arg3 + printf "elem[%u]: ", $size + p (*($arg1*)($current + 1)).$arg2 + end + end + set $current = $current._M_next + set $size++ + end + printf "List size = %u \n", $size + if $argc == 1 + printf "List " + whatis $arg0 + printf "Use plist_member to see the elements in the list.\n" + end + end +end + +document plist_member + Prints std::list information. + Syntax: plist : Prints list size, if T defined all elements or just element at idx + Examples: + plist_member l int member - prints all elements and list size + plist_member l int member 2 - prints the third element in the list (if exists) and list size +end + + +# +# std::map and std::multimap +# + +define pmap + if $argc == 0 + help pmap + else + set $tree = $arg0 + set $i = 0 + set $node = $tree._M_t._M_impl._M_header._M_left + set $end = $tree._M_t._M_impl._M_header + set $tree_size = $tree._M_t._M_impl._M_node_count + if $argc == 1 + printf "Map " + whatis $tree + printf "Use pmap to see the elements in the map.\n" + end + if $argc == 3 + while $i < $tree_size + set $value = (void *)($node + 1) + printf "elem[%u].left: ", $i + p *($arg1*)$value + set $value = $value + sizeof($arg1) + printf "elem[%u].right: ", $i + p *($arg2*)$value + if $node._M_right != 0 + set $node = $node._M_right + while $node._M_left != 0 + set $node = $node._M_left + end + else + set $tmp_node = $node._M_parent + while $node == $tmp_node._M_right + set $node = $tmp_node + set $tmp_node = $tmp_node._M_parent + end + if $node._M_right != $tmp_node + set $node = $tmp_node + end + end + set $i++ + end + end + if $argc == 4 + set $idx = $arg3 + set $ElementsFound = 0 + while $i < $tree_size + set $value = (void *)($node + 1) + if *($arg1*)$value == $idx + printf "elem[%u].left: ", $i + p *($arg1*)$value + set $value = $value + sizeof($arg1) + printf "elem[%u].right: ", $i + p *($arg2*)$value + set $ElementsFound++ + end + if $node._M_right != 0 + set $node = $node._M_right + while $node._M_left != 0 + set $node = $node._M_left + end + else + set $tmp_node = $node._M_parent + while $node == $tmp_node._M_right + set $node = $tmp_node + set $tmp_node = $tmp_node._M_parent + end + if $node._M_right != $tmp_node + set $node = $tmp_node + end + end + set $i++ + end + printf "Number of elements found = %u\n", $ElementsFound + end + if $argc == 5 + set $idx1 = $arg3 + set $idx2 = $arg4 + set $ElementsFound = 0 + while $i < $tree_size + set $value = (void *)($node + 1) + set $valueLeft = *($arg1*)$value + set $valueRight = *($arg2*)($value + sizeof($arg1)) + if $valueLeft == $idx1 && $valueRight == $idx2 + printf "elem[%u].left: ", $i + p $valueLeft + printf "elem[%u].right: ", $i + p $valueRight + set $ElementsFound++ + end + if $node._M_right != 0 + set $node = $node._M_right + while $node._M_left != 0 + set $node = $node._M_left + end + else + set $tmp_node = $node._M_parent + while $node == $tmp_node._M_right + set $node = $tmp_node + set $tmp_node = $tmp_node._M_parent + end + if $node._M_right != $tmp_node + set $node = $tmp_node + end + end + set $i++ + end + printf "Number of elements found = %u\n", $ElementsFound + end + printf "Map size = %u\n", $tree_size + end +end + +document pmap + Prints std::map or std::multimap information. Works for std::multimap as well. + Syntax: pmap : Prints map size, if T defined all elements or just element(s) with val(s) + Examples: + pmap m - prints map size and definition + pmap m int int - prints all elements and map size + pmap m int int 20 - prints the element(s) with left-value = 20 (if any) and map size + pmap m int int 20 200 - prints the element(s) with left-value = 20 and right-value = 200 (if any) and map size +end + + +define pmap_member + if $argc == 0 + help pmap_member + else + set $tree = $arg0 + set $i = 0 + set $node = $tree._M_t._M_impl._M_header._M_left + set $end = $tree._M_t._M_impl._M_header + set $tree_size = $tree._M_t._M_impl._M_node_count + if $argc == 1 + printf "Map " + whatis $tree + printf "Use pmap to see the elements in the map.\n" + end + if $argc == 5 + while $i < $tree_size + set $value = (void *)($node + 1) + printf "elem[%u].left: ", $i + p (*($arg1*)$value).$arg2 + set $value = $value + sizeof($arg1) + printf "elem[%u].right: ", $i + p (*($arg3*)$value).$arg4 + if $node._M_right != 0 + set $node = $node._M_right + while $node._M_left != 0 + set $node = $node._M_left + end + else + set $tmp_node = $node._M_parent + while $node == $tmp_node._M_right + set $node = $tmp_node + set $tmp_node = $tmp_node._M_parent + end + if $node._M_right != $tmp_node + set $node = $tmp_node + end + end + set $i++ + end + end + if $argc == 6 + set $idx = $arg5 + set $ElementsFound = 0 + while $i < $tree_size + set $value = (void *)($node + 1) + if *($arg1*)$value == $idx + printf "elem[%u].left: ", $i + p (*($arg1*)$value).$arg2 + set $value = $value + sizeof($arg1) + printf "elem[%u].right: ", $i + p (*($arg3*)$value).$arg4 + set $ElementsFound++ + end + if $node._M_right != 0 + set $node = $node._M_right + while $node._M_left != 0 + set $node = $node._M_left + end + else + set $tmp_node = $node._M_parent + while $node == $tmp_node._M_right + set $node = $tmp_node + set $tmp_node = $tmp_node._M_parent + end + if $node._M_right != $tmp_node + set $node = $tmp_node + end + end + set $i++ + end + printf "Number of elements found = %u\n", $ElementsFound + end + printf "Map size = %u\n", $tree_size + end +end + +document pmap_member + Prints std::map or std::multimap information. Works for std::multimap as well. + Syntax: pmap : Prints map size, if T defined all elements or just element(s) with val(s) + Examples: + pmap_member m class1 member1 class2 member2 - prints class1.member1 : class2.member2 + pmap_member m class1 member1 class2 member2 lvalue - prints class1.member1 : class2.member2 where class1 == lvalue +end + + +# +# std::set and std::multiset +# + +define pset + if $argc == 0 + help pset + else + set $tree = $arg0 + set $i = 0 + set $node = $tree._M_t._M_impl._M_header._M_left + set $end = $tree._M_t._M_impl._M_header + set $tree_size = $tree._M_t._M_impl._M_node_count + if $argc == 1 + printf "Set " + whatis $tree + printf "Use pset to see the elements in the set.\n" + end + if $argc == 2 + while $i < $tree_size + set $value = (void *)($node + 1) + printf "elem[%u]: ", $i + p *($arg1*)$value + if $node._M_right != 0 + set $node = $node._M_right + while $node._M_left != 0 + set $node = $node._M_left + end + else + set $tmp_node = $node._M_parent + while $node == $tmp_node._M_right + set $node = $tmp_node + set $tmp_node = $tmp_node._M_parent + end + if $node._M_right != $tmp_node + set $node = $tmp_node + end + end + set $i++ + end + end + if $argc == 3 + set $idx = $arg2 + set $ElementsFound = 0 + while $i < $tree_size + set $value = (void *)($node + 1) + if *($arg1*)$value == $idx + printf "elem[%u]: ", $i + p *($arg1*)$value + set $ElementsFound++ + end + if $node._M_right != 0 + set $node = $node._M_right + while $node._M_left != 0 + set $node = $node._M_left + end + else + set $tmp_node = $node._M_parent + while $node == $tmp_node._M_right + set $node = $tmp_node + set $tmp_node = $tmp_node._M_parent + end + if $node._M_right != $tmp_node + set $node = $tmp_node + end + end + set $i++ + end + printf "Number of elements found = %u\n", $ElementsFound + end + printf "Set size = %u\n", $tree_size + end +end + +document pset + Prints std::set or std::multiset information. Works for std::multiset as well. + Syntax: pset : Prints set size, if T defined all elements or just element(s) having val + Examples: + pset s - prints set size and definition + pset s int - prints all elements and the size of s + pset s int 20 - prints the element(s) with value = 20 (if any) and the size of s +end + + + +# +# std::dequeue +# + +define pdequeue + if $argc == 0 + help pdequeue + else + set $size = 0 + set $start_cur = $arg0._M_impl._M_start._M_cur + set $start_last = $arg0._M_impl._M_start._M_last + set $start_stop = $start_last + while $start_cur != $start_stop + p *$start_cur + set $start_cur++ + set $size++ + end + set $finish_first = $arg0._M_impl._M_finish._M_first + set $finish_cur = $arg0._M_impl._M_finish._M_cur + set $finish_last = $arg0._M_impl._M_finish._M_last + if $finish_cur < $finish_last + set $finish_stop = $finish_cur + else + set $finish_stop = $finish_last + end + while $finish_first != $finish_stop + p *$finish_first + set $finish_first++ + set $size++ + end + printf "Dequeue size = %u\n", $size + end +end + +document pdequeue + Prints std::dequeue information. + Syntax: pdequeue : Prints dequeue size, if T defined all elements + Deque elements are listed "left to right" (left-most stands for front and right-most stands for back) + Example: + pdequeue d - prints all elements and size of d +end + + + +# +# std::stack +# + +define pstack + if $argc == 0 + help pstack + else + set $start_cur = $arg0.c._M_impl._M_start._M_cur + set $finish_cur = $arg0.c._M_impl._M_finish._M_cur + set $size = $finish_cur - $start_cur + set $i = $size - 1 + while $i >= 0 + p *($start_cur + $i) + set $i-- + end + printf "Stack size = %u\n", $size + end +end + +document pstack + Prints std::stack information. + Syntax: pstack : Prints all elements and size of the stack + Stack elements are listed "top to buttom" (top-most element is the first to come on pop) + Example: + pstack s - prints all elements and the size of s +end + + + +# +# std::queue +# + +define pqueue + if $argc == 0 + help pqueue + else + set $start_cur = $arg0.c._M_impl._M_start._M_cur + set $finish_cur = $arg0.c._M_impl._M_finish._M_cur + set $size = $finish_cur - $start_cur + set $i = 0 + while $i < $size + p *($start_cur + $i) + set $i++ + end + printf "Queue size = %u\n", $size + end +end + +document pqueue + Prints std::queue information. + Syntax: pqueue : Prints all elements and the size of the queue + Queue elements are listed "top to bottom" (top-most element is the first to come on pop) + Example: + pqueue q - prints all elements and the size of q +end + + + +# +# std::priority_queue +# + +define ppqueue + if $argc == 0 + help ppqueue + else + set $size = $arg0.c._M_impl._M_finish - $arg0.c._M_impl._M_start + set $capacity = $arg0.c._M_impl._M_end_of_storage - $arg0.c._M_impl._M_start + set $i = $size - 1 + while $i >= 0 + p *($arg0.c._M_impl._M_start + $i) + set $i-- + end + printf "Priority queue size = %u\n", $size + printf "Priority queue capacity = %u\n", $capacity + end +end + +document ppqueue + Prints std::priority_queue information. + Syntax: ppqueue : Prints all elements, size and capacity of the priority_queue + Priority_queue elements are listed "top to buttom" (top-most element is the first to come on pop) + Example: + ppqueue pq - prints all elements, size and capacity of pq +end + + + +# +# std::bitset +# + +define pbitset + if $argc == 0 + help pbitset + else + p /t $arg0._M_w + end +end + +document pbitset + Prints std::bitset information. + Syntax: pbitset : Prints all bits in bitset + Example: + pbitset b - prints all bits in b +end + + + +# +# std::string +# + +define pstring + if $argc == 0 + help pstring + else + printf "String \t\t\t= \"%s\"\n", $arg0._M_data() + printf "String size/length \t= %u\n", $arg0._M_rep()._M_length + printf "String capacity \t= %u\n", $arg0._M_rep()._M_capacity + printf "String ref-count \t= %d\n", $arg0._M_rep()._M_refcount + end +end + +document pstring + Prints std::string information. + Syntax: pstring + Example: + pstring s - Prints content, size/length, capacity and ref-count of string s +end + +# +# std::wstring +# + +define pwstring + if $argc == 0 + help pwstring + else + call printf("WString \t\t= \"%ls\"\n", $arg0._M_data()) + printf "WString size/length \t= %u\n", $arg0._M_rep()._M_length + printf "WString capacity \t= %u\n", $arg0._M_rep()._M_capacity + printf "WString ref-count \t= %d\n", $arg0._M_rep()._M_refcount + end +end + +document pwstring + Prints std::wstring information. + Syntax: pwstring + Example: + pwstring s - Prints content, size/length, capacity and ref-count of wstring s +end + diff --git a/gdb/print_stl_test.cpp b/gdb/print_stl_test.cpp new file mode 100644 index 0000000..5b5aeb1 --- /dev/null +++ b/gdb/print_stl_test.cpp @@ -0,0 +1,47 @@ +//VIM: let g:lcppflags="-g --std=c++0x" +// +#include +#include +#include +#include +#include +#include + +int main() +{ + std::vector v; + v.push_back(10); + v.push_back(11); + v.push_back(12); + v.push_back(13); + + std::vector> v2; + v2.push_back(std::make_pair(23,34)); + v2.push_back(std::make_pair(3,4)); + v2.push_back(std::make_pair(423,534)); + + std::list> l; + l.push_back(std::make_pair(23,34)); + l.push_back(std::make_pair(3,4)); + l.push_back(std::make_pair(423,534)); + + std::deque> q; + q.push_back(std::make_pair(23,34)); + q.push_back(std::make_pair(3,4)); + q.push_back(std::make_pair(423,534)); + + std::map m; + m.insert(std::make_pair(23,34)); + m.insert(std::make_pair(3,4)); + m.insert(std::make_pair(423,534)); + + std::set> s; + s.insert(std::make_pair(23,34)); + s.insert(std::make_pair(3,4)); + s.insert(std::make_pair(423,534)); + + std::string str = "This is a string."; + +break_here: + return 0; +} diff --git a/mg/create_dwa.csh b/mg/create_dwa.csh new file mode 100644 index 0000000..281e612 --- /dev/null +++ b/mg/create_dwa.csh @@ -0,0 +1,52 @@ +#!/bin/csh + +if ( $1 == '' ) then + echo 'DWA folder is not specified.' + exit +endif + +mkdir -p $1 +cd $1 +setenv DWA `pwd` + +if ( $2 != '' ) then + set VVCO=$VCO-$2 +else + set VVCO=$VCO +endif + +ic_dwa -lv $IWA $DWA $VVCO + +###################### +cd $DWA/ic/ic_superproj/$VVCO +cglu +pmake mk_imports imports + +cd $DWA/ic/lv/$VVCO +cglu +cm_add_verfiles + +#cd $DWA/ic/lv/$VCO-dbg/lithas/Dsrc +#cvs update build.pl + +cd $DWA/ic/lv/$VVCO + +setenv CAL_DWA $DWA +setenv CAL_IWA $IWA + +pmake lcl_exec ic_create_deps + +# +# Set path after build. Otherwise tcsh doesn't find binaries. +# +setenv MGC_HOME $DWA/ic/ic_superproj/$VVCO/Mgc_home +setenv MGC_BIN $MGC_HOME/bin +setenv PATH $MGC_BIN\:$PATH + +#cd +#$DWA/ic/lv/$VCO/lithas/Isrc/build.pl debug calibre -j 8 + +#cd $WA/ic/lv/$VCO +#cglu +#gmake $PB systests lv_verify -j8 +#gmake $PB systests lv_verify diff --git a/mg/create_iwa.csh b/mg/create_iwa.csh new file mode 100644 index 0000000..2a102d8 --- /dev/null +++ b/mg/create_iwa.csh @@ -0,0 +1,48 @@ +#!/bin/csh + +if ( $1 == '' ) then + echo 'IWA folder is not specified.' + exit +endif + +mkdir -p $1 +cd $1 +setenv IWA `pwd` + +if ( $2 != '' ) then + set VVCO=$VCO-$2 +else + set VVCO=$VCO +endif + +# +# Check out sources. +# +echo cvs checkout -r calibre_2014_3 ic/lv/src ic/ic_superproj/src + +###################### +cd $IWA/ic/lv +mkwa . . $VVCO + +cd $IWA/ic/ic_superproj +mkwa . . $VVCO +cd $IWA/ic/ic_superproj/$VVCO +cglu +gmake mk_imports imports + +cd $IWA/ic/lv/$VVCO +cglu +cm_add_verfiles + +setenv CAL_DWA $DWA +setenv CAL_IWA $IWA + +#pmake lcl_exec ic_create_deps + +# +# Set path after build. Otherwise tcsh doesn't find binaries. +# +setenv MGC_HOME $IWA/ic/ic_superproj/$VVCO/Mgc_home +setenv MGC_BIN $MGC_HOME/bin +setenv PATH $MGC_BIN\:$PATH + diff --git a/mg/cshrc b/mg/cshrc new file mode 100644 index 0000000..f626e75 --- /dev/null +++ b/mg/cshrc @@ -0,0 +1,128 @@ +# +# MG global +# +setenv VCO `/usr/mgc/bin/mgcvco` +setenv MGC_SITE `domainname` + +switch($MGC_SITE:q) + case amy.mentorg.com: + source /user/icdet/bin/detalias.arm.csh + setenv MGLS_LICENSE_FILE 1717@amy-lic-01.amy.mentorg.com + #setenv WG_SERVER /share/ic_wg_server/CACHED_WG_SERVER + #setenv MGC_SERVER $WG_SERVER + breaksw + case wv.mentorg.com: + source /user/icdet/bin/detalias.csh + setenv MGLS_LICENSE_FILE 1717@wv-lic-01:1717@wv-lic-02:1717@wv-lic-03:1717@wv-lic-04:1717@wv-lic-05:1700@pevlic1:1700@pevlic4 + breaksw + case sje.mentorg.com: + source /user/icdet/bin/detalias.csh + setenv MGLS_LICENSE_FILE 1717@wv-lic-01:1717@wv-lic-02:1717@wv-lic-03:1717@wv-lic-04:1717@wv-lic-05:1700@pevlic1:1700@pevlic4 + breaksw +endsw + +setenv LM_LICENSE_FILE $MGLS_LICENSE_FILE\:1717@wv-lic-toolworks.wv.mentorg.com + +setenv PATH $PATH\:/user/icdet/bin:/user/icbuild/bin +setenv PATH $PATH\:/user/pevtools/bin:/user/pevtools/$VCO/bin +setenv PATH $PATH\:/usr/mgc/bin:/usr/mgc/lib/mgcms + +setenv PEVTOOLSBIN /user/pevtools/bin +if ( $?LD_LIBRARY_PATH ) then + setenv LD_LIBRARY_PATH /user/pevtools/$VCO/lib64\:$LD_LIBRARY_PATH +else + setenv LD_LIBRARY_PATH /user/pevtools/$VCO/lib64 +endif + +# +# MG development environment +# +setenv CVSROOT :pserver:calcvs:/cvs/ic +setenv BUILD64 1 + +@ cpu_count = ( `/user/icdet/bin/count_processors` / 2 ) +setenv PB "GMAKE_LIB_PARALLEL=-j$cpu_count GMAKE_SYSTESTS_PARALLEL=-j$cpu_count" +setenv PB2 "GMAKE_EXEC_PARALLEL=-j"`/user/icdet/bin/figure_gmake_exec_ness` +alias pmake 'gmake $PB $PB2' +alias create_dwa 'source $HOME/devel/scripts/mg/create_dwa.csh' +alias create_iwa 'source $HOME/devel/scripts/mg/create_iwa.csh' + +#if ( -x /share/cal_daily/latest ) then +# setenv IWA /share/cal_nightly/latest +if ( -x /share/cal_nightly/latest ) then + setenv IWA /share/cal_nightly/latest +else if ( -x /wv/cal_nightly/latest_ube ) then + setenv IWA /wv/cal_nightly/latest_ube +else if ( -x /sj/cal_nightly/latest_ube ) then + setenv IWA /sj/cal_nightly/latest_ube +endif + +setenv CALIBRE_PRINT_STACK_TRACE 4242 + +# +# MG test environment (These are needed for terra) +# +#export MGC_HOME=/amy/cal_nightly/latest/ic/ic_superproj/$VCO/Mgc_home +#export MGC_HOME=/wv/icdet/work_areas/latest_ube/ic/ic_superproj/$VCO/Mgc_home/ +#export MGC_BIN=$MGC_HOME/bin +#export PATH=$MGC_BIN:$PATH +if ( -e /wv/pevtools/data_dir ) then + setenv DESIGN_DIR /wv/pevtools/data_dir +endif + +if ( -e /wv/calgrid/sge/default/common/settings.csh ) then + setenv DFM_TEST_BASE /wv/cal_dfm_qa/tot_master/calibre/dfm/rq/ + setenv TEST_SUITE_TOP /wv/amy_dfm_qa/tot_master/calibre + setenv CALIBRE_SKIP_OS_CHECKS 1 + source /wv/calgrid/sge/default/common/settings.csh + setenv SGE_ROOT /wv/calgrid/uge811 +endif + +# +# post-review +# +if ( -e /tools/ActivePython-2.5.6.10-linux-x86/bin/post-review ) then + setenv PATH $PATH\:/tools/ActivePython-2.5.6.10-linux-x86/bin +else if ( -e /wv/pevtools/ActivePython-2.5.4.4-linux-x86_64/bin/post-review ) then + setenv PATH $PATH\:/wv/pevtools/ActivePython-2.5.4.4-linux-x86_64/bin +endif + +# +# Eugene's check-in script +# +if ( -x /home/anikin/bin/prepare_for_checkin ) then + alias prepare_for_checkin /home/anikin/bin/prepare_for_checkin +endif + +# +# VTune and inspector +# +if ( -x /opt/intel/vtune_amplifier_xe/amplxe-vars.csh ) then + source /opt/intel/vtune_amplifier_xe/amplxe-vars.csh > /dev/null + setenv LM_LICENSE_FILE $LM_LICENSE_FILE\:1717@rukbat.wv.mentorg.com + alias vtune amplxe-gui +endif + +if ( -x /opt/intel/inspector_xe_2011/inspxe-vars.csh ) then + source /opt/intel/inspector_xe_2011/inspxe-vars.csh > /dev/null +endif + +# +# Private settings +# +setenv PATH $HOME/local_rh_x64/bin:$HOME/bin:$HOME/devel/scripts/mg:$HOME/devel/scripts/bash:$PATH +setenv LD_LIBRARY_PATH $HOME/local_rh_x64/lib:$HOME/local_rh_x64/lib64\:$LD_LIBRARY_PATH +setenv EDITOR /home/vkhachat/local_rh_x64/bin/gvim + +# +# ICWBEV +# +alias icwbev $HOME/local_rh_x64/private/fw/bin/icwbev +alias oasis_info $HOME/local_rh_x64/private/fw/bin/oasis_info + +# +# Aliases +# +alias cdw 'cd $HOME/devel/mg' +alias setmgchome 'source $HOME/devel/scripts/mg/setmgchome.csh' +alias ptags 'ctags --recurse=yes --verbose -h ".h.C"' diff --git a/mg/setmgchome.csh b/mg/setmgchome.csh new file mode 100644 index 0000000..e8b00e8 --- /dev/null +++ b/mg/setmgchome.csh @@ -0,0 +1,15 @@ +#!/bin/csh + +if ( $1 != '' ) then + set DIR=`readlink -f $1` +else + set DIR=`pwd` +endif + +setenv DWA $DIR +setenv VVCO $VCO + +setenv MGC_HOME $DWA/ic/ic_superproj/$VVCO/Mgc_home +setenv MGC_BIN $MGC_HOME/bin +setenv PATH $MGC_BIN\:$PATH + diff --git a/mg/sync_home b/mg/sync_home new file mode 100755 index 0000000..6e80a03 --- /dev/null +++ b/mg/sync_home @@ -0,0 +1,11 @@ +#!/bin/csh + +cd + +echo sync: bin +rsync -avz amy-dev5:bin $HOME +echo sync: .vim +rsync -avz amy-dev5:.vim $HOME +echo sync: local_rh_x64 +rsync -avz amy-dev5:local_rh_x64 $HOME + diff --git a/vim/vahagn_black_terminal.vim b/vim/colors/vahagn_black_terminal.vim similarity index 100% rename from vim/vahagn_black_terminal.vim rename to vim/colors/vahagn_black_terminal.vim diff --git a/vim/cf5-compiler.vim b/vim/plugin/cf5-compiler.vim similarity index 80% rename from vim/cf5-compiler.vim rename to vim/plugin/cf5-compiler.vim index 5fb47f4..e8a475a 100755 --- a/vim/cf5-compiler.vim +++ b/vim/plugin/cf5-compiler.vim @@ -1,12 +1,16 @@ +" +" " {{{1 -" Functions to compile and link a single c/cpp file. +" Functions to compile and link a single c/cpp/java files. " " let g:cf5output " =0 - no output window opened. " =1 - ouput window opened. " -"if exists("g:loaded_vahagn_compiler") | finish | endif -let g:loaded_vahagn_compiler = 1 +if exists('g:loaded_cf5_compiler') + finish +endif +let g:loaded_cf5_compiler = 1 " " Make sure let-modeline.vim is loaded. @@ -58,6 +62,24 @@ function! s:CompileJava(run) "{{{2 echo eout endfunction +function! s:InterpretPython(run) "{{{2 + " Interpret it + let cmd = "python " . g:pyflags . " " . expand("%") + echo cmd + let cout = system( cmd ) + echo cout + if v:shell_error + return + endif + " run it + "let classpath=expand("%:p:r") + "let exename=expand("%:r") + "let cmd = "java " . exename . " " . g:argv + "echo cmd + "let eout = system( cmd ) + "echo eout +endfunction + function! s:CompileWindows(run) "{{{2 let ext=expand("%:e") if ext=="java" @@ -66,6 +88,12 @@ function! s:CompileWindows(run) "{{{2 if ext=="cpp" call s:CompileMSVC(a:run) endif + if ext=="c" + call s:CompileMSVC(a:run) + endif + if ext=="py" + call s:InterpretPython(a:run) + endif endfunction " @@ -85,7 +113,8 @@ function! s:CompileGCC(run) "{{{2 call s:appendOutput(cout) " run it if a:run == 1 - let cmdline="LD_LIBRARY_PATH=".g:ldlibpath.":".$LD_LIBRARY_PATH." ".exename." ".g:argv + let $LD_LIBRARY_PATH="LD_LIBRARY_PATH=".g:ldlibpath.":".$LD_LIBRARY_PATH + let cmdline=exename." ".g:argv call s:appendOutput(cmdline) let eout = system( cmdline ) call s:appendOutput(eout) @@ -93,7 +122,19 @@ function! s:CompileGCC(run) "{{{2 endfunction function! s:CompileLinux(run) "{{{2 - call s:CompileGCC(a:run) + let ext=expand("%:e") + if ext=="java" + call s:CompileJava(a:run) + endif + if ext=="cpp" + call s:CompileGCC(a:run) + endif + if ext=="c" + call s:CompileGCC(a:run) + endif + if ext=="py" + call s:InterpretPython(a:run) + endif endfunction " @@ -154,6 +195,7 @@ endfunction function! s:initDefaults() let g:cf5output=0 let g:argv="" + let g:pyflags="" let g:cppflags="" let g:wcppflags="/O2 /EHsc /DWIN32" let g:lcppflags="-O2" @@ -174,13 +216,6 @@ function! CF5Compile(run) " call s:initDefaults() " - " Source compile-opt.vim if exists. - " - verbose let l:copt=expand("%:p:h")."/cf5-opt.vim" - if filereadable(l:copt) - exec ":source ".l:copt - endif - " " Set source specific compiler options. " call FirstModeLine() diff --git a/vim/let-modeline.vim b/vim/plugin/let-modeline.vim similarity index 100% rename from vim/let-modeline.vim rename to vim/plugin/let-modeline.vim diff --git a/vim/plugin/local-vimrc.vim b/vim/plugin/local-vimrc.vim new file mode 100644 index 0000000..0493b2c --- /dev/null +++ b/vim/plugin/local-vimrc.vim @@ -0,0 +1,54 @@ +" +" Authors: Vahagn Khachatryan (vahagn DOT khachatryan AT gmail DOT com) +" +" Licence: http://www.opensource.org/licenses/mit-license.php +" The MIT License +" +" This file is based on Andy Dawson's independence.vim +" +"----------------------------------------------------------------------------- +" +" Section: Documentation +" +" The vim local-vimrc plugin loads a .vimrc file from upper directories if +" it exists. This allows you to override your vim settings on a directory tree +" basis. + +" Section: Plugin header +" +" loaded_local_vimrc is set to 1 when initialization begins, and 2 when it +" completes. +if exists('g:loaded_locl_vimrc') + finish +endif +let g:loaded_local_vimrc=1 + +" Section: Event group setup +" Act when creating or loading a file +augroup LocalVimrc + au BufNewFile,BufRead * call s:LoadConfig() +augroup END + +" Function: LoadConfig() +" +" If the file .vimrc exists in the root of a git project - load it +function s:LoadConfig() + let l:path = fnameescape(expand("%:p:h")) + if empty(l:path) + return + endif + + let l:pathp = "" + while !filereadable(l:path.'/.vimrc') && l:pathp != l:path + let l:pathp = l:path + let l:path = fnamemodify(l:path, ":h") + endwhile + + let l:vimrc = l:path . '/.vimrc' + if filereadable(l:vimrc) && l:vimrc != $MYVIMRC + exec ":source " . l:vimrc + endif +endfunction + +" Section: Plugin completion +let g:loaded_local_vimrc=2 diff --git a/vim/syntax/calibre.vim b/vim/syntax/calibre.vim new file mode 100644 index 0000000..8379108 --- /dev/null +++ b/vim/syntax/calibre.vim @@ -0,0 +1,569 @@ +" Vim syntax file +" Language: Calibre +" Maintainer: Mentor Graphics Corp. +" Last change: August 5, 2010 +" Extensions: *.drc,*.lvs,*.rul,*.rules +" Comment: This file includes SVRF/TVF Technology under license by Mentor Graphics Corporation. "SVRF/TVF Technology" shall mean Mentor Graphics' Standard Verification Rule Format ("SVRF") and Tcl Verification Format ("TVF ") proprietary syntaxes for expressing process rules. You shall not use SVRF/TVF Technology unless you are a Mentor Graphics customer as defined by having authorized access to Mentor Graphics' password protected support site at http://supportnet.mentor.com/. The exact terms of your obligations and rights are governed by your respective license. You shall not use SVRF/TVF Technology except: (a) for your internal business purposes and (b) for use with Mentor Graphics' Calibre(r) tools. All SVRF/TVF Technology constitutes or contains trade secrets and confidential information of Mentor Graphics or its licensors. You shall not make SVRF/TVF Technology available in any form to any person other than your employees and on-site contractors, excluding Mentor Graphics competitors, whose job performance requires access and who are under obligations of confidentiality. + +"Version: 0.9 copied the command dictionary from SVRF manual version 2010.2 +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Ignore case +syn case ignore + +" A bunch of useful Calibre keywords + +"Updated with keyword list from 2010.2 +syn keyword calibreKeyword and angle area attach connect copy cut dbclassify deangle density device disconnect donut enclose enclosure extent extents external flatten group grow hcell holes include inside interact internal layer length magnify mdpmerge mdpstat mdpverify merge net not offgrid opcbias opclineend opcsbar or ornet outside pathchk perimeter pins polygon ports precision push rectangle rectangles resolution rotate sconnect shift shrink size snap stamp tddrc text title topex touch variable vertex xor trapezoider vboasis_injection speed_mode computation_mode fracture_units vboasis_path log_file_name file_name svrf_layer_name version chip_directory input_region_severity cell_subfield_size cell_subfield_margin cell_max_width cell_max_height frame_width frame_max_data common_max_data conversion_address_unit max_skew_approximation_error svrf_layer_name shot_size cell_size_x cell_size_y field_size lsb1 format_type small_value + +syn match calibreDirective "\#define " + +syn match calibreKeyword "capacitance[\ \t][\ \t]*order[\ \t][\ \t]*" +syn match calibreKeyword "coincident[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "coincident[\ \t][\ \t]*inside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "coincident[\ \t][\ \t]*outside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "convex[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "density[\ \t][\ \t]*convolve[\ \t][\ \t]*" +syn match calibreKeyword "device[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*analyze[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*connectivity[\ \t][\ \t]*redundant[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*copy[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*create[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*critical[\ \t][\ \t]*area[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*database[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*defaults[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*expand[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*expand[\ \t][\ \t]*enclosure[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*fill[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*function[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*grow[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*histogram[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*measure[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*narac[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*property[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*property[\ \t][\ \t]*merge[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*rdb[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*read[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*redundant[\ \t][\ \t]*vias[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*select[\ \t][\ \t]*check[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*shift[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*size[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*space[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*spec[\ \t][\ \t]*fill[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*spec[\ \t][\ \t]*fill[\ \t][\ \t]*optimizer[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*spec[\ \t][\ \t]*fill[\ \t][\ \t]*shape[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*spec[\ \t][\ \t]*spatial[\ \t][\ \t]*sample[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*spec[\ \t][\ \t]*via[\ \t][\ \t]*redundancy[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*stamp[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*transform[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*transition[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*unselect[\ \t][\ \t]*check[\ \t][\ \t]*" +syn match calibreKeyword "dfm[\ \t][\ \t]*ys[\ \t][\ \t]*autostart[\ \t][\ \t]*" +syn match calibreKeyword "drawn[\ \t][\ \t]*acute[\ \t][\ \t]*" +syn match calibreKeyword "drawn[\ \t][\ \t]*angled[\ \t][\ \t]*" +syn match calibreKeyword "drawn[\ \t][\ \t]*offgrid[\ \t][\ \t]*" +syn match calibreKeyword "drawn[\ \t][\ \t]*skew[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*cell[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*cell[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*check[\ \t][\ \t]*map[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*check[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*exclude[\ \t][\ \t]*false[\ \t][\ \t]*notch[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*icstation[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*incremental[\ \t][\ \t]*connect[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*incremental[\ \t][\ \t]*connect[\ \t][\ \t]*warning[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*keep[\ \t][\ \t]*empty[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*magnify[\ \t][\ \t]*density[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*magnify[\ \t][\ \t]*nar[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*magnify[\ \t][\ \t]*results[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*map[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*map[\ \t][\ \t]*text[\ \t][\ \t]*depth[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*map[\ \t][\ \t]*text[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*maximum[\ \t][\ \t]*cell[\ \t][\ \t]*name[\ \t][\ \t]*length[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*maximum[\ \t][\ \t]*results[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*maximum[\ \t][\ \t]*unattached[\ \t][\ \t]*label[\ \t][\ \t]*warnings[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*maximum[\ \t][\ \t]*vertex[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*print[\ \t][\ \t]*area[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*print[\ \t][\ \t]*perimeter[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*results[\ \t][\ \t]*database[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*results[\ \t][\ \t]*database[\ \t][\ \t]*libname[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*results[\ \t][\ \t]*database[\ \t][\ \t]*precision[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*select[\ \t][\ \t]*check[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*select[\ \t][\ \t]*check[\ \t][\ \t]*by[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*summary[\ \t][\ \t]*report[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*tolerance[\ \t][\ \t]*factor[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*tolerance[\ \t][\ \t]*factor[\ \t][\ \t]*nar[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*unselect[\ \t][\ \t]*check[\ \t][\ \t]*" +syn match calibreKeyword "drc[\ \t][\ \t]*unselect[\ \t][\ \t]*check[\ \t][\ \t]*by[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "enclose[\ \t][\ \t]*rectangle[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*cell[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*check[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*keep[\ \t][\ \t]*empty[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*maximum[\ \t][\ \t]*results[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*maximum[\ \t][\ \t]*vertex[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*path[\ \t][\ \t]*also[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*pathchk[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*results[\ \t][\ \t]*database[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*select[\ \t][\ \t]*check[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*summary[\ \t][\ \t]*report[\ \t][\ \t]*" +syn match calibreKeyword "erc[\ \t][\ \t]*unselect[\ \t][\ \t]*check[\ \t][\ \t]*" +syn match calibreKeyword "exclude[\ \t][\ \t]*acute[\ \t][\ \t]*" +syn match calibreKeyword "exclude[\ \t][\ \t]*angled[\ \t][\ \t]*" +syn match calibreKeyword "exclude[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "exclude[\ \t][\ \t]*offgrid[\ \t][\ \t]*" +syn match calibreKeyword "exclude[\ \t][\ \t]*skew[\ \t][\ \t]*" +syn match calibreKeyword "expand[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "expand[\ \t][\ \t]*cell[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "expand[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "expand[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "extent[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "extent[\ \t][\ \t]*drawn[\ \t][\ \t]*" +syn match calibreKeyword "flag[\ \t][\ \t]*acute[\ \t][\ \t]*" +syn match calibreKeyword "flag[\ \t][\ \t]*angled[\ \t][\ \t]*" +syn match calibreKeyword "flag[\ \t][\ \t]*nonsimple[\ \t][\ \t]*" +syn match calibreKeyword "flag[\ \t][\ \t]*nonsimple[\ \t][\ \t]*path[\ \t][\ \t]*" +syn match calibreKeyword "flag[\ \t][\ \t]*offgrid[\ \t][\ \t]*" +syn match calibreKeyword "flag[\ \t][\ \t]*skew[\ \t][\ \t]*" +syn match calibreKeyword "flatten[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "flatten[\ \t][\ \t]*inside[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "fracture[\ \t][\ \t]*hitachi[\ \t][\ \t]*" +syn match calibreKeyword "fracture[\ \t][\ \t]*jeol[\ \t][\ \t]*" +syn match calibreKeyword "fracture[\ \t][\ \t]*mebes[\ \t][\ \t]*" +syn match calibreKeyword "fracture[\ \t][\ \t]*micronic[\ \t][\ \t]*" +syn match calibreKeyword "fracture[\ \t][\ \t]*nuflare[\ \t][\ \t]*" +syn match calibreKeyword "fracture[\ \t][\ \t]*vboasis[\ \t][\ \t]*" +syn match calibreKeyword "fracture[\ \t][\ \t]*oasis_mask[\ \t][\ \t]*" +syn match calibreKeyword "inductance[\ \t][\ \t]*micheck[\ \t][\ \t]*" +syn match calibreKeyword "inductance[\ \t][\ \t]*wire[\ \t][\ \t]*" +syn match calibreKeyword "inside[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "inside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "label[\ \t][\ \t]*order[\ \t][\ \t]*" +syn match calibreKeyword "layer[\ \t][\ \t]*directory[\ \t][\ \t]*" +syn match calibreKeyword "layer[\ \t][\ \t]*map[\ \t][\ \t]*" +syn match calibreKeyword "layer[\ \t][\ \t]*resolution[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*allow[\ \t][\ \t]*duplicate[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*base[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*base[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*bump2[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*case[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*cell[\ \t][\ \t]*list[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*cell[\ \t][\ \t]*match[\ \t][\ \t]*rule[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*depth[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*error[\ \t][\ \t]*on[\ \t][\ \t]*input[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*ignore[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*input[\ \t][\ \t]*exception[\ \t][\ \t]*rdb[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*input[\ \t][\ \t]*exception[\ \t][\ \t]*severity[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*magnify[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*merge[\ \t][\ \t]*on[\ \t][\ \t]*input[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*path[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*path2[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*place[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*polygon[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*precision[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*preserve[\ \t][\ \t]*case[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*preserve[\ \t][\ \t]*cell[\ \t][\ \t]*list[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*primary[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*primary2[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*process[\ \t][\ \t]*box[\ \t][\ \t]*record[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*process[\ \t][\ \t]*node[\ \t][\ \t]*record[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*property[\ \t][\ \t]*audit[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*property[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*rename[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*rename[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*system[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*system2[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*top[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*use[\ \t][\ \t]*database[\ \t][\ \t]*precision[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*windel[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*windel[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*windel[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*window[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*window[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*window[\ \t][\ \t]*clip[\ \t][\ \t]*" +syn match calibreKeyword "layout[\ \t][\ \t]*window[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "litho[\ \t][\ \t]*denseopc[\ \t][\ \t]*" +syn match calibreKeyword "litho[\ \t][\ \t]*file[\ \t][\ \t]*" +syn match calibreKeyword "litho[\ \t][\ \t]*opc[\ \t][\ \t]*" +syn match calibreKeyword "litho[\ \t][\ \t]*opcverify[\ \t][\ \t]*" +syn match calibreKeyword "litho[\ \t][\ \t]*orc[\ \t][\ \t]*" +syn match calibreKeyword "litho[\ \t][\ \t]*printimage[\ \t][\ \t]*" +syn match calibreKeyword "litho[\ \t][\ \t]*psmgate[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*abort[\ \t][\ \t]*on[\ \t][\ \t]*erc[\ \t][\ \t]*error[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*abort[\ \t][\ \t]*on[\ \t][\ \t]*softchk[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*abort[\ \t][\ \t]*on[\ \t][\ \t]*supply[\ \t][\ \t]*error[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*all[\ \t][\ \t]*capacitor[\ \t][\ \t]*pins[\ \t][\ \t]*swappable[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*auto[\ \t][\ \t]*expand[\ \t][\ \t]*hcells[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*box[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*builtin[\ \t][\ \t]*device[\ \t][\ \t]*pin[\ \t][\ \t]*swap[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*builtin[\ \t][\ \t]*mos[\ \t][\ \t]*nrd_nrs[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*cell[\ \t][\ \t]*list[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*cell[\ \t][\ \t]*supply[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*center[\ \t][\ \t]*device[\ \t][\ \t]*pins[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*check[\ \t][\ \t]*port[\ \t][\ \t]*names[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*compare[\ \t][\ \t]*case[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*component[\ \t][\ \t]*subtype[\ \t][\ \t]*property[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*component[\ \t][\ \t]*type[\ \t][\ \t]*property[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*cpoint[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*device[\ \t][\ \t]*type[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*discard[\ \t][\ \t]*pins[\ \t][\ \t]*by[\ \t][\ \t]*device[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*downcase[\ \t][\ \t]*device[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*eddm[\ \t][\ \t]*process[\ \t][\ \t]*m[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*exact[\ \t][\ \t]*subtypes[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*exclude[\ \t][\ \t]*hcell[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*execute[\ \t][\ \t]*erc[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*expand[\ \t][\ \t]*seed[\ \t][\ \t]*promotions[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*expand[\ \t][\ \t]*unbalanced[\ \t][\ \t]*cells[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*filter[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*filter[\ \t][\ \t]*unused[\ \t][\ \t]*bipolar[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*filter[\ \t][\ \t]*unused[\ \t][\ \t]*capacitors[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*filter[\ \t][\ \t]*unused[\ \t][\ \t]*diodes[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*filter[\ \t][\ \t]*unused[\ \t][\ \t]*mos[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*filter[\ \t][\ \t]*unused[\ \t][\ \t]*option[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*filter[\ \t][\ \t]*unused[\ \t][\ \t]*resistors[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*global[\ \t][\ \t]*layout[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*globals[\ \t][\ \t]*are[\ \t][\ \t]*ports[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*ground[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*heap[\ \t][\ \t]*directory[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*ignore[\ \t][\ \t]*ports[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*ignore[\ \t][\ \t]*trivial[\ \t][\ \t]*named[\ \t][\ \t]*ports[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*inject[\ \t][\ \t]*logic[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*isolate[\ \t][\ \t]*shorts[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*map[\ \t][\ \t]*device[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*netlist[\ \t][\ \t]*all[\ \t][\ \t]*texted[\ \t][\ \t]*pins[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*netlist[\ \t][\ \t]*allow[\ \t][\ \t]*inconsistent[\ \t][\ \t]*model[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*netlist[\ \t][\ \t]*box[\ \t][\ \t]*contents[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*netlist[\ \t][\ \t]*comment[\ \t][\ \t]*coded[\ \t][\ \t]*properties[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*netlist[\ \t][\ \t]*comment[\ \t][\ \t]*coded[\ \t][\ \t]*substrate[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*netlist[\ \t][\ \t]*unnamed[\ \t][\ \t]*box[\ \t][\ \t]*pins[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*nl[\ \t][\ \t]*pin[\ \t][\ \t]*locations[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*non[\ \t][\ \t]*user[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*out[\ \t][\ \t]*of[\ \t][\ \t]*range[\ \t][\ \t]*exclude[\ \t][\ \t]*zero[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*pin[\ \t][\ \t]*name[\ \t][\ \t]*property[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*power[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*precise[\ \t][\ \t]*interaction[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*preserve[\ \t][\ \t]*box[\ \t][\ \t]*cells[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*preserve[\ \t][\ \t]*box[\ \t][\ \t]*ports[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*preserve[\ \t][\ \t]*floating[\ \t][\ \t]*top[\ \t][\ \t]*nets[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*preserve[\ \t][\ \t]*parameterized[\ \t][\ \t]*cells[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*property[\ \t][\ \t]*initialize[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*property[\ \t][\ \t]*map[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*property[\ \t][\ \t]*resolution[\ \t][\ \t]*maximum[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*push[\ \t][\ \t]*devices[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*recognize[\ \t][\ \t]*gates[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*recognize[\ \t][\ \t]*gates[\ \t][\ \t]*tolerance[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*parallel[\ \t][\ \t]*bipolar[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*parallel[\ \t][\ \t]*capacitors[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*parallel[\ \t][\ \t]*diodes[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*parallel[\ \t][\ \t]*mos[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*parallel[\ \t][\ \t]*resistors[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*semi[\ \t][\ \t]*series[\ \t][\ \t]*mos[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*series[\ \t][\ \t]*capacitors[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*series[\ \t][\ \t]*mos[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*series[\ \t][\ \t]*resistors[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduce[\ \t][\ \t]*split[\ \t][\ \t]*gates[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reduction[\ \t][\ \t]*priority[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*report[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*report[\ \t][\ \t]*maximum[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*report[\ \t][\ \t]*option[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*report[\ \t][\ \t]*units[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*report[\ \t][\ \t]*warnings[\ \t][\ \t]*hcell[\ \t][\ \t]*only[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*report[\ \t][\ \t]*warnings[\ \t][\ \t]*top[\ \t][\ \t]*only[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*reverse[\ \t][\ \t]*wl[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*short[\ \t][\ \t]*equivalent[\ \t][\ \t]*nodes[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*show[\ \t][\ \t]*seed[\ \t][\ \t]*promotions[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*show[\ \t][\ \t]*seed[\ \t][\ \t]*promotions[\ \t][\ \t]*maximum[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*signature[\ \t][\ \t]*maximum[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*soft[\ \t][\ \t]*substrate[\ \t][\ \t]*pins[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*softchk[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*allow[\ \t][\ \t]*duplicate[\ \t][\ \t]*subcircuit[\ \t][\ \t]*names[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*allow[\ \t][\ \t]*floating[\ \t][\ \t]*pins[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*allow[\ \t][\ \t]*inline[\ \t][\ \t]*parameters[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*allow[\ \t][\ \t]*unquoted[\ \t][\ \t]*strings[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*conditional[\ \t][\ \t]*ldd[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*cull[\ \t][\ \t]*primitive[\ \t][\ \t]*subcircuits[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*implied[\ \t][\ \t]*mos[\ \t][\ \t]*area[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*multiplier[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*option[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*override[\ \t][\ \t]*globals[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*prefer[\ \t][\ \t]*pins[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*redefine[\ \t][\ \t]*param[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*rename[\ \t][\ \t]*parameter[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*replicate[\ \t][\ \t]*devices[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*scale[\ \t][\ \t]*x[\ \t][\ \t]*parameters[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*slash[\ \t][\ \t]*is[\ \t][\ \t]*space[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*spice[\ \t][\ \t]*strict[\ \t][\ \t]*wl[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*split[\ \t][\ \t]*gate[\ \t][\ \t]*ratio[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*strict[\ \t][\ \t]*subtypes[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*summary[\ \t][\ \t]*report[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*write[\ \t][\ \t]*injected[\ \t][\ \t]*layout[\ \t][\ \t]*netlist[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*write[\ \t][\ \t]*injected[\ \t][\ \t]*source[\ \t][\ \t]*netlist[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*write[\ \t][\ \t]*layout[\ \t][\ \t]*netlist[\ \t][\ \t]*" +syn match calibreKeyword "lvs[\ \t][\ \t]*write[\ \t][\ \t]*source[\ \t][\ \t]*netlist[\ \t][\ \t]*" +syn match calibreKeyword "mask[\ \t][\ \t]*results[\ \t][\ \t]*database[\ \t][\ \t]*" +syn match calibreKeyword "mask[\ \t][\ \t]*svdb[\ \t][\ \t]*directory[\ \t][\ \t]*" +syn match calibreKeyword "mdp[\ \t][\ \t]*checkmap[\ \t][\ \t]*" +syn match calibreKeyword "mdp[\ \t][\ \t]*embed[\ \t][\ \t]*" +syn match calibreKeyword "mdp[\ \t][\ \t]*mapsize[\ \t][\ \t]*" +syn match calibreKeyword "mdp[\ \t][\ \t]*maskopt[\ \t][\ \t]*" +syn match calibreKeyword "mdp[\ \t][\ \t]*oasis_extent[\ \t][\ \t]*" +syn match calibreKeyword "net[\ \t][\ \t]*area[\ \t][\ \t]*" +syn match calibreKeyword "net[\ \t][\ \t]*area[\ \t][\ \t]*ratio[\ \t][\ \t]*" +syn match calibreKeyword "net[\ \t][\ \t]*area[\ \t][\ \t]*ratio[\ \t][\ \t]*accumulate[\ \t][\ \t]*" +syn match calibreKeyword "net[\ \t][\ \t]*area[\ \t][\ \t]*ratio[\ \t][\ \t]*print[\ \t][\ \t]*" +syn match calibreKeyword "net[\ \t][\ \t]*interact[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*angle[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*area[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*coincident[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*coincident[\ \t][\ \t]*inside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*coincident[\ \t][\ \t]*outside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*cut[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*donut[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*enclose[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*enclose[\ \t][\ \t]*rectangle[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*inside[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*inside[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*inside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*interact[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*length[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*net[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*outside[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*outside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*rectangle[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*touch[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*touch[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*touch[\ \t][\ \t]*inside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*touch[\ \t][\ \t]*outside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*with[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*with[\ \t][\ \t]*neighbor[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*with[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "not[\ \t][\ \t]*with[\ \t][\ \t]*width[\ \t][\ \t]*" +syn match calibreKeyword "or[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "outside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "parasitic[\ \t][\ \t]*variation[\ \t][\ \t]*" +syn match calibreKeyword "path[\ \t][\ \t]*length[\ \t][\ \t]*" +syn match calibreKeyword "perc[\ \t][\ \t]*load[\ \t][\ \t]*" +syn match calibreKeyword "perc[\ \t][\ \t]*netlist[\ \t][\ \t]*" +syn match calibreKeyword "perc[\ \t][\ \t]*property[\ \t][\ \t]*" +syn match calibreKeyword "perc[\ \t][\ \t]*report[\ \t][\ \t]*" +syn match calibreKeyword "perc[\ \t][\ \t]*report[\ \t][\ \t]*maximum[\ \t][\ \t]*" +syn match calibreKeyword "perc[\ \t][\ \t]*report[\ \t][\ \t]*option[\ \t][\ \t]*" +syn match calibreKeyword "perc[\ \t][\ \t]*report[\ \t][\ \t]*placement[\ \t][\ \t]*list[\ \t][\ \t]*maximum[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*alias[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*ba[\ \t][\ \t]*mapfile[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*bulk[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*cmp[\ \t][\ \t]*mode[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*contact[\ \t][\ \t]*capacitance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*corner[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*corner[\ \t][\ \t]*custom[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*def[\ \t][\ \t]*extract[\ \t][\ \t]*cell[\ \t][\ \t]*obstructions[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*density[\ \t][\ \t]*estimate[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*density[\ \t][\ \t]*window[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*driver[\ \t][\ \t]*file[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*elayer[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*exclude[\ \t][\ \t]*distributed[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*exclude[\ \t][\ \t]*lumped[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*extract[\ \t][\ \t]*exclude[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*extract[\ \t][\ \t]*floating[\ \t][\ \t]*nets[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*extract[\ \t][\ \t]*include[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*extract[\ \t][\ \t]*rgate[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*extract[\ \t][\ \t]*temperature[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*fieldsolver[\ \t][\ \t]*endcap[\ \t][\ \t]*spacing[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*fieldsolver[\ \t][\ \t]*mode[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*fill[\ \t][\ \t]*handling[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*fill[\ \t][\ \t]*model[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*fracture[\ \t][\ \t]*frequency[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*generate[\ \t][\ \t]*driver[\ \t][\ \t]*file[\ \t][\ \t]*tag[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*generate[\ \t][\ \t]*driver_file[\ \t][\ \t]*tag[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*ground[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*ground[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*ideal[\ \t][\ \t]*xcell[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*ignore[\ \t][\ \t]*capacitance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*ignore[\ \t][\ \t]*resistance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*include[\ \t][\ \t]*distributed[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*include[\ \t][\ \t]*lumped[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*indie[\ \t][\ \t]*spacing[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*default[\ \t][\ \t]*partial[\ \t][\ \t]*model[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*default[\ \t][\ \t]*pi[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*differential[\ \t][\ \t]*pair[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*doprocess[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*driver[\ \t][\ \t]*file[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*extract[\ \t][\ \t]*layers[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*filter[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*forward[\ \t][\ \t]*coupling[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*frequency[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*...[\ \t][\ \t]*frequency[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*micheck[\ \t][\ \t]*constraint[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*minlength[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*parameters[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*range[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*returnpath[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*same[\ \t][\ \t]*net[\ \t][\ \t]*mutual[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*self[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*skin[\ \t][\ \t]*include[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*switch[\ \t][\ \t]*time[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*switch_time[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*...[\ \t][\ \t]*switch[\ \t][\ \t]*time[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*...[\ \t][\ \t]*switch_time[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*victim[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*victim[\ \t][\ \t]*path[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*victim_path[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*victim[\ \t][\ \t]*file[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*inductance[\ \t][\ \t]*victim_file[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*magnify[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*adms[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*character[\ \t][\ \t]*map[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*connection[\ \t][\ \t]*section[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*create[\ \t][\ \t]*smashed[\ \t][\ \t]*device[\ \t][\ \t]*names[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*device[\ \t][\ \t]*resistance[\ \t][\ \t]*model[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*distributed[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*escape[\ \t][\ \t]*characters[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*global[\ \t][\ \t]*nets[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*lumped[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*mutual[\ \t][\ \t]*resistance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*noxref[\ \t][\ \t]*net[\ \t][\ \t]*names[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*position[\ \t][\ \t]*file[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*replicated_device[\ \t][\ \t]*delimiter[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*schematiconly[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*select[\ \t][\ \t]*file[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*simple[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*smashed_device[\ \t][\ \t]*delimiter[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*subnode[\ \t][\ \t]*section[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*unshort[\ \t][\ \t]*device[\ \t][\ \t]*pins[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*uppercase[\ \t][\ \t]*keywords[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*netlist[\ \t][\ \t]*virtual[\ \t][\ \t]*connect[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*pin[\ \t][\ \t]*order[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*power[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*probe[\ \t][\ \t]*file[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*analog[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*cc[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*digital[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*distributed[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*mincap[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*minres[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*ronly[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*ticer[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*reduce[\ \t][\ \t]*via[\ \t][\ \t]*resistance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*report[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*report[\ \t][\ \t]*coupling[\ \t][\ \t]*capacitance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*report[\ \t][\ \t]*distributed[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*report[\ \t][\ \t]*lumped[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*report[\ \t][\ \t]*mutual[\ \t][\ \t]*inductance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*report[\ \t][\ \t]*netsummary[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*report[\ \t][\ \t]*point2point[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*resistance[\ \t][\ \t]*parameters[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*sensitivity[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*skin[\ \t][\ \t]*include[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*slots[\ \t][\ \t]*handling[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*temperature[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*thickness[\ \t][\ \t]*eqn[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*thickness[\ \t][\ \t]*nominal[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*threshold[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*tolerance[\ \t][\ \t]*distributed[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*via[\ \t][\ \t]*capacitance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*via[\ \t][\ \t]*reduction[\ \t][\ \t]*resistance[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*xcell[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*xcell[\ \t][\ \t]*extract[\ \t][\ \t]*mode[\ \t][\ \t]*" +syn match calibreKeyword "pex[\ \t][\ \t]*xcell[\ \t][\ \t]*precedence[\ \t][\ \t]*" +syn match calibreKeyword "port[\ \t][\ \t]*depth[\ \t][\ \t]*" +syn match calibreKeyword "port[\ \t][\ \t]*layer[\ \t][\ \t]*polygon[\ \t][\ \t]*" +syn match calibreKeyword "port[\ \t][\ \t]*layer[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "push[\ \t][\ \t]*cell[\ \t][\ \t]*" +syn match calibreKeyword "rectangle[\ \t][\ \t]*enclosure[\ \t][\ \t]*" +syn match calibreKeyword "resistance[\ \t][\ \t]*connection[\ \t][\ \t]*" +syn match calibreKeyword "resistance[\ \t][\ \t]*device_seed[\ \t][\ \t]*" +syn match calibreKeyword "resistance[\ \t][\ \t]*rho[\ \t][\ \t]*" +syn match calibreKeyword "resistance[\ \t][\ \t]*sheet[\ \t][\ \t]*" +syn match calibreKeyword "snap[\ \t][\ \t]*offgrid[\ \t][\ \t]*" +syn match calibreKeyword "source[\ \t][\ \t]*case[\ \t][\ \t]*" +syn match calibreKeyword "source[\ \t][\ \t]*path[\ \t][\ \t]*" +syn match calibreKeyword "source[\ \t][\ \t]*primary[\ \t][\ \t]*" +syn match calibreKeyword "source[\ \t][\ \t]*system[\ \t][\ \t]*" +syn match calibreKeyword "svrf[\ \t][\ \t]*error[\ \t][\ \t]*" +syn match calibreKeyword "svrf[\ \t][\ \t]*message[\ \t][\ \t]*" +syn match calibreKeyword "svrf[\ \t][\ \t]*version[\ \t][\ \t]*" +syn match calibreKeyword "text[\ \t][\ \t]*depth[\ \t][\ \t]*" +syn match calibreKeyword "text[\ \t][\ \t]*layer[\ \t][\ \t]*" +syn match calibreKeyword "text[\ \t][\ \t]*print[\ \t][\ \t]*maximum[\ \t][\ \t]*" +syn match calibreKeyword "touch[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "touch[\ \t][\ \t]*inside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "touch[\ \t][\ \t]*outside[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "trace[\ \t][\ \t]*property[\ \t][\ \t]*" +syn match calibreKeyword "unit[\ \t][\ \t]*capacitance[\ \t][\ \t]*" +syn match calibreKeyword "unit[\ \t][\ \t]*inductance[\ \t][\ \t]*" +syn match calibreKeyword "unit[\ \t][\ \t]*length[\ \t][\ \t]*" +syn match calibreKeyword "unit[\ \t][\ \t]*resistance[\ \t][\ \t]*" +syn match calibreKeyword "unit[\ \t][\ \t]*time[\ \t][\ \t]*" +syn match calibreKeyword "virtual[\ \t][\ \t]*connect[\ \t][\ \t]*box[\ \t][\ \t]*colon[\ \t][\ \t]*" +syn match calibreKeyword "virtual[\ \t][\ \t]*connect[\ \t][\ \t]*box[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "virtual[\ \t][\ \t]*connect[\ \t][\ \t]*colon[\ \t][\ \t]*" +syn match calibreKeyword "virtual[\ \t][\ \t]*connect[\ \t][\ \t]*depth[\ \t][\ \t]*" +syn match calibreKeyword "virtual[\ \t][\ \t]*connect[\ \t][\ \t]*name[\ \t][\ \t]*" +syn match calibreKeyword "virtual[\ \t][\ \t]*connect[\ \t][\ \t]*report[\ \t][\ \t]*" +syn match calibreKeyword "virtual[\ \t][\ \t]*connect[\ \t][\ \t]*semicolon[\ \t][\ \t]*as[\ \t][\ \t]*colon[\ \t][\ \t]*" +syn match calibreKeyword "with[\ \t][\ \t]*edge[\ \t][\ \t]*" +syn match calibreKeyword "with[\ \t][\ \t]*neighbor[\ \t][\ \t]*" +syn match calibreKeyword "with[\ \t][\ \t]*text[\ \t][\ \t]*" +syn match calibreKeyword "with[\ \t][\ \t]*width[\ \t][\ \t]*" + +syn match calibreComment "//.*" +syn match calibreSpecialComment "@.*" +syn region calibreBlockComment start="/\*" end="\*/" + +syn match calibreRuleName "[^//].*{"he=e-1 +"Match Stings +"syn match calibreString /"[^"]*"/hs=s+1,he=e-1 +syn match calibreString /"[^"]*"/ +" Numbers, all with engineering suffixes and optional units +"========================================================== +"floating point number, with dot, optional exponent +syn match calibreNumber "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" +"floating point number, starting with a dot, optional exponent +syn match calibreNumber "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" +"integer number with optional exponent +syn match calibreNumber "\<[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" + +"syn match calibrePreProc "^#.*" +syn match calibrePreProc "#.*" + +"Modify the following as needed. The trade-off is performance versus +"functionality. +syn sync lines=50 + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_calibre_syn_inits") + if version < 508 + let did_calibre_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink calibreIdentifier Identifier + HiLink calibreStatement Statement + HiLink calibreKeyword Statement + HiLink calibreComment Comment + HiLink calibreBlockComment Comment + HiLink calibreSpecialComment SpecialComment + HiLink calibrePreProc PreProc + HiLink calibreString String + HiLink calibreNumber Number + HiLink calibreRuleName Structure + HiLink calibreDirective Question + + delcommand HiLink +endif + +let b:current_syntax = "calibre" + +" vim: ts=8 diff --git a/vim/vimrc b/vim/vimrc index 04c1d2c..5df0418 100755 --- a/vim/vimrc +++ b/vim/vimrc @@ -2,8 +2,14 @@ "source $VIMRUNTIME/mswin.vim "behave mswin -if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" - set fileencodings=utf-8,latin1 +if has("multi_byte") + if &termencoding == "" + let &termencoding = &encoding + endif + set encoding=utf-8 + setglobal fileencoding=utf-8 + "setglobal bomb + set fileencodings=ucs-bom,utf-8,latin1 endif set nocompatible " Use Vim defaults (much better!) @@ -15,7 +21,10 @@ set viminfo='20,\"50 " read/write a .viminfo file, don't store more set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time set tabstop=4 " make tabes to be equal to 4 space chars. -set shiftwidth=4 " for shifting by 4 when pressing tab. +set shiftwidth=4 " for indentation shift by 4 chars. +set noexpandtab " don't expand tabs. For MG devel/mg/.vimrc sets expandtab. +set softtabstop=4 " insert/ deletes 4 space chars. +set smarttab " insert/ space in front of line instead of tab. set fileformat=unix " line ending is unix set textwidth=80 " 80 char text let g:netrw_preview = 1 " netrw open window to the right @@ -38,6 +47,9 @@ endif if &t_Co > 2 || has("gui_running") syntax on set hlsearch + " + " This will turn on svrf highlighting + au BufRead,BufNewFile *.svrf set filetype=calibre endif " One such option is the 'hidden' option, which allows you to re-use the same @@ -52,8 +64,8 @@ if exists('&hidden') set hidden endif -" Instead of failing a command because of unsaved changes, instead raise a -" dialogue asking if you wish to save changed files. +" Instead of failing a command because of unsaved changes, raise a dialogue +" asking if you wish to save changed files. if exists('&confirm') set confirm endif @@ -83,9 +95,8 @@ if exists('&modeline') set modeline set modelines=10 endif -" + " Set fold method if supported -" if has('folding') set nofoldenable set foldmethod=indent "fold based on indent @@ -98,12 +109,17 @@ if has('folding') autocmd FileType cpp setlocal foldmethod=syntax endif endif -" -" P4 -" -command! -nargs=* PFedit :!p4 edit % -command! -nargs=* PFrevert :!p4 revert % -command! -nargs=* PFdiff :!p4 diff % + +" Unset expandtab for make files in any case. +if has('autocmd') + autocmd FileType make setlocal noexpandtab +endif + +" Set expandtab for python files in any case. +if has('autocmd') + autocmd FileType python setlocal expandtab +endif + " Only do this part when compiled with support for autocommands. if has("autocmd") @@ -169,6 +185,13 @@ function MyDiff() silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq endfunction +" Don't let vim be too smart. +set formatoptions=cql +" +" P4 +command! -nargs=* PFedit :!p4 edit % +command! -nargs=* PFrevert :!p4 revert % +command! -nargs=* PFdiff :!p4 diff % " " Loads CF5Compile " Compile and run file if Ctrl-F5 is pressed. @@ -205,13 +228,11 @@ nnoremap td :tabclose if has("gui_running") colors darkblue " set color scheme - "set guifont=FreeMono:h12 set lines=50 set columns=85 - set encoding=utf-8 - "set fileencodings=utf-8 if has("win32") || has("win64") - set guifont=Courier\ AM:h12 + set guifont=FreeMono:h14:cANSI + "set guifont=Courier\ AM:h12 endif