スポンサーサイト

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

[Tools] ModelSim-ASEで .v と .svのシミュレーション

多分出来ると思っていたのだけど、やってなかったので試した。

.v - VerilogHDL
.sv - SystemVerilog

のことです。

  • SystemVerilog側(sample.sv)
  •  1|module testbench;
     2|
     3|  bit clk     = 0;
     4|  bit reset_n = 1;
     5|  bit[3:0] indata  = 0;
     6|  bit[3:0] outdata;
     7|
     8|  hoge uhoge(.*);
     9|
    10|  always #10 clk = ~clk;
    11|
    12|  initial begin
    13|    #3;  reset_n = 0;
    14|    #20; reset_n = 1;
    15|  end
    16|
    17|  initial begin
    18|    @(posedge reset_n);
    19|    @(posedge clk);
    20|    #1; indata++; $display("indata = %2d, outdata = %2d at %3t", indata, outdata, $time);
    21|    @(posedge clk);
    22|    #1; indata++; $display("indata = %2d, outdata = %2d at %3t", indata, outdata, $time);
    23|    @(posedge clk);
    24|    #1; indata++; $display("indata = %2d, outdata = %2d at %3t", indata, outdata, $time);
    25|    @(posedge clk);
    26|    #1; indata++; $display("indata = %2d, outdata = %2d at %3t", indata, outdata, $time);
    27|    #100;
    28|    $finish;
    29|  end
    30|
    31|endmodule
  • VerilogHDL側(hoge.v)
  •  1|module hoge(
     2|  input        clk,
     3|  input        reset_n,
     4|  input  [3:0] indata,
     5|  output [3:0] outdata
     6|);
     7|
     8|  reg [3:0] r_data;
     9|
    10|  always @(posedge clk or negedge reset_n) begin
    11|    if(!reset_n) r_data <= {4{1'b0}};
    12|    else         r_data <= r_data + indata;
    13|  end
    14|
    15|  assign outdata = r_data;
    16|
    17|endmodule
  • Makefile
  •  2|RTL=sample.sv
     3|
     4|run: work compile sim
     5|
     6|work:
     7|    vlib work
     8|
     9|compile:
    10|    vlog ${RTL}
    11|    vlog hoge.v
    12|
    13|sim:
    14|    vsim -c -L work testbench -do "./run.do"
    15|
    16|clean:
    17|    rm -rf work transcript vsim.wlf
    18|
  • run.do
  • view wave
    add wave *
    run -all; quit
    
  • 実行結果
  • $> make
    vlib work
    vlog sample.sv
    Model Technology ModelSim ALTERA vlog 10.1b Compiler 2012.04 Apr 27 2012
    -- Compiling module testbench
    
    Top level modules:
        testbench
    vlog hoge.v
    Model Technology ModelSim ALTERA vlog 10.1b Compiler 2012.04 Apr 27 2012
    -- Compiling module hoge
    
    Top level modules:
        hoge
    vsim -c -L work testbench -do "./run.do"
    
    # 10.1b
    
    # vsim -L work -do ./run.do -c testbench 
    # Loading sv_std.std
    # Loading work.testbench
    # Loading work.hoge
    # do ./run.do 
    # indata =  1, outdata =  0 at  31
    # indata =  2, outdata =  1 at  51
    # indata =  3, outdata =  3 at  71
    # indata =  4, outdata =  6 at  91
    # ** Note: $finish    : sample.sv(28)
    #    Time: 191 ps  Iteration: 0  Instance: /testbench
    

出来た!出来た!

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
04 | 2017/05 | 06
- 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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。