微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 这样理解virtual interface是否正确?

这样理解virtual interface是否正确?

时间:10-02 整理:3721RD 点击:
1.Interface 可以理解为一捆打包的线,在不同的模块之间连接。
2.interface 和 module是一样的, 都是静态的变量, 也就是在程序开始时, 内存中就有了其实例.但是在class里使用virtual interface时之前有两部必须提前完成:
定义是将接口作为一个类进行定义。
实例化:在RTL级的顶层中对接口进行实例化。
接口的定义,例如
interface mem_ports
331(
332inputwireclock,
333output logic [7:0] address,
334output logic chip_en,
335output logic read_write,
336output logic [7:0] data_in,
337input logic[7:0] data_out
338);
339endinterface
接口的实例化,例如:
mem_ports ports(
290 .clock(clk),
291 .address(address),
292 .chip_en(chip_en),
293 .read_write(read_write),
294 .data_in(data_in),
295 .data_out(data_out)
296 );
定义一个interface,且实例化多个后,如果没有定义virtual,则在任何一个实例中修改了某个信号值,在其他实例中都会受到影响。如果定义了virtual,则每个实例独立。如果该interface只有一个实例,可用可不用virtual,有多个实例,需要virtual。更好的办法是,都加上virtual。virtual interface只是申明一个handle, 就好像一个指针一样, 可以再程序进行中进行construct, 所以class里必须是virtual interface.
我的理解:
  接口interface作为一个类,方便了不同的模块直接的连接(使模块直接的连接看起来更为简洁,修改也更为方便。)但是不同模块直接调用(多出实例化),可能某一个值改变而改变了所有使用此接口处的值(相当于于物理连接)。而不同模块使用virtual interface以后,就类似一个指针用来指向此接口。Virtual interface作为一个句柄,此时在该class中调用时,专属这一个接口对实际的静态interface并无影响。
  类似virtual interface还有virtual task 、virtual function 、virtual class等。其应该主要体现出OOP的思想,可以根据自己的需要快速的搭建验证环境。

部分内容出自论坛,自己整理了一下。
  若有不妥之处,欢迎指正,谢谢!

部分内容出自本论坛,自己整理了一下。
若有不妥之处,欢迎指正,谢谢!

谢谢分享

小编的理解比我深刻,我也同意你的见解。

好像virtual function与virtual task与virtual interface不一样

我同意这样的理解只用过虚接口

不是很懂 来学习下

受益匪浅,希望经常交流!

Truth:
Class是 dynamic object
interface 是 static object, 它代表了硬件
Issue:
class 不能直接驱static object
Solution:
使用 virtual interface 在 class 里面。
Remark:
virtual task 是另外一回事。

多谢分享

上一篇:vcs 问题求助
下一篇:ovm验证时出现问题

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top