嵌入式学习小组
登录
直播中
刘耀清
8年用户
213经验值
私信
关注
基于C的测试和验证套件集成到常规UVM测试平台的方法
开启该帖子的消息推送
UVM
System
verilog
[1]和 UVM [2]为验证团队提供结构和规则。它使得在许多测试中能获得一致的结果,并可以在团队之间共享验证。许多验证团队都在使用由C代码编写的验证套件。本文将讨论将基于C的测试和验证套件集成到常规UVM测试平台的各种方法。
回帖
(8)
白桦
2020-12-11 11:13:42
引言
本文将演示把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的解决方案。本文将探讨最简单的方法–利用与代理相关联的接口(虚拟接口)。
举报
笪琳琳
2020-12-11 11:13:54
背景
UVM测试平台通常是通过代理(Agent)附带一个System Verilog接口来构建的。该接口连接到被测设备(design under test,DUT)端口。为了给DUT发送消息,UVM利用驱动(driver)来控制引脚的时序波形。为了从DUT接收消息,UVM利用监视器(Monitor)来收集引脚的时序波形。接口实例是我们用来承载DPI-C调用的理想场所。
图1 - 典型的Agent与DUT之间利用接口链接
如图2所示,通过DPI-C添加C代码。
图2 - 单个的Agent与C代码连接
可以将多个Agent(如图3所示)连接到C代码,无论是否线程化。 C代码不是特定于实例的。可能存在与某些接口关联的某些C代码(例如AHB与AXI)。
图3 - C代码与多个Agent相连
背景
UVM测试平台通常是通过代理(Agent)附带一个System Verilog接口来构建的。该接口连接到被测设备(design under test,DUT)端口。为了给DUT发送消息,UVM利用驱动(driver)来控制引脚的时序波形。为了从DUT接收消息,UVM利用监视器(Monitor)来收集引脚的时序波形。接口实例是我们用来承载DPI-C调用的理想场所。
图1 - 典型的Agent与DUT之间利用接口链接
如图2所示,通过DPI-C添加C代码。
图2 - 单个的Agent与C代码连接
可以将多个Agent(如图3所示)连接到C代码,无论是否线程化。 C代码不是特定于实例的。可能存在与某些接口关联的某些C代码(例如AHB与AXI)。
图3 - C代码与多个Agent相连
举报
张喆
2020-12-11 11:14:06
SystemVerilog 接口
SystemVerilog接口是一个收集信号的地方,这些信号被认为是一个整体,就像总线一样。它可以包含许多其他内容,包括modports和时钟模块,以及其他接口等。SystemVerilog接口可以像模块一样被“实例化”,并且可以连接到该接口。
就我们的目的而言,我们只关心接口提供托管的DPI导入和导出范围的能力。
上面的界面是一个简单的界面,其中包含导入和导出。它可以包含许多其他项目。辅助函数的作用是将调用简单地转发到接口中已连接的序列发生器(sequencer)上。在界面中仅建议使用简单的
封装
。将功能保留在sequencer或agent代码中。
SystemVerilog 接口
SystemVerilog接口是一个收集信号的地方,这些信号被认为是一个整体,就像总线一样。它可以包含许多其他内容,包括modports和时钟模块,以及其他接口等。SystemVerilog接口可以像模块一样被“实例化”,并且可以连接到该接口。
就我们的目的而言,我们只关心接口提供托管的DPI导入和导出范围的能力。
上面的界面是一个简单的界面,其中包含导入和导出。它可以包含许多其他项目。辅助函数的作用是将调用简单地转发到接口中已连接的序列发生器(sequencer)上。在界面中仅建议使用简单的
封装
。将功能保留在sequencer或agent代码中。
举报
马占云
2020-12-11 11:14:15
UVM Agent
我们在此解决方案中使用的Agent就是常规的Agent。Transaction,Driver、Monitor或Agent的程序本身没有任何变化。任何调用DPI代码的sequence都将需要改动,sequencer也将需要改动。
Agent需要处理一件新的任务。它在Sequencer中初始化虚拟接口句柄,并在虚拟接口中初始化Sequencer句柄。这就是将接口连接到Sequencer以及将Sequencer连接到接口的魔法。Agent负责将接口和Sequncer连接在一起。
从接口可以进行Sequencer调用,而从Sequencer可以进行接口调用。
Agent通常具有该功能,在build_phase中,我们添加了另外两行。
这两行代码连接虚拟接口和Sequencer。这是从“常规”的Agent到启用DPI-C的Agent中唯一添加或改动的地方。
UVM Agent
我们在此解决方案中使用的Agent就是常规的Agent。Transaction,Driver、Monitor或Agent的程序本身没有任何变化。任何调用DPI代码的sequence都将需要改动,sequencer也将需要改动。
Agent需要处理一件新的任务。它在Sequencer中初始化虚拟接口句柄,并在虚拟接口中初始化Sequencer句柄。这就是将接口连接到Sequencer以及将Sequencer连接到接口的魔法。Agent负责将接口和Sequncer连接在一起。
从接口可以进行Sequencer调用,而从Sequencer可以进行接口调用。
Agent通常具有该功能,在build_phase中,我们添加了另外两行。
这两行代码连接虚拟接口和Sequencer。这是从“常规”的Agent到启用DPI-C的Agent中唯一添加或改动的地方。
举报
更多回帖
rotate(-90deg);
回复
相关问答
UVM
基于
C
的
测试
和
验证
套件
集成
到
常规
UVM
测试
平台
的
方法
2020-12-15
1287
请问一下在
UVM
中的UVMsequences是什么意思啊
2022-04-11
5465
如何基于
uvm
方法
学采用systemc进行IC
验证
?
2019-11-07
2766
集成
电路
测试
和
验证
的区别是什么?
2021-09-27
2348
基于PXI的无线
测试
平台
解决方案
2019-06-06
1558
UVM
交互式调试库介绍
2020-12-17
1762
如何为AXI总线创建
测试
平台
?
2020-05-06
1651
如何对模拟模块进行建模?
2020-12-25
1680
关于UART自动
验证
平台
你想知道的都在这
2021-04-30
2105
集成
电路
测试
仪有什么类别?
2019-08-21
3172
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分