Is it necessary for comparison of data in scoreboard we should use check_phase?

In reply to chr_sue:
Yes I tried case equality but they did not work. Actually I am writing scoreboard logic for SPI. I have taken a queue of apb(master) sequence item in scoreboard. And another queue of SPI sequence item. I have taken an associative array in scoreboard for mimicking the DUT model.
I am poping out data from apb_queue and based on address(apb sequence item) I am storing the the data in the associative array. Then when spi_queue is getting its first data. Then I am comparing based on the character length.
SPI DUT has Tx0,Tx1,Tx2,Tx3,Rx0,Rx1,Rx2,Rx3,ctrl,divider,ss register. All are 32bit in size. There address are 00,04,08,0c,10,14,18 in hexadecimal(Tx and Rx registers address are same).ctrl[6:0] is the length of the character to be send and received.
when I am taking logic[31:0] char_len variable in scoreboard. In this variable I am storing associative_array[ctrl_addr]. And based on char_len[6:0](character length) I am comparing.
I have taken logic[127:0]Total_tx variable. And storing like Total_tx={Tx3,Tx2,Tx1,Tx0}; and then based on char_len[6:0] I am comparing. like

 for(int i=0;i<char_len;i++) begin
                           if(Total_tx[i]==MOSI[i]) (Mosi is the spi slave sequence item 
                          k++;                            data of 128 bit length logic type 
                       else                                                         variable)
                        break; 
                   end  

and then if k==char_lenth then data matches.
But Tx_Total=10203040102030401020304010203040;
MOSI= XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX40(30 X, 2 DIGIT)
CHAR_LEN =8 BUT data is not matching.