createSwitchCode(filterNode, trace, filterInfo, init, primepump, filterInfo.isLinear(), tile, rawChip);
createCommunicationCode(filterNode, trace, filterInfo, init, primepump, filterInfo.isLinear(), tile, rawChip);
    private static void iterate(Trace traces[], boolean init,                                boolean primepump, RawChip rawChip) {        Trace trace;        for (int i = 0; i < traces.length; i++) {            trace = (Trace) traces[i];            // iterate over the TraceNodes            TraceNode traceNode = trace.getHead();            while (traceNode != null) {                SpaceTimeBackend.println("Rawify: " + traceNode);                // do the appropiate code generation                if (traceNode.isFilterTrace()) {                    FilterTraceNode filterNode = (FilterTraceNode) traceNode;                    assert !filterNode.isPredefined() : "Predefined filters should not appear in the trace traversal: "                        + trace.toString();                    RawTile tile = rawChip.getTile((filterNode).getX(),                                                   (filterNode).getY());                    // create the filter info class                    FilterInfo filterInfo = FilterInfo                        .getFilterInfo(filterNode);                    // add the dram command if this filter trace is an                    // endpoint...                    generateFilterDRAMCommand(filterNode, filterInfo, tile,                                              init, primepump);                    /*                     * if (filterInfo.isLinear()) { //assert                     * FilterInfo.getFilterInfo(filterNode).remaining == 0 :                     * //"Items remaining on buffer for init for linear filter";                     * createSwitchCodeLinear(filterNode,                     * trace,filterInfo,init,primepump,tile,rawChip); } else {                     */                    createSwitchCode(filterNode, trace, filterInfo, init,                                     primepump, filterInfo.isLinear(), tile, rawChip);                    // }                    // used for debugging, nothing more                    tile.addFilterTrace(init, primepump, filterNode);                    // this must come after createswitch code because of                    // compression                    addComputeCode(init, primepump, tile, filterInfo);                } else if (traceNode.isInputTrace() && !KjcOptions.magicdram) {                    assert StreamingDram                        .differentDRAMs((InputTraceNode) traceNode) : "inputs for a single InputTraceNode coming from same DRAM";                    handleFileInput((InputTraceNode) traceNode, init,                                    primepump, rawChip);                    // create the switch code to perform the joining                    joinInputTrace((InputTraceNode) traceNode, init, primepump);                    // generate the dram command to execute the joining                    // this must come after joinInputTrace because of switch                    // compression                    generateInputDRAMCommands((InputTraceNode) traceNode, init,                                              primepump);                } else if (traceNode.isOutputTrace() && !KjcOptions.magicdram) {                    assert StreamingDram                        .differentDRAMs((OutputTraceNode) traceNode) : "outputs for a single OutputTraceNode going to same DRAM";                    handleFileOutput((OutputTraceNode) traceNode, init,                                     primepump, rawChip);                    // create the switch code to perform the splitting                    splitOutputTrace((OutputTraceNode) traceNode, init,                                     primepump);                    // generate the DRAM command                    // this must come after joinInputTrace because of switch                    // compression                    outputDRAMCommands((OutputTraceNode) traceNode, init,                                       primepump);                }                // get the next tracenode                traceNode = traceNode.getNext();            }        }    }