add Value.invertBits()
authoradam <adam@megacz.com>
Mon, 10 Nov 2008 11:50:23 +0000 (12:50 +0100)
committeradam <adam@megacz.com>
Mon, 10 Nov 2008 11:50:23 +0000 (12:50 +0100)
src/edu/berkeley/fleet/fpga/verilog/Verilog.java

index 711f107..9ad420d 100644 (file)
@@ -19,6 +19,7 @@ public class Verilog {
         public Assignable getAssignableBits(int high, int low) { return new SimpleValue(s, high, low); }
         public String getVerilogName() { return s; }
         public String toString() { return s; }
+        public Value invertBits() { return new SimpleValue("~("+getVerilogName()+")"); }
     }
 
     public static class CatValue implements Value {
@@ -45,6 +46,7 @@ public class Verilog {
             sb.append(" }");
             return sb.toString();
         }
+        public Value invertBits() { return new SimpleValue("~("+getVerilogName()+")"); }
     }
 
     public static interface Action {
@@ -72,6 +74,7 @@ public class Verilog {
         public String getVerilogName();
         public Value getBits(int high, int low);
         public Value getBits(Mask mask);
+        public Value invertBits();
     }
 
     public static class ConditionalAction implements Action {
@@ -105,6 +108,7 @@ public class Verilog {
         public SimpleAssignable(String s) { this.s = s; }
         public String getVerilogName() { return s; }
         public Assignable getAssignableBits(int high, int low) { return new SimpleValue(s, high, low); }
+        public Value invertBits() { return new SimpleValue("~("+getVerilogName()+")"); }
     }
 
     public static class AssignAction implements Action {
@@ -223,6 +227,7 @@ public class Verilog {
             public String getVerilogName() { return name; }
             public Value getBits(int high, int low) { return new SimpleValue(getVerilogName(), high, low); }
             public Value getBits(Mask mask) { return getBits(mask.valmaskmax, mask.valmaskmin); }
+            public Value invertBits() { return new SimpleValue("~("+getVerilogName()+")"); }
             public Assignable getAssignableBits(int high, int low) { return new SimpleValue(getVerilogName(), high, low); }
             public String doReset() { return name+"<="+initial+";"; }
             public void dump(PrintWriter pw) {
@@ -346,6 +351,7 @@ public class Verilog {
                 super(name, width, external); }
             public Value getBits(int high, int low) { return new SimpleValue(getVerilogName(), high, low); }
             public Value getBits(Mask mask) { return getBits(mask.valmaskmax, mask.valmaskmin); }
+            public Value invertBits() { return new SimpleValue("~("+getVerilogName()+")"); }
             public Assignable getAssignableBits(int high, int low) { return new SimpleValue(getVerilogName(), high, low); }
             public String getVerilogTrigger() { return " && " + getReq() + " && !"+getAck(); }
             public String getVerilogAction() { return getAck() + " <= 1;"; }