クラス(Class)
OOP(Object Oriented Programmingオブジェクト指向)のプログラミング言語としては、JAVAが有名なので、JAVAの表記がSVでどのようになるのか見ていきましょう。
-SV検証言語としての起源は、VERAや、JEDAになるらしいのですが、最初の言語設計者が、どの程度JAVAを意識していたかは分かりません。それはともかく、C++クラスよりもJAVAのクラスの方が親和性が高いと言えるでしょう。
JAVA入門のサイト
http://www.isl.ne.jp/pcsp/JavaToYou/java_07.html
こちらからJAVAの記述をSVで書き直してみました。雰囲気は、似ていることが分かります。
class Human ;
// メンバ変数
string name;
int age;
//コンストラクタ
function new(string n, int a);
name = n;
age=a;
endfunction
// メソッド
function void introduce() ;
string str;
str =$sformatf("私の名前は %sで年齢は %2d才です。",name,age);
$display("%s ",str);
endfunction
endclass
`ifdef MODEL_TECH
module human_test;
`else
program human_test;
`endif
Human human1,human2;
initial begin
//オブジェクトの生成
human1= new ("太郎", 10);
human2 = new ("ポップ", 100);
//自己紹介をさせる
human1.introduce();
human2.introduce();
end
`ifdef MODEL_TECH
endmodule
`else
endprogram:human_test
`endif
この実行結果は、次のようになりました。
***** Veritak SV32 Engine Version 438 Build Mar 4 2013***** 私の名前は 太郎で年齢は 10才です。 私の名前は ポップで年齢は 100才です。 ---------- シミュレーションを終了します。time=0ns