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 (*always_ready,always_enabled*)
9 interface Put#(a) put;
10 (*always_ready,always_enabled*)
11 interface Get#(a) get;
12 endinterface
13 module mksyncconnection#(Clock putclock, Reset putreset,
14 Clock getclock, Reset getreset)(Ifc_sync#(a))
15 provisos(Bits#(a, a__));
16 CrossingReg#(a) null_wire<- mkNullCrossingReg(getclock,?,
17 clocked_by putclock,
18 reset_by putreset);
19 // ReadOnly#(Bit#(a)) null_wire <- mkNullCrossingWire(getclock,
20 // from_put, clocked_by getclock,
21 // reset_by getreset);
22 interface put = interface Put
23 method Action put(a in);
24 null_wire<= in;
25 endmethod
26 endinterface;
27 interface get = interface Get
28 method ActionValue#(a) get();
29 return null_wire.crossed;
30 endmethod
31 endinterface;
32 endmodule
33
34 endpackage
35