Vengineerの妄想

人生を妄想しています。

string


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では、ないのでしょうか?

検証、Verification、SystemVerilog