assert bytes > 0 : "trying to generate a dram command of size 0";
    public void addDRAMCommand(boolean read, int stage,			       int bytes, OffChipBuffer buffer, boolean presynched)     {	parent.setComputes();	String functName = "raw_streaming_dram_request_" +	    (read ? "read" : "write") + (presynched ? "_presynched" : "");	String bufferName;	if (stage < 2) 	    bufferName = buffer.getIdent(true);	else	    bufferName = buffer.getIdent(false);	//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 JFieldAccessExpression(null, 							 new JThisExpression(null),							 bufferName),			      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);		JFieldAccessExpression bufAccess = 	    new JFieldAccessExpression(null, new JThisExpression(null),				       bufferName);		JAssignmentExpression assExp = 	    new JAssignmentExpression(null, dynNetSend, bufAccess);		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));	}	else {	    steadyLoop.addStatement(steadyIndex ++, 				    new JExpressionStatement(null, call, null));	    steadyLoop.addStatement(steadyIndex ++, 				    new JExpressionStatement(null, assExp, null));	}    }