您好,登錄后才能下訂單哦!
本篇內容介紹了“Callback有什么用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Systemverilog中的callback指定了一個被調用的callback method,和一個調用callback method的callback hook。
callback method一般是dummy method,可以通過繼承來覆蓋。
temp()方法就是callback hook,callback_1()和callback_2()方法是callback method。在用戶調用temp()方法的時候,callback_1()和 callback_2()方法會自動調用,用戶也可以通過繼承來覆蓋callbackmethod。
在SV中最常用到的callback hook就是randomize()方法,它帶有兩個callback method:pre_randomize()和post_randomize(),這兩個方法分別在randomize()方法的前后執行.
Callback是在不改變驗證組件(driver、monitor、generator)代碼的條件下改變驗證組件行為的一種機制。
可以用來
Inject errorsPut the transaction in the scoreboardGather functional coverage data
基類:
class transactor; virtual task pre_send(); endtask virtual task post_send(); endtask task send(); this.pre_send(); this.post_send(); endtask : sendendclass : transactor
子類:
class my_transactor extend transactor; virtual task pre_send(); ... //This function is implemented here endtask virtual task post_send(); ... //This function is implemented here endtaskendclass : my_transactor
基類transactor具有3個task,其中2個被聲明為virtual task且沒有任何行為,然后被另一個task send調用。
virtual task pre_send()和post_send()稱為callback taskes。
這樣,我們可以通過更改繼承自基類transactor的子類my_ transactor中的callback taskes來更改transactor中task send的行為,而無需修改其代碼。
“Callback有什么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。