fix bug in Fpga implementation related to Dc latch and c-flag; was causing c-flag...
authormegacz <adam@megacz.com>
Mon, 19 Jan 2009 02:31:31 +0000 (18:31 -0800)
committermegacz <adam@megacz.com>
Mon, 19 Jan 2009 02:31:31 +0000 (18:31 -0800)
src/edu/berkeley/fleet/fpga/FpgaDock.java

index 52f4e55..693db09 100644 (file)
@@ -343,10 +343,14 @@ public class FpgaDock extends FleetTwoDock implements FabricElement {
                                                 new AssignAction(flag_a, new_flag(ondeck.getBits(fpga.SET_FLAGS_A),flag_a,flag_b,flag_c))),
                           new ConditionalAction(ondeck.testMask(fpga.SET_FLAGS),
                                                 new AssignAction(flag_b, new_flag(ondeck.getBits(fpga.SET_FLAGS_B),flag_a,flag_b,flag_c))),
-                          new ConditionalAction(inbox
-                                                ? new OrTrigger(ondeck.testMask(fpga.DI), ondeck.testMask(fpga.TI))
-                                                : new AndTrigger(ondeck.testMask(fpga.DI).invert(), ondeck.testMask(fpga.TI)),
-                                                new AssignAction(flag_c, dfifo_out.getBits(dfifo_width-1, dfifo_width-1))),
+                          new ConditionalAction(ondeck.testMask(fpga.MOVE),
+                                                new AssignAction(flag_c,
+                                                                 inbox
+                                                                 ? dfifo_out.getBits(dfifo_width-1, dfifo_width-1)
+                                                                 : new MuxValue(ondeck.testMask(fpga.DC),
+                                                                                ship_out.getBits(fpga.getWordWidth(), fpga.getWordWidth()),
+                                                                                dfifo_out.getBits(dfifo_width-1, dfifo_width-1))
+                                                                 )),
                           new ConditionalAction(ondeck.testMask(fpga.DI),    data_in),
                           new ConditionalAction(ondeck.testMask(fpga.DO),    data_out),
                           new ConditionalAction(ondeck.testMask(fpga.FLUSH), data_out),