remove is_standing and kill counter
authoradam <adam@megacz.com>
Tue, 12 Feb 2008 09:57:14 +0000 (10:57 +0100)
committeradam <adam@megacz.com>
Tue, 12 Feb 2008 09:57:14 +0000 (10:57 +0100)
src/edu/berkeley/fleet/fpga/Generator.java
src/edu/berkeley/fleet/ies44/InstructionEncoder.java

index f1fe853..3256689 100644 (file)
@@ -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+")");
 
index bd6afe0..a3422e1 100644 (file)
@@ -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................");