Aditya, thanks! I'll try your suggestion as it looks very clean and short. In the meanwhile I found this to work too: foreach_in_collection clk1 ${clk_lst} { foreach_in_collection clk2 ${clk_lst} { set clk1_name [get_object_name $clk1] set clk2_name [get_object_name $clk2] if { ${clk1_name} != ${clk2_name} } { echo "Information: Setting false path from ${clk1_name} to ${clk2_name}" set_false_path -from ${clk1} -to ${clk2} } } } Aditya Ramachandran wrote: > I meant > > foreach_in_collection aClk $clk_lst { > set_false_path -from $aClk -to [remove_from_collection > $clk_lst $aClk] > } > > > Aditya Ramachandran wrote: > > cant you do this: > > > > foreach aClk $clk_lst { > > set_false_path -from $aClk -to [remove_from_collection > > $clk_lst $aClk] > > } > > > > Aditya > > stefimke wrote: > > > I'm fighting with variable substitution in Synopsys DC-shell in tcl/xg > > > mode. > > > > > > This is what I want to do: > > > > > > #----------------------------------------------------------------------------- > > > # Setting FALSE paths for asynchronous interfacing between clock > > > domains > > > #----------------------------------------------------------------------------- > > > foreach_in_collection clk1 ${clk_lst} { > > > foreach_in_collection clk2 ${clk_lst} { > > > if { ${clk1} != ${clk2} } { > > > echo "Information: Setting false path from ${clk1} to ${clk2}" > > > query_objects ${clk1} > > > query_objects ${clk2} > > > set_false_path -from ${clk1} -to ${clk2} > > > } > > > } > > > } > > > > > > > > > This an output that is printed: > > > > > > Information: Setting false path from _sel54 to _sel55 > > > {abc_clk} > > > {abc_clk} > > > > > > Completely wrong... I don't want to define false paths from flipflops > > > in the same clock domain. > > > So the "if" is already going wrong.... does it compare the "_sel54" > > > with the "_sel55" string? > > > > > > Anybody?