Module.SinkPort out1 = createOutputPort("out1", width, "");
in.hasLatch = false;
out0.hasLatch = false;
+ out0.forceNoLatch = true;
out1.hasLatch = false;
- addPreCrap("assign out0 = in;");
- addPreCrap("assign out1 = in;");
- addPreCrap("assign out0_r = in_r;");
- addPreCrap("assign out1_r = in_r;");
- addPreCrap("reg in_a__;");
- addPreCrap("assign in_a = in_a__;");
- addPreCrap("always @(posedge clk) begin if (out0_a && out1_a) in_a__ <= 1; if (!out0_a && !out1_a) in_a__ <= 0; end");
+ out1.forceNoLatch = true;
+
+ out0.latchDriver = in;
+ out1.latchDriver = in;
+
+ Module.StateWire busy = new StateWire("busy", false);
+ new Event(new Object[] { in, out0, out1, busy.isEmpty() },
+ new Action[] { out0, out1, busy.doFill() });
+ new Event(new Object[] { in, out0, out1, busy.isFull() },
+ new Action[] { in, busy.doDrain() });
}
}