pack_ints函数用于将所有的字段打包成int(4个byte,或者dword)流。 unpack_ints函数用于将一个int流逐一恢复到某个类的实例中。 print函数用于打印所有的字段。 clone函数 除了上述函数之外,field automation机制还提供自动得到使用config_db::set设置的参数的功能 copy:B.copy(A),复制 clone print compare:相同为1...
set_report_verbosity_level 函数:设置某个特定的component的默认冗余度阈值。由于需要牵扯到层次引用,所以需要在connect_phase及之后的phase才可以调用这个函数。如果不牵扯到任何层次引用,就可以在之前调用。 set_report_verbosity_level_hier 函数:设置某个component及其以下所有的component的冗余度阈值。 set_report_id_...
field automation机制的常用函数 copy:如果要把某个A实例复制到B实例中,那么应该使用B.copy(A),在使用此函数前,B实例必须已经使用new函数分配好了内存空间 compare:用于比较两个实例是否一样,如果要比较A与B是否一样,可以使用A.compare(B),也可以使用B.compare(A)。当两者一致时,返回1;否则为0 pack:用于将所...
对于uvm_object派生类来说,field_automation机制让对象自动有的copy compare print pack unpack等函数,简化了实现uvm_component派生类里一些function/task的工作量 对于uvm_component派生类来说,field_automation机制最重要的是 可以在build_phase中自动获取uvm_config_db#()::set()的数值(必须加super.build_phase(phase...
这个类包含了compare, printer等,一般默认使用uvm_object_globals.svh中的全局变量,uvm_default_comparer, uvm_default_table_printer。也可以自己配置compare, printer中的参数,并在调用compare(), print()时传入即可或者重写do_compare, do_print函数,实现自定义功能。
上述的callback和策略模式的实现方式一样(组合 + 多态),在Driver类声明抽象类,然后调用抽象类中的函数,根据类的多态,实际调用的是子类重写过的函数。解耦pre_tx()函数的实现与调用,保持代码结构稳定,提高扩展性。 不同点在于callback定义的 pre_tx() 更像一个hook钩子,callback 常在VIP中使用,为了满足不同使用...
uvm_object类是所有UVM数据和层次化类的基类。它主要的角色是为像create/copy/compare/print/record这样的通用操作来定义一系列method。从uvm_object派生出来的类必须执行像create和get_type_name这样的纯虚函数。 uvm_object的methods介绍: a) new – 用给定的实例名字创建一个新的uvm_object。
对field_automation最直观的感受是,他可以自动实现copy、compare、print等三个函数。当使用uvm_field系列相关宏注册之后,可以直接调用以上三个函数,而无需自己定义。这极大的简化了验证平台的搭建,尤其是简化了driver和monitor,提高了效率。 2.config_db机制
第7行-第12行 使用UVM的宏来自动实现诸如copy(), compare(), print(), pack()等函数。 继承和约束分层 在验证过程中,验证组件用户可能需要通过在类定义中添加更多的约束来调整数据项的生成。在SystemVerilog中 ,这是用继承(inheritance)来完成的。下面的例子显示了一个派生的数据项word_aligned_item,它包括一个...
注2:uvm_field_*宏会调用uvm_comparer的compare_*函数,而uvm_comparer的compare_*函数在比较失败时,会调用comparer.print_msg函数,print_msg函数内会对comparer.result进行累加(comparer.result的初始值为0); comparer.result会反映到uvm_object/uvm_component的compare函数返回值上,如果comparer.result!=0,那么uvm_obj...