UVM实战——02构建一个简单的UVM平台_1 UVM平台中的关键组件

本文介绍了UVM验证平台中的关键组件,如driver、sequencer、monitor等,并详细阐述了它们的功能与工作流程。此外,还探讨了如何通过简化UVM平台来减少复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二节目录
UVM平台的主要组件
创建用户所需的transaction(事务)
创建sequence
创建sequencer
创建driver
创建monitor
创建agent
创建environment
创建testcase
运行仿真

1. driver激励驱动

driver:将接收到的事务,转化为pin级信号,通过接口,驱动到被测设计的端口上
在这里插入图片描述

2. sequencer

sequencer:sequencer启动后,会产生事务,将事务转发给driver
在这里插入图片描述

3. monitor

monitor:监视接口上的信号,包括被测设计的输入、输出信号;将获取的pin级信号转化为事务及对象,然后给其他组件进行处理。
在这里插入图片描述

4. agent

在这里插入图片描述

5. reference modle参考模型

reference modle:模拟DUT的功能行为,根据输入的激励产生相应的结果,该结果称为参考值或者期望值

master agent中的monitor会将DUT的输入收集下来,发送给参考模型,作为参考模型的输入
在这里插入图片描述

6. slave agent

slave agent中的monitor收集DUT的输出信息,将获取的pin级信号转化为事务及对象,然后发送给其他组件进行分析。
在这里插入图片描述
一般情况下,slave agent不需要驱动DUT,只包含monitor。

7. scoreboard

scoreboard:从两个地方获取数据,一个是参考模型发过来的期望值,另外一个是slave agent发来的DUT输出值,在积分板中,对这两个值进行比较,由此来判断DUT的功能是否正确。
同时可以将功能覆盖率嵌入scoreboard中,以实现覆盖率的收集。
在这里插入图片描述

8. env

各个组件存在数据通信,将各个组件用某种方式连接起来。
一旦env完成,在后续的测试案例中,不能对其进行更改。如果需要更改env,那么之前通过的测试案例需要重新执行。
在这里插入图片描述

9. testcase测试案例

在一个测试项目中,测试案例可以有多个,但env只有一个,并且env一旦确定,就不能随意更改。
对整个平台的配置,都是在testcase中完成滴,因此,在构建env的时候,需要事先配置好接口,env具有可配置性。
在这里插入图片描述

10. 构成平台的结构组件

从基类扩展
在这里插入图片描述
参考模型需要从uvm_component扩展
在这里插入图片描述

11. 组件间的通信端口

UVM需要建立某种机制,将需要通信的接口连接起来,使用通信端口来建立组件之间的连接。
uvm的端口有很多中,根据不同的场合,不同的需求来选用。

  • uvm_*_port
  • uvm_*_import
  • uvm_*_export
  • uvm_fifo
  • uvm_*_socket
    在这里插入图片描述

12. 类比举例

类比举例:组件比作工厂的流水线的设备,事务就是穿梭于设备中的产品;事务是组件的操作对象
在这里插入图片描述

13. 简化UVM平台

13.1 简化1—去掉slave agent

在这里插入图片描述

13.2 简化2—去掉scoreboard

在这里插入图片描述

13.3 简化3—去掉reference modle(参考模型)

在这里插入图片描述

13.4 简化4—去掉DUT

在这里插入图片描述
最后,只剩下了一个master agent,实现的功能:仅产生事务,并把事务发送到driver上。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值