add inverted-dc-bit-hack
authoradam <adam@megacz.com>
Sat, 13 Dec 2008 04:30:32 +0000 (05:30 +0100)
committeradam <adam@megacz.com>
Sat, 13 Dec 2008 04:30:32 +0000 (05:30 +0100)
src/edu/berkeley/fleet/two/FleetTwoFleet.java

index 62f807d..22bc06f 100644 (file)
@@ -10,6 +10,8 @@ import static edu.berkeley.fleet.api.Predicate.*;
 /** common subclass for the "FleetTwo" generation of processors, all 37-bit wide, with AM33 encoding */
 public abstract class FleetTwoFleet extends Fleet {
 
+    private final boolean hack = "true".equals(System.getProperty("inverted-dc-bit-hack", "false"));
+
     public final Mask PACKET_TOKEN;
     public final Mask PACKET_DATA;
     public final Mask PACKET_SIGNAL;
@@ -308,7 +310,7 @@ public abstract class FleetTwoFleet extends Fleet {
                             getPathByAddr(dock, PATH_IMMEDIATE.getvalAsBitVector(inst)),
                             TI.get(inst),
                             DI.get(inst),
-                            DC.get(inst),
+                            hack?(!DC.get(inst)):DC.get(inst),
                             PATH_DATA.get(inst),
                             DO.get(inst),
                             TO.get(inst)
@@ -401,7 +403,12 @@ public abstract class FleetTwoFleet extends Fleet {
             instr  = MOVE.set(instr);
             if (inst.tokenIn)                    instr = TI.set(instr);
             if (inst.dataIn)                     instr = DI.set(instr);
-            if (inst.latchData)                  instr = DC.set(instr);
+            if (hack) {
+                if (!inst.latchData)                 instr = DC.set(instr);
+                System.err.println("WARNING: employing inverted-Dc-bit hack -- DO NOT FORGET TO DISABLE THIS WHEN THE NETLIST GETS UPDATED!");
+            } else {
+                if (inst.latchData)                  instr = DC.set(instr);
+            }
             if (inst.dataOut)                    instr = DO.set(instr);
             if (inst.tokenOut)                   instr = TO.set(instr);
             if (!inst.interruptible)             instr = NOT_INTERRUPTIBLE.set(instr);