+
+
+
+ public static void clearMem(FleetProcess fp,
+ Ship memory,
+ ShipPool pool,
+ long offset,
+ long count) throws RuntimeException {
+
+ DataFlowGraph dfg = new DataFlowGraph(fp.getFleet(), pool);
+
+ MemoryNode mem = new MemoryNode(dfg, memory);
+ UnPunctuatorNode discard = new UnPunctuatorNode(dfg, true);
+ discard.count.connect(new OnceNode(dfg, (int)(count)).out);
+ DebugNode debug = new DebugNode(dfg);
+ DownCounterNode c1 = new DownCounterNode(dfg);
+ c1.start.connect(new OnceNode(dfg, count).out);
+ c1.incr.connect(new OnceNode(dfg, 1).out);
+ mem.inAddrWrite.connect(c1.out);
+ mem.inDataWrite.connect(new ForeverNode(dfg, 0).out);
+ mem.outWrite.connect(discard.val);
+ discard.out.connect(debug.in);
+
+ CodeBag ctx = new CodeBag(fp.getFleet());
+ dfg.build(ctx);
+ ctx.dispatch(fp, true);
+ System.out.println("waiting...");
+ fp.recvWord();
+ System.out.println("... done");
+
+ // FIXME: cleanup?
+ }
+
+ public static void main(String[] s) throws Exception {
+ Fleet fleet = new Fpga();
+ FleetProcess fp;
+ ShipPool pool = new ShipPool(fleet);
+ Ship mem1 = pool.allocateShip("Memory");
+ Ship mem2 = pool.allocateShip("Memory");
+ Ship mem3 = pool.allocateShip("Memory");
+
+ fp = fleet.run(new Instruction[0]);
+ clearMem(fp, mem1, new ShipPool(fleet), 0, 16 * 1024);
+ fp.terminate();
+
+ fp = fleet.run(new Instruction[0]);
+ clearMem(fp, mem2, new ShipPool(fleet), 0, 16 * 1024);
+ fp.terminate();
+
+ fp = fleet.run(new Instruction[0]);
+ clearMem(fp, mem3, new ShipPool(fleet), 0, 16 * 1024);
+ fp.terminate();
+ }
+
+