From 9bf010e6a0f48f8f9c28071fe397d8e4c47ea2a3 Mon Sep 17 00:00:00 2001 From: Adam Megacz Date: Fri, 31 Jul 2009 16:39:18 -0700 Subject: [PATCH] switch MemoryUtil to use MemoryStream --- src/edu/berkeley/fleet/loops/MemoryUtils.java | 286 +++++++++++++++---------- 1 file changed, 169 insertions(+), 117 deletions(-) diff --git a/src/edu/berkeley/fleet/loops/MemoryUtils.java b/src/edu/berkeley/fleet/loops/MemoryUtils.java index 7a92a32..3f0bfe6 100644 --- a/src/edu/berkeley/fleet/loops/MemoryUtils.java +++ b/src/edu/berkeley/fleet/loops/MemoryUtils.java @@ -2,6 +2,7 @@ package edu.berkeley.fleet.loops; import edu.berkeley.fleet.loops.*; import java.util.concurrent.Semaphore; import java.util.*; +import java.io.*; import java.net.*; import edu.berkeley.fleet.two.*; import edu.berkeley.fleet.fpga.*; @@ -130,137 +131,192 @@ public class MemoryUtils { final ShipPool pool, final Ship memory, final long offset, - final BitVector[] vals) throws RuntimeException { - if (fp.getFleet() != memory.getFleet()) - throw new RuntimeException("Fleet mismatch"); - - final Dock inAddrWrite = memory.getDock("inAddrWrite"); - final Dock inDataWrite = memory.getDock("inDataWrite"); - final Dock inAddrRead = memory.getDock("inAddrRead"); - final Dock out = memory.getDock("out"); - final Dock debugIn = read ? fp.getDebugInputDock() : null; - if (debugIn!=null) pool.allocateShip(debugIn.getShip()); + final BitVector[] vals) { + + try { + MemoryOutputStream mos = new MemoryOutputStream(fp, pool, memory, offset, read); + for(int i=0; i=0; i--) { - if (!read) - fp.sendWord(inDataWrite.getDataDestination(), vals[i]); if (read) { - BitVector outv = fp.recvWord(); - vals[i] = outv; + fp.sendTorpedo(memory.getDock("inAddrRead")); + } else { + fp.sendTorpedo(memory.getDock("inAddrWrite")); + fp.sendTorpedo(memory.getDock("inDataWrite")); } - int pct = (int)Math.ceil(100.0*((double)(vals.length-1-i)/((double)(vals.length-1)))); - String status = i + "/" + (vals.length-1) + "= " + pct + "%"; - if (read) System.out.print("\rread from address: " + status + ", got " + vals[i] + " = " + vals[i].toLong()+" "); - else System.out.print("\rwrote to address: " + status +" "); - } - fp.flush(); - - if (read) { - fp.sendToken(inAddrRead.getInstructionDestination()); - fp.sendToken(debugIn.getInstructionDestination()); - } else { - fp.sendToken(inAddrWrite.getInstructionDestination()); - fp.sendToken(inDataWrite.getInstructionDestination()); - } - fp.sendToken(alu.getDock("in1").getInstructionDestination()); - fp.sendToken(alu.getDock("in2").getInstructionDestination()); - fp.sendToken(alu.getDock("inOp").getInstructionDestination()); - fp.sendToken(alu.getDock("out").getInstructionDestination()); - fp.sendToken(counter_out.getInstructionDestination()); - fp.sendToken(out.getInstructionDestination()); - System.out.println(); - pool.releaseShip(alu); - pool.releaseShip(counter); - if (read) pool.releaseShip(debugIn.getShip()); + fp.sendTorpedo(memory.getDock("out")); + fp.sendTorpedo(alu.getDock("in1")); + fp.sendTorpedo(alu.getDock("in2")); + fp.sendTorpedo(alu.getDock("inOp")); + fp.sendTorpedo(alu.getDock("out")); + fp.flush(); + + pool.releaseShip(alu); + pool.releaseShip(fp.getDebugInputDock().getShip()); + } } + private static BitVector[] long2bv(Fleet fleet, long[] initialValues) { BitVector[] bv = new BitVector[initialValues.length]; for(int i=0; i0) System.exit(-1); } } -- 1.7.10.4