SPI_Test/tb/mcureg_tb/mcureg_trans.sv

101 lines
4.0 KiB
Systemverilog

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