UVM环境组件
组件功能
- sequence_item:包装数据
- UVM中,所有的transaction都要从uvm_sequence_item派生
- sequence item是每一次driver与DUT互动的最小粒度内容
- sequence:产生数据
- uvm_sequence是一个参数化的类,其参数是transaction类型
- 当一个sequence启动之后,会自动执行body中的代码
- sequencer:发送数据
- uvm_sequencer是一个参数化的类,其参数是transaction类型
- 在sequence与driver之间起到桥梁作用
- driver:按照一定的时序驱动数据
- uvm_driver是一个参数化的类,其参数是transaction类型
class my_driver extends uvm_driver#(my_transaction);
- uvm_driver是一个参数化的类,其参数是transaction类型
- scoreboard/checker:判断DUT的行为是否与预期相符合
- monitor:收集DUT的输出并把它们传递给scoreboard
- 一个用于监测DUT的输入口,一个用于监测DUT的输出口
- reference model:验证平台给出的预期结果
- env:实例化上述组件
- agent:
- base_test:设置平台超时退出时间;设置平台参数的值
组件自带成员和函数
- 带参数化类的组件的成员变量:
- req:类型是传递给uvm_driver的参数,即transaction
- seq_item_xxx:
- seq_item_port:uvm_driver中,接收transaction类型
- seq_item_export:uvm_sequencer中,传递transaction类型
- 两者之间可以建立一个“通道”,在my_agent中,使用connect函数把两者联系在一起
- sequence相关组件自带函数:
- driver相关组件自带函数:
- get_next_item:阻塞。向sequencer申请新的transaction,一直等到有新的transaction才返回
- try_next_item:非阻塞。尝试着询问sequencer是否有新的transaction,如果有,则得到此transaction,否则就直接返回
- item_done:通知sequencer完成驱动,sequencer会把这个transaction删除
UVM环境结构
UVM验证平台
测试用例执行流程