芯片验证自学网芯片验证自学网芯片验证自学网

SystemVerilog中callback是什么

问题描述:

SystemVerilog中callback是什么?


解决方法:

**callback(回调)**是一种在不更改实际代码的条件下更改为验证组件(例如driver,generator或monitor)行为的机制

class abc_transactor;
        virtual taskpre_send();
        endtask
        virtual taskpost_send();
        endtask
        task xyz();
                this.pre_send();
                this.post_send();
        endtask : xyz
 endclass :abc_transactor 
class my_abc_transactor extend abc_transactor;
        virtual taskpre_send();
                ... //This function is implemented here
        endtask
        virtual taskpost_send();
                ... //This function is implemented here   
        endtask
endclass :my_abc_transactor12345678910111213141516171819

在上面的例子中,基类abc_transactor具有3个tasks,其中2个被声明为virtual task并且没有具体实现。另一个已完全实现xyz() task会调用这两个virtual task。(Virtual task必须实例化后才可使用,但是静态)

未实现的virtual task称为callback taskes(回调任务)。从基类abc_transactor扩展的子类my_abc_transactor将实现先前未实现的pre_send() task和post_send() task,无需更改xyz() task的代码。

通过这种方式,我们可以将可执行代码注入到函数xyz()task中,而无需对其进行修改。

例如你正在编写将被多个测试环境使用的基类,并且对于每个测试环境,基类中的某些task代码将发生变化,这时就可以将该task/function实现为callback method(回调方法)。


未经允许不得转载:芯片验证自学网 » SystemVerilog中callback是什么