--- /dev/null
+package ifc_sync;
+
+ import Clocks::*;
+ import GetPut::*;
+
+ interface Ifc_sync#(type a);
+ interface Put#(a) put;
+ interface Get#(a) get;
+ endinterface
+ module mksyncconnection#(Clock putclock, Reset putreset,
+ Clock getclock, Reset getreset)(Ifc_sync#(a))
+ provisos(Bits#(a, a__));
+ CrossingReg#(a) null_wire<- mkNullCrossingReg(getclock,?,
+ clocked_by putclock,
+ reset_by putreset);
+ // ReadOnly#(Bit#(a)) null_wire <- mkNullCrossingWire(getclock,
+// from_put, clocked_by getclock,
+// reset_by getreset);
+ interface put = interface Put
+ method Action put(a in);
+ null_wire<= in;
+ endmethod
+ endinterface;
+ interface get = interface Get
+ method ActionValue#(a) get();
+ return null_wire.crossed;
+ endmethod
+ endinterface;
+ endmodule
+
+endpackage;
+