• 【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
  • 相关阅读:
    大数据在数字孪生中的应用与挑战
    Android 包体积优化(未完成)
    AD9371 官方例程 NO-OS 主函数 headless 梳理(二)
    unity模型制作(终章)
    redis探索之缓存一致性
    git 相关命令
    Modbus简介
    JS-函数
    LastPass 开发者系统被黑客窃取源代码
    c++ || STL关联式容器
  • 原文地址:https://blog.csdn.net/weixin_39060517/article/details/126929420