Regarding the assertion checking

In reply to venkatasubbarao:

You do not use begin/end in a property; it is not procedural code. You are selecting property expressions. Also, do not put ##0 at the beginning of a sequence; it does not do anything. You use it to concatenate two sequences.

property hold_checker;
   @(posedge clk_in)
   disable iff (~resetn || disable_assertion)
    	if(CK_EDGE_SEL)   
          $fell(strb_in)  |-> $stable(data)[*HOLD_TIME] ;  
	else    	 
	  $rose(strb_in)  |-> $stable(data)[*HOLD_TIME];  
endproperty

You simplify this and remove the if/else entirely.

property hold_checker;
   @(posedge clk_in)
   disable iff (~resetn || disable_assertion)
       $fell(strb_in^CK_EDGE_SEL)  |-> $stable(data)[*HOLD_TIME] ;  
endproperty

Your setup checker does not do what you specified at all.