关于systemverilog中virtual的使用以及class类和interface接口的区别

1)systemverilog中的virtual 使用

我们会经常看到virtual interface、virtual task、virtual function、virtual class,什么意思呢?

virtual声明的是一个模板,后续的例化和引用不会修改virtual后面的内容。

例如

virtual task cb_pre_run( );

$display("base callback run");

endtask:cb_pre_run

其他的任务在调用此task时,不会将cb_pre_run的任务修改。

如果没有定义virtual时,任意一个任务调用cb_pre_run时,修改了内部的值,则其他的任务也会相应的调用修改之后的值。

当virtual 后面定义的任务或者接口等会被继承时,一般添加virtual。

2) interface、class的区别

接口是为了方便的连接各模块,

接口的定义:在模块和程序块之外进行定义;

modport 可以分割interface中的信号。

class 是具有共同特性的类,类中可以定义各种特性,函数,interface不行。

猜你喜欢

转载自www.cnblogs.com/YanRuoChuanFPGA/p/9585877.html