本文主要是介绍UVM:6.7.3 response handler 与另类的response,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.get_response 和 put_response是一一对应的。当在sequence 中启动get_response 是,进程就会阻塞在那,一直等response_queue 中被放入新的记录。
2.如果被阻塞,不可能发出新的transaction。
3.根本原因是sequence 中发送transaction 与get_response 是在同一个进程中执行的。
4.如果分开,需要使用response_handler:
1)response_handler 默认是关闭的,所以要首先调用use_response_handler。
2)打开response_handler后,需要重载虚函数response_handler。参数是一个uvm_sequence_item 类型的指针,需要cast 成my_transaction,之后根据rsp 的值来决定sequence行为。
5.无论put/get_response 或者response_handler,都是新建一个transaction,并将其返回给sequence。
6.事实上,当uvm_do执行完后,其第一个参数不是空指针,而是指向刚刚被送给driver 的transaction。可以实现一种另类response:
driver:
7.sequence检测这个值:
这种另类的response在很多总线的driver 中用到。
这篇关于UVM:6.7.3 response handler 与另类的response的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!