System.out
SpaceTimeBackend
    private boolean continueTrace(UnflatFilter unflatFilter, boolean isLinear,                                  int bottleNeckWork, int newTotalFilters) {        //always start a new trace if we only want one filter traces...        if (ONE_FILTER_TRACES)            return false;        // if this is not connected to anything or        // it is connected to more than one filter or one filter it is        // connected to is joining multiple filters        if (unflatFilter.out != null && unflatFilter.out.length == 1            && unflatFilter.out[0].length == 1            && unflatFilter.out[0][0].dest.in.length < 2) {            // this is the only dest            UnflatFilter dest = unflatFilter.out[0][0].dest;            // put file readers and writers in there own trace, so only keep            // going for            // none-predefined nodes            if (unflatFilter.filter instanceof SIRPredefinedFilter) {                System.out.println("Cannot continue trace: (Source) "                                   + unflatFilter.filter + " is predefined");                return false;            }            // don't continue if the next filter is predefined            if (dest.filter instanceof SIRPredefinedFilter) {                System.out.println("Cannot continue trace(Dest): "                                   + dest.filter + " is predefined");                return false;            }            // cut out linear filters            if (isLinear || dest.isLinear()) {                System.out                    .println("Cannot continue trace: Source and Dest are not congruent linearly");                return false;            }            // check the size of the trace, the length must be less than number            // of tiles + 1            if (newTotalFilters > rawChip.getTotalTiles()) {                System.out                    .println("Cannot continue trace: Filters == number of tiles");                return false;            }            // check the work estimation            int destEst = getWorkEstimate(dest);            double ratio = (bottleNeckWork > destEst) ? (double) destEst                / (double) bottleNeckWork : (double) bottleNeckWork                / (double) destEst;            ratio = Math.abs(ratio);            // System.out.println("bottleNeckWork = " + bottleNeckWork + " / " +            // "next = " + destEst + " = " + ratio);            if (!IGNORE_WORK_EST && ratio < TRASHOLD)                return false;            // everything passed            return true;        }        return false;    }