From: adam Date: Mon, 27 Oct 2008 08:10:43 +0000 (+0100) Subject: change new_flag from a macro to a string manipulation X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=ee3abd1cf1da80975feeae87171faf2b66185992;p=fleet.git change new_flag from a macro to a string manipulation --- diff --git a/src/edu/berkeley/fleet/fpga/FpgaDock.java b/src/edu/berkeley/fleet/fpga/FpgaDock.java index 787b2d2..b466b7a 100644 --- a/src/edu/berkeley/fleet/fpga/FpgaDock.java +++ b/src/edu/berkeley/fleet/fpga/FpgaDock.java @@ -305,8 +305,8 @@ public class FpgaDock extends FleetTwoDock implements FabricElement { "{ {"+(WIDTH_WORD-FleetTwoFleet.DataLatch_WIDTH)+ "{"+SET_IMMEDIATE_EXTEND.verilogVal(ondeck.getName())+"}}, "+ SET_IMMEDIATE.verilogVal(ondeck.getName())+" }")), - new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_a, "`new_flag_a("+ondeck.getName()+")")), - new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_b, "`new_flag_b("+ondeck.getName()+")")), + new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_a, new_flag(SET_FLAGS_A.verilogVal(ondeck.getName())))), + new ConditionalAction(SET_FLAGS.verilog(ondeck.getName()), new AssignAction(flag_b, new_flag(SET_FLAGS_B.verilogVal(ondeck.getName())))), new ConditionalAction(inbox ? "("+DI.verilog(ondeck.getName())+" || "+TI.verilog(ondeck.getName())+")" : "(!"+DI.verilog(ondeck.getName())+" && "+TI.verilog(ondeck.getName())+")", @@ -333,18 +333,16 @@ public class FpgaDock extends FleetTwoDock implements FabricElement { ); } - public void dump(PrintWriter pw, boolean fix) { - pw.println("`define new_flag(x) ("+ - "( ((x >> 0) & 1) & !flag_c) |" + - "( ((x >> 1) & 1) & flag_c) |" + - "( ((x >> 2) & 1) & !flag_b) |" + - "( ((x >> 3) & 1) & flag_b) |" + - "( ((x >> 4) & 1) & !flag_a) |" + - "( ((x >> 5) & 1) & flag_a) | 0" + - ")"); - pw.println("`define new_flag_a(i) `new_flag("+SET_FLAGS_A.verilogVal("i")+")"); - pw.println("`define new_flag_b(i) `new_flag("+SET_FLAGS_B.verilogVal("i")+")"); - super.dump(pw,fix); + private static String new_flag(String x) { + return "("+ + "( (("+x+" >> 0) & 1) & !flag_c) |" + + "( (("+x+" >> 1) & 1) & flag_c) |" + + "( (("+x+" >> 2) & 1) & !flag_b) |" + + "( (("+x+" >> 3) & 1) & flag_b) |" + + "( (("+x+" >> 4) & 1) & !flag_a) |" + + "( (("+x+" >> 5) & 1) & flag_a) | 0" + + ")"; } } } +