苏州木渎做网站公司,推广文案范文100字,包装设计的网站,充电宝网站建设策划书方式一#xff1a;sv 的new函数
trans tr1,tr2;
malbox.get(tr2);
tr1 new tr2;//仅用于浅拷贝#xff0c;拷贝后tr1,tr2为两个独立的对象方式二#xff1a;uvm 域的自动化常用函数#xff1a;copy / clone /
使用前提#xff1a;
1. 函数都可用于uvm_object类型sv 的new函数
trans tr1,tr2;
malbox.get(tr2);
tr1 new tr2;//仅用于浅拷贝拷贝后tr1,tr2为两个独立的对象方式二uvm 域的自动化常用函数copy / clone /
使用前提
1. 函数都可用于uvm_object类型copy 还可用于component类型
2. 源对象和目的对象需已经注册在工厂中注册方式如下
uvm_field_int(idx,UVM_ALL_ON) //参数注册
注如果注册时使用了if那么不满足条件的参数将不会被注册以就不能使用函数了
使用方法
1. copy
trans tr1 tr2;tr1 new;//copy在使用前需创建对象malbox.get(tr2);tr1.copy(tr2);//仅浅拷贝copy是void类型函数
2. clone
trans tr1 tr2;malbox.get(tr2);if(!$cast(tr1,tr2.clone))//仅浅拷贝clone在使用时tr1为空句柄不需要提前创建对象因为clonenewcopy
uvm_error()
总结
1. 两个方式的拷贝结果一致使用方式略有不同
2. 两种方式的拷贝均只用于浅拷贝如果需要深拷贝需要自行写出copy函数
浅拷贝仅拷贝变量和句柄不拷贝句柄的对象所有拷贝前后的两个句柄指向同一个对象
深拷贝拷贝变量/句柄/句柄所指向的对象拷贝前后两个句柄指向两个不同的对象