From: adam Date: Tue, 12 Feb 2008 09:57:14 +0000 (+0100) Subject: remove is_standing and kill counter X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=007bb9ac2569d9aa78e3ee4621462b41e5b4b3fb;p=fleet.git remove is_standing and kill counter --- diff --git a/src/edu/berkeley/fleet/fpga/Generator.java b/src/edu/berkeley/fleet/fpga/Generator.java index f1fe853..3256689 100644 --- a/src/edu/berkeley/fleet/fpga/Generator.java +++ b/src/edu/berkeley/fleet/fpga/Generator.java @@ -582,13 +582,10 @@ public class Generator { Module.Latch repcount = box.new Latch("repcount", WIDTH_COUNTER_LITERAL+1); Module.Latch repcount2 = box.new Latch("repcount2", WIDTH_COUNTER_LITERAL+1); Module.Latch repeat_counter = box.new Latch("repeat_counter", WIDTH_COUNTER_LITERAL+1); - Module.Latch killcount = box.new Latch("killcount", WIDTH_COUNTER_LITERAL); Module.Latch loop_counter = box.new Latch("loop_counter", WIDTH_COUNTER_LITERAL); Module.StateWire ondeckFull = box.new StateWire("ondeck_full"); Module.StateWire newMayProceed = box.new StateWire("newmayproceed", true); Module.StateWire doRepeat = box.new StateWire("dorepeat", false); - Module.StateWire doRepeatKill = box.new StateWire("dorepeatkill", false); - Module.StateWire doKill = box.new StateWire("dokill", false); Module.StateWire isClogged = box.new StateWire("clogged", false); Module.StateWire isMassacreing = box.new StateWire("massacreing", false); @@ -649,27 +646,9 @@ public class Generator { ondeckFull.doDrain(), new AssignAction(repeat_counter, "1"), new AssignAction(repcount2, "1"), - new ConditionalAction("`instruction_kill_count(instr)!=0", new AssignAction(repcount, "`instruction_kill_count(instr)")), - new ConditionalAction("`instruction_kill_count(instr)!=0", doRepeatKill.doFill()), - new ConditionalAction("`instruction_kill_count(instr)!=0", newMayProceed.doDrain()), - new ConditionalAction("`instruction_kill_count(instr)==0", newMayProceed.doFill()) + newMayProceed.doFill() }); - // Kill - box.new Event( - new Object[] { doKill.isFull() }, - new Action[] { doKill.doDrain(), - new ConditionalAction("killcount!=0", new AssignAction(repcount, "killcount-1")), - new ConditionalAction("killcount!=0", doRepeatKill.doFill()), - new ConditionalAction("killcount==0", newMayProceed.doFill()) - }); - - // RepKill - box.new Event( - new Object[] { doRepeatKill.isFull(), ififo_out }, - new Action[] { doRepeatKill.doDrain(), ififo_out, doKill.doFill(), - new AssignAction(killcount, repcount) } - ); // Enqueue box.new Event( @@ -693,7 +672,7 @@ public class Generator { ondeckFull.doFill(), newMayProceed.doDrain(), new AssignAction(ondeck, ififo_out), - new ConditionalAction("`instruction_is_normal("+ififo_out.getName()+") && !`is_standing("+ififo_out.getName()+")", + new ConditionalAction("`instruction_is_normal("+ififo_out.getName()+")", new AssignAction(repcount2, "(repeat_counter==0?1:repeat_counter)")), new ConditionalAction("`instruction_is_normal("+ififo_out.getName()+")", new AssignAction(repeat_counter, "1")), @@ -825,10 +804,9 @@ public class Generator { new ConditionalAction("`should_requeue(ondeck) && `done_executing(ondeck)", ififo_in), new ConditionalAction("`should_requeue(ondeck) && `done_executing(ondeck)", new AssignAction(ififo_in, ondeck)), new ConditionalAction("repcount2>1 || repcount2==`magic_standing_value", doRepeat.doFill()), - new ConditionalAction("`is_standing(ondeck)", doRepeat.doFill()), - new ConditionalAction("!`is_standing(ondeck) && repcount2!=`magic_standing_value", + new ConditionalAction("repcount2!=`magic_standing_value", new AssignAction(repcount, "repcount2-1")), - new ConditionalAction("!`is_standing(ondeck) && repcount2==`magic_standing_value", + new ConditionalAction("repcount2==`magic_standing_value", new AssignAction(repcount, "`magic_standing_value")), new ConditionalAction("`instruction_is_literal(ondeck)", new AssignAction(data_latch, "`instruction_literal(ondeck)")), @@ -868,7 +846,6 @@ public class Generator { pw.println("`define instruction_is_literal_hi(i) "+LITERAL_HI.verilog("i")); pw.println("`define instruction_is_literal_lo(i) "+LITERAL_LO.verilog("i")); pw.println("`define instruction_is_literal(i) "+LITERAL.verilog("i")); - pw.println("`define instruction_kill_count(i) "+KILL.verilogVal("i")); pw.println("`define instruction_is_kill(i) "+KILL.verilog("i")); pw.println("`define instruction_is_unclog(i) "+UNCLOG.verilog("i")); pw.println("`define instruction_is_clog(i) "+CLOG.verilog("i")); @@ -882,9 +859,8 @@ public class Generator { pw.println("`define instruction_bit_latch(i) (`instruction_is_normal(i) && "+DC.verilog("i")+")"); pw.println("`define instruction_bit_datain(i) (`instruction_is_normal(i) && "+DI.verilog("i")+")"); pw.println("`define instruction_bit_tokenin(i) (`instruction_is_normal(i) && "+TI.verilog("i")+")"); - //pw.println("`define is_standing(i) (`instruction_is_normal(i) && "+STAND.verilog("i")+")"); pw.println("`define should_requeue(i) (loop_counter > 0)"); - pw.println("`define done_executing(i) (!`is_standing(i) && (repcount2==0 || repcount2==1))"); + pw.println("`define done_executing(i) (repcount2==0 || repcount2==1)"); pw.println("`define magic_standing_value (1<<"+WIDTH_COUNTER_LITERAL+")"); diff --git a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java b/src/edu/berkeley/fleet/ies44/InstructionEncoder.java index bd6afe0..a3422e1 100644 --- a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java +++ b/src/edu/berkeley/fleet/ies44/InstructionEncoder.java @@ -23,7 +23,7 @@ public abstract class InstructionEncoder { public static final Mask LOOP_FROM_DATA = new Mask("...............000010.........0......"); public static final Mask LOOP_FROM_LITERAL = new Mask("...............000010.........1vvvvvv"); public static final Mask TAKE_LOOP = new Mask("...............000011................"); - public static final Mask KILL = new Mask("...............000100..........vvvvvv"); + public static final Mask KILL = new Mask("...............000100................"); public static final Mask MASSACRE = new Mask("...............000101................"); public static final Mask CLOG = new Mask("...............000110................"); public static final Mask UNCLOG = new Mask("...............000111................");