51CTO博客已为您找到关于uvm源码sequence中的get_response的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及uvm源码sequence中的get_response问答内容。更多uvm源码sequence中的get_response相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和
virtualfunctionvoidput_base_response(input uvm_sequence_item response);if((response_queue_depth == -1) || (response_queue.size() < response_queue_depth))beginresponse_queue.push_back(response);return;endif(response_queue_error_report_disabled ==0)beginuvm_report_error(get_full_name(),"Respo...
1.get_response 和 put_response是一一对应的。当在sequence 中启动get_response 是,进程就会阻塞在那,一直等response_queue 中被放入新的记录。 2.如果被阻塞,不可能发出新的transaction。 3.根本原因是sequence 中发送transaction 与get_response 是在同一个进程中执行的。 4.如果分开,需要使用response_handler: 1...
但是在复杂的验证平台中,sequence需要根据driver对transaction的反应来决定接下来要发送的transaction,换言之,sequence需要得到driver的一个反馈。sequence机制提供对这种反馈的支持,它允许driver将一个response返回给sequence。 如果需要使用response,那么在sequence中需要使用get_response任务: //my_case0.sv 3classcase0_seq...
get_response和put_response 如果需要使用rosponse机制就需要在sequence内使用get_response任务;在driver内使用put_response任务。 在调用put_response前需要调用set_id_info函数,其将sequence发送的transaction id等相关信息复制到rsp内,以让sequencer知道将response返回给其哪个sequence(一个sequencer内可以有几个sequence)。
item_done还可以用来返回response(6.7.1) default_sequence如何使用:调用uvm_config_db uvm_config_db#(uvm_object_wrapper)::set( 参数一,//this 参数二,//sqr相对this的路径 参数三,//字符串"default_sequence" 参数四,//两种方式:①seq类的id,如case0_sequence::type_id::get() ②seq实例,如某seq )...
Sequence Item Flow in Pull Mode 从上图可以看出driver执行put response, 而sequence执行get response,并且put response是非阻塞的,而get_response是阻塞的,这样就保证了sequence, sequencer与driver之间的handshake。 以上介绍了put/get_response最基本的功能,下面介绍一下UVM中response的实现。UVM中的get_res...
sequence启动后,会根据参数设置情况,自动执行pre_start(), pre_body(), parent_seq.pre_do(),parent_seq.mid_do(), body(), parent_seq.post_do(), post_body, post_start()等函数/任务。 seq.start(m_sequencer,null,,1);// The following methods will be called in start()seq.pre_start();(...
可以使用response handler来处理这种阻塞问题。response handler实际上是只调用了driver一侧的put_response,但是在seq一侧又预留了接口,用于处理response。前面我们说过,seq的启动的方式,有三种,但其实他们的本质上都是调用了uvm_sequence_item的start函数,start函数里面的body()task就是一个callback函数。
使用这种flow,则sequence在 finish_item() 后面调用get_response() ,会阻塞直到驱动程序调用 put(rsp)。这种使用flow的缺点是在driver实现起来更复杂,并且sequence一定要记得处理rsp。 代码语言:javascript 复制 /// run method within the driver//taskrun_phase(uvm_phase phase);REQreq_item;//REQ is parameteri...