vim插件:vhdl插件

今年开始使用vhdl语言,发现vhdl的插件非常少,自己平时用起来很不方便。
自己在使用vim的同时,不断在vimrc中增加自己想要的功能,慢慢的发现写了快1000行了,不如做成一个插件拿出来和大家分享。
我觉得做一个vhdl的插件还是有必要的,平时需要进行的机械的操作还是很多,最常见的是component或者生成一个testbench文件。要是每次一点点输入,那是非常麻烦的。
我找很多verilog的插件,有的功能非常强大,但是vhdl可以说是基本没有,由此可见verilog还是比vhdl应用的广泛的多。

安装插件:

解压到vim的plugin文件夹中即可。

下面是该插件的功能描述:

1 建立一个编译库 create a library <F6>
modesim在编译前需在当前目录下建立一个库

2 编译文件 compile file <F7>
快速编译文件,检查是否有语法错误。这在写程序的时候将十分方便,不用再打开modesim了。
如果出错会调用quickfix窗口显示错误,无错误则不显示。

3 在文件的开头加入文件信息。 Add File Header
大概信息如下:

复制代码
  
  
1 --------------------------------------------------------------------------------- 2 -- Created by : Vorx Ltd.com 3 -- Filename        : 4 -- Author : ChenYong 5 -- Created On : 2010 - 12 - 24 14 : 50 6 -- Last Modified : 7 -- Version : v1. 0 8 -- Description : 9 -- 10 -- 11 ---------------------------------------------------------------------------------
复制代码

每次保存(:w)将自动更新最后修改时间(Last Modified)。
另外:
在vhdl文件中:加入了库声明,不用再每次建立文件都辛辛苦苦去敲那4行了(直到现在,我都没记住那4行具体内容)。
在verilog文件中:加入了`timescale 的定义,默认为`timescale 1ns / 1ps,如果要修改,可以在vimrc中设置:
let g:Verilog_Timescale = "1ns / 1ps"
可以在vimrc中修改作者名字和公司名字
let g:HDL_Author = "Gigi" "默认值是我的名字
let g:HDL_Company = "ABC" "默认值为空

3 插入功能说明 Add Content
在光标位置插入三行注释,用来添加模块的说明

4  生成进程模块 Process Build
这个function是修改自某verilog插件。
需要在信号后面加入标注,例如:

复制代码
  
  
verilog: input clk; // clock input rst; // reset or : reg clk; // clock reg rst; // reset vhdl: port ( clk : std_logic ; -- clock rst : std_logic -- reset ) or : signal clk : std_logic ; -- clock signal rst : std_logic ; -- reset
复制代码

这个功能并不好用,最近也一直都没进行更新。建议使用snipMate。

5  vhdl/Verilog的模块声明 VHDL Entity Build
vhdl模块声明时写的字比较多,所以使用此命令还比较方便的。
该命令执行时会弹出一个窗口用来输入entity的名字。architecture名字默认为arc。

6  创建本模块的component信息 VHDL component Build
运行命令后,建立一个新的分割窗口来显示component信息。
同时component信息加入剪贴板。
窗口的分割方式有3种:
当g:RightB_Commponent未定义时,即默认为水平分割
当g:RightB_Commponent = 1 右侧垂直分割
当g:RightB_Commponent = 0 左侧垂直分割
水平分割时,可以设置component窗口高度,默认为25:
let g:Height_of_Component = "25"
垂直分割时,可以设置component窗口的宽度,默认为70
let g:Width_of_Component = "70"

7 为vhdl模块创建一个可在verilog里例化的instant Verilog Instant for Vhdl
为了配合verilog和vhdl混用,实现了这个模块。实现方式和6相似。

8  为vhdl/verilog生成一个testbench Vhdl Testbench /Verilog Testbench  
模块完成后,需要用一个简单的testbench进行测试,但每次测试都去建立testbench文档实在太麻烦了,尤其是例化部分。
如果能一个命令或一个按键就生成testbench那就方便多了,Xilinx ISE中便有这个功能。于是仿照ISE,完成了这个功能。
命令执行后,会在当前文件夹下建立testbench文档,名字为:tb_xxxx.vhd或tb_xxxx.v,其中xxxx为测试模块名字。
并将testbench文档用水平分割显示,便于和原文档进行对比和修改。
鉴于用verilog做测试的异常强大,增加了verilog testbench。
关于testbench的时钟:
时钟名字默认为clk,自动检测文件中时钟的功能还没有做,以后可能会更新。
时钟默认为64ns / 15.625MHz,如果需要修改,在vimrc中设置:
let g:HDL_Clock_Period = 64

  2.1版本加入了对verilog的支持。

9 加入对Debussy的快速添加。

10 新加入了快速设置signal的功能。默认快捷键<leader>,

更新记录:
v1.0 创建插件,实现编译,加入注释,文件头等功能
v1.1 加入函数HDL_Component_Build() 可以实现垂直分割窗口
生成component信息
v1.2 加入函数Tb_Build() 可以为vhdl模块生成testbench文档
v1.3 1 生成进程的命令改为:ProBuild
2 加入函数HDL_Tb_Build(type) 函数
代替函数Tb_Build()
修改了testbench文档的生成方式
功能:可以生成vhdl模块的vhdl testbench或者 verilog testbench
3 修改了HDL_Component_Build()函数
修改了component的生成方式
4 代码风格做了一些修改
5 修改了光标位置
v1.4 修改了HDL_Tb_Build(type)函数 使生成的component按原信号顺序排列
v1.5 加入菜单
v1.6 优化程序
v1.7 HDL_Component_Build可以用变量定义选择instant窗口的方式
不定义 g:HDL_RightB_Commponent 则水平分割打开
g:HDL_RightB_Commponent = 1 原文件右侧垂直打开
g:HDL_RightB_Commponent = 0 原文件左侧垂直打开
v1.8 修改了一些错误
v1.9 1 修改了HDL_Add_File_Information()和HDL_Add_Content()函数
2 加入变量g:HDL_Author g:HDL_Company g:HDL_Verilog_Timescale
可以在vimrc中添加设置,例如:
let g:HDL_Company = "Vorx"
let g:HDL_Author = "ChenYong"
let g:HDL_Verilog_Timescale = " 1ns / 1ns"
3 加入generic部分 使可识别generic
4 加入g:HDL_Clock_Period 时钟周期可设置,默认为64
let g:HDL_Clock_Period = 64
5 暂时不支持一行多个port
6 菜单中加入compile file 默认快捷键为<F7>
7 菜单中加入vlib work 默认快捷键为<F6>
需要安装modelsim。windows下需设置环境变量PATH=$ModelSim\win32
v2.0 现在可以支持同一行多个port了
v2.1 支持inout端口
支持verilog模块,可为verilog模块生成testbench和instant
v2.2 加入格式整理的功能。

支持component,entity,signal,instant模块。
尽量使“:,=>”符号对齐。例如:
component bufg
port( i : in std_logic;
o : out std_logic
);
end component;
整理后为:
component bufg
port(
i : in std_logic;
o : out std_logic
);
end component;

整理前会先进行编译。

对于较大的文件可能时间会有3-4秒延迟(indent操作比较费时间)。

变量名字超过16个字符将不留空格。如:
cak_ram_char_ch14: out std_logic_vector(1 downto 0)
v2.3 加入了一个添加signal的函数,感谢作者sunil shukla。
我仅修改了一下正则匹配方式和标志"begin"的查找方式。
设定快捷键"<leader>,"。
光标要停留在未定义的signal上。
会询问signal长度。
很好用。
Fixed Some Bugs.
Redifined The function name.
v2.4 Fixed Some Bugs.
v2.5 修复函数HDL_Signal_Dec_Vhdl()的bug:如果有component的端口名和signal
相同,就会提示"signal already define".

   下载地址

http://www.vim.org/scripts/script.php?script_id=3420

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值