急救医生rush美剧:用UEstudio配置Verilog?HDL的IDE

来源:百度文库 编辑:偶看新闻 时间:2024/04/27 22:34:21
用UEstudio配置Verilog HDL的IDE
今天进行了一项创举!仿照网上将Ultraedit做成Java、C等编译环境的做法,结合帮助文档,将UEstudio配置成Verilog HDL的简单的集成编译环境。希望日后工作可以比较方便。
原料:(1)UEstudio,一个包含Ultraedit的集成编辑环境,功能比Ultraeidt强大一些;(2)Modelsim,Verilog HDL的常用仿真软件。
做法:(1)作为一种语言的编辑器,关键字的高亮显色是最重要的,这一点比较容易做到。在网上有专门的爱好者将各类语言的关键字做好归类,只需要将你要的语言部分拷入UEstudio的安装目录下的wordfile.txt下即可。
(2)根据个人爱好,我希望我的Verilog HDL编辑器可以有代码折叠功能。由于Verilog HDL的块一般是以begin和end作为开始和结束的标记,其作用相当于C语言的大括号。在wordfile.txt的对应语言中添加进如下代码即可:
/Open Fold Strings = "begin""case"
/Close Fold Strings = "end""endcase"
这里除了begin和end可以进行折叠外,另外一对case和endcase同样可以完成折叠,同样的方法可以添加你需要的折叠标志。
(3)UEstudio中有函数列表功能,在C/C++语言中,可以智能的显示出函数名。Verilog HDL是以模块(module)为单位的,而且一般一个文件只含有一个module。因此显示module名并不非常有用。我将其改成变量列表,显示出module中的各个变量,这还是比较有用的。UEstudio的函数列表判断是通过其专门的正则表达式实现的,具体可以参照帮助文档。经过了一个小时的研读,发现了其基本的语法,添加了如下两行代码。在Verilog HDL文件中就能显示出wire和reg类型的变量列表了。之所以不用input、output和inout作为类型,是因为很多时候有中间变量,这样会遗漏。另外由于正则表达式比较复杂,至今能实现的只能是没个变量单独定义的情况,如wire clk;如果是连续定义,如reg Q1,Q2;则不能进行判断。
/Function String = "%wire+[ ^t0-9:^[^]]+[ ^t]+^([a-zA-Z_0-9]+^);"
/Function String 1 = "%reg+[ ^t0-9:^[^]]+[ ^t]+^([a-zA-Z_0-9]+^);"
(4)自动缩进功能。同样在wordfile.txt中,有控制自动缩进的语法。所谓自动缩进就是指,输入begin回车,下一行自动加一个tab;输入end,下一行自动退回一个tab。用户可以自己添加不同的缩进词实现自动缩进。如:
/Indent Strings = "begin""case""fork" "if" "else"
/Unindent Strings = "end""endcase""join" "else"
(5)加入Modelsim仿真环境。UEstudio给用户留下了相当多的外部程序接口。比较常见的编程语言可以直接将编译器链接到UE里面去,但是似乎没有verilogHDL。我这里利用了modelsim仿真工具的命令,实现了一个对verilogHDL的编译功能。因为modelsim的编译语句vlog是一个exe文件,可以在dos命令行中执行(当然需要在path中添加路径)。命令为vlog + *.v。用户需要做的是在某个固定的地方先用modelsim建一个project,在porject中建立一个库,以后用上面命令编译出来的文件就都编译到这个库里面了。这时候,只需要在UE中的高级->工具配置里面进行的配置就可以,例如:
命令行:vlog %p%n%e      //分别代表当前文件的路径,文件名和扩展名
工作目录:%p                   //当前modelsim的project中work文件夹所在路径
菜单项名称:在Modelsim中编译    //显示在菜单中的项
然后再在捕捉窗口中打上勾,编译的信息就会显示在UE中了。
这个时候,你只需要按这个菜单项,就能完成verilogHDL文件的语法检查和编译功能。在输出窗口中你能看到你的Error和warning,双击之可以马上跳转到报错位置,非常方便。这样就可以实现不用打开工具即完成语法检错的功能,完全在UE中实现。假如需要用modelsim进行仿真的话,运行modelsim,在work库里面就能发现你在UE中编译得到的文件,双击testbench项,就可以进入波形仿真阶段了,非常方便好用。
(6)目前正在探索ctag功能,以求做到比函数列表更加的效果
以上只是我根据自己的喜好进行的一些配置,欢迎交流以达到更好的效果。