前言
目前市面上最好的学习教程无疑是《UVM实战》这一本书,笔者也是其忠实粉丝,但是在阅读过程中,也发现有些许细节没有讲全,因此笔者打算针对 其为涵盖部分,结合英文教程,给出自己的理解
总纲
上图将UVM中的各个基本组件基本描述了,主要差的内容就是transaction和interface
如果一上来就看这个比较难以理解,其实可以类比思考下:将整个UVM系统想象成在fpga中编写testbench,核心就是给dut(也就是待测模块)随机化,然后看输出是否符合要求,uvm过程是想让上述过程模块化(对于大项目来说)。
子模块分析:
一、数据输入DUT端
1.1、sequence
从transaction中接收数据,并完成随机化,
1.2、sequencer
从sequence接收数据,然后发送给driver
1.3、driver
从sequencer中接收数据,然后通过interface发给DUT
1.4、agent
将sequencer、driver封装在一起
二、DUT输出数据
2.1、monitor
将interface中的数据转化为transaction数