zoukankan      html  css  js  c++  java
  • UltarEdit 支持Verilog的语法高亮和自动缩进

      这些天一直苦于没有一个很好的verilog 编辑工具,最近才看到UltraEdit添加一些文件可以做到,所以就搜了网上一些文章,搞定了。

      其实很简单,安装好UltraEdit后去官网上下载一个文件就ok了,链接如下:http://www.ultraedit.com/files/wf/verilog2001.uew(后来在我的使用过程中发现官网上的这个文件可能用问题,后来在网上搜了一个比较好一点的,贴在下面(见附),里面的设置很全面)我用的是verilog2001,官网上还有一个verilog.uew,不过不知道他们有什么区别。将网页内容全选,拷贝到一个文件里,后缀名改为.uew(如verilog2001.uew)。让后放到C:\Documents and Settings\SUN\Application Data\IDMComp\UltraEdit\wordfiles(注意:这里不是放到ue的安装文件夹中,你可以把C:\Documents and Settings\SUN\Application Data\IDMComp\UltraEdit\wordfiles 这个拷贝到你的地址栏中打开,记得给一下用户名,将SUN改为你自己电脑的用户名),然后就可以了。

      补充:

      在.uew 文件中有一个行显示/L20,这是由于ue默认支持20种语法,这个20可以改,只要你保证他是你目前C:\Documents and Settings\SUN\Application Data\IDMComp\UltraEdit\wordfiles 这个文件夹里面所有的文件的/L*中最大的一个数字即可(我的是/14,因为我其他所有的文件最大的是/13)。

    1:加入折叠功能

      由于Verilog HDL的块一般是以begin和end作为开始和结束的标记,其作用相当于C语言的大括号。在wordfile.txt的对应语言中添加进如下代码即可:

      /Open Fold Strings = "begin""case"

      /Close Fold Strings = "end""endcase"

      这里除了begin和end可以进行折叠外,另外一对case和endcase同样可以完成折叠,同样的方法可以添加你需要的折叠标志。

    2:加入自动缩进功能

      同样在wordfile.txt中,有控制自动缩进的语法。所谓自动缩进就是指,输入begin回车,下一行自动加一个tab;输入end,下一行自动退回一个tab。用户可以自己添加不同的缩进词实现自动缩进。如:

      /Indent Strings = "begin""case""fork" "if" "else"

      /Unindent Strings = "end""endcase""join" "else"

    3: 还可以加入其它一些自定义功能,如函数调用功能,大家可以自己摸索。

    附:(原文地址:http://hi.baidu.com/rabbitfff/blog/item/d78e0fad1601f1004a36d617.html

    /L14"Verilog 1364-2001" Line Comment = // Block Comment On = /* Block Comment Off = */ Block Comment On Alt = (* Block Comment Off Alt = *) String Chars = " File Extensions = V VL VMD
    /Delimiters = ~!@%^&*()-+=|\/{}[]:;"<> ,    
    /Function String = "%[ ^t]++^(config[ ^t^p]+[a-zA-Z0-9_]+^)"
    /Function String 1 = "%[ ^t]++^(module[ ^t^p]+[a-zA-Z0-9_]+^)[ ^t^p]++[(;#]"
    /Function String 2 = "%[ ^t]++^(task[ ^t^p]+[~(;]+^)[ ^t^p]++[(;#]"
    /Function String 3 = "%[ ^t]++^(function[ ^t^p]+[~(;]+^)[ ^t^p]++[(;#]"
    /Function String 4 = "%[ ^t]++^(primitive[ ^t^p]+[~(;]+^)[ ^t^p]++[(;#]"
    /Function String 5 = "begin[ ^t^p]++^(:[ ^t^p]++[a-zA-Z0-9_]+^)"
    /Indent Strings = "begin" "case" "fork" "specify" "table" "config"
    /Unindent Strings = "end" "endcase" "join" "endspecify" "endtable" "endconfig"
    /Open Fold Strings = "module" "task" "function" "generate" "primitive" "begin" "case" "fork" "specify" "table" "config" "`ifdef"
    /Close Fold Strings = "endmodule" "endtask" "endfunction" "endgenerate" "endprimitive" "end" "endcase" "join" "endspecify" "endtable" "endconfig" "`endif"

    /C1"Keywords"
    always and assign automatic
    begin buf bufif0 bufif1
    case casex casez cell cmos config
    deassign default defparam design disable
    edge else end endcase endconfig endmodule endfunction endgenerate endprimitive endspecify endtable endtask event
    for force forever fork function
    generate genvar
    highz0 highz1
    if ifnone initial inout input instance integer
    join
    large liblist library localparam
    macromodule medium module
    nand negedge nmos none nor noshowcancelled not notif0 notif1
    or output
    parameter pulsestyle_onevent pulsestyle_ondetect pmos posedge primitive pull0 pull1 pullup pulldown
    real realtime reg release repeat rcmos rnmos rpmos rtran rtranif0 rtanif1
    scalared showcancelled signed small specify specparam strength strong0 strong1 supply0 supply1
    table task time tran tranif0 tranif1 tri tri1 tri0 triand trior trireg
    use
    vectored
    wait wand weak0 weak1 while wire wor
    xnor xor

    /C2"System"
    ** .
    ** 'b 'B 'o 'O 'd 'D 'h 'H 'sb 'sB 'so 'sO 'sd 'sD 'sh 'sH 'Sb 'SB 'So 'SO 'Sd 'SD 'Sh 'SH
    ** $
    $async$and$array $async$and$plane $async$nand$array $async$nand$plane $async$nor$array $async$nor$plane $async$or$array $async$or$plane
    $bitstoreal
    $countdrivers
    $display $displayb $displayh $displayo
    $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform
    $dumpall $dumpfile $dumpflush $dumplimit $dumpoff $dumpon $dumpportsall $dumpportsflush $dumpportslimit $dumpportsoff $dumpportson $dumpvars
    $fclose $fdisplayh $fdisplay $fdisplayf $fdisplayb $ferror $fflush $fgetc $fgets $finish $fmonitorb $fmonitor $fmonitorf $fmonitorh $fopen $fread $fscanf $fseek $fsscanf $fstrobe $fstrobebb $fstrobef $fstrobeh $ftel $fullskew $fwriteb $fwritef $fwriteh $fwrite
    $getpattern
    $history $hold
    $incsave $input $itor
    $key
    $list $log
    $monitorb $monitorh $monitoroff $monitoron $monitor $monitoro
    $nochange $nokey $nolog
    $period $printtimescale
    $q_add $q_exam $q_full $q_initialize $q_remove
    $random $readmemb $readmemh $realtime $realtobits $recovery $recrem $removal $reset_count $reset $reset_value $restart $rewind $rtoi
    $save $scale $scope $sdf_annotate $setup $setuphold $sformat $showscopes $showvariables $showvars $signed $skew $sreadmemb $sreadmemh $stime $stop $strobeb $strobe $strobeh $strobeo $swriteb $swriteh $swriteo $swrite $sync$and$array $sync$and$plane $sync$nand$array $sync$nand$plane $sync$nor$array $sync$nor$plane $sync$or$array $sync$or$plane
    $test$plusargs $time $timeformat $timeskew
    $ungetc $unsigned
    $value$plusargs
    $width $writeb $writeh $write $writeo

    /C3"Operators"
    !
    %
    &
    *
    +
    ,
    -
    // /
    :
    ;
    <
    =
    >
    ?
    @
    ^
    {
    |
    }
    ~

    /C4"Directives"
    ** `
    `accelerate `autoexepand_vectornets
    `celldefine
    `default_nettype `define `default_decay_time `default_trireg_strength `delay_mode_distributed `delay_mode_path `delay_mode_unit `delay_mode_zero
    `else `elsif `endcelldefine `endif `endprotect `endprotected `expand_vectornets
    `file
    `ifdef `ifndef `include
    `line
    `noaccelerate `noexpand_vectornets `noremove_gatenames `noremove_netnames `nounconnected_drive
    `protect `protected
    `remove_gatenames `remove_netnames `resetall
    `timescale
    `unconnected_drive `undef `uselib

    /C5"DelaysParametersEscaped"
    #
    ** \

  • 相关阅读:
    【亲测有效】安装npm慢的解决方案
    设置redis开机自动启动
    win10开启redis失败解决方案
    ajax跨域问题
    python进程不能并行的原因,进程阻塞
    python多进程并行代码
    python多进程间通信
    orangepi自启动打开一个终端并且运行脚本
    lxterminal命令打开新窗口并执行python脚本
    orangepi获取cpu温度
  • 原文地址:https://www.cnblogs.com/jianyungsun/p/1896765.html
Copyright © 2011-2022 走看看