2016-08-11 2 views
0

ゲーティング・ゲート・アサーション用のマクロを定義しましたが、コンパイル時にendfpertyでendmoduleが必要です。マクロ定義時にendmoduleエラーが発生する

コード:

`define gating_check(_name, _clock, _data, txen) \ 
property _name ; \ 
@(posedge `TOP.``_clock``) disable iff (~`STIMULUS.RSTN_VEC_GEN) \ 
(~(txen) |-> ##[1:6] (|`TOP.``_data`` == 0)); \ 
endproperty \ 
``_name``_checker : assert property (_name) else $error("-E- property gating_check failed"); \ 
``_name``_cover : cover property (_name) 

Plsのヘルプ。

+0

コードブロックで整形しましたが、すべてのバッククッキーが意図されているかどうかはわかりません。 – Morgan

答えて

1

"\"の後ろに2行目 - 4と5の間に余分なスペースがあります。コードをコンパイルする必要がある後続のスペースを削除してください。

"\"は行末をエスケープするために使用されますが、 "\"は行末をエスケープするために使用されます。したがって、今あなたのマクロは、エラーを生成するマルチリエントステートメントになっています。それはそのスペース文字を観察することが困難なため:)。

以下は、4行目と5行目の末尾にスペースがないコードです。

`define gating_check(_name, _clock, _data, txen) \ 
property _name ; \ 
@(posedge `TOP.``_clock``) disable iff (~`STIMULUS.RSTN_VEC_GEN) \ 
(~(txen) |-> ##[1:6] (|`TOP.``_data`` == 0)); \ 
endproperty \ 
``_name``_checker : assert property (_name) else $error("-E- property gating_check failed"); \ 
``_name``_cover : cover property (_name) 
関連する問題