笔者主要用UltraEdit写Verilog HDL代码,尝试过Vim,用的比较生疏没坚持下来;尝试过Notepad+,Sublime Text 3,都感觉一般,其实主要原因还是用UE习惯了,产生了些许情怀。现在官方最新版v23,相比于v22,界面上就改头换面了:
↓ v23加入了Ribbon,微软套件即视感呀
v23版,笔者简单试用过几天,这一版沿用了之前版本的所有功能,另外加入可以自动隐藏的功能区(ribbon)让这版在界面上感觉更简洁,更易用。但是,现在笔者用的还是v22版本,这是为什么呢?因为v23把“拖拽分割窗口”这个功能给阉割了,在官方论坛上有讨论这个话题的,确定是因为专利问题导致的阉割。 如下图是v22版界面,分割了两个编辑窗口才是王道,无法双窗口显示,这个笔者无法忍的。
↓ 当前笔者v22版的布局:左边栏 “工程文件视图”和“函数列表”;上边 菜单栏和工具栏;中间两列“代码编辑窗口”;右边栏 “模板列表”和“剪贴板历史”。
好了,言归正传,回到本文的话题,这篇笔者给大家介绍“函数列表” -- 基于UltraEdit v22.20.0.37,Verilog HDL
UltraEdit没有自带Verilog HDL的语法高亮,需要从官网下载Verilog HDL的wordfiles,这边献上链接:
http://www.ultraedit.com/downloads/extras/wordfiles.html
导入wordfiles后语法高亮,代码看着就舒服多了,另外把视角转到“函数列表”,如下图,就简单显示了当前代码中包含的module名,略显简单了,如果能显示input/output,或者当前例化的模块,是不是很完美,所以笔者萌生了配置“函数列表”的想法。
在“函数列表”中右键然后点击“配置”即可打开配置界面,在正则表达式匹配组中显示几个匹配项:config, module, task, function, primitive和begin…end。都是Verilog HDL的几个关键字,如果想匹配input/output, 按照正则表达式语法和Verilog HDL语法匹配即可。
由于笔者之前没有正则表达式的基础,所以简单现学了一下,官网也有相关在UltraEdit中使用正则表达式的介绍:
http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/regular_expressions.html
↓ 所有正则表达式中符号的含义
然后根据现有的正则表达式组中的项目进行学习,比如
module: %[ ^t]++^(module[ ^t^p]+[a-zA-Z0-9_]+^)[ ^t^p]++[(;#]
% |
表示匹配行首 |
[ ^t]++ |
表示匹配空格和TAB;其中[] 匹配方括号中的任一字符, ++ 表示至少匹配了的一个字符或者未匹配任一字符 |
^(^) |
表示显示其中的包含字符串 |
module[ ^t^p]+ |
表示必须匹配module +空格或者TAB或者回车的组合 |
[a-zA-Z0-9_]+ |
表示必须至少匹配 大小写字母 或者 数字 或者 下划线 中的一个字符 |
[(;#] |
表示必须至少匹配 ( 或者 ; 或者 # 中的一个字符 |
所以很容易理解,涵盖了以下所有情况:
1. module example (
2. module example (
3. module example #
4. module example #
现在笔者添加显示了:
input |
%[ ^t]++^(input[ ^t]+[\[]++[a-zA-Z0-9_]++[-0-9]++[:]++[a-zA-Z0-9_]++[]]++[ ^t]++^([a-zA-Z0-9_]+^)[ ^t]++[;] |
output |
%[ ^t]++^(output[ ^t]+[\[]++[a-zA-Z0-9_]++[-0-9]++[:]++[a-zA-Z0-9_]++[]]++[ ^t]++^([a-zA-Z0-9_]+^)[ ^t]++[;] |
parameter |
%[ ^t]++^(parameter[ ^t]+[a-zA-Z0-9_]+^)[ ^t]++[=] |
模块例化 |
%[ ^t]++^([a-zA-Z0-9_]+[ ^t^p]+[a-zA-Z0-9_]+^)[ ^t^p]++[(]+[ ^t^p]++[.] |
↓ 来张效果图,大家随意感受下吧
用户1849754 2016-4-28 08:17