どのようにSynplifyソ¥フトウェアはツール'DW02_mac sysnopsysを合成'?

Q

quan228228

Guest
8051年、私は、ブロックですシノプシスDW02_macの。シミュレーションが正しいです。しかし
動作時私は実行FPGAのではない、見つけることができますマックは。

マックfunciotnはc * b ;

たとえば、
= 16'h0001、b = 16'hffffは、c = 32'h0000_0000;

FPGAの結果は32'h0000_00001です。
シミュレーション結果は32'hffff_ffffです。

コードのFPGAシンセシスまたはか障害が関連?それとも、DW02_macはlibに対応するが?

どうぞ教えてください。どうも有難う。
DW02_mac.vは次のよう。

モジュールDW02_mac
(B、Cのは、TCは、MAC);

パラメータA_width = 8;
パラメータB_width = 8;

ポートリストの宣言の順序/ /
入力[A_width - 1:0];
入力[B_width - 1:0]のB;
入力[A_width B_width - 1:0]℃;
入力のTC;
出力[A_width B_width - 1:0]のMAC;レッグ[A_width B_width - 1:0]のMAC;

関数[A_width B_width - 1:0] signed_mult;
入力[A_width - 1:0];
入力[B_width - 1:0]のB;
レッグ[A_width - 1:0] a1の。
レッグ[B_width - 1:0] B1に。
レッグ[A_width B_width - 1:0] c1を。
始める
/ /はsynthesis_offをシノプシス
開始する場合(([はA_width - 1] === 1'bxは|は| Bが[はB_width - 1] === 1'bx))
signed_mult =(A_width B_width(1'bx));
最後に、他
/ /はsynthesis_onをシノプシス
始める
(場合、[A_width - 1] === 1'b1)
a1を= -;

a1の=;
場合)(Bの[B_width - 1] === 1'b1
B1に= - Bの;

B1に= Bの;
c1は= a1の* B1に。
(場合、[A_width - 1]!== Bの[B_width - 1])
signed_mult = - c1の;

signed_mult = c1の;
終了
終了
endfunctionが

常に開始
開始(TCは=== 1'b1)場合は、/ /乗算を締結
のMAC <= signed_mult(AとB) Cを。
最後に他の開始
のMAC <= *とB C;
最後に/ /場合
@(またはTCまたはBまたはC);
最後に/ /プロセス

endmodule追加分後に1時間44:
私は不思議sythesisable場合は関数が。ダビデ

 
私はシンセサイザー疑うかどうかを他のシノプシスはモジュールを合成たちのDesignWareすることができますユーザーが。

Verilogのはモジュールのみシミュレーションのためのあなたが得るものほとんどている可能¥性。

HTH返答

 
Yehは、私も疑問を持って、この。ドuは知っているれていないステートメント'関数'synthesisableまたは。ていない場合は、どのようには、FPGAブロックをにDWのマップ?

ありがとう!ダビデ

 
/ /はsynthesis_offをシノプシス
開始する場合(([はA_width - 1] === 1'bxは|は| Bが[はB_width - 1] === 1'bx))
signed_mult =(A_width B_width(1'bx));
最後に、他
/ /はsynthesis_onをシノプシス
implysそれは、シミュレーションコードです
なぜコード自身を使用してDWのではない交換これは?

 

Welcome to EDABoard.com

Sponsor

Back
Top