SystemVerilogでは、文字列を扱うstringというタイプも導入されました。
string name = "Verification Evangelist";のように文字列の変数を定義し、初期値を代入できます。
次のようなstringはいろいろなタスク(task)や関数(function)をサポートしています。
function int len()
: 文字列の長さ
task putc(int i, string s)
: 指定した位置(i)の文字を文字列(s)の最初の文字で置き換え
task putc(int i, byte c)
: 指定した位置(i)の文字を文字(c)で置き換え
function getc(int i)
: 指定した位置(i)の文字を返す
function string toupper()
: 大文字に変換した文字列を返す
function string tolower()
: 小文字に変換した文字列を返す
function int compare(string s)
: 引数の文字列と比較する(ANSI Cのstrcmpと同じ)
function int icompare(string s)
: 引数の文字列と小文字大文字の区別無しに、比較する
(ANSI Cのstrcmpと同じ)
function string substr(int i, int j)
: 指定した位置(iからjまで)の文字列を返す
function integer atoi()
function integer atohex()
function integer atooct()
function integer atobin()
: 文字列を整数(10進数,16進数,8進数,2進数)に変換する
function real atoreal()
: 文字列を浮動小数点数に変換する
task itoa(integer i)
: 10進数を文字列するに変換する
task hextoa(integer i)
: 16進数を文字列するに変換する
task octtoa(integer i)
: 8進数を文字列するに変換する
task bintoa(integer i)
: 2進数を文字列するに変換する
task realtoa(real r)
: 浮動小数点数を文字列するに変換する
今見ているのは、SystemVerilog 3.1aを見ているので、IEEE 1800-2005/2009とは違うかもしれません。なぜか引数の型と戻り値がintegerなのが納得できません。
どうして、intでは、ないのでしょうか?
どうして、intでは、ないのでしょうか?
検証、Verification、SystemVerilog