| |
Topic Overview
Introduction
被测设备(DUT)通常是Verilog模块或VHDL实体/体系结构,而测试平台由SystemVerilog class objects组成。
【此处需一幅图】
在DUT中需要考虑许多因素 - 测试平台(TB)连接和通信; 模块实例到类对象的通信机制,DUT的配置,重用,仿真,黑盒/白盒测试等等。管理这个难题的不同部分有很多不同的方法和解决方案。挑战在于用一种方式管理它,这种方式可以解决以上所有这些不同的难题。
DUT-TB Communication
DUT和testbench属于两个不同的SystemVerilog实例领域。DUT属于静态实例领域,而测试平台属于动态实例领域。因此,DUT的端口不能直接连接到testbench类对象,因此使用了不同的SystemVerilog通信方式,即虚拟接口。
DUT的端口连接到接口的实例。Testbench通过接口实例与DUT通信。使用虚拟接口作为接口实例的引用或句柄,测试平台可以访问SystemVerilog接口的tasks, functions, ports和内部变量。当接口实例连接到DUT引脚时,测试平台可以通过接口元件间接监视和控制DUT引脚。
【此处需一幅图】
有时无法使用虚拟接口方法。在这种情况下,存在DUT-TB通信的第二种或替代方法,其被称为可以使用的抽象/具体类方法。但是,只要虚拟接口可以使用,那虚拟接口就是首选和推荐的方法。
无论使用哪种方法,实例信息都必须从DUT传递到测试平台。
【此处需一幅图】
使用虚拟接口时,接口实例的位置将提供给测试平台,因此可以将其虚拟接口属性设置为指向接口实例。将此信息传递到测试平台的推荐方法是使用配置数据库(此数据库使用的是config_db API)或使用包。
【此处需一幅图】
testbench中的test class接收有关接口实例位置的信息。在收到此信息后,test类将此信息提供给实际需要该信息的agent transactor。test类通过将信息放在配置对象中来完成此操作,该配置对象被传给相应的agent。
【此处需一幅图】
有关将虚拟接口信息从DUT传递到测试平台以及为DUT-TB通信设置虚拟接口的更详细讨论和示例,请参阅有关虚拟接口的文章。