boolean shouldPreSynch = presynched && GEN_PRESYNCH && (init || primepump);
boolean shouldPreSynch = presynched && GEN_PRESYNCH && (init || primepump || SpaceTimeBackend.NO_SWPIPELINE);
    public void addDRAMGDNReadCommand(boolean init, boolean primepump, int bytes,            OffChipBuffer buffer, boolean presynched, RawTile dest) {                assert bytes > 0 : "trying to generate a dram command of size 0";        assert !buffer.redundant() : "Trying to generate a dram command for a redundant buffer!";                 boolean shouldPreSynch = presynched && GEN_PRESYNCH && (init || primepump);                parent.setComputes();        String functName = "raw_streaming_dram_gdn_request_read" +         (shouldPreSynch ? "_presynched" : "") + "_dest";                //the name of the rotation struction we are using...        String rotStructName = buffer.getIdent(true);         // the args for the streaming dram command        // cachelines that are needed        assert bytes % RawChip.cacheLineBytes == 0 : "transfer size for dram must be a multiple of cache line size";        int cacheLines = bytes / RawChip.cacheLineBytes;        JExpression[] args = {                new JNameExpression(null, null, rotStructName + "->buffer"),                 new JIntLiteral(1),                new JIntLiteral(cacheLines),                 new JIntLiteral(dest.getY()),                new JIntLiteral(dest.getX())};                // the dram command        JMethodCallExpression call = new JMethodCallExpression(null, functName,                                                               args);        // send over the address        JFieldAccessExpression dynNetSend = new JFieldAccessExpression(null,                                                                       new JThisExpression(null), Util.CGNOINTVAR);        JNameExpression bufAccess = new JNameExpression(null, null,                 rotStructName + "->buffer");        JAssignmentExpression assExp = new JAssignmentExpression(null,                                                                 dynNetSend, bufAccess);        JAssignmentExpression rotExp = new JAssignmentExpression(null,                new JFieldAccessExpression(null, new JThisExpression(null), rotStructName),                new JNameExpression(null, null, rotStructName + "->next"));                        SpaceTimeBackend.println("Adding DRAM Command to " + parent + " "                                 + buffer + " " + cacheLines);        // add the statements to the appropriate stage        if (init || primepump) {            initBlock.addStatement(new JExpressionStatement(null, call, null));            initBlock                .addStatement(new JExpressionStatement(null, assExp, null));            //only rotate the buffer in the primepump stage            if (primepump)                initBlock.addStatement(new JExpressionStatement(null, rotExp, null));        } else {            steadyLoop.addStatement(new JExpressionStatement(null,                     (JMethodCallExpression)ObjectDeepCloner.deepCopy(call), null));            steadyLoop            .addStatement(new JExpressionStatement(null,                     (JAssignmentExpression)ObjectDeepCloner.deepCopy(assExp), null));            steadyLoop            .addStatement(new JExpressionStatement(null,                     (JAssignmentExpression)ObjectDeepCloner.deepCopy(rotExp), null));        }    }   