本文将演示把DPI-C与标准UVM Testbench一起使用的技术和方法。 C代码将应用于底层事务生成器,高级事务生成器,记分板和监视器等模块中。 UVM测试台将同步运行-例如,UVM测试可能正在总线上传输后台流量,而C代码在创建正在测试的特定总线事务。
UVM与C之间的问题
UVM被广泛用于测试平台创建,覆盖率收集和监测。使用SystemVerilog和UVM已成为提高验证团队生产力的一种方法。
除了UVM原生的随机化和约束功能之外,验证团队还需要创建或重用C程序。这些C程序可能用来产生激励、检查标准结果,也可能用来收集统计数据。使用System Verilog的DPI-C是将这两个世界连接在一起的方法。
问题是使用DPI-C有时会很困难,并且DPI代码与“作用域”密切相关。作用域可以是模块(module)实例,接口(interface)实例或全局根(root)作用域。这些作用域为DPI提供了一个从System Verilog来回调用的连接点。
UVM测试平台几乎没有这些作用域。 UVM测试台是基于动态类的结构,而不是基于静态实例的结构。
解决方案:虚拟接口
有许多可轻松连接UVM和C的解决方案。本文将探讨最简单的方法–利用与代理相关联的接口(虚拟接口)。
本文将演示把DPI-C与标准UVM Testbench一起使用的技术和方法。 C代码将应用于底层事务生成器,高级事务生成器,记分板和监视器等模块中。 UVM测试台将同步运行-例如,UVM测试可能正在总线上传输后台流量,而C代码在创建正在测试的特定总线事务。
UVM与C之间的问题
UVM被广泛用于测试平台创建,覆盖率收集和监测。使用SystemVerilog和UVM已成为提高验证团队生产力的一种方法。
除了UVM原生的随机化和约束功能之外,验证团队还需要创建或重用C程序。这些C程序可能用来产生激励、检查标准结果,也可能用来收集统计数据。使用System Verilog的DPI-C是将这两个世界连接在一起的方法。
问题是使用DPI-C有时会很困难,并且DPI代码与“作用域”密切相关。作用域可以是模块(module)实例,接口(interface)实例或全局根(root)作用域。这些作用域为DPI提供了一个从System Verilog来回调用的连接点。
UVM测试平台几乎没有这些作用域。 UVM测试台是基于动态类的结构,而不是基于静态实例的结构。
解决方案:虚拟接口
有许多可轻松连接UVM和C的解决方案。本文将探讨最简单的方法–利用与代理相关联的接口(虚拟接口)。
举报