这里print()函数还有个uvm_printer类型的参数,是指定我们选择的打印器类型,这个我们后面会讲,这里我们先继续讲图4中的代码,只要我们没有在`uvm_field_queue_int中指定FLAG为UVM_NOPRINT,图4中的宏`uvm_print_array_int3()就会被调用,`uvm_print_array_int3定义在uvm_printer_defines.svh中如图7所示 图7 uvm_...
uvm_queue实现了基于类的动态队列,在sv 队列基础上,主要更改/新加了以下方法: get_global_queue(),获取全局队列,没有全局队列的话,新建全局队列; get_global(int index),获取全局队列并返回第index个元素; get(int index),返回队列第index个元素,index超出范围会报warning; size(),返回队列的长度; insert(int ...
my_obj_type first_obj = my_queue.front(); //获取队列头部的对象,但不对队列做任何修改 5.检查队列是否为空: if (my_queue.empty()) //如果队列为空,则返回true;否则返回false 6.获取队列中的对象数量: int count = my_queue.size(); //返回队列中对象的数量 7.清空队列中的所有对象: my_queue...
uvm_queue是一个单例模式(只能有一个实例)的全局uvm_object。 5.1在一个component声明一个uvm_queue类型的句柄,参数化的类可以更改: 5.2通过类名静态调用get_global_queue方法来完成queue的实例化: 5.3在另一个component中声明一个uvm_queue类型的句柄,参数化的类和前一个component保持一致: 5.4通过类名静态调用get...
uvm_queue #(T)和uvm_pool#(type KEY=int, T=uvm_void)类似,实现一个class-based dynamic queue. # uvm_pool.svh class uvm_pool #(type KEY=int, T=uvm_void) extends uvm_object; const static string type_name = "uvm_pool"; typedef uvm_pool #(KEY,T) this_type;...
`defineuvm_field_queue_int(ARG,FLAG) `defineuvm_field_queue_object(ARG,FLAG) 注册示例代码如下: 折叠代码块 3.uvm_component 类注册 uvm_component_utils: 用于把一个直接或者间接派生自 uvm_component 的类注册到 factory; uvm_component_param_utils:用于把一个直接或者间接派生自 uvm_component 的...
sequence中的get_response(rsp,reg.get_transaction_id()) 与 driver中的put_response(rsp)握手。若不指明ID,则直接pop出response_queue[$]的transaction。 rsp和req的inst_id一样,说明是同一份实例。 --- 类的静态变量,
可以看出,在put_base_response函数里会将uvm_driver送过的rsp放到response_queue队列了,response_queue队列定义为:protected uvm_sequence_item response_queue[$]。另外说下response_queue_depth这个int类型变量,它的默认值为8,也就是response_queue队列默认只能放8个rsp,如果超过的话,会被直接忽视掉(用户可以打开respon...
local uvm_object_string_pool #(uvm_queue #(string)) hdl_paths_pool;//uvm_reg_block内变量//uvm_pool.svhclassuvm_pool #(type KEY=int, T=uvm_void) extends uvm_object; ...protectedT pool[KEY]; ... endclassclassuvm_object_string_pool #(type T=uvm_object) extends uvm_pool #(string...
`define uvm_field_queue_int(ARG,FLAG) `define uvm_field_queue_object(ARG,FLAG) 1. 2. 3. 4. 5. 6. 7. 8. 注册示例代码如下: 折叠代码块 class my_transaction extends uvm_sequence_item; rand bit[47:0] dmac; rand bit[47:0] smac; ...