UVM---seq/sqr/driver
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVM---seq/sqr/driver相关的知识,希望对你有一定的参考价值。
参考技术A在driver中的put_response与seq中的get_response是成对存在的,也就是说,seq中要get driver中的put,是阻塞的。
可以使用response handler来处理这种阻塞问题。response handler实际上是只调用了driver一侧的put_response,但是在seq一侧又预留了接口,用于处理response。
前面我们说过,seq的启动的方式,有三种,但其实他们的本质上都是调用了uvm_sequence_item的start函数,start函数里面的body()task就是一个callback函数。所以user在应用的时候,都会在body里面进行重写。
tlm源码分析——sqr_if_base类型
基于sqr_if_base类型的uvm_port_base,主要扩展出了三个class;
uvm_seq_port的宏,与tlm_ifs的类似,只是定义了new函数,min_size为0,max_size为1。
seq_item_pull_imp,主要实现sequencer与driver之间传递item的很多function;
在函数调用时,使用的是this.m_if中的函数,也就是imp_list中的第一个;
export的实现与port的类似;
imp的实现,uvm_imp_common宏中,也是实现new函数,同时定义m_imp的变量;
seq_item_pull_imp中的调用使用的是m_imp,所以在sequencer中必须定义很多get_item的function;
在connect的时候,seq_item_pull_port,已经得到imp的指针,继而调用m_imp中的函数;
以上是关于UVM---seq/sqr/driver的主要内容,如果未能解决你的问题,请参考以下文章