2017-12-31 129 views

Antwort

5

Die dut_error() ist nicht wirklich eine Methode (es ist ein Makro, das mehrere Methoden aufruft), kann also nicht erweitert werden.

Sie können aber dut_error_struct erweitern und dann den gewünschten Code hinzufügen. Mithilfe von source_struct() können Sie wissen, welche Struktur namens dut_error() heißt, und mithilfe von Reflektion können Sie erkennen, in welchem ​​Paket sie definiert wurde. Zum Beispiel -

extend dut_error_struct { 
    write() is first { 
    out(source_struct() is a any_unit ? "UNIT " : "STRUCT ", 
     source_struct_name(), " reporting of error: "); 


    // Special output for errors coming from the ahb package: 

    // Using reflection, can get lots of info about the reporting struct. 
    // For example - in which package it was defined 

    // If using annotation - can use them as well. 
    // For example - different messages for annotated features 

    var reporter_rf : rf_struct = 
     rf_manager.get_struct_of_instance(source_struct()); 
    if reporter_rf.get_package().get_name() == "ahb" { 
     out(append("xxxxxx another bug in AHB package, ", 
         "\nreported ", source_location())); 
    }; 
}; 

Ich empfehle für dut_error_struct in Hilfe suchen, diese Struktur Methoden zu sehen.

Verwandte Themen