大多数dut都有许多不同的接口(interface),每个接口都有自己特有的协议。UVM agent的任务就是集中管理和这个接口相关的所有内容,主要是各种用于驱动和监测DUT的验证组件(uvm_components),这些组件的命令最好都使用同一个前缀进行命名。
Uvm_agent中的package通常包括:
- • A Sequence_item -agent 中可能存在一个或多个sequence item,这些事务定义了agent驱动和监测DUT的信号级内容.
- • A Driver - .driver 用于将sequence_items中的数据转换为信号级行为。
- • A Sequencer - sequencer 的作用是将sequence_items从生成的sequence 路由到driver。
- • A Monitor - monitor 观察DUT接口上的信号级行为,并将其观察的结果数据转换为sequence_items,然后发送到scoreboards 等组件,已生成预期数据或者其他的数据分析处理。
- • Configuration object - 一个配置容器,用于将信息由上层(env或者test case)传递给agent代理,从而影响agent的行为方式,以及与DUT的接口连接。
每个agent 都应该有一个配置对象,其中可能包括:
1、virtual interface,其被driver和monitor使用来访问(驱动、监测)实际DUT接口信号,即组件的连接。
2、控制agent子组件的创建与否(是否需要创建driver和sequencer )以及具体行为(错误注入、组件行为延时控制等等),即组件的行为配置按钮。
- Functional coverage monitor - 收集协议特定的功能覆盖率。
- A responder - 响应接口的slave_driver,注意不是主动激励接口的driver。
- (API) Sequences- 调用driver的一个API,即BFM。
- END
作者:验证哥布林
原文链接:https://mp.weixin.qq.com/s/LHPZD3_lXMQ7srAZyG6hVA
微信公众号:
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。