一、 各个component组件的功能:
1. uvm_driver: 参数化类,接收来自sequencer的激励,然后驱动到接口上
2. uvm_sequencer: 参数化类,作为一个管道,起到路由器的作用,sequence产生的激励通过这个管道流向driver
3. uvm_monitor: 监测总线数据,发送到scb或者coverage
4. uvm_agent: 作为基本单元,一般包含一个monitor、driver和sequencer,通过设置is_activate变量来控制是否例化driver和sequencer
5. uvm_scoreboard:接收来自不同monitor的数据,进行数据的比对和报告
6. uvm_env:一个结构化的容器
7. uvm_test: 作为验证环境的唯一入口
8. 分模块验证后,如何将不同模块整合起来组成顶层的验证环境?
不同的模块验证均需要搭建一个env来进行验证,这个env会包括master agent,slave agent以及scb等组件,构成一个小型的验证环境
方法一: 将分模块后的各个模块中的一部分抽离出来,组成顶层验证环境,需要自定义一个总的scb
方法二: 将各个子环境组合起来,把子环境中不必要的组件passive掉,各个子环境的scb保留
各自的优点:方法二可以复用scb,每个子模块单独验自己的功能即可,但需要控制例化各个组件,方法一需要重新定义scb,费时费力
二、 master和slave代表着什么?
如果要验一个模块,通常对定义一个master agent和一个slaver agent,master掌握主动权,发出命令,而slave就是去响应master的指令
这种响应不单单指读或者驱动总线,还包括其他的master需要其完成的动作。比如在AHB2APB中,master发出读指令,那么slave就得回应rdata,
当master发出的是写指令,那么slave就需要把写入的指令存储起来。在mcdf的register module中,master可以发出读取状态寄存器的指令,那么slave端
就需要回应状态寄存器的信息,如果是写指令,则需要将信息存放起来。
三、 object的功能:
uvm_sequence
uvm-sequence_item
UVM知识之基本组件
最新推荐文章于 2024-08-22 12:21:15 发布