replace addPreCrap() with noDriveLatches in FpgaDock.java
authoradam <adam@megacz.com>
Mon, 10 Nov 2008 06:15:51 +0000 (07:15 +0100)
committeradam <adam@megacz.com>
Mon, 10 Nov 2008 06:15:51 +0000 (07:15 +0100)
src/edu/berkeley/fleet/fpga/FpgaDock.java
src/edu/berkeley/fleet/fpga/verilog/Verilog.java

index a83073a..7de5618 100644 (file)
@@ -143,8 +143,8 @@ public class FpgaDock extends FleetTwoDock implements FabricElement {
             Module.InstantiatedModule dfifo = new Module.InstantiatedModule(this, dfifo_m);
 
             fabric_in.hasLatch = false;
-            addPreCrap("assign "+dfifo.getInputPort("in").getName()+"_r = fabric_in_r;\n");
-            addPreCrap("assign fabric_in_a = "+dfifo.getInputPort("in").getName()+"_a;\n");
+            fabric_in.connect(dfifo.getInputPort("in"));
+            dfifo.getInputPort("in").noDriveLatches = true;
             if (inbox)
                 addPreCrap("assign "+dfifo.getInputPort("in").getName()+
                            " = { "+fpga.PACKET_SIGNAL.verilogVal("fabric_in")+
index c9da7d3..9ffafdd 100644 (file)
@@ -379,6 +379,7 @@ public class Verilog {
             public boolean forceNoLatch = false;
             public SinkPort driven = null;
             public Latch latchDriver = null;
+            public boolean noDriveLatches = false;
             public final String resetBehavior;
             public Assignable getAssignableBits(int high, int low) { return new SimpleValue(getVerilogName(), high, low); }
             public String getVerilogAction() { return getReq() + " <= 1;"; }
@@ -444,7 +445,7 @@ public class Verilog {
                 if (driver != null) {
                     sb.append("assign " + name +"_r = " + driver.name + "_r;\n");
                     sb.append("assign " + driver.name +"_a = " + name + "_a;\n");
-                    if (width>0)
+                    if (width>0 && !noDriveLatches)
                         sb.append("assign " + name +"   = " + driver.name + ";\n");
                 }
                 if (latchDriver != null) {