一个加法器的UVM验证平台设计

最近自己尝试搭建一个简单的验证平台,入门就先从简单开始!

1 RTL设计

在这里插入图片描述
RTL就是一个带时序的1bit加法器,然后验证是否功能正确。理论上的正确功能应该是输入数据a和数据b之后的下个周期输出结果sum等于a+b。

2 UVM验证平台建立

将整个UVM验证平台分为4个部分agent、env、test、tb,逐层递进,关于层次大小结构图可以看这篇文章,下图是整个验证平台的hierarchy。
在这里插入图片描述
2.1 agent

2.1.1 add_seq_item

首先建立一个transaction,即建立一个数据包。

在这里插入图片描述
2.1.2 add_seq

建立一个sequence,用来发送transaction。发送transaction的方式有两种,一种是用start_item()和finish_item(),另外一种是用`uvm_do()的宏。但是两种方法的原理是一样的。

法一:

在这里插入图片描述
法二:
在这里插入图片描述
2.1.3 add_sequencer

建立一个sequencer用于与其他模块通信。

在这里插入图片描述
2.1.4 add_driver

driver模块进行给DUT传输数据,reset phase进行DUT复位,main phase进行激励输入。
在这里插入图片描述
2.1.5 add_monitor

monitor模块接收DUT发来的数据,并通过TLM通信发送给scoreboard。

在这里插入图片描述
2.1.6 add_if

定义一个Interface,里面包含有两个clocking block,定义了driver和monitor接口的输入输出方向。
在这里插入图片描述
2.2 env

2.2.1 add_scoreboard

建立scoreboard,进行硬件结果和软件结果的对比。

在这里插入图片描述
2.2.2 add_reference_model

这里的逻辑比较简单,就没有使用到reference model了,但是还是保留有这个模块。
在这里插入图片描述
2.2.3 add_env

env就是把agent、scoreboard、reference model都build并connect起来。
在这里插入图片描述
2.3 test

test是验证环境的顶层,顶层中将env建立好并将configure也建立好,在顶层中进行设置。
在这里插入图片描述
在这里插入图片描述
2.4 Testbench

将硬件DUT和软件验证环境联系起来,形成一个完成的测试平台。

在这里插入图片描述
在这里插入图片描述
3 验证结果

可以看出验证功能正确,并且通过对于driver和monitor时序的调整可以控制输出结果的时序,大家也可以尝试搭建一个验证平台,对于UVM会有一个更加直观的感受。

在这里插入图片描述

Andy的ICer之路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值