使用vim直接同时编译vhdl和verilog

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产生的,所以是相同的。

你可能感兴趣的:(使用vim直接同时编译vhdl和verilog)