uvm_recorder.svh里实现了两个类:uvm_recorder
和uvm_text_recorder
。uvm recorder规定了如何把field记录到record中,是uvm_tr_stream中record的抽象表示方法。
uvm_recorder类直接派生自uvm_object,定义的主要方法如下表所示。uvm_text_recorder类直接派生自uvm_recorder,是uvm_text_tr_database的默认recorder,具体实现了uvm_recorder类中的钩子函数及空函数。
序号 | 方法 | 描述 |
---|---|---|
1 | get_stream | 返回创建当前record的stream引用参数reference,若record未初始化就调用了该函数会报warning,do_open函数值会对record进行初始化 |
2 | close | 在uvm_tr_stream::open_recorder打开recorder之后,调用该函数关闭recorder并记录close_time。关闭recorder意味着当前transaction的结束。如果已关闭则直接退出,否则调用钩子函数do_close进行关闭。 |
3 | free | free,释放recorder,用于解决数据库实现跨语言边界的问题。释放recorder意味着当前stream及数据库可以释放recorder的reference参数。若recorder已被释放则世界退出,若recorder未close先close再调用钩子函数do_free释放,并清理stream/recorder状态。 |
4 | is_open | 返回recorder是否open,1代表open |
5 | get_open_time | 返回recorder open时间 |
6 | is_closed | 返回recorder是否close,1代表close |
7 | get_close_time | 返回recorder close时间 |
8 | m_do_open | 调用钩子函数do_open初始化recorder内部状态,free前重复初始化会报error, |
9 | m_free_id | 根据recorder id删除recorder及其对应的id |
10 | get_handle | 采用inst_id作为recorder的handle并返回handler,若当前recorder的id不是inst_id,以inst_id取而代之 |
11 | get_recorder_from_handle | 根据handle(inst_id)获取recorder |
12 | record_feild | 调用对应的钩子函数来记录当前类型的参数 |
13 | record_field_int | 调用对应的钩子函数来记录当前类型的参数 |
14 | record_real | 调用对应的钩子函数来记录当前类型的参数 |
15 | record_object | 调用对应的钩子函数来记录当前类型的参数 |
16 | record_string | 调用对应的钩子函数来记录当前类型的参数 |
17 | record_time | 调用对应的钩子函数来记录当前类型的参数 |
18 | record_generic | 调用对应的钩子函数来记录当前类型的参数 |
19 | use_record_attribute | 用以表示是否支持使用uvm_record_attribute宏,默认返回0不支持 |
20 | get_record_attribute_handle | 提供兼容uvm_record_attribute宏的工具指定的handle,默认采用get_handle的值 |