スポンサーサイト

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

SystemVerilog:string型を使ってみよう。

string型(文字列型)が SystemVerilogにて追加されています。
見ると、IEEE1800-2009でも追加されたものもあるのかな。
ってことで、書いてみました。

サンプルコード


 1|module tb;
 2|
 3|  string  str;
 4|  string  str2 = "HogeHoge";
 5|  string  str3;
 6|  string  str4;
 7|  string  str_ = "1234";
 8|  integer int_ = 1234;
 9|  real    real_ = 1234.025;
10|
11|  initial begin
12|    str = "hoge";
13|    $display("str = %s, str2 = %s", str, str2);
14|    // []指定
15|    $display("str[0] = %s", str[0]);
16|    $display("str[1] = %s", str[1]);
17|    $display("str[2] = %s", str[2]);
18|    $display("str[3] = %s", str[3]);
19|    // 比較演算子
20|    if(str == str2) $display("info:str == str2");
21|    if(str != str2) $display("info:str != str2");
22|    if(str <  str2) $display("info:str <  str2");
23|    if(str >  str2) $display("info:str >  str2");
24|    if(str <= str2) $display("info:str <= str2");
25|    if(str >= str2) $display("info:str >= str2");
26|    // 連結
27|    str3 = {str,str2}; $display("str3 = %s", str3);
28|    // 繰り返し
29|    str4 = {3{str}}; $display("str4 = %s", str4);
30|    // メンバ関数
31|    $display("str.len() = %4d", str.len());
32|    str2.putc(2,"a"); $display("str2.putc(2,a) = %s", str2);
33|    $display("str.getc(1) = %s", str.getc(1));
34|    $display("str2.toupper() = %s", str2.toupper());
35|    $display("str2.tolower() = %s", str2.tolower());
36|    $display("str.compare(str4[0:3])  = %4d", str.compare(str4[0:3]));
37|    $display("str.icompare(str4[0:3]) = %4d", str.icompare(str4[0:3]));
38|    $display("str3.substr(3,6)) = %s", str3.substr(3,6));
39|    //// 数値関係
40|    $display("str_.atoi()    = %4d", str_.atoi());
41|    $display("str_.atohex()  = %4d", str_.atohex());
42|    $display("str_.atooct()  = %4d", str_.atooct());
43|    $display("str_.atobin()  = %4d", str_.atobin());
44|    $display("str_.atoreal() = %4f", str_.atoreal());
45|
46|    str_.itoa(int_);    $display("str_.itoa()    = %s",  str_);
47|    str_.hextoa(int_);  $display("str_.hextoa()  = %s",  str_);
48|    str_.octtoa(int_);  $display("str_.octtoa()  = %s",  str_);
49|    str_.bintoa(int_);  $display("str_.bintoa()  = %s",  str_);
50|    str_.realtoa(real_);$display("str_.realtoa() = %s",  str_);
51|  end
52|
53|endmodule

実行結果


# 10.0d

# vsim -L work -do {run -all; quit} -c tb
# Loading sv_std.std
# Loading work.tb
# run -all
# str = hoge, str2 = HogeHoge
# str[0] = h
# str[1] = o
# str[2] = g
# str[3] = e
# info:str != str2
# info:str > str2
# info:str >= str2
# str3 = hogeHogeHoge
# str4 = hogehogehoge
# str.len() = 4
# str2.putc(2,a) = HoaeHoge
# str.getc(1) = o
# str2.toupper() = HOAEHOGE
# str2.tolower() = hoaehoge
# str.compare(str4[0:3]) = 0
# str.icompare(str4[0:3]) = 0
# str3.substr(3,6)) = eHog
# str_.atoi() = 1234
# str_.atohex() = 4660
# str_.atooct() = 668
# str_.atobin() = 1
# str_.atoreal() = 1234.000000
# str_.itoa() = 1234
# str_.hextoa() = 4d2
# str_.octtoa() = 2322
# str_.bintoa() = 10011010010
# str_.realtoa() = 1234.03
# quit
というような感じです。
結構便利だと思うんですよね〜

参考ページ


- string - All of SystemVerilog
- string データタイプ
関連記事

コメントの投稿

非公開コメント

プロフィール

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