2013-09-25 27 views
5

Czy istnieje prosty sposób na przywrócenie niestandardowej funkcji do makra UVM_ERROR bez manipulowania biblioteką UVM? (Tj. Zawsze, gdy błąd UVM wywoływany jest w dowolnym miejscu w otoczeniu, chcę, aby moja funkcja była wywoływana wraz z nim.)Piggybacking do błędu UVM

Odpowiedz

6

Jeszcze nie próbowałem tego, ale uvm_report_catcher wygląda tak, jak robi to, co chcesz.

Jest to wywołanie zwrotne, które można wdrożyć za każdym razem, gdy zostanie wysłany raport uvm (np. UVM_ERROR), a funkcja zostanie wywołana, zanim zostanie zgłoszona.

Przykład dostępna jest tutaj, sekcja 4.9.3: http://low-powerdesign.com/article_Cadence-UVM_101810.html

+0

Mam wycofana odpowiedź, bo nie sądzę, że należy po prostu skopiować treść słowo w słowo z drugiej strony. Jeśli chcesz dołączyć własny przykład, możesz to zrobić. – Tim

0

W oparciu o to, co chcesz, uvm_report_catcher klasa jest najlepszym rozwiązaniem.

Oto przykład można użyć,

class my_error_demoter extends uvm_report_catcher; 
    function new(string name="my_error_demoter"); 
    super.new(name); 
    endfunction 

    function action_e catch(); 
    if(get_severity() == UVM_ERROR) begin 
     ... your task() ; ...   
    end 
    return THROW; 
    endfunction 
endclass 

nadzieję, że to rozwiąże problem ...