change new_flag from a macro to a string manipulation
authoradam <adam@megacz.com>
Mon, 27 Oct 2008 08:10:43 +0000 (09:10 +0100)
committeradam <adam@megacz.com>
Mon, 27 Oct 2008 08:10:43 +0000 (09:10 +0100)
src/edu/berkeley/fleet/fpga/FpgaDock.java

index 787b2d2..b466b7a 100644 (file)
@@ -305,8 +305,8 @@ public class FpgaDock extends FleetTwoDock implements FabricElement {
                                                                  "{ {"+(WIDTH_WORD-FleetTwoFleet.DataLatch_WIDTH)+
                                                                  "{"+SET_IMMEDIATE_EXTEND.verilogVal(ondeck.getName())+"}}, "+
                                                                  SET_IMMEDIATE.verilogVal(ondeck.getName())+" }")),
-                          new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_a, "`new_flag_a("+ondeck.getName()+")")),
-                          new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_b, "`new_flag_b("+ondeck.getName()+")")),
+                          new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_a, new_flag(SET_FLAGS_A.verilogVal(ondeck.getName())))),
+                          new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_b, new_flag(SET_FLAGS_B.verilogVal(ondeck.getName())))),
                           new ConditionalAction(inbox
                                                 ? "("+DI.verilog(ondeck.getName())+" || "+TI.verilog(ondeck.getName())+")"
                                                 : "(!"+DI.verilog(ondeck.getName())+" && "+TI.verilog(ondeck.getName())+")",
@@ -333,18 +333,16 @@ public class FpgaDock extends FleetTwoDock implements FabricElement {
                       );
         }
 
-        public void dump(PrintWriter pw, boolean fix) {
-            pw.println("`define new_flag(x)         ("+
-                       "( ((x >> 0) & 1) & !flag_c) |" +
-                       "( ((x >> 1) & 1) &  flag_c) |" +
-                       "( ((x >> 2) & 1) & !flag_b) |" +
-                       "( ((x >> 3) & 1) &  flag_b) |" +
-                       "( ((x >> 4) & 1) & !flag_a) |" +
-                       "( ((x >> 5) & 1) &  flag_a) | 0" +
-                       ")");
-            pw.println("`define new_flag_a(i)                   `new_flag("+SET_FLAGS_A.verilogVal("i")+")");
-            pw.println("`define new_flag_b(i)                   `new_flag("+SET_FLAGS_B.verilogVal("i")+")");
-            super.dump(pw,fix);
+        private static String new_flag(String x) {
+            return "("+
+                "( (("+x+" >> 0) & 1) & !flag_c) |" +
+                "( (("+x+" >> 1) & 1) &  flag_c) |" +
+                "( (("+x+" >> 2) & 1) & !flag_b) |" +
+                "( (("+x+" >> 3) & 1) &  flag_b) |" +
+                "( (("+x+" >> 4) & 1) & !flag_a) |" +
+                "( (("+x+" >> 5) & 1) &  flag_a) | 0" +
+                ")";
         }
     }
 }
+