2017-03-27 21 views
-2

私は単純なシステムのVerilogコードで、関数定義がほとんどないインクルードファイルを持っています。しかし、私がこのファイルを含む複数のファイルを持っていると、関数の再定義のためにコンパイルエラーが発生します。どのようにそれを回避するための任意の提案?`システムに関数定義を組み込んでいます。

コードtest.sv:

`include "constants.sv" 

module test(); 

real myReal1; 
real myReal2; 

initial myReal1 = 10.1; 

assign myReal2 = abs(myReal1); 

endmodule 

コード:test2.sv:

`include "constants.sv" 

module test2(); 

real myReal1; 
real myReal2; 

initial myReal1 = 10.1; 

assign myReal2 = 10.2; 

endmodule 

エラー: 関数実ABS(入力A実)。 | ncvlog:* E、DUPIDN(./constants.sv,19|16):以前に宣言された識別子 'abs' [12.5(IEEE)]。

答えて

0

することができますまたは使用可能な限りパッケージを使用しようとは衝突

+0

ガイドが含まれていますか? – sanforyou

+0

'\'のようなものifndef xxx \ n \ 'define xxx \ n \' endif' –

+0

ifndefはテキストマクロに対してのみ機能します。関数がまだ定義されていない場合は、 'include文を使用します。どのように私はこれを達成することができるかわからないifndef – sanforyou

1

に高速なソリューションを避けるためにガード含まれます:ここで

`ifndef CONSTANTS 
    `define CONSTANTS 
    `include "constants.sv" 
`endif 
+0

ありがとう、これは私がやったことで終わったと働いた! – sanforyou

0

を私のために働いていたものです:ファイルconstants.svの 内容:

`ifndef SVINCLUDES 

    //define all macros here 
    //define all functions here 

    `define SVINCLUDES 

`endif 
関連する問題