Response queue overflow
一、VIP Sequence Response queue overflow
我们經常會遇到VIP的sequence报response queue overflow的情況,怎么去规避这个问题呢?應為response queue的depth默認為8,那麼如何去修改default設置呢?本文提供2种方法。
1.1 增大depth,如下图,將Response Queue的Depth設置為512
virtual task body();
super.body();
set_response_queue_depth(512);
endtask
1.2 If you really don’t care, then you can turn off the error as mentioned below.
virtual task body();
super.body();
set_response_queue_error_report_disabled(1);
endtask
二、UVM源码解读
2.1 set_response_queue_error_report_disabled
public void set_response_queue_error_report_disabled( bit value ) ;
Function: set_response_queue_error_report_disabled
By default, if the response_queue overflows, an error is reported.
The response_queue will overflow if more responses are sent to
this sequence from the driver than get_response calls are made.
Setting the value to 0 disables these errors, while setting it
to 1 enables them.
2.2 set_response_queue_depth( int value );
If you do care, and if the error message is pointed to a real problem with your environment, then you may need to fix it - either by increasing the queue depth or by updating sequences to actually retrieve the response.
public void set_response_queue_depth( int value )
Function: set_response_queue_depth
The default maximum depth of the response queue is 8.
This method is used to examine or change the maximum depth
of the response queue. Setting the response_queue_depth
to -1 indicates an arbitrarily deep response queue. No checking is done.