mailboxの定義を発見
このサイトに掲載しているmailboxは、型を渡さないサンプルになっています。
でもホントは、適切に使うならインスタンス時に型を渡すべきだと思っています。
例えばこんな感じで。
class packet;
byte header;
byte payload;
function new(header,payload);
this.header = header;
this.payload = payload;
endfunction
endclass
mailbox #(packet) pkt_mbx;
ところで、mailboxをすこしいじっているときに出てきたエラーに std.sv というのがありましたので開いてみたところ、SVの基本クラスが定義されているのを見つけました。ただ、無料で入手できる環境ではある けれど、ソースを公開していいかはわからないので、興味のある方はmodelsim-aseや商用のmodelsim, QuestaSimなどのインストールディレクトリあたりを探してみてください。
C:/altera/13.0/modelsim_ase/win32aloem/../verilog_src/std/std.sv
このコードを見る限りは、class mailboxは型を渡さないとintegerを型として認識するみたいなんですが、でもそれだと、型未指定のときに他の型、例えばbitやlogic、自作classなどをputしたらエラーになると思う のですが、問題なく動くんですね。コメントに「dynamic_singular_type」とありますが、これ、Simulator側でうまく処理しているんじゃないかと…。
なお、問題なく動くと言ってもそれはmodelsim-ase上での話です。QuestaSimやCadence、SynopsysなどのSimulatorではどうなるかわからないので、やはり「使用する型を明示」した上で使うのがマナー(予期 せぬエラーを回避)だと思います。