本文主要是介绍【UVM_Sequencer Driver Monitor_2024.03.04】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Sequencer
充当激励环节的路由器作用,管理sequence,也传递数据,仲裁某一时刻传递哪个sequence的数据
- uvm_sequencer#(REQ,RSP)
REQ:request;RSP:response//一般相同 - default_sequence
决定接数据的类型 - seq_item_export
决定送数据的driver
sequencer的使用
继承class gpio_sequencer extends uvm_sequencer #(gpio_transfer);
注册,function new
简便方法(不建议使用):
typedef uvm_sequencer #(gpio_transfer) gpio_sequencer;
virtual sequencer
- 不同的sequence需要不同的sequencer
- 控制其他的sequencer
- 不和任何driver相连
- 本身不处理item
Driver
driver和monitor都是数据转换类型,但方向相反
driver的方法:
get_next_item(阻塞)
try_next_item(不阻塞)
item_done(不阻塞)
driver的使用
uvm_driver(REQ,REP)
seq_item_port.get_next_item(req);//get上述括号内传来的句柄
Monitor
- 监控端口信号,生成transaction
- check:协议、时序检查
- coverage:功能覆盖率收集
- information:调试信息
源码中没有定义port
monitor不用像driver一样按时序操作的原因:
driver:transaction→DUT,DUT时序要求正确
monitor:DUT→transaction,验证没有时序的概念,只关注行为
APB协议
PSEL为高,且下一拍PENABLE为高,当写信号为高时实现写操作,当读信号为高时实现读操作
这篇关于【UVM_Sequencer Driver Monitor_2024.03.04】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!