int y=getTile(node).getY();
    public void dumpLayout(String fileName) {	StringBuffer buf = new StringBuffer();		buf.append("digraph Layout {\n");	buf.append("size = \"8, 10.5\"");	buf.append("node [shape=box,fixedsize=true,width=2.5,height=1];\nnodesep=.5;\nranksep=\"2.0 equally\";\nedge[arrowhead=dot, style=dotted]\n");	for (int i = 0; i < rawChip.getYSize(); i++) {	    buf.append("{rank = same;");	    for (int j = 0; j < rawChip.getXSize(); j++) {		buf.append("tile" + rawChip.getTile(j, i).getTileNumber() + ";");	    }	    buf.append("}\n");	}	for (int i = 0; i < rawChip.getYSize(); i++) {	    for (int j = 0; j < rawChip.getXSize(); j++) {		Iterator neighbors = rawChip.getTile(j, i).getSouthAndEastNeighbors().iterator();		while (neighbors.hasNext()) {		    RawTile n = (RawTile)neighbors.next();		    buf.append("tile" + rawChip.getTile(j, i).getTileNumber() + " -> tile" +			       n.getTileNumber() + " [weight = 100000000];\n");		}	    }	}	buf.append("edge[color = red,arrowhead = normal, arrowsize = 2.0, style = bold];\n");	Iterator it = tileAssignment.values().iterator();	while(it.hasNext()) {	    FlatNode node = (FlatNode) it.next();	    if (streamGraph.getFileState().fileNodes.contains(node))		continue;	    buf.append("tile" +   getTileNumber(node) + "[label=\"" + 		       //getTileNumber(node) + "\"];\n");		       shortName(node.getName()) + "\"];\n");	     //we only map joiners and filters to tiles and they each have	     //only one output	     Iterator downstream = getDownStream(node).iterator();	     //	     System.out.println("Getting downstream of " + node);	     int y=getTile(node).getY();	     while(downstream.hasNext()) {		 FlatNode n = (FlatNode)downstream.next();		 if (!assignToATile(n))		     continue;		 //		 System.out.println(" " + n);		 buf.append("tile" + getTileNumber(node) + 			    " -> tile" +			    getTileNumber(n) + " [weight = 1]");		 int thisRow=getTile(n).getY();		 if(Math.abs(thisRow-y)<=1)		     buf.append(";\n");		 else		     buf.append(" [constraint=false];\n");	     }	     	}	//put in the dynamic connections in blue	buf.append("edge[color = blue,arrowhead = normal, arrowsize = 2.0, style = bold];\n");	for (int i = 0; i < streamGraph.getStaticSubGraphs().length; i++) {	    StaticStreamGraph ssg =  streamGraph.getStaticSubGraphs()[i];	    for (int out = 0; out < ssg.getOutputs().length; out++) {		assert getTile(ssg.getOutputs()[out]) != null;		buf.append("tile" + getTileNumber(ssg.getOutputs()[out]) + " -> tile" +			   getTileNumber(ssg.getNext(ssg.getOutputs()[out])) + "[weight = 1];");	    }	}			buf.append("}\n");		try {	    FileWriter fw = new FileWriter(fileName);	    fw.write(buf.toString());	    fw.close();	}	catch (Exception e) {	    System.err.println("Could not print layout");	}    }