>>530
被乗数(805*002の805の方)にだけマイナスが来るのですが、
とりあえず符号拡張で期待値は出てました。。
マイナス乗数ではNGになる? 後の遺恨とならぬよう確認しとくとします。

>>531
>符号拡張の記述は 具体的に どうやってますか?
思いついたまま適当に書いてたので、A*Bの直前で
 = (被乗数[12])? {20'hfffff,被乗数} : {20'h00000,被乗数};
などと書いておりました。

>Verilog1995でも $signed(12'h805) * $signed(12'h002)
この書き方、知りませんでした。。(verilogはもう○年やってるのに…)
テストベンチでしか$使ったこと無い…

そうそう、他に25bit*26bitの計算があって、こちらは64bitまで拡張しないとNGでした。
今、win電卓のQWORDで確認しました!(手元の関数電卓は…8桁までしかないorz)

>((2^16) - A) * ((2^16) - B) を展開して、
> = (2^32) - (2^16)*(A+B) + (A*B) と考えると、わかりやすいかな?
わかりました!(10分間考え込んだけど)

ありがとうございました。