• 【uvm】DUT 和 testbench 是如何连接的


    link
    我们知道,不论是哪一级的验证,最终都是通过 pin 连接到 DUT 上向其施加激励,对于 UVM 验证平台中,使用虚接口来实现 DUT 和验证平台的通信。

    为了简化模块之间的连接和实现类和模块之间的通信,以实现测试平台的可重用性, SV 定义了接口的语法结构。总体来说,接口就是在 testbench 这边定义了访问的 DUT 的管脚的集合,通过对接口中管脚信号的操作,来实现对 DUT 的管脚的操作, 这样能够实现验证平台和待测模块的分离。

    验证工程师和设计工程师只要定义好接口关系,就可以分别开展工作。同时如果设计管脚发生变化,无需改变 testbench 这边的虚接口,只需要在例化待测模块时,给接口绑定对应的待测接口即可。

    Testbench 和 DUT 是通过接口进行数据交互的。接口仅仅是信号的一个集合,因此我们可以将 X_MAC 的所有信号定义为一个统一的接口,也可以将一个信号定义一个接口,这样对于 X_MAC 模块,就会有许许多多的接口。另外要注意的是,一个接口要对应一个 driver,因此,接口过多的话,就需要定义很多个 driver。

    同样的,如果接口数量过少的话,就只需要定义较少的 driver。接口数量过多或过少,都不利于后期验证工作的开展。为了方面后续的工作,接口的个数合适为宜,总的原则是:

    1. 将相互关系紧密的信号放到同一个接口中。
    2. 要将同一个时钟周期的信号放到同一个接口中。
    3. 将和同一个模块连接的信号要放到同一个接口中。
      上面的三点基本上表达的是同一个意思, 这样有利于后期方便激励。

    在接口的定义中需要注意的一个问题是:对于同一个信号,其方向(input/output)对于 DUT 和对于 testbench 来说是相反的, 在接口中需要定义信号的方向是针对 testbench 的方向, 这一点需要注意。

    下面是一个接口示例。

    interface hello_if(input logic rxc,input logic txc);
    logic [7:0] rxd_1;
    logic [7:0] rxd_2
    • 1
    • 2
  • 相关阅读:
    Git及Github初学者教程
    兔老大的系统设计(一)健康度系统
    浅谈移动 GIS (内附主要特征和用途)
    Appium和Android常用9种自动化测试框架对比有哪些优势?
    设计模式个人理解——工厂模式
    深入理解Redis集群模式、协议、元数据维护方式
    ajax请求
    程序员面试中的测试驱动开发:如何展示你的编程范式
    1.微信APP首页UI结构设计思想viewpager
    源代码到可执行程序的过程详解:预编译、编译、汇编、链接
  • 原文地址:https://blog.csdn.net/weixin_39060517/article/details/126929420