add always ready/enabled to get/put
[shakti-peripherals.git] / src / lib / ifc_sync.bsv
1 package ifc_sync;
2
3 import Clocks::*;
4 import GetPut::*;
5
6 (*always_ready,always_enabled*)
7 interface Ifc_sync#(type a);
8 interface Put#(a) put;
9 interface Get#(a) get;
10 endinterface
11 module mksyncconnection#(Clock putclock, Reset putreset,
12 Clock getclock, Reset getreset)(Ifc_sync#(a))
13 provisos(Bits#(a, a__));
14 CrossingReg#(a) null_wire<- mkNullCrossingReg(getclock,?,
15 clocked_by putclock,
16 reset_by putreset);
17 // ReadOnly#(Bit#(a)) null_wire <- mkNullCrossingWire(getclock,
18 // from_put, clocked_by getclock,
19 // reset_by getreset);
20 interface put = interface Put
21 method Action put(a in);
22 null_wire<= in;
23 endmethod
24 endinterface;
25 interface get = interface Get
26 method ActionValue#(a) get();
27 return null_wire.crossed;
28 endmethod
29 endinterface;
30 endmodule
31
32 endpackage
33