SystemVerilog DPI-C のメモ
@iquemo http://t.co/inO5wD4o ご利用ください。CQ出版社の「SystemVerilogスタートアップ」も。
2011-12-21 22:37:28@iquemo @tw_kathy Import宣言しているので、本来なら引数はint 型に暗黙の型変換されるのだと思います。 まー、SystemVerilogのパーサーのできによってはおかしな挙動するのはありだけど。ModelSim Altera Editon 6.6Dどう?
2011-12-21 22:34:14@tw_kathy @Vengineer だとすると、int a,d; func('h1234, 'h5678); func(a, d); とした場合の、前者の呼び出しが値渡しになっちゃうのはどうしてでしょう??ここがワカランのです、、、
2011-12-21 22:24:42func('h1234, 'h5678); とすると、funcの2つの引数はint型ではなく、regになるので引数がポインタになるのでちゅ。あはは。 “@tw_kathy: 「VCS C-2009.06 メモ」をトゥギャりました。 http://t.co/E21fPRn1”
2011-12-21 22:15:51つまり、明確にint型であるa,dを引数にした呼び出しがあると、その直前の直値呼び出しもintと推定してるみたいなんだけど、直値だけだとポインタ渡し。そんな馬鹿な。というお話し。
2011-12-21 22:06:54ところが、SV側で int a, d; a='h1234; b='h5678; func('h1234,'h5678); func(a,d); とすると、あら不思議、2回呼んだfuncはどちらも値渡しに!!
2011-12-21 22:05:54これを、SV側から直値で func( 'h1234, 'h5678 )と叩くと、C側には0x1234/5678じゃなくてポインタらしきものが渡ってくる。
2011-12-21 22:04:52えーと、C側に func( uint A, uint D ){} って関数置いて、SV側に import "DPI-C" task func( input int A, input int D ); する。
2011-12-21 22:04:24