中文版 | English 
 
关于我们
      公司简介
      公司荣誉
      联系我们
地址:南京市汉中路169号金丝利国际大厦15楼1503室
邮编:210029
电话:025-86537971
传真:025-86537970
E-mail:Support@zx-tech.com
 
新闻动态 您当前所在的位置:首页>>新闻动态
功能验证:SystemVerilog虚拟接口是什么?
发布时间:2022.04.19

当我学会了SystemVerilog验证特性,一个概念让我困惑——虚拟接口。 这些是什么,为什么他们需要吗?

一个接口是什么?

从一个接口。 快速总结:Verilog时候,模块端口,单独的信号。 连接两个模块,每个都有9个港口,你必须列出所有9信号。 这很容易出错。

当你连接电视,DVD播放器,你连接个人电线吗? 不,你把一个HDMI电缆,单击完成。 你甚至不需要知道有多少电线的HDMI电缆(20 !)。 在SystemVerilog,一束电线被称为一个接口。

一个接口包含电线和synthesizable方法来执行操作,如发送和接收事务。 一个接口是RTL,就像你的设计。 这是一个接口与7信号和一个任务接收事务。

接口color_ifc;
逻辑r, o, y, g, b,我,v;
任务接收(输出逻辑[31:0]数据);

endtask
endinterface

真正的硬件是静态的。 如果你的芯片是用3 m盖茨制作的,它不会突然有4米盖茨只是因为你需要一点刺激。 在仿真中,RTL设计是静态的。 在编译时,不能描述增长或萎缩。 同样,你的模拟有固定数量的接口,在编译时指定,在运行时不能改变。

动态Testbenches

SystemVerilog类和对象是动态的。 如果你需要发送1000个事务,建立1000个对象。 需要有2000个吗? 只是建造更多。 如果你UVM testbench决定它需要2司机而不是默认的1,它只是在运行时创建另一个驱动程序(或代理)。

因为对象是动态的,他们不能包含接口。 否则,当你建造第二个驱动程序在运行时,它将创建第二个接口,它是不允许的。

但一个对象可以包含指针。 例如,代理有一个指针(处理/类变量)为驱动的对象,显示器,等。你怎么能让一个指针RTL接口?

在SystemVerilog,关键字“虚拟”通常意味着指针。 一个虚拟的接口是一个指针指向一个接口。

例子

这里是一个颜色的测试模块接口和一个司机。 构造司机时,它通过一个指针(物理)接口。

模块测试(colors_ifc c_ifc);
司机d;
最初的开始
d =新(c); / /通过接口
d.send (42);
结束
endmodule

司机类保存指针在虚拟接口,所以可以使用它后驱动信号。

类驱动程序;
虚拟colors_ifc v_ifc; / /指针RTL实例

新功能(输入虚拟colors_ifc c_ifc);
v_ifc = c_ifc;
endfunction

任务发送(输入逻辑[31:0]数据);
v_ifc。 r =数据[0];

endtask
endclass

好处

驱动程序类是可重用的,因为它可以指向任何color_ifc。 如果你testbench需要连接两个接口,它只是构造两个驱动程序对象,通过在每个接口实例。

探索更多的

想要了解更多关于SystemVerilog UVM ? 访问西门子EDA培训一个课程列表或探索我们的许多学习路径OneGlance地图。 我们提供生活教师和课程按需培训自主学习。

博客作者:克里斯长矛,主要客户培训工程师,西门子EDA学习服务这本书的作者SystemVerilog核查

版权所有 © 南京志翔科技有限公司 Nanjing Zhi Xiang Technology Co., Ltd. All rights reserved  苏ICP备05025807
地址:南京市汉中路169号金丝利国际大厦15楼1503室  电话:025-86537971  传真:025-86537970  E-mail:Support@zx-tech.com  技术支持:光芒网络