スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Vim:makeとQuickFixとerrorformat

Vimには「:make」と「QuickFix」が標準であります。
なので、それらと設定を使ってやるとコーディングに役に立つよ!っていうお話です。

用意するもの


Modelsim ASE 10.0c
errormarker.vim
quickfixstatus

実行


Vimでは標準のCompilerプラグインとして「modelsim_vcom」がありますが、最新だとerrorformatが異なっているみたいです。なので、こちらで作ってみました。

○modelsim_vsim.vim(.vim/compiler/配下に置きます)
 1 " Vim Compiler File
 2 " Compiler: Modelsim Vsim
 3 
 4 if exists("current_compiler")
 5   finish
 6 endif
 7 let current_compiler = "modelsim_vsim"
 8 
 9 if exists(":CompilerSet") != 2      " older Vim always used :setlocal
10   command -nargs=* CompilerSet setlocal <args>
11 endif
12 
13 CompilerSet errorformat=\#\ \*\*\ %tRROR:\ \(vsim\-%*[0-9]\)%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

○サンプルソース(sample.v)
 1 // SystemVerilog test_module
 2 module test(
 3   in_a,
 4   in_b,
 5   in_c,
 6   out
 7   );
 8   input  [7:0] in_a;
 9   input  [7:0] in_b;
10   input  [7:0] in_c;
11   output [7:0] out;
12 
13   reg [7:0] out;
14 
15   //always_comb begin
16   always @(*) begin
17      out = in_a + in_b + in_c;
18   end
19 
20 endmodule
21 
22 // TestBench
23 module testbench();
24 
25   reg[7:0]  tb_a = 0;
26   reg[7:0]  tb_b = 0;
27   reg[7:0]  tb_c = 0;
28   reg[7:0]  tb_out;
29   // wire[7:0] tb_out;
30 
31   test DUT(
32     .in_a(tb_a),
33     .in_b(tb_b),
34     .in_c(tb_c),
35     .out(tb_out)
36   );
37 
38   initial begin
39     #100 tb_a = tb_a + 1; tb_c = tb_c + 1; $display("out=%d", tb_out);
40     #100 tb_a = tb_a + 1; tb_c = tb_c + 1; $display("out=%d", tb_out);
41     #100 tb_a = tb_a + 1; tb_c = tb_c + 1; $display("out=%d", tb_out);
42     #100 tb_c = tb_c + 1; $display("out=%d", tb_out);
43     #100 tb_c = tb_c + 1; $display("out=%d", tb_out);
44     #100 tb_c = tb_c + 1; $display("out=%d", tb_out);
45     $finish();
46   end
47 
48 endmodule

sample.vをVimで開いた状態で、
「:compiler modelsim_vsim」→「:make」とやると、
実行されて以下のエラーが発生します。(※Makefileは自分で用意してください)

続けて、Enterを押すとソースに戻って以下のように表示されます。


というような感じで、ソースに対して該当箇所を知らせてくれます。
vim-hierでも表示可能なので、試してみても面白いかもです。
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。