One of the really interesting things about Tcl is that you can create variable names dynamically, as you do in the question you posted. However, this makes writing difficult and makes your code more complex than you need to understand.
Instead of trying to figure out how to make the equivalent of $ {{$ t} _top}, it's better to avoid the problem at all. You can do this using an associative array.
For example, instead:
set t SNS
set ${t}_top [commands that return value]
...
puts [set ${t}_top]
Do it:
set t SNS
set top($t) [commands that return value]
...
puts $top($t)
, .