- if (true) {
- pw.print("if (1");
- for(DockDescription bb : sd.ports())
- if (bb.isInputDock())
- pw.print(" && "+bb.getName()+"_d["+WIDTH_WORD+"] ");
- pw.print(") begin ");
- if (true) {
- for(DockDescription bb : sd.ports())
- if (bb.isInputDock())
- pw.print(bb.getName()+"_f <= 1; ");
- }
- pw.print(" end else if (0");
- for(DockDescription bb : sd.ports())
- if (bb.isInputDock())
- pw.print(" || "+bb.getName()+"_d["+WIDTH_WORD+"] ");
- pw.print(") begin ");
- if (true) {
- for(DockDescription bb : sd.ports())
- if (bb.isInputDock())
- pw.print(" if (!"+bb.getName()+"_d["+WIDTH_WORD+"]) "+bb.getName()+"_f <= 1; ");
+
+ for(DockDescription bb : sd.ports())
+ if (bb.isInputDock())
+ pw.print("if (!"+bb.getName()+"_r_ && "+bb.getName()+"_a) "+bb.getName()+"_a <= 0; ");
+
+ // input docks: if some-but-not-all inputs are flushing, drain all non-flushing docks
+ pw.print("end else begin ");
+
+ for(DockDescription bb : sd.ports())
+ if (bb.isInputDock()) {
+ pw.print("if (!"+bb.getName()+"_r && "+bb.getName()+"_a) "+bb.getName()+"_a <= 0; ");
+ pw.print("if ("+bb.getName()+"_r && !"+bb.getName()+"_a) "+bb.getName()+"_a <= 1; ");