[Verilog] 特定の書式から値の読み取り、文字列から数値へ変換 $sscanf

特定の書式から値の読み取り、文字列から数値へ変換

”A = 0″ など、ある書式に従った文字列から、必要な値を取得する方法です。

$sscanf を使えば、書式を指定して値を読み取れます。
“reg1 = 0xc0ffee” という文字列から、”%s = 0x%h” という書式を指定して、reg1 と c0ffee を読み取ります。

initial begin
integer code;
reg [63:0] name;
reg [31:0] value;
code = $sscanf("reg1 = 0xc0ffee", "%s = 0x%h", name, value);
$display("code = %0d", code); // code = 2
$display("name = %0s", name); // name = reg1
$display("value = %h", value); // value = 00c0ffee
end
view raw
gistfile1.v
hosted with ❤ by GitHub

$sscanf は 値の読み取りに成功した個数を返します。上記では 2、失敗した場合は 0 です。

次のように文字列から数値への変換にも使えます。

reg [63:0] val;
integer code;
code = $sscanf("FFFF_FFFF_FFFF_FFFF", "%h", val);
$display("%h", val);
view raw
gistfile1.v
hosted with ❤ by GitHub

ファイルからリード時に、書式から値を読み取る $fscanf もあります。

See Also

  • IEEE Std 1364™-2005: 17.2.4.3 Reading formatted data
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク