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的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby on Rails 应用程序中尽可能 DRY

JDBC连接数据库

报表生成之Hyperion SQR

SQR 按位置而不是多个 IF LET ENDIF 替换

tlm源码分析——sqr_if_base类型

UVA10177 (2/3/4)-D Sqr/Rects/Cubes/Boxes?数学