class mcureg_trans; rand bit[3 :0] wrmask ; rand bit[2 :0] fb_st_info ; rand bit[31 :0] run_time ; rand bit[31 :0] instr_num ; rand bit[31 :0] mcu_param[3:0] ; // MCU parameter 0~3 rand bit[31 :0] wrmask_time ; rand bit[31 :0] fb_st_info_time ; rand bit[31 :0] run_time_time ; rand bit[31 :0] instr_num_time ; rand bit[31 :0] mcu_param_time[3:0]; rand bit[31 :0] mcu_result [3:0] ; // MCU result 0~3 rand bit[31 :0] mcu_cwfr [3:0] ; // Carrier frequency ctrl word 0~3 rand bit[31 :0] mcu_gapr [7:0] ; // Carrier phase ctrl word 0~3 rand bit[31 :0] mcu_ampr [3:0] ; // Carrier Amplitude 0~3 rand bit[31 :0] mcu_baisr [3:0] ; // Carrier Bais 0~3 rand bit[1 :0] mcu_intp_sel ; //2'b00:HBF;2'b01:Nearest-neighbor interpolator; rand bit mcu_nco_pha_clr ; rand bit[15 :0] mcu_rz_pha ; constraint cstr { wrmask == 4'b1111; wrmask_time >= 0 ; fb_st_info_time >= 0 ; run_time_time >= 0 ; instr_num_time >= 0 ; mcu_param_time[0] >= 0 ; mcu_param_time[1] >= 0 ; mcu_param_time[2] >= 0 ; mcu_param_time[3] >= 0 ; wrmask_time <= 2000 ; fb_st_info_time <= 2000 ; run_time_time <= 2000 ; instr_num_time <= 2000 ; mcu_param_time[0] <= 2000 ; mcu_param_time[1] <= 2000 ; mcu_param_time[2] <= 2000 ; mcu_param_time[3] <= 2000 ; } function new(); endfunction function bit[7:0] compare(mcureg_trans tr); bit[7:0] result=8'b0; if(tr.mcu_result != mcu_result ) result[0]=1'b1; if(tr.mcu_cwfr != mcu_cwfr ) result[1]=1'b1; if(tr.mcu_gapr != mcu_gapr ) result[2]=1'b1; if(tr.mcu_ampr != mcu_ampr ) result[3]=1'b1; if(tr.mcu_baisr != mcu_baisr ) result[4]=1'b1; if(tr.mcu_intp_sel != mcu_intp_sel ) result[5]=1'b1; if(tr.mcu_nco_pha_clr != mcu_nco_pha_clr) result[6]=1'b1; if(tr.mcu_rz_pha != mcu_rz_pha ) result[7]=1'b1; return result; endfunction function print(bit[7:0] ctrl,integer fid); if(ctrl[0]) begin $fwrite(fid,"mcu_result0 =%b\n",mcu_result[0] ); $fwrite(fid,"mcu_result1 =%b\n",mcu_result[1] ); $fwrite(fid,"mcu_result2 =%b\n",mcu_result[2] ); $fwrite(fid,"mcu_result3 =%b\n",mcu_result[3] ); end if(ctrl[1]) begin $fwrite(fid,"mcu_cwfr0 =%b\n",mcu_cwfr[0] ); $fwrite(fid,"mcu_cwfr1 =%b\n",mcu_cwfr[1] ); $fwrite(fid,"mcu_cwfr2 =%b\n",mcu_cwfr[2] ); $fwrite(fid,"mcu_cwfr3 =%b\n",mcu_cwfr[3] ); end if(ctrl[2]) begin $fwrite(fid,"mcu_gapr0 =%b\n",mcu_gapr[0] ); $fwrite(fid,"mcu_gapr1 =%b\n",mcu_gapr[1] ); $fwrite(fid,"mcu_gapr2 =%b\n",mcu_gapr[2] ); $fwrite(fid,"mcu_gapr3 =%b\n",mcu_gapr[3] ); $fwrite(fid,"mcu_gapr4 =%b\n",mcu_gapr[4] ); $fwrite(fid,"mcu_gapr5 =%b\n",mcu_gapr[5] ); $fwrite(fid,"mcu_gapr6 =%b\n",mcu_gapr[6] ); $fwrite(fid,"mcu_gapr7 =%b\n",mcu_gapr[7] ); end if(ctrl[3]) begin $fwrite(fid,"mcu_ampr0 =%b\n",mcu_ampr[0] ); $fwrite(fid,"mcu_ampr1 =%b\n",mcu_ampr[1] ); $fwrite(fid,"mcu_ampr2 =%b\n",mcu_ampr[2] ); $fwrite(fid,"mcu_ampr3 =%b\n",mcu_ampr[3] ); end if(ctrl[4]) begin $fwrite(fid,"mcu_baisr0 =%b\n",mcu_baisr[0] ); $fwrite(fid,"mcu_baisr1 =%b\n",mcu_baisr[1] ); $fwrite(fid,"mcu_baisr2 =%b\n",mcu_baisr[2] ); $fwrite(fid,"mcu_baisr3 =%b\n",mcu_baisr[3] ); end if(ctrl[5]) $fwrite(fid,"mcu_intp_sel =%b\n",mcu_intp_sel ); if(ctrl[6]) $fwrite(fid,"mcu_nco_pha_clr =%b\n",mcu_nco_pha_clr); if(ctrl[7]) $fwrite(fid,"mcu_rz_pha =%b\n",mcu_rz_pha ); endfunction endclass : mcureg_trans