使用vim直接同时编译vhdl和verilog
vhdl又用到了verilog,编译时发现,我需要去修改vimrc中的set makprg。每当编译vhdl时,我就要改为vcom,编译verilog,我就要修改为vlog。相当不方便。所以还是研究了一下,做了个函数,使之可以辨别文件的类型了。
今天编代码的时候既用到了
修改后相关部分放到下面:
1 "建立一个库
2 nmap <F6> <Esc>:!vlib work<CR>
3
4 "编译一个vhd/v文件
5 nmap <silent> <F7> :ModSimComp<cr><cr>
6
7 "------------------------------------------------------------------------------
8 "Function : Model_Sim_Compile()
9 "Description : Compile with ModelSim
10 "------------------------------------------------------------------------------
11 function Model_Sim_Compile()
12 let l:file_type_temp = expand("%:e")
13 if l:file_type_temp == "vhd"
14 set makeprg=vcom\ -work\ work\ %
15 execute ':make'
16 execute ':cw'
17 else
18 if l:file_type_temp == "v"
19 set makeprg=vlog\ -work\ work\ %
20 execute ':make'
21 execute ':cw'
22 else
23 echohl ErrorMsg
24 echo "This filetype can't be compiled by modelsim vcom/vlog!"
25 echohl None
26 endif
27 endif
28 endfunction
29
30 "set error format
31 set errorformat=\*\*\ %tRROR:\ %f(%l):\ %m,\*\*\ %tRROR:\ %m,\*\*\ %tARNING:\ %m,\*\*\ %tOTE:\ %m,%tRROR:\ %f(%l):\ %m,%tARNING\[%*[0-9]\]:\ %f(%l):\ %m,%tRROR:\ %m,%tARNING\[%*[0-9]\]:\ %m
set errorformat=\*\*\ %tRROR:\ %f(%l):\ %m,\*\*\ %tRROR:\ %m,\*\*\ %tARNING:\ %m,\*\*\ %tOTE:\ %m,%tRROR:\ %f(%l):\ %m,%tARNING\[%*[0-9]\]:\ %f(%l):\ %m,%tRROR:\ %m,%tARNING\[%*[0-9]\]:\ %m
做了一个函数,调用函数Model_Sim_Compile()就可以编译vhdl和verilog了,很方便。
错误识别都是通过modelsim产生的,所以是相同的。