ship_in.hasLatch = true;
}
- Module.Latch repeat_counter = new Latch("repeat_counter", SET_ILC_FROM_IMMEDIATE.valmaskwidth+1, 1);
- Module.Latch loop_counter = new Latch("loop_counter", SET_OLC_FROM_IMMEDIATE.valmaskwidth, 1);
+ Module.Latch ilc = new Latch("ilc", SET_ILC_FROM_IMMEDIATE.valmaskwidth+1, 1);
+ Module.Latch olc = new Latch("olc", SET_OLC_FROM_IMMEDIATE.valmaskwidth, 1);
Module.Latch flag_a = new Latch("flag_a", 1);
Module.Latch flag_b = new Latch("flag_b", 1);
Module.Latch flag_c = new Latch("flag_c", 1);
Module.SourcePort ondeck = fanout_module_out1;
addPreCrap("assign data_latch_output = " + (inbox ? data_out.getName() : "`packet_data("+data_out.getName()+")")+";");
- addPreCrap("wire ["+(Math.max(repeat_counter.width,loop_counter.width)-1)+":0] decremented;");
- addPreCrap("assign decremented = ("+SET_OLC_FROM_OLC_MINUS_ONE.verilog(ondeck.getName())+" ? {1'b0, loop_counter} : repeat_counter)-1;");
- addPreCrap("assign "+requeue_olc_in.getName()+" = loop_counter;");
+ addPreCrap("wire ["+(Math.max(ilc.width,olc.width)-1)+":0] decremented;");
+ addPreCrap("assign decremented = ("+SET_OLC_FROM_OLC_MINUS_ONE.verilog(ondeck.getName())+" ? {1'b0, olc} : ilc)-1;");
+ addPreCrap("assign "+requeue_olc_in.getName()+" = olc;");
Assignable data_latch = new SimpleAssignable(inbox ? data_out.getName() : "`packet_data("+data_out.getName()+")");
String data_latch_input = inbox ? data_in.getName() : data_in.getName();
String magic_standing_value = "(1<<"+SET_ILC_FROM_IMMEDIATE.valmaskwidth+")";
- String done_executing = "(repeat_counter==0 || repeat_counter==1 || !"+MOVE.verilog(ondeck.getName())+")";
+ String done_executing = "(ilc==0 || ilc==1 || !"+MOVE.verilog(ondeck.getName())+")";
// Torpedo Arrival
new Event(new Object[] { torpedo_branch_torpedo, torpedoWaiting.isEmpty() },
String predicate_met =
"("+
"("+
- "!"+MOVE.verilog(ondeck.getName())+" || repeat_counter!=0"+
+ "!"+MOVE.verilog(ondeck.getName())+" || ilc!=0"+
") && ("+
"("+
P_ALWAYS.verilog(ondeck.getName())+
") || ("+
- P_OLC_ZERO.verilog(ondeck.getName())+"==(loop_counter==0)"+
+ P_OLC_ZERO.verilog(ondeck.getName())+"==(olc==0)"+
")"+
") && ("+
" " + P_A.verilog(ondeck.getName())+" ? flag_a"+
new Object[] {
ondeck,
torpedoWaiting.doDrain(),
- new AssignAction(loop_counter, "0"),
- new AssignAction(repeat_counter, "1")
+ new AssignAction(olc, "0"),
+ new AssignAction(ilc, "1")
});
// Predicate not met
new Event(new Object[] { ondeck, "!("+predicate_met+")" },
new Action[] { ondeck,
- new ConditionalAction(MOVE.verilog(ondeck.getName()), new AssignAction(repeat_counter, "1"))
+ new ConditionalAction(MOVE.verilog(ondeck.getName()), new AssignAction(ilc, "1"))
});
new Event(new Object[] { ondeck,
new ConditionalTrigger(TI.verilog(ondeck.getName()), token_in)
},
new Action[] {
- new ConditionalAction(done_executing+" && "+MOVE.verilog(ondeck.getName()), new AssignAction(repeat_counter, "1")),
+ new ConditionalAction(done_executing+" && "+MOVE.verilog(ondeck.getName()), new AssignAction(ilc, "1")),
new ConditionalAction(done_executing, ondeck),
new ConditionalAction("!"+done_executing,
- new AssignAction(repeat_counter,
- "repeat_counter=="+magic_standing_value+"?"+magic_standing_value+":decremented")),
+ new AssignAction(ilc,
+ "ilc=="+magic_standing_value+"?"+magic_standing_value+":decremented")),
- new ConditionalAction(SET_OLC_FROM_DATA_LATCH.verilog(ondeck.getName()), new AssignAction(loop_counter, "data_latch_output")),
+ new ConditionalAction(SET_OLC_FROM_DATA_LATCH.verilog(ondeck.getName()), new AssignAction(olc, "data_latch_output")),
new ConditionalAction(SET_OLC_FROM_IMMEDIATE.verilog(ondeck.getName()),
- new AssignAction(loop_counter, SET_OLC_FROM_IMMEDIATE.verilogVal(ondeck.getName()))),
+ new AssignAction(olc, SET_OLC_FROM_IMMEDIATE.verilogVal(ondeck.getName()))),
new ConditionalAction(SET_OLC_FROM_OLC_MINUS_ONE.verilog(ondeck.getName()),
- new AssignAction(loop_counter, "loop_counter==0 ? 0 : decremented")),
- new ConditionalAction(SET_ILC_FROM_DATA_LATCH.verilog(ondeck.getName()), new AssignAction(repeat_counter, "data_latch_output")),
+ new AssignAction(olc, "olc==0 ? 0 : decremented")),
+ new ConditionalAction(SET_ILC_FROM_DATA_LATCH.verilog(ondeck.getName()), new AssignAction(ilc, "data_latch_output")),
new ConditionalAction(SET_ILC_FROM_IMMEDIATE.verilog(ondeck.getName()),
- new AssignAction(repeat_counter, SET_ILC_FROM_IMMEDIATE.verilogVal(ondeck.getName()))),
- new ConditionalAction(SET_ILC_FROM_INFINITY.verilog(ondeck.getName()), new AssignAction(repeat_counter, magic_standing_value)),
+ new AssignAction(ilc, SET_ILC_FROM_IMMEDIATE.verilogVal(ondeck.getName()))),
+ new ConditionalAction(SET_ILC_FROM_INFINITY.verilog(ondeck.getName()), new AssignAction(ilc, magic_standing_value)),
new ConditionalAction(SHIFT.verilog(ondeck.getName()),
new AssignAction(data_latch,
"{ data_latch_output["+(WIDTH_WORD-1-SHIFT.valmaskwidth)+":0], "+