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"
#
** \

posted @ 2010-12-05 09:26  HelloSUN  阅读(10768)  评论(0编辑  收藏  举报