クラス(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