特定の書式から値の読み取り、文字列から数値へ変換
”A = 0″ など、ある書式に従った文字列から、必要な値を取得する方法です。
$sscanf を使えば、書式を指定して値を読み取れます。
“reg1 = 0xc0ffee” という文字列から、”%s = 0x%h” という書式を指定して、reg1 と c0ffee を読み取ります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
$sscanf は 値の読み取りに成功した個数を返します。上記では 2、失敗した場合は 0 です。
次のように文字列から数値への変換にも使えます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
reg [63:0] val; | |
integer code; | |
code = $sscanf("FFFF_FFFF_FFFF_FFFF", "%h", val); | |
$display("%h", val); |
ファイルからリード時に、書式から値を読み取る $fscanf もあります。
See Also
- IEEE Std 1364™-2005: 17.2.4.3 Reading formatted data