<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************************-->
<!-- $Id: systemverilog.xml 10 2009-06-25 03:41:39Z seanoboyle $            -->
<!--***********************************************************************-->
<!--  This program is free software: you can redistribute it and/or modify -->
<!--  it under the terms of the GNU General Public License as published by -->
<!--  the Free Software Foundation, either version 3 of the License, or    -->
<!--  (at your option) any later version.                                  -->
<!--                                                                       -->
<!--  This program is distributed in the hope that it will be useful,      -->
<!--  but WITHOUT ANY WARRANTY; without even the implied warranty of       -->
<!--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        -->
<!--  GNU General Public License for more details.                         -->
<!--                                                                       -->
<!--  You should have received a copy of the GNU General Public License    -->
<!--  along with this program.  If not, see <http://www.gnu.org/licenses/>.-->
<!--                                                                       -->
<!--***********************************************************************-->
<!-- Title:        SystemVerilog Language Keywords File for Kate Editor    -->
<!-- Description:  This file contains the SV keywords defined in the       -->
<!--               IEEE1800-2009 Draft Standard in the format expected by  -->
<!--               the Kate Editor.                                        -->
<!--                                                                       -->
<!-- Original Author: Sean O'Boyle                                         -->
<!-- Contact:         seanoboyle@intelligentdv.com                         -->
<!-- Company:         Intelligent Design Verification                      -->
<!-- Company URL:     http://intelligentdv.com                             -->
<!--                                                                       -->
<!-- Download the most recent version here:                                -->
<!--                  http://intelligentdv.com/downloads                   -->
<!--                                                                       -->
<!-- File Bugs Here:  http://bugs.intelligentdv.com                        -->
<!--        Project:  SyntaxFiles                                          -->
<!--                                                                       -->
<!-- File: systemverilog.xml                                               -->
<!-- $LastChangedBy: seanoboyle $                                          -->
<!-- $LastChangedDate: 2009-06-24 20:41:39 -0700 (Wed, 24 Jun 2009) $      -->
<!-- $LastChangedRevision: 10 $                                             -->
<!--                                                                       -->
<!--***********************************************************************-->
<!DOCTYPE language SYSTEM "language.dtd">
<language name="SystemVerilog" version="2" kateversion="2.4" section="Hardware" extensions="*.sv;*.svh" mimetype="text/x-systemverilog-src" author="Sean O'Boyle (seanoboyle@intelligentdv.com)" license="GPL">
  <highlighting>
    <list name="key_deprecated">
       <item> defparam </item>
       <item> deassign </item>
    </list>

    <list name="key_dpi">
       <item> DPI </item>
       <item> DPI-C </item>
       <item> import </item>
       <item> export </item>
       <item> context </item>
    </list>

    <list name="key_assert">
       <item> assert </item>
       <item> assume </item>
       <item> cover </item>
       <item> expect </item>
       <item> disable </item>
       <item> iff </item>
       <item> binsof </item>
       <item> intersect </item>
       <item> first_match </item>
       <item> throughout </item>
       <item> within </item>
    </list>

    <list name="key_coverage">
       <item> coverpoint </item>
       <item> cross </item>
       <item> wildcard </item>
       <item> bins </item>
       <item> ignore_bins </item>
       <item> illegal_bins </item>
    </list>

    <list name="key_generator">
       <item> genvar </item>
    </list>

    <list name="key_conditional">
       <item> if </item>
       <item> else </item>
       <item> unique </item>
       <item> priority </item>
       <item> matches </item>
    </list>

    <list name="key_case">
       <item> default </item>
    </list>

    <list name="key_loop">
       <item> forever </item>
       <item> repeat </item>
       <item> while </item>
       <item> for </item>
       <item> do </item>
       <item> foreach </item>
       <item> break </item>
       <item> continue </item>
       <item> return </item>
    </list>

    <list name="key_specify">
       <item> pulsestyle_onevent </item>
       <item> pulsestyle_ondetect </item>
       <item> noshowcancelled </item>
       <item> showcancelled </item>
       <item> ifnone </item>
    </list>

    <list name="key_procblock">
       <item> initial </item>
       <item> final </item>
       <item> always </item>
       <item> always_comb </item>
       <item> always_ff </item>
       <item> always_latch </item>
    </list>

    <list name="key_contassign">
       <item> alias </item>
       <item> assign </item>
       <item> force </item>
       <item> release </item>
    </list>

    <list name="key_event">
       <item> posedge </item>
       <item> negedge </item>
       <item> edge </item>
       <item> wait </item>
       <item> wait_order </item>
    </list>

    <list name="key_time">
       <item> timeunit </item>
       <item> timeprecision </item>
       <item> s </item>
       <item> ms </item>
       <item> ns </item>
       <item> us </item>
       <item> ns </item>
       <item> ps </item>
       <item> fs </item>
       <item> step </item>
    </list>

    <list name="key_class">
       <item> new </item>
       <item> extends </item>
       <item> this </item>
       <item> super </item>
       <item> protected </item>
       <item> local </item>
       <item> rand </item>
       <item> randc </item>
       <item> bind </item>
    </list>

    <list name="key_constraint">
       <item> constraint </item>
       <item> solve </item>
       <item> before </item>
       <item> dist </item>
       <item> inside </item>
       <item> with </item>
    </list>

    <list name="key_methods">
       <item> virtual </item>
       <item> pure </item>
       <item> extern </item>
       <item> forkjoin </item>
    </list>

    <list name="key_config">
       <item> design </item>
       <item> instance </item>
       <item> cell </item>
       <item> liblist </item>
       <item> use </item>
    </list>

    <list name="key_library">
       <item> library </item>
       <item> incdir </item>
       <item> include </item>
    </list>

    <list name="key_interface">
       <item> modport </item>
    </list>

    <list name="key_checker">
        <item> sync_accept_on </item>
        <item> reject_on </item>
        <item> accept_on </item>
        <item> sync_reject_on </item>
        <item> restrict </item>
        <item> let </item>
        <item> until </item>
        <item> until_with </item>
        <item> unique0 </item>
        <item> eventually </item>
        <item> s_until </item>
        <item> s_always </item>
        <item> s_eventually </item>
        <item> s_nexttime </item>
        <item> s_until_with </item>
        <item> global </item>
        <item> untyped </item>
        <item> implies </item>
        <item> weak </item>
        <item> strong </item>
        <item> nexttime </item>
    </list>

    <list name="key_types">
       <!-- parameters -->
       <item> parameter </item>
       <item> localparam </item>
       <item> specparam </item>
       <!-- port direction -->
       <item> input </item>
       <item> output </item>
       <item> inout </item>
       <item> ref </item>
       <!-- integer atom type -->
       <item> byte </item>
       <item> shortint </item>
       <item> int </item>
       <item> integer </item>
       <item> longint </item>
       <item> time </item>
       <!-- integer vector type -->
       <item> bit </item>
       <item> logic </item>
       <item> reg </item>
       <!-- net type -->
       <item> supply0 </item>
       <item> supply1 </item>
       <item> tri </item>
       <item> triand </item>
       <item> trior </item>
       <item> trireg </item>
       <item> tri0 </item>
       <item> tri1 </item>
       <item> wire </item>
       <item> uwire </item>
       <item> wand </item>
       <item> wor </item>
       <!-- signing -->
       <item> signed </item>
       <item> unsigned </item>
       <!-- noninteger type -->
       <item> shortreal </item>
       <item> real </item>
       <item> realtime </item>
       <!-- type reference -->
       <item> type </item>
       <item> void </item>
       <!-- struct union -->
       <item> struct </item>
       <item> union </item>
       <item> tagged </item>
       <!-- modifier -->
       <item> const </item>
       <item> var </item>
       <item> automatic </item>
       <item> static </item>
       <item> packed </item>
       <item> vectored </item>
       <item> scalared </item>
       <!-- other types -->
       <item> typedef </item>
       <item> enum </item>
       <item> string </item>
       <item> chandle </item>
       <item> event </item>
       <!-- misc -->
       <item> null </item>
    </list>

    <list name="key_preprocessor">
        <item> `__FILE__ </item>
        <item> `__LINE__ </item>
        <item> `begin_keywords </item>
        <item> `celldefine </item>
        <item> `default_nettype </item>
        <item> `define </item>
        <item> `else </item>
        <item> `elsif </item>
        <item> `end_keywords </item>
        <item> `endcelldefine </item>
        <item> `endif </item>
        <item> `ifdef </item>
        <item> `ifndef </item>
        <item> `include </item>
        <item> `line </item>
        <item> `nounconnected_drive </item>
        <item> `pragma </item>
        <item> `resetall </item>
        <item> `timescale </item>
        <item> `unconnected_drive </item>
        <item> `undef </item>
        <item> `undefineall </item>
    </list>

    <list name="key_system">
        <item> $finish </item>
        <item> $stop </item>
        <item> $exit </item>
        <item> $realtime </item>
        <item> $stime </item>
        <item> $time </item>
        <item> $printtimescale </item>
        <item> $timeformat </item>
        <item> $bitstoreal </item>
        <item> $realtobits </item>
        <item> $bitstoshortreal </item>
        <item> $shortrealtobits </item>
        <item> $itor </item>
        <item> $rtoi </item>
        <item> $signed </item>
        <item> $unsigned </item>
        <item> $cast </item>
        <item> $bits </item>
        <item> $isunbounded </item>
        <item> $typename </item>
        <item> $unpacked_dimensions </item>
        <item> $dimensions </item>
        <item> $left </item>
        <item> $right </item>
        <item> $low </item>
        <item> $high </item>
        <item> $increment </item>
        <item> $size </item>
        <item> $clog2 </item>
        <item> $asin </item>
        <item> $ln </item>
        <item> $acos </item>
        <item> $log10 </item>
        <item> $atan </item>
        <item> $exp </item>
        <item> $atan2 </item>
        <item> $sqrt </item>
        <item> $hypot </item>
        <item> $pow </item>
        <item> $sinh </item>
        <item> $floor </item>
        <item> $cosh </item>
        <item> $ceil </item>
        <item> $tanh </item>
        <item> $sin </item>
        <item> $asinh </item>
        <item> $cos </item>
        <item> $acosh </item>
        <item> $tan </item>
        <item> $atanh </item>
        <item> $fatal </item>
        <item> $error </item>
        <item> $warning </item>
        <item> $info </item>
        <item> $fatal </item>
        <item> $error </item>
        <item> $warning </item>
        <item> $info </item>
        <item> $asserton </item>
        <item> $assertoff </item>
        <item> $assertkill </item>
        <item> $assertpasson </item>
        <item> $assertpassoff </item>
        <item> $assertfailon </item>
        <item> $assertfailoff </item>
        <item> $assertnonvacuouson </item>
        <item> $assertvacuousoff </item>
        <item> $onehot </item>
        <item> $onehot0 </item>
        <item> $isunknown </item>
        <item> $sampled </item>
        <item> $rose </item>
        <item> $fell </item>
        <item> $stable </item>
        <item> $changed </item>
        <item> $past </item>
        <item> $countones </item>
        <item> $past_gclk </item>
        <item> $rose_gclk </item>
        <item> $fell_gclk </item>
        <item> $stable_gclk </item>
        <item> $changed_gclk </item>
        <item> $future_gclk </item>
        <item> $rising_gclk </item>
        <item> $falling_gclk </item>
        <item> $steady_gclk </item>
        <item> $changing_gclk </item>
        <item> $coverage_control </item>
        <item> $coverage_get_max </item>
        <item> $coverage_get </item>
        <item> $coverage_merge </item>
        <item> $coverage_save </item>
        <item> $get_coverage </item>
        <item> $set_coverage_db_name </item>
        <item> $load_coverage_db </item>
        <item> $random </item>
        <item> $dist_chi_square </item>
        <item> $dist_erlang </item>
        <item> $dist_exponential </item>
        <item> $dist_normal </item>
        <item> $dist_poisson </item>
        <item> $dist_t </item>
        <item> $dist_uniform </item>
        <item> $q_initialize </item>
        <item> $q_add </item>
        <item> $q_remove </item>
        <item> $q_full </item>
        <item> $q_exam </item>
        <item> $async$and$array </item>
        <item> $async$and$plane </item>
        <item> $async$nand$array </item>
        <item> $async$nand$plane </item>
        <item> $async$or$array </item>
        <item> $async$or$plane </item>
        <item> $async$nor$array </item>
        <item> $async$nor$plane </item>
        <item> $sync$and$array </item>
        <item> $sync$and$plane </item>
        <item> $sync$nand$array </item>
        <item> $sync$nand$plane </item>
        <item> $sync$or$array </item>
        <item> $sync$or$plane </item>
        <item> $sync$nor$array </item>
        <item> $sync$nor$plane </item>
        <item> $system </item>
        <item> $display </item>
        <item> $write </item>
        <item> $displayb </item>
        <item> $writeb </item>
        <item> $displayh </item>
        <item> $writeh </item>
        <item> $displayo </item>
        <item> $writeo </item>
        <item> $strobe </item>
        <item> $monitor </item>
        <item> $strobeb </item>
        <item> $monitorb </item>
        <item> $strobeh </item>
        <item> $monitorh </item>
        <item> $strobeo </item>
        <item> $monitoro </item>
        <item> $monitoroff </item>
        <item> $monitoron </item>
        <item> $fclose </item>
        <item> $fopen </item>
        <item> $fdisplay </item>
        <item> $fwrite </item>
        <item> $fdisplayb </item>
        <item> $fwriteb </item>
        <item> $fdisplayh </item>
        <item> $fwriteh </item>
        <item> $fdisplayo </item>
        <item> $fwriteo </item>
        <item> $fstrobe </item>
        <item> $fmonitor </item>
        <item> $fstrobeb </item>
        <item> $fmonitorb </item>
        <item> $fstrobeh </item>
        <item> $fmonitorh </item>
        <item> $fstrobeo </item>
        <item> $fmonitoro </item>
        <item> $swrite </item>
        <item> $sformat </item>
        <item> $swriteb </item>
        <item> $sformatf </item>
        <item> $swriteh </item>
        <item> $fgetc </item>
        <item> $swriteo </item>
        <item> $ungetc </item>
        <item> $fscanf </item>
        <item> $fgets </item>
        <item> $fread </item>
        <item> $sscanf </item>
        <item> $fseek </item>
        <item> $rewind </item>
        <item> $fflush </item>
        <item> $ftell </item>
        <item> $feof </item>
        <item> $ferror </item>
        <item> $readmemb </item>
        <item> $readmemh </item>
        <item> $writememb </item>
        <item> $writememh </item>
        <item> $test$plusargs </item>
        <item> $value$plusargs </item>
        <item> $dumpfile </item>
        <item> $dumpvars </item>
        <item> $dumpoff </item>
        <item> $dumpon </item>
        <item> $dumpall </item>
        <item> $dumplimit </item>
        <item> $dumpflush </item>
        <item> $dumpports </item>
        <item> $dumpportsoff </item>
        <item> $dumpportson </item>
        <item> $dumpportsall </item>
        <item> $dumpportslimit </item>
        <item> $dumpportsflush </item>
    </list>

    <list name="key_gates">
       <item> pullup </item>
       <item> pulldown </item>
       <item> cmos </item>
       <item> rcmos </item>
       <item> nmos </item>
       <item> pmos </item>
       <item> rnmos </item>
       <item> rpmos </item>
       <item> and </item>
       <item> nand </item>
       <item> or </item>
       <item> nor </item>
       <item> xor </item>
       <item> xnor </item>
       <item> not </item>
       <item> buf </item>
       <item> tran </item>
       <item> rtran </item>
       <item> tranif0 </item>
       <item> tranif1 </item>
       <item> rtranif0 </item>
       <item> rtranif1 </item>
       <item> bufif0 </item>
       <item> bufif1 </item>
       <item> notif0 </item>
       <item> notif1 </item>
    </list>

    <list name="key_strength">
       <!-- drive strength -->
       <item> strong0 </item>
       <item> strong1 </item>
       <item> pull0 </item>
       <item> pull1 </item>
       <item> weak0 </item>
       <item> weak1 </item>
       <item> highz0 </item>
       <item> highz1 </item>
       <!-- charge strength -->
       <item> small </item>
       <item> medium </item>
       <item> large </item>
    </list>
    <list name="key_stdlib">
       <item> randomize </item>
       <item> mailbox </item>
       <item> semaphore </item>
       <item> put </item>
       <item> get </item>
       <item> try_put </item>
       <item> try_get </item>
       <item> peek </item>
       <item> try_peek </item>
       <item> process </item>
       <item> state </item>
       <item> self </item>
       <item> status </item>
       <item> kill </item>
       <item> await </item>
       <item> suspend </item>
       <item> resume </item>
       <!-- Array -->
       <item> size </item>
       <item> delete </item>
       <item> insert </item>
       <item> num </item>
       <item> first </item>
       <item> last </item>
       <item> next </item>
       <item> prev </item>
       <item> pop_front </item>
       <item> pop_back </item>
       <item> push_front </item>
       <item> push_back </item>
       <item> find </item>
       <item> find_index </item>
       <item> find_first </item>
       <item> find_last </item>
       <item> find_last_index </item>
       <item> min </item>
       <item> max </item>
       <item> unique_index </item>
       <item> reverse </item>
       <item> sort </item>
       <item> rsort </item>
       <item> shuffle </item>
       <item> sum </item>
       <item> product </item>
       <!-- List_pkg -->
       <item> List </item>
       <item> List_Iterator </item>
       <item> neq </item>
       <item> eq </item>
       <item> data </item>
       <item> empty </item>
       <item> front </item>
       <item> back </item>
       <item> start </item>
       <item> finish </item>
       <item> insert_range </item>
       <item> erase </item>
       <item> erase_range </item>
       <item> set </item>
       <item> swap </item>
       <item> clear </item>
       <item> purge </item>
    </list>

    <list name="begin">
       <item>begin</item>
    </list>
    <list name="end">
       <item>end</item>
    </list>
    <list name="package">
       <item> package </item>
    </list>
    <list name="endpackage">
       <item> endpackage </item>
    </list>
    <list name="macromodule">
       <item> macromodule </item>
    </list>
    <list name="module">
       <item> module </item>
    </list>
    <list name="endmodule">
       <item> endmodule </item>
    </list>
    <list name="generate">
       <item> generate </item>
    </list>
    <list name="endgenerate">
       <item> endgenerate </item>
    </list>
    <list name="program">
       <item> program </item>
    </list>
    <list name="endprogram">
       <item> endprogram </item>
    </list>
    <list name="class">
       <item> class </item>
    </list>
    <list name="endclass">
       <item> endclass </item>
    </list>
    <list name="function">
       <item> function </item>
    </list>
    <list name="endfunction">
       <item> endfunction </item>
    </list>
    <list name="case">
       <item> case </item>
    </list>
    <list name="casex">
       <item> casex </item>
    </list>
    <list name="casez">
       <item> casez </item>
    </list>
    <list name="randcase">
       <item> randcase </item>
    </list>
    <list name="endcase">
       <item> endcase </item>
    </list>
    <list name="interface">
       <item> interface </item>
    </list>
    <list name="endinterface">
       <item> endinterface </item>
    </list>
    <list name="clocking">
       <item> clocking </item>
    </list>
    <list name="endclocking">
       <item> endclocking </item>
    </list>
    <list name="task">
       <item> task </item>
    </list>
    <list name="endtask">
       <item> endtask </item>
    </list>
    <list name="primitive">
       <item> primitive </item>
    </list>
    <list name="endprimitive">
       <item> endprimitive </item>
    </list>
    <list name="fork">
       <item> fork </item>
    </list>
    <list name="join">
       <item> join </item>
    </list>
    <list name="join_any">
       <item> join_any </item>
    </list>
    <list name="join_none">
       <item> join_none </item>
    </list>
    <list name="covergroup">
       <item> covergroup </item>
    </list>
    <list name="endgroup">
       <item> endgroup </item>
    </list>
    <list name="checker">
       <item> checker </item>
    </list>
    <list name="endchecker">
       <item> endchecker </item>
    </list>
    <list name="property">
       <item> property </item>
    </list>
    <list name="endproperty">
       <item> endproperty </item>
    </list>
    <list name="randsequence">
       <item> randsequence </item>
    </list>
    <list name="sequence">
       <item> sequence </item>
    </list>
    <list name="endsequence">
       <item> endsequence </item>
    </list>
    <list name="specify">
       <item> specify </item>
    </list>
    <list name="endspecify">
       <item> endspecify </item>
    </list>
    <list name="config">
       <item> config </item>
    </list>
    <list name="endconfig">
       <item> endconfig </item>
    </list>
    <list name="table">
       <item> table </item>
    </list>
    <list name="endtable">
       <item> endtable </item>
    </list>
    <list name="extern">
       <item> extern </item>
    </list>
    <list name="pure">
       <item> pure </item>
    </list>
    <list name="typedef">
       <item> typedef </item>
    </list>
    <list name="import">
       <item> import </item>
    </list>


    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
        <RegExpr attribute="Block Keyword" context="Block Name" String="begin\ *:" beginRegion="beginEnd"/>
        <keyword attribute="Method Keyword" context="Extern Context" String="extern"/>
        <keyword attribute="Method Keyword" context="Extern Context" String="pure"/>
        <keyword attribute="Method Keyword" context="Extern Context" String="import"/>
        <keyword attribute="Type Keyword" context="Typedef Context" String="typedef"/>
        <keyword attribute="Block Keyword" context="#stay" String="begin" beginRegion="beginEnd"/>
        <keyword attribute="Block Keyword" context="#stay" String="end" endRegion="beginEnd"/>
        <keyword attribute="Block Keyword" context="#stay" String="package" beginRegion="packageEndpackage"/>
        <keyword attribute="Block Keyword" context="#stay" String="endpackage" endRegion="packageEndpackage"/>
        <keyword attribute="Block Keyword" context="#stay" String="macromodule" beginRegion="moduleEndmodule"/>
        <keyword attribute="Block Keyword" context="#stay" String="module" beginRegion="moduleEndmodule"/>
        <keyword attribute="Block Keyword" context="#stay" String="endmodule" endRegion="moduleEndmodule"/>
        <keyword attribute="Block Keyword" context="#stay" String="generate" beginRegion="generateEndgenerate"/>
        <keyword attribute="Block Keyword" context="#stay" String="endgenerate" endRegion="generateEndgenerate"/>
        <keyword attribute="Block Keyword" context="#stay" String="program" beginRegion="programEndprogram"/>
        <keyword attribute="Block Keyword" context="#stay" String="endprogram" endRegion="programEndprogram"/>
        <keyword attribute="Block Keyword" context="#stay" String="class" beginRegion="classEndclass"/>
        <keyword attribute="Block Keyword" context="#stay" String="endclass" endRegion="classEndclass"/>
        <keyword attribute="Block Keyword" context="#stay" String="function" beginRegion="functionEndfunction"/>
        <keyword attribute="Block Keyword" context="#stay" String="endfunction" endRegion="functionEndfunction"/>
        <keyword attribute="Block Keyword" context="#stay" String="case" beginRegion="caseEndcase"/>
        <keyword attribute="Block Keyword" context="#stay" String="casex" beginRegion="caseEndcase"/>
        <keyword attribute="Block Keyword" context="#stay" String="casez" beginRegion="caseEndcase"/>
        <keyword attribute="Block Keyword" context="#stay" String="randcase" beginRegion="caseEndcase"/>
        <keyword attribute="Block Keyword" context="#stay" String="endcase" endRegion="caseEndcase"/>
        <keyword attribute="Block Keyword" context="#stay" String="interface" beginRegion="interfaceEndinterface"/>
        <keyword attribute="Block Keyword" context="#stay" String="endinterface" endRegion="interfaceEndinterface"/>
        <keyword attribute="Block Keyword" context="#stay" String="clocking" beginRegion="clockingEndclocking"/>
        <keyword attribute="Block Keyword" context="#stay" String="endclocking" endRegion="clockingEndclocking"/>
        <keyword attribute="Block Keyword" context="#stay" String="task" beginRegion="taskEndtask"/>
        <keyword attribute="Block Keyword" context="#stay" String="endtask" endRegion="taskEndtask"/>
        <keyword attribute="Block Keyword" context="#stay" String="primitive" beginRegion="primitiveEndprimitive"/>
        <keyword attribute="Block Keyword" context="#stay" String="endprimitive" endRegion="primitiveEndprimitive"/>
        <keyword attribute="Block Keyword" context="#stay" String="fork" beginRegion="forkJoin"/>
        <keyword attribute="Block Keyword" context="#stay" String="join" endRegion="forkJoin"/>
        <keyword attribute="Block Keyword" context="#stay" String="join_any" endRegion="forkJoin"/>
        <keyword attribute="Block Keyword" context="#stay" String="join_none" endRegion="forkJoin"/>
        <keyword attribute="Block Keyword" context="#stay" String="covergroup" beginRegion="covergroupEndgroup"/>
        <keyword attribute="Block Keyword" context="#stay" String="endgroup" endRegion="covergroupEndgroup"/>
        <keyword attribute="Block Keyword" context="#stay" String="checker" beginRegion="checkerEndchecker"/>
        <keyword attribute="Block Keyword" context="#stay" String="endchecker" endRegion="checkerEndchecker"/>
        <keyword attribute="Block Keyword" context="#stay" String="property" beginRegion="propertyEndproperty"/>
        <keyword attribute="Block Keyword" context="#stay" String="endproperty" endRegion="propertyEndproperty"/>
        <keyword attribute="Block Keyword" context="#stay" String="randsequence" beginRegion="sequenceEndsequence"/>
        <keyword attribute="Block Keyword" context="#stay" String="sequence" beginRegion="sequenceEndsequence"/>
        <keyword attribute="Block Keyword" context="#stay" String="endsequence" endRegion="sequenceEndsequence"/>
        <keyword attribute="Block Keyword" context="#stay" String="specify" beginRegion="specifyEndspecify"/>
        <keyword attribute="Block Keyword" context="#stay" String="endspecify" endRegion="specifyEndspecify"/>
        <keyword attribute="Block Keyword" context="#stay" String="config" beginRegion="configEndconfig"/>
        <keyword attribute="Block Keyword" context="#stay" String="endconfig" endRegion="configEndconfig"/>
        <keyword attribute="Block Keyword" context="#stay" String="table" beginRegion="tableEndtable"/>
        <keyword attribute="Block Keyword" context="#stay" String="endtable" endRegion="tableEndtable"/>
        <keyword attribute="Deprecated Keyword" context="#stay" String="key_deprecated"/>
        <keyword attribute="DPI Keyword" context="#stay" String="key_dpi"/>
        <keyword attribute="Assert Keyword" context="#stay" String="key_assert"/>
        <keyword attribute="Coverage Keyword" context="#stay" String="key_coverage"/>
        <keyword attribute="Generator Keyword" context="#stay" String="key_generator"/>
        <keyword attribute="Confitional Keyword" context="#stay" String="key_conditional"/>
        <keyword attribute="Case Keyword" context="#stay" String="key_case"/>
        <keyword attribute="Loop Keyword" context="#stay" String="key_loop"/>
        <keyword attribute="Specify Keyword" context="#stay" String="key_specify"/>
        <keyword attribute="Process Block Keyword" context="#stay" String="key_procblock"/>
        <keyword attribute="Continuous Assign Keyword" context="#stay" String="key_contassign"/>
        <keyword attribute="Event Keyword" context="#stay" String="key_event"/>
        <keyword attribute="Time Keyword" context="#stay" String="key_time"/>
        <keyword attribute="Class Keyword" context="#stay" String="key_class"/>
        <keyword attribute="Constraint Keyword" context="#stay" String="key_constraint"/>
        <keyword attribute="Method Keyword" context="#stay" String="key_methods"/>
        <keyword attribute="Config Keyword" context="#stay" String="key_config"/>
        <keyword attribute="Library Keyword" context="#stay" String="key_library"/>
        <keyword attribute="Interface Keyword" context="#stay" String="key_interface"/>
        <keyword attribute="Checker Keyword" context="#stay" String="key_checker"/>
        <keyword attribute="Type Keyword" context="#stay" String="key_types"/>
        <keyword attribute="Preprocessor Keyword" context="#stay" String="key_preprocessor"/>
        <keyword attribute="System Task Keyword" context="#stay" String="key_system"/>
        <keyword attribute="Data Type Keyword" context="#stay" String="key_types"/>
        <keyword attribute="Drive/Charge Strength Keyword" context="#stay" String="key_strength"/>
        <keyword attribute="Gate Instantiation Keyword" context="#stay" String="key_gates"/>
        <keyword attribute="Standard Library" context="#stay" String="key_stdlib"/>

        <RegExpr attribute="Decimal" context="#stay" String="[\d_]*'d[\d_]+"/>
        <RegExpr attribute="Octal" context="#stay" String="[\d_]*'o[0-7xXzZ_]+"/>
        <RegExpr attribute="Hex" context="#stay" String="[\d_]*'h[\da-fA-FxXzZ_]+"/>
        <RegExpr attribute="Binary" context="#stay" String="[\d_]*'b[01_zZxX]+"/>
        <Float attribute="Float" context="#stay"/>
        <Int attribute="Integer" context="#stay"/>

        <RegExpr attribute="Port Connection" context="#stay" String="[^\w$]\.[a-zA-Z]+[\w$]*"/>

        <DetectChar attribute="String" context="String" char="&quot;"/>
        <IncludeRules context="##Doxygen" />
        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
        <AnyChar attribute="Symbol" context="#stay" String="!%&amp;()+,-&lt;=+/:;&gt;?[]^{|}~@"/>

        <DetectChar attribute="Preprocessor" context="Preprocessor" char="`" column="0"/>
        <RegExpr attribute="Preprocessor" context="#stay" String="\`[a-zA-Z_]+\w*" />
        <RegExpr attribute="PLI Task" context="#stay" String="\$[a-zA-Z_]+\w*"/>
        <RegExpr attribute="Delay" context="#stay" String="#[\d_]+"/>
      </context>
      <context attribute="Extern Context" lineEndContext="#pop" name="Extern Context">
         <keyword attribute="Method Keyword" context="#stay" String="key_methods"/>
         <keyword attribute="DPI Keyword" context="#stay" String="key_dpi"/>
         <keyword attribute="Class Keyword" context="#stay" String="key_class"/>
	      <keyword attribute="Constraint Keyword" context="#stay" String="key_constraint"/>
         <keyword attribute="Block Keyword" context="#pop" String="function"/>
         <keyword attribute="Block Keyword" context="#pop" String="task"/>
      </context>
      <context attribute="Typedef Context" lineEndContext="#pop" name="Typedef Context">
         <keyword attribute="Block Keyword" context="#pop" String="class"/>
         <keyword attribute="Type Keyword" context="#pop" String="key_types"/>
         <keyword attribute="Interface Keyword" context="#pop" String="key_interface"/>
         <keyword attribute="Checker Keyword" context="#pop" String="key_checker"/>
      </context>
      <context attribute="String" lineEndContext="#pop" name="String">
        <LineContinue attribute="String" context="#stay"/>
        <HlCStringChar attribute="String Char" context="#stay"/>
        <DetectChar attribute="String" context="#pop" char="&quot;"/>
      </context>

      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
        <LineContinue attribute="Comment" context="#stay"/>
        <DetectSpaces />
        <IncludeRules context="##Alerts" />
        <DetectIdentifier />
      </context>

      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
        <DetectSpaces />
        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
        <IncludeRules context="##Alerts" />
        <DetectIdentifier />
      </context>
     
      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
        <LineContinue attribute="Preprocessor" context="#stay"/>
        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
        <IncludeRules context="##Doxygen" />
        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />

        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
      </context>

      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
        <LineContinue attribute="Preprocessor" context="#stay"/>
      </context>

      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
        <DetectSpaces />
        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
        <DetectIdentifier />
      </context>

      <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
        <DetectSpaces />
        <IncludeRules context="##Alerts" />
        <DetectIdentifier />
        <DetectChar attribute="String" context="String" char="&quot;"/>
        <IncludeRules context="##Doxygen" />
        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
      </context>

      <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
        <DetectSpaces />
        <IncludeRules context="##Alerts" />
        <DetectIdentifier />
        <DetectChar attribute="String" context="String" char="&quot;"/>
        <IncludeRules context="##Doxygen" />
        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
        <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
      </context>
      
      <context attribute="Block Name" lineEndContext="#pop" name="Block Name">
          <RegExpr attribute="Data Type Keyword" context="#pop" String="[^ ]+"/>
      </context>
    </contexts>

    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal"/>
      <itemData name="Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Block Keyword" defStyleNum="dsKeyword"/>
      <itemData name="DPI Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Assert Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Coverage Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Generator Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Confitional Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Case Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Loop Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Specify Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Process Block Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Continuous Assign Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Event Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Time Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Class Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Constraint Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Method Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Config Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Library Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Interface Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Checker Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Type Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Preprocessor Keyword" defStyleNum="dsOthers"/>
      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
      <itemData name="System Task Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Data Type Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Drive/Charge Strength Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Gate Instantiation Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Data Type Keyword" defStyleNum="dsDataType"/>
      <itemData name="Decimal" defStyleNum="dsBaseN"/>
      <itemData name="Octal" defStyleNum="dsBaseN"/>
      <itemData name="Hex" defStyleNum="dsBaseN"/>
      <itemData name="Binary" defStyleNum="dsBaseN"/>
      <itemData name="Float" defStyleNum="dsFloat"/>
      <itemData name="String" defStyleNum="dsString"/>
      <itemData name="String Char" defStyleNum="dsChar"/>
      <itemData name="Comment" defStyleNum="dsComment"/>
      <itemData name="Deprecated Keyword" defStyleNum="dsError"/>
      <itemData name="Symbol" defStyleNum="dsNormal"/>
      <itemData name="Preprocessor Keyword" defStyleNum="dsOthers"/>
      <itemData name="Prep. Lib" defStyleNum="dsFloat"/>
      <itemData name="PLI Task" defStyleNum="dsDataType"/>
      <itemData name="System Task Keyword" defStyleNum="dsDataType"/>
      <itemData name="Integer" defStyleNum="dsDecVal"/>
      <itemData name="Delay" defStyleNum="dsBaseN"/>
      <itemData name="Block Name" defStyleNum="dsDataType"/>
      <itemData name="Drive/Charge Strength Keyword" defStyleNum="dsBaseN"/>
      <itemData name="Gate Instantiation Keyword" defStyleNum="dsDataType"/>
      <itemData name="Port Connection" defStyleNum="dsDataType"/>
      <itemData name="Standard Library" defStyleNum="dsOthers"/>
      </itemDatas>
  </highlighting>
  <general>
    <comments>
      <comment name="singleLine" start="//" />
      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
    </comments>
    <keywords casesensitive="1"/>
  </general>
</language>