dvteclipse工具,提供了對(duì)代碼預(yù)處理的功能。
官網(wǎng)上,也對(duì)代碼預(yù)處理進(jìn)行了介紹:
https://www.dvteclipse.com/documentation/sv/Preprocessed_Files_Support.html
這里,以使用ep3命令對(duì)代碼進(jìn)行預(yù)處理為例,進(jìn)行說明。
工程結(jié)構(gòu)如下:
test.svp: 需要使用ep3命令預(yù)處理的源文件
test.sv: 使用ep3命令轉(zhuǎn)換之后的文件
Makefile: 使用ep3命令預(yù)處理test.svp文件
dvt的代碼預(yù)處理,關(guān)鍵是 default.build 的文件編寫
file: default.build +dvt_pverilog_ext_map+.svp=.sv +dvt_pverilog_ext_path_map+./=./ +dvt_pverilog_run_on_save+"ep3" +dvt_init+dvt test.sv |
-
dvt_pverilog_ext_map:指示預(yù)處理之前文件后綴和預(yù)處理之后文件后綴
-
dvt_pverilog_ext_path_map: 指示預(yù)處理文件位置和預(yù)處理之后文件位置,工具會(huì)自動(dòng)將2個(gè)目錄下的同名文件但不同文件后綴,進(jìn)行對(duì)應(yīng)
-
dvt_pverilog_run_on_save: 指示當(dāng)預(yù)處理文件保存時(shí),指定執(zhí)行的run
配置好default.build文件后,重新build工程。打開預(yù)處理文件,需要文件右鍵,選擇Open With->PVerilog Language Editor。
如果沒有這個(gè)選項(xiàng),選擇Other,在界面中選擇PVerilog Language Editor。
此時(shí)test.svp的代碼區(qū)域,變成下面的界面,在左下角,有[p],[g],Compare。分別表示源文件,生成文件,文件比較。
生成文件界面:
比較界面:
此時(shí),對(duì)源文件進(jìn)行修改,左下角,選擇[p]test.svp,切換到源文件。修改后保存,就會(huì)自動(dòng)運(yùn)行設(shè)置的run-ep3,在default.build中配置的run,從而對(duì)源文件進(jìn)行預(yù)處理,生成新的文件。
ep3這個(gè)run,其實(shí)就是執(zhí)行make命令。
以上,就是dvt的文件預(yù)處理介紹,其實(shí)就是配置run參數(shù),然后對(duì)于預(yù)處理文件,自動(dòng)運(yùn)行該run,得到生成文件,然后工具將源文件和生成文件,進(jìn)行對(duì)應(yīng)。
以上的run參數(shù),寫得比較簡單。源文件和生成文件均在同一個(gè)目錄,而且文件是固定的,如果文件不是固定的,并且源文件和生成文件不是在同一個(gè)目錄,就需要寫比較復(fù)雜的run參數(shù)。
如以下的run參數(shù)。能將dvt中選中的文件,自動(dòng)預(yù)處理,生成到指定的位置去。能夠識(shí)別.svp, vfp, vp三種待預(yù)處理文件。
#!/bin/tcsh set src_root = `dirname ${selected_resource_loc}` set gen_root = `echo $src_root | sed "s#$PROJ_SRC_ROOT#$PROJ_GEN_ROOT" set svp_file = ${selected_resource_name} set file_exten = `echo $svp_file |awk-F"."'{print $NF}'` if ( $file_exten == "svp" ) then set sv_file = `basename $svp_file .svp`.sv else if ( $file_exten == "vfp" ) then set sv_file = `basename $svp_file .vfp`.vf else set sv_file = `basename $svp_file .vp`.v endif ep3 $src_root/$svp_file -noprotect > $gen_root/$sv_file emacs --no-site-file --batch -l verilog-mode.el $gen_root/$sv_file -f remove-pound -f verilog-auto -f save-buffer |
-
${selected_resource_loc}: dvt的內(nèi)建變量,選中文件的絕對(duì)路徑
-
${selected_resource_name}: dvt的內(nèi)建變量,選中文件的文件名
首先得到源文件目錄和生成文件目錄,提取文件后綴,判斷源文件類型,然后調(diào)用ep3命令,在使用emacd的verilog-mode插件,對(duì)源文件進(jìn)行預(yù)處理。
這樣,每當(dāng)源文件保存的時(shí)候,就會(huì)自動(dòng)觸發(fā)該run,對(duì)源文件進(jìn)行預(yù)處理,得到目的文件。
原文標(biāo)題:【精品博文】dvteclipse代碼預(yù)處理(六)
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論