在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5459|回复: 12

[求助] 这样理解virtual interface是否正确?

[复制链接]
发表于 2012-8-12 11:31:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
1.Interface 可以理解为一捆打包的线,在不同的模块之间连接。
2.interface 和 module是一样的, 都是静态的变量, 也就是在程序开始时, 内存中就有了其实例.但是在class里使用virtual interface时之前有两部必须提前完成:
定义是将接口作为一个类进行定义。
实例化:在RTL级的顶层中对接口进行实例化。
接口的定义,例如
interface mem_ports
331  (
332  input  wire  clock,
333  output logic [7:0] address,
334  output logic chip_en,
335  output logic read_write,
336  output logic [7:0] data_in,
337  input logic  [7:0] data_out
338   );
339  endinterface
接口的实例化,例如:
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的思想,可以根据自己的需要快速的搭建验证环境。
 楼主| 发表于 2012-8-12 11:32:30 | 显示全部楼层
部分内容出自论坛,自己整理了一下。

  若有不妥之处,欢迎指正,谢谢!
 楼主| 发表于 2012-8-12 11:33:15 | 显示全部楼层
部分内容出自本论坛,自己整理了一下。

若有不妥之处,欢迎指正,谢谢!
发表于 2012-8-16 21:57:58 | 显示全部楼层
谢谢分享
发表于 2013-1-16 18:30:00 | 显示全部楼层
楼主的理解比我深刻,我也同意你的见解。
发表于 2013-1-17 21:52:58 | 显示全部楼层
好像virtual function与virtual task与virtual interface不一样
发表于 2013-1-18 14:37:09 | 显示全部楼层
我同意这样的理解  只用过虚接口
发表于 2013-1-18 20:29:09 | 显示全部楼层
不是很懂 来学习下
发表于 2013-1-21 09:34:45 | 显示全部楼层
受益匪浅,希望经常交流!
发表于 2013-1-21 16:41:40 | 显示全部楼层
Truth:
Class      是 dynamic object
interface 是 static object, 它代表了硬件

Issue:
  class 不能直接驱static object

Solution:
  使用 virtual interface 在 class 里面。

Remark:
   virtual task 是另外一回事。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 06:20 , Processed in 0.023112 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表