SPI_Test/tb/sysreg_tb/sysreg_trans.sv

111 lines
2.6 KiB
Systemverilog
Raw Normal View History

2024-06-25 16:41:01 +08:00
class sysreg_trans;
rand int status_time[32] ;
rand bit dbg_enable ;
rand bit dbg_data_sel ;
rand bit[1:0] dbg_ch_sel ;
rand bit irq ;
constraint cstr {
status_time[ 0] <= 5000 ;
status_time[ 1] <= 5000 ;
status_time[ 2] <= 5000 ;
status_time[ 3] <= 5000 ;
status_time[ 4] == 5000 ;
status_time[ 5] == 5000 ;
status_time[ 6] == 5000 ;
status_time[ 7] == 5000 ;
status_time[ 8] <= 5000 ;
status_time[ 9] <= 5000 ;
status_time[10] <= 5000 ;
status_time[11] <= 5000 ;
status_time[12] == 5000 ;
status_time[13] == 5000 ;
status_time[14] == 5000 ;
status_time[15] == 5000 ;
status_time[16] <= 5000 ;
status_time[17] <= 5000 ;
status_time[18] <= 5000 ;
status_time[19] <= 5000 ;
status_time[20] == 5000 ;
status_time[21] == 5000 ;
status_time[22] == 5000 ;
status_time[23] == 5000 ;
status_time[24] <= 5000 ;
status_time[25] <= 5000 ;
status_time[26] <= 5000 ;
status_time[27] <= 5000 ;
status_time[28] <= 5000 ;
status_time[29] == 5000 ;
status_time[30] == 5000 ;
status_time[31] == 5000 ;
status_time[ 0] > 0 ;
status_time[ 1] > 0 ;
status_time[ 2] > 0 ;
status_time[ 3] > 0 ;
status_time[ 4] > 0 ;
status_time[ 5] > 0 ;
status_time[ 6] > 0 ;
status_time[ 7] > 0 ;
status_time[ 8] > 0 ;
status_time[ 9] > 0 ;
status_time[10] > 0 ;
status_time[11] > 0 ;
status_time[12] > 0 ;
status_time[13] > 0 ;
status_time[14] > 0 ;
status_time[15] > 0 ;
status_time[16] > 0 ;
status_time[17] > 0 ;
status_time[18] > 0 ;
status_time[19] > 0 ;
status_time[20] > 0 ;
status_time[21] > 0 ;
status_time[22] > 0 ;
status_time[23] > 0 ;
status_time[24] > 0 ;
status_time[25] > 0 ;
status_time[26] > 0 ;
status_time[27] > 0 ;
status_time[28] > 0 ;
status_time[29] > 0 ;
status_time[30] > 0 ;
status_time[31] > 0 ;
}
function new();
endfunction
function bit[3:0] compare(sysreg_trans tr);
bit[3:0] result=4'b0;
if(tr.dbg_enable != dbg_enable ) result[0]=1'b1;
if(tr.dbg_data_sel != dbg_data_sel) result[1]=1'b1;
if(tr.dbg_ch_sel != dbg_ch_sel ) result[2]=1'b1;
if(tr.irq != irq ) result[3]=1'b1;
return result;
endfunction
function print(bit[3:0] ctrl,integer fid);
if(ctrl[0]) $fwrite(fid,"dbg_enable:\t%b\n",dbg_enable);
if(ctrl[1]) $fwrite(fid,"dbg_data_sel:\t%b\n",dbg_data_sel);
if(ctrl[2]) $fwrite(fid,"dbg_ch_sel:\t%b\n",dbg_ch_sel);
if(ctrl[3]) $fwrite(fid,"irq:\t\t%b\n",irq);
endfunction
endclass : sysreg_trans