スポンサーサイト

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

[SystemVerilog] $fopenを使おう(Read編 - その2)

前回 の続きになります。
前回までは、1文字ごとに Readしていたと思いますが、
今回は line「行単位」での動作になります。

  • indata.txt
W 100
R
I 10

というテキストがあったとします。
これを各方法で読んだ場合どういう結果になるかというと。


$fgets

module testbench ();

  int    fd;
  int    numchar;
  string str;

  initial begin
    fd = $fopen("indata.txt", "r");
    numchar = $fgets(str, fd);
    $display("numchar = %d, string = %s", numchar, str);
    numchar = $fgets(str, fd);
    $display("numchar = %d, string = %s", numchar, str);
    numchar = $fgets(str, fd);
    $display("numchar = %d, string = %s", numchar, str);
  end

  final begin
    $fclose(fd); 
  end

endmodule: testbench
  • 実行結果
  • # run -all 
    # numchar =           6, string = W 100
    # 
    # numchar =           2, string = R
    # 
    # numchar =           5, string = I 10
    # 
    #  quit 
    

Read される文字列には、改行コードも一緒に入っているようです。
$fgetsの返り値は文字数を表しているみたいなので、
while文にてテキストすべて読むことができると思います。


  • テキストすべて Readする。

  • module testbench ();
    
      int    fd;
      int    numchar;
      string str;
    
      initial begin
        fd = $fopen("indata.txt", "r");
        while($fgets(str, fd)) begin
          $display("string = %s", str);
        end
      end
    
      final begin
        $fclose(fd); 
      end
    
    endmodule: testbench
  • 実行結果

  • # run -all 
    # string = W 100
    # 
    # string = R
    # 
    # string = I 10
    # 
    #  quit 
    
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

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