public static interface Trigger {
public String getVerilogTrigger();
+ public Trigger invert();
+ }
+
+ public static class InvertedTrigger implements Trigger {
+ private final Trigger original;
+ public InvertedTrigger(Trigger original) { this.original = original; }
+ public String getVerilogTrigger() { return "!("+original.getVerilogTrigger()+")"; }
+ public Trigger invert() { return original; }
}
public static interface Assignable {
public String getVerilogTrigger() {
return "&& (("+condition+") ? (1 " + trigger.getVerilogTrigger() + ") : 1)";
}
+ public Trigger invert() { return new InvertedTrigger(this); }
}
public static class SimpleAssignable implements Assignable {
public abstract String getDeclaration();
public abstract String getAssignments();
public abstract void connect(SinkPort driven);
+ public Trigger invert() { return new InvertedTrigger(this); }
}
public static class InstantiatedModule {