return findBestRoute(layout, (RawTile)src, (RawTile)dst).route;
RouteAndOccupiedCount bestRoute = findBestRoute(ssg, layout, (RawTile)src, (RawTile)dst);    assert !(bestRoute.route.size() == 0 && !(bestRoute.occupied == Integer.MAX_VALUE));  return bestRoute.route;
    public LinkedList getRoute(StaticStreamGraph ssg, ComputeNode src, ComputeNode dst)     {	assert src != null && dst != null;		//if we can route this in a straight line, then just do it	if (src.getX() == dst.getX() || src.getY() == dst.getY()) {	    return yxRouter.getRoute(ssg, src, dst);	}		Layout layout = ssg.getStreamGraph().getLayout();	//only try this scheme if the rawchip isn't too filled with assigned tiles	if (((double)layout.getTilesAssigned()) / ((double)layout.getRawChip().getTotalTiles()) >	    .85)	    return yxRouter.getRoute(ssg, src, dst);	//call the recursive function to find the route with the last amount of occupied tiles	return findBestRoute(layout, (RawTile)src, (RawTile)dst).route;    }