My design looks like the above picture. Clocks clk_A and clk_B are asynchronous. So we set,

set_clock_groups -asynchronous -group clk_A -group clk_B

Or,

set_clock_groups -logically_exclusive -group clk_A -group clk_B

Or,

set_false_path -from clk_A -to clk_B
set_false_path -from clk_B -to clk_A

If you don’t set any other constraints, Primetime will probably report timing path from clk_A -> FF1/Q -> Domain B -> FF2/D -> clk_A. The path should be false because clk_mux and data_mux are selected differently. So we also need to set,

set_case_analysis 0 sel #check timing for clk_A domain
set_case_analysis 1 sel #check timing for clk_B domain

An alternative way to prevent PT from reporting the false path, we can set,

set_false_path -from clk_A -through data_mux/B
set_false_path -from clk_B -through data_mux/A