def METHOD_NAME():
    b0 = CellLeaf( "block0", Rect(0,0,4,2))
    b0.addTerminal( "l0", Rect(0,0,0,1))
    b0.addTerminal( "l1", Rect(0,1,0,2))
    b0.addTerminal( "r0", Rect(4,0,4,1))
    b0.addTerminal( "r1", Rect(4,1,4,2))
    m = 2
    g = CellHier( "grid")
    for i in range(m):
      inst_name = 'u%d' % i
      g.instances[inst_name] = CellInstance( inst_name, b0)
    g.instances['u0'].fa_map['l0'] = 'a'
    g.instances['u0'].fa_map['l1'] = 'b'
    g.instances['u0'].fa_map['r0'] = 'c'
    g.instances['u0'].fa_map['r1'] = 'd'
    g.instances['u1'].fa_map['l0'] = 'a'
    g.instances['u1'].fa_map['l1'] = 'b'
    g.instances['u1'].fa_map['r0'] = 'd'
    g.instances['u1'].fa_map['r1'] = 'c'
    nx = 8
    ny = 2
    s = tally.Tally()
    r = Raster( s, g, nx, ny)
    r.semantic()
    ri_map = { ri.ci.nm : ri for ri in r.ris}
    #place in corner
    s.emit_always( ri_map['u0'].anchor.var( r.idx( 0, 0)))
    r.solve()
    g.updateBbox()
    assert ri_map['u1'].anchorMXY.val( r.idx(nx-1,ny-1)) is True
    with open( "mydesign_dr_globalrouting.json", "wt") as fp:
        tech = Tech()
        g.write_globalrouting_json( fp, tech)