From da40ecfc528ba66775f2180977ae6322df887477 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 10 Nov 2008 09:20:21 +0100 Subject: [PATCH] replace addPreCrap() with noDriveLatches in FpgaDock.java --- src/edu/berkeley/fleet/fpga/FpgaDock.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/edu/berkeley/fleet/fpga/FpgaDock.java b/src/edu/berkeley/fleet/fpga/FpgaDock.java index 7de5618..285f2d0 100644 --- a/src/edu/berkeley/fleet/fpga/FpgaDock.java +++ b/src/edu/berkeley/fleet/fpga/FpgaDock.java @@ -71,14 +71,19 @@ public class FpgaDock extends FleetTwoDock implements FabricElement { // FIXME: assumes DISPATCH_PATH is at top of word!!! Module.SinkPort out = createOutputPort("out", fpga.getWordWidth()-fpga.DISPATCH_PATH.valmaskwidth, ""); Module.SinkPort torpedo = createOutputPort("torpedo", 0, ""); - in.hasLatch = false; - out.hasLatch = false; - torpedo.hasLatch = false; + Module.StateWire busy = new StateWire("busy", false); + out.forceNoLatch = true; + + // FIXME: okay to eliminate torpedoWaiting + + new Event(new Object[] { in, busy.isFull(), out }, + new Action[] { in, busy.doDrain() }); + new Event(new Object[] { in, busy.isEmpty(), out, torpedo, fpga.PACKET_TOKEN.verilogVal("in") }, + new Action[] { in, torpedo }); + new Event(new Object[] { in, busy.isEmpty(), out, "!"+fpga.PACKET_TOKEN.verilogVal("in") }, + new Action[] { busy.doFill(), out }); addPreCrap("assign out = "+fpga.PACKET_DATA.verilogVal("in")+";"); - addPreCrap("assign out_r = in_r && !("+fpga.PACKET_TOKEN.verilogVal("in")+");"); - addPreCrap("assign torpedo_r = in_r && "+fpga.PACKET_TOKEN.verilogVal("in")+";"); - addPreCrap("assign in_a = out_a || torpedo_a;"); } } -- 1.7.10.4