2016-10-19 6 views
0

ich das folgende Makro in UVM ProjektUVM -Create meine eigenen Makros

//--------------------------------------------------------- 
// 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 

ich nennen dieses Makro aus verschiedenen Klassen (sequenece, Treiber, etc ..) durch verwenden möchten:

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

Wenn ich versuche, das ich folgende Fehlermeldung bekam zu kompilieren:

# ** 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

Sie Verwenden Sie nicht ID und msg Argumente in Ihrer Funktion – noobuntu

Antwort

3

mit mehreren Leitungen Makros, müssen Sie die Zeilenumbrüche mit einem Backslash zu entkommen:

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

Siehe IEEE Std 1800-2012, Abschnitt 22.5.1 `

Als Reaktion auf Ihre (nun gelöscht) Kommentar definieren, ich glaube, Sie verwenden gemeint:

`uvm_fatal(id, msg) 
+0

macht nichts. Ich hab es geschafft. – sara8d

+0

Ich meinte zu '' uvm_fatal (condition, id, msg) ' – sara8d