functionvoid print(); $display("@%0t : %s :",$time,name); $display("@%0t : A is %d",$time,A); $display("@%0t : B is %d",$time,B); $display("@%0t : op is %3b",$time,op);//enum do not need transform to bit[2:0] endfunction // transaction的复制函数 function trans copy();//copy is the return copy=new(); // new copy first copy.A=this.A; copy.B=this.B; copy.op=this.op; endfunction
endclass
3. error_trans继承自trans类型
1 2 3 4 5 6 7
class error_trans extends trans;
constraint c_data { A inside {[0:9]}; B inside {[0:9]}; } endclass
在error_trans中,我们重载了约束c_data,使得A,B的值在0到9之间。
我们在后面可以观察它的执行结果
4. generator中
通常我们建议在generator中发送transaction的时候写成如下:
1 2 3 4 5 6 7 8
task generator::run(); trans tr; //定义对象句柄 repeat(5) begin tr=new(); //在循环中创建对象,每次发送的对象都不同 assert(tr.randomize); mlb.put(tr); end endtask