SystemVerilog DPI-C のメモ

バグ?かと思いきや、そうではなかった模様。 VCSとかSystemVerilogとか…? 詳しい方、適当に編集しちゃっても構いませんですm(_ _)m
1
Vengineer@ @Vengineer

@iquemo http://t.co/inO5wD4o ご利用ください。CQ出版社の「SystemVerilogスタートアップ」も。

2011-12-21 22:37:28
Vengineer@ @Vengineer

@iquemo @tw_kathy Import宣言しているので、本来なら引数はint 型に暗黙の型変換されるのだと思います。 まー、SystemVerilogのパーサーのできによってはおかしな挙動するのはありだけど。ModelSim Altera Editon 6.6Dどう?

2011-12-21 22:34:14
いけもとひろあき @iquemo

@tw_kathy @Vengineer だとすると、int a,d; func('h1234, 'h5678); func(a, d); とした場合の、前者の呼び出しが値渡しになっちゃうのはどうしてでしょう??ここがワカランのです、、、

2011-12-21 22:24:42
Vengineer@ @Vengineer

func('h1234, 'h5678); とすると、funcの2つの引数はint型ではなく、regになるので引数がポインタになるのでちゅ。あはは。 “@tw_kathy: 「VCS C-2009.06 メモ」をトゥギャりました。 http://t.co/E21fPRn1

2011-12-21 22:15:51
いけもとひろあき @iquemo

つまり、明確にint型であるa,dを引数にした呼び出しがあると、その直前の直値呼び出しもintと推定してるみたいなんだけど、直値だけだとポインタ渡し。そんな馬鹿な。というお話し。

2011-12-21 22:06:54
いけもとひろあき @iquemo

ところが、SV側で int a, d; a='h1234; b='h5678; func('h1234,'h5678); func(a,d); とすると、あら不思議、2回呼んだfuncはどちらも値渡しに!!

2011-12-21 22:05:54
いけもとひろあき @iquemo

これを、SV側から直値で func( 'h1234, 'h5678 )と叩くと、C側には0x1234/5678じゃなくてポインタらしきものが渡ってくる。

2011-12-21 22:04:52
いけもとひろあき @iquemo

えーと、C側に func( uint A, uint D ){} って関数置いて、SV側に import "DPI-C" task func( input int A, input int D ); する。

2011-12-21 22:04:24