Assignable data_latch = new SimpleAssignable(inbox ? data_out.getName() : "`packet_data("+data_out.getName()+")");
String data_latch_input = inbox ? "`packet_data("+data_in.getName()+")" : data_in.getName();
+
+ // Literal
+ box.new Event(
+ new Object[] {
+ ondeckFull.isFull(),
+ "`instruction_is_literal(ondeck)"
+ },
+ new Action[] {
+ new SimpleAction("ondeck_full<=0;"),
+ new AssignAction(data_latch, "`instruction_literal(ondeck)"),
+ newMayProceed.doFill()
+ }
+ );
+
box.new Event(
new Object[] { ondeckFull.isFull(),
data_out,
token_out,
ififo_in,
+ "!`instruction_is_literal(ondeck)",
new ConditionalTrigger("`instruction_bit_datain(ondeck)", data_in),
new ConditionalTrigger("`instruction_bit_tokenin(ondeck)", token_in)
},
pw.println("`define instruction_bit_dest(instruction) instruction["+(OFFSET_DEST+WIDTH_DEST_ADDR-1)+":"+OFFSET_DEST+"]");
pw.println("`define instruction_count(instruction) instruction["+(OFFSET_COUNT+WIDTH_COUNT-1)+":"+OFFSET_COUNT+"]");
pw.println("`define instruction_is_kill(i) (`instruction_bit_latch(i) && (!(`instruction_bit_datain(i))))");
+ pw.println("`define instruction_is_literal(i) (`instruction_bit_tokenout(i) && `instruction_bit_tokenin(i) && !`instruction_bit_dataout(i))");
+ pw.println("`define instruction_literal(i) i["+(OFFSET_LITERAL+WIDTH_LITERAL-1)+":"+OFFSET_LITERAL+"]");
pw.println("`define instruction_bit_kill_only_standing(i) (`instruction_bit_tokenin(i))");
pw.println("`define instruction_is_clog(instruction) (`instruction_count(instruction)==0 && !`instruction_bit_tokenin(instruction) && !`instruction_bit_datain(instruction) && !`instruction_bit_tokenout(instruction) && !`instruction_bit_dataout(instruction))");
pw.println("`define instruction_is_unclog(instruction) (`instruction_bit_kill_only_standing(instruction) && `instruction_is_kill(instruction))");