vhdl又用到了verilog,编译时发现,我需要去修改vimrc中的set makprg。每当编译vhdl时,我就要改为vcom,编译verilog,我就要修改为vlog。相当不方便。所以还是研究了一下,做了个函数,使之可以辨别文件的类型了。
今天编代码的时候既用到了
修改后相关部分放到下面:
"建立一个库
nmap <F6> <Esc>:!vlib work<CR>
"编译一个vhd/v文件
nmap <silent> <F7> :ModSimComp<cr><cr>
"------------------------------------------------------------------------------
"Function : Model_Sim_Compile()
"Description : Compile with ModelSim
"------------------------------------------------------------------------------
function Model_Sim_Compile()
let l:file_type_temp = expand("%:e")
if l:file_type_temp == "vhd"
set makeprg=vcom\ -work\ work\ %
execute ':make'
execute ':cw'
else
if l:file_type_temp == "v"
set makeprg=vlog\ -work\ work\ %
execute ':make'
execute ':cw'
else
echohl ErrorMsg
echo "This filetype can't be compiled by modelsim vcom/vlog!"
echohl None
endif
endif
endfunction
"set error format
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产生的,所以是相同的。