How to access generated instances systemverilog and Vivado 2014.1?
Easy way to find the full path is to add initial $display("%m"); to your Router_2D and Router_3D. Then simulate without trying to access the path. %m displays the hierarchical name, see IEEE Std 1800-2012 &sect; 21.2.1.2 Format specifications.

Since you are nt specifying a label in the if-statement, the hierarchical name will likely be R[0].genblk1.router3d.address. This is explained in IEEE Std 1800-2012 &sect; 27.6 External names for unnamed generate blocks:


  Although an unnamed generate block has no name that can be used in a hierarchical name, it needs to have a name by which external interfaces can refer to it. A name will be assigned for this purpose to each unnamed generate block as described in the next paragraph.
  Each generate construct in a given scope is assigned a number. The number will be 1 for the construct that appears textually first in that scope and will increase by 1 for each subsequent generate construct in that scope. All unnamed generate blocks will be given the name “genblk&lt;n&gt;” where &lt;n&gt; is the number assigned to its enclosing generate construct. If such a name would conflict with an explicitly declared name, then leading zeros are added in front of the number until the name does not conflict.
  NOTE—Each generate construct is assigned its number as described in the previous paragraph even if it does not contain any unnamed generate blocks.