public void addDRAMCommand(boolean read, int stage, int bytes, OffChipBuffer buffer, boolean presynched,
public void addDRAMCommand(boolean read, boolean init, int bytes, OffChipBuffer buffer, boolean presynched,
    public void addDRAMCommand(boolean read, int stage, int bytes,                               OffChipBuffer buffer, boolean presynched,                               boolean staticNet) {        assert bytes > 0 : "trying to generate a dram command of size 0";                       parent.setMapped();        String functName = "raw_streaming_dram" + (!staticNet ? "_gdn" : "") +             "_request_" +            (read ? "read" : "write") + (presynched ? "_presynched" : "");                //the name of the rotation struction we are using...        String rotStructName = buffer.getIdent(read);         // 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) };                // 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 (stage < 3) {            initBlock.addStatement(new JExpressionStatement(null, call, null));            initBlock                .addStatement(new JExpressionStatement(null, assExp, null));            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));        }    }