如何搭建一个加法器的UVM验证平台

电子说

1.3w人已加入

描述

因为最近事情还挺多的,有一段时间没有更新了,然后想想还是再积累一下再写新的文章,结果就一个月过去了。。。。所以避免拖延症继续发作还是写一篇一直想写的文章吧。

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

1 RTL设计

UVM

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

2 UVM验证平台建立

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

AndyICer,公众号:Andy的ICer之路路由器的System Verilog验证平台

UVM

2.1 agent

2.1.1 add_seq_item

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

UVM

2.1.2 add_seq

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

法一:

UVM

法二:

UVM

2.1.3 add_sequencer

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

UVM

2.1.4 add_driver

driver模块进行给DUT传输数据,reset phase进行DUT复位,main phase进行激励输入。

UVM

2.1.5 add_monitor

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

UVM

2.1.6 add_if

定义一个Interface,里面包含有两个clocking block,定义了driver和monitor接口的输入输出方向。

UVM

2.2 env

2.2.1 add_scoreboard

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

UVM

2.2.2 add_reference_model

这里的逻辑比较简单,就没有使用到reference model了,但是还是保留有这个模块。

UVM

2.2.3 add_env

env就是把agent、scoreboard、reference model都build并connect起来。

UVM

2.3 test

test是验证环境的顶层,顶层中将env建立好并将configure也建立好,在顶层中进行设置。

UVM

UVM

2.4 Testbench

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

UVM

UVM

3 验证结果

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

UVM

编辑:lyn

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分