| |
DUT-TB Configuration
Parameter sharing between the DUT and Testbench
当DUT和/或相关接口被参数化时,参数值几乎总是在测试平台中使用。应在某个独立的位置定义这些公共参数,然后DUT和测试平台对这些公共参数进行共享使用。建议的方法是在包中放置在DUT和测试平台中共同使用的参数。该包被称为test参数包。
如前所述,test参数包还可用于将接口实例的位置从DUT传递到测试平台。在“"setting virtual interface
properties in the testbench with the configuration dataset using the test parameter package”一文中有一个示例和更详细的说明。
Parameterized Tests
将参数传递到测试平台的另一种方法是参数化测试平台中的顶层类,这里说的顶层类通常是test类。参数化tests存在许多问题,这些问题与解决方案一起讨论。
Encapsulation
典型的DUT-TB设置具有顶层SystemVerilog模块,该模块中同时包括测试平台和DUT的内容,该模块还具有相关的连接和支持逻辑(例如时钟生成逻辑)。该风格称为单顶层。
【此处需一幅图】
单顶层模块可能会变得混乱、复杂且难以管理。发生这种情况时,建议通过将它们封装在包装器模块中来对项目进行分组。封装还提供用于交换和重用的模块化。可以考虑几种不同级别的封装,并在下面讨论。
Dual Top
使用两个顶层模块的封装级别称为双顶层。其中一个顶层模块是DUT封装模块,包括DUT,接口,协议模块,时钟生成逻辑,DUT线,寄存器等。另一个顶层模块是一个包装模块,用于创建测试平台。当emulation是一个考虑因素时,Dual top是必需的。DUT包装器是emulator中的代码。testbench包装器模块在simulator中保持运行。如果测试平台仅用于仿真,则不需要双顶层,但仍可为模块化、重用等目的提供有用的封装级别。
【此处需一幅图】
从DUT到测试平台的信息传递与前面描述的相同。在文章Dual Top中有更详细的解释和示例。
Protocol Modules
当考虑emulation时,需要另一级别的封装称为协议模块,以隔离在simulation and emulation之间移动时agent和interface中发生的更改。协议模块是封装模块,封装DUT接口,相关断言,QVL实例(在接口内不允许),等等。
【此处需一幅图】
如果测试平台仅用于simulation,则不需要协议模块。然而,它们仍然可以为模块化、重用等目的提供有用的封装级别。
Blackbox and Whitebox Testing
Blackbox testing【这就是simulation】
DUT的Blackbox测试是一种测试方法,用于在DUT的接口或引脚处测试DUT的功能,而无需了解或访问DUT的内部结构。test的编写者选择有效和无效的输入并确定正确的响应。通常通过与连接到DUT引脚的接口实例的虚拟接口连接来提供对DUT的黑盒访问。
Whitebox testing 【这就是emulation】
DUT的白盒测试是一种测试DUT内部工作的测试方法。需要访问DUT的内部结构。提供此访问会影响DUT-TB通信的结构,如果需要进行白盒测试,则必须考虑这种访问。