2016-10-19 10 views
0

私は別のクラスからこのマクロを呼び出すためにUVMプロジェクトにUVM -Create私自身のマクロ

//--------------------------------------------------------- 
// General macros which contain sequence repeate 
// in many places. 
//--------------------------------------------------------- 

`ifndef MY_MACROS_SV 
`define MY_MACROS_SV 
// MACRO: 'my_fatal_err 
// 
// calls uvm_fatal in case the assertion is not correct 

`define my_fatal(id, msg) 
     assert (file_p != 0) else 
    `uvm_fatal("FATAL ERROR", "FILE OPENED FAILED") 


`endif //MY_MACROS_SV 

を次のマクロを使用する場合(などsequenece、ドライバ、...)によって:

`my_fatal("FATAL ERROR", "FILE OPENED FAILED") 

私は次のようなエラーだ、これをコンパイルしようとすると:マルチラインマクロで

# ** Error: (vlog-13069) ** while parsing file included at ./sv/girobo2_pkg.sv(4) 
# ** at .\sv\my_macros.sv(13): near "assert": syntax error, unexpected assert , expecting class. 
+0

あなたはあなたの関数にidとmsg引数を使用していません。 – noobuntu

答えて

3

を、あなたはバックスラッシュで改行をエスケープする必要があります。

`define my_fatal(id, msg) \ 
     assert (file_p != 0) else \ 
    `uvm_fatal("FATAL ERROR", "FILE OPENED FAILED") 

IEEE STD 1800年から2012年、セクション22.5.1、 `あなたの(今は削除された)のコメントに応えて

を定義を参照してください、私はあなたが使用するためのものだと思う:

`uvm_fatal(id, msg) 
+0

気にしないでください。わかった。 – sara8d

+0

私は '' uvm_fatal(condition、id、msg) ''を意味していました。 – sara8d