field automation常用函数
1.Copy函数用于实例的复制,其原型为:
Extern function void copy(uvm_object rhs);
如果要把某个A实例复制到B实例中,应该使用B.copy(A)。在使用此函数前,B实例必须已经使用new函数分配好了内存空间;
2.Compare函数用于比较两个实例是否一样,其原型为:
Extern function bit compare(uvm_object rhs, uvm_comparer comparer=null);
如果要比较A和B是否一样,可以使用A.compare(B),也可以使用B.compare(A)。当两者一致时,返回为1,否则返回0;
3.Pack_bytes函数用于将所有的字段打包成byte流,原型为:
Extern function int pack_bytes(ref byte unsigned bytestream[], input uvm_packer packer=null);
4.Unpack_bytes函数用于将一个byte流逐一恢复到某个类的实例中,其原型为:
Extern function int unpack_bytes(ref byte unsigned bytestream[], input uvm_packer packer=null);
5.Pack函数用于将所有的字段打包成bit流,其原型为:
Extern function bit pack(ref bit bitstream[], input uvm_packer packer=null);
6.unpack函数用于将一个bit流逐一恢复到某个类的实例中,其原型为:
Extern function in unpack(ref bit bitstream[], input uvm_packer packer=null);
7.Pack_ints函数用于将所有的字段打包成int(4个byte,或者dword)流,其原型为:
Extern function int pack_ints(ref int unsigned intstream[], input uvm_packer packer=null);
8.unPack_ints函数用于将一个int流逐一恢复到某个类的实例中,其原型为:
Extern function int unpack_ints(ref int unsigned intstream[], input uvm_packer packer=null);
9.Print函数用于打印所有的字段;
10.Clone函数,原型为:
Extern virtual function uvm_object clone();
在uvm_object中有clone函数,它用于分配一块内存空间,并把另一个实例复制到这块新的内存空间中。Clone函数的使用方式如下:
Class my_env extends uvm_env;
Virtual function void build_phase(uvm_phase phase);
A a1;
A a2;
a1 = new(“a1”);
b1=new(“b1”);
$cast(a2, a1.clone());
Endfunction : build_phase
Endclass
上述的clone函数无法用于uvm_component中,因为一旦使用后,新clone出来的类,其parent参数无法指定;
Copy函数也是uvm_object的一个函数,在使用copy前,目标实例已经使用new函数分配好了内存空间,而使用clone函数时,目标实例可以只是一个空指针。换言之,clone=new+copy;
虽然uvm_component无法使用clone函数,但是可以使用copy函数。因为在调用copy之前,目标实例已经完成了实例化,其parent参数已经指定了;
uvm_component的另外一个限制是,位于同一父节点下的不同component,在实例化时不能使用相同的名字。
浙公网安备 33010602011771号