SpaceTimeBackend.println(edge.getDest().debugString(false));
    private static void splitOutputTrace(OutputTraceNode traceNode, boolean init, boolean primepump)					    {	FilterTraceNode filter = (FilterTraceNode)traceNode.getPrevious();	//check to see if the splitting is necessary	if (OffChipBuffer.unnecessary(traceNode))	    return;		FilterInfo filterInfo = FilterInfo.getFilterInfo(filter);	//calculate the number of items sent	int items = filterInfo.totalItemsSent(init, primepump);	StreamingDram sourcePort = IntraTraceBuffer.getBuffer(filter, traceNode).getDRAM();	//the numbers of times we should cycle thru this "splitter"	assert items % traceNode.totalWeights() == 0: 	    "weights on output trace node does not divide evenly with items sent";	int iterations = items / traceNode.totalWeights();	//number of iterations that we store into the steady buffer during pp	int ppSteadyIt = 0;		//adjust iterations to first be only the iterations of the splitter that are	//stored in the init buffer and set ppSteadyIt to be the remaining iterations	if (primepump) {	    Iterator dests = traceNode.getDestSet().iterator();	    assert dests.hasNext() :		"Output should have at least one dest";	    Edge edge = (Edge)dests.next();	    SpaceTimeBackend.println(edge.getDest().debugString(false));	    FilterInfo downstream = FilterInfo.getFilterInfo(edge.getDest().getNextFilter());	    //the number of times the source filter fires in the pp while feeding the steady buffer	    int ppFilterIt = 		(filterInfo.primePumpTrue - downstream.primePumpTrue) * filterInfo.steadyMult;	    assert ((ppFilterIt * filterInfo.push) % traceNode.totalWeights() == 0) :		"Error: Inconsistent primepump stats for output trace node";	    ppSteadyIt = (ppFilterIt * filterInfo.push) / traceNode.totalWeights();	    //subtract from the iterations	    iterations -= ppSteadyIt;	    //check the sanity of the primepump stage	    while (dests.hasNext()){		edge = (Edge)dests.next();		SpaceTimeBackend.println(edge.getDest().debugString(false));		assert ppFilterIt == filterInfo.steadyMult * (filterInfo.primePumpTrue - 				 FilterInfo.getFilterInfo(edge.getDest().getNextFilter()).primePumpTrue) :		    "Error: Inconsistent primepump stats for output trace node\n " + traceNode.debugString(false);	    }	}	//add some comments to the switch code	sourcePort.getNeighboringTile().getSwitchCode().	    appendComment(init || primepump,			  "Start split: This is the source (" + filter.toString() + ")");	Iterator dests = traceNode.getDestSet().iterator();	while (dests.hasNext()) {	    StreamingDram dram =		InterTraceBuffer.getBuffer((Edge)dests.next()).getDRAM();	    dram.getNeighboringTile().getSwitchCode().		appendComment(init || primepump, 			      "Start split: This a dest (" + dram.toString() + ")");	}		//	SpaceTimeBackend.println("Split Output Trace: " + traceNode + "it: " + iterations + " ppSteadyIt: " + 	//ppSteadyIt);    //	System.out.println(traceNode.debugString());	performSplitOutputTrace(traceNode, filter, filterInfo, init, primepump, iterations);		if (primepump && ppSteadyIt > 0)	    performSplitOutputTrace(traceNode, filter, filterInfo, init, primepump, ppSteadyIt);		//because transfers must be cache line size divisible...	//disregard the dummy values coming out of the dram	//for the primepump we always read out of the init buffer for real output tracenodes	int typeSize = Util.getTypeSize(filterInfo.filter.getOutputType());	int mod = 		(((iterations + ppSteadyIt) * traceNode.totalWeights() * typeSize) % RawChip.cacheLineWords);	//don't cache align file readers	if (mod > 0 && !(traceNode.isFileReader() && OffChipBuffer.unnecessary(traceNode))) {	    int remainder = RawChip.cacheLineWords - mod;	    //System.out.println("Remainder for disregarding input on split trace: " + remainder);	    SwitchCodeStore.disregardIncoming(sourcePort, remainder, init || primepump);	}		//add some comments to the switch code	sourcePort.getNeighboringTile().getSwitchCode().	    appendComment(init || primepump,			  "End split: This is the source (" + filter.toString() + ")");	dests = traceNode.getDestSet().iterator();	while (dests.hasNext()) {	    StreamingDram dram =		InterTraceBuffer.getBuffer((Edge)dests.next()).getDRAM();	    dram.getNeighboringTile().getSwitchCode().		appendComment(init || primepump, 			      "End split: This a dest (" + dram.toString() + ")");	}									          }