26 lines
1.0 KiB
Plaintext
26 lines
1.0 KiB
Plaintext
import ClientServer::*;
|
|
import GetPut::*;
|
|
import Memory::*;
|
|
|
|
typedef struct {
|
|
Bit#(dataSz) data;
|
|
Bool accessFault; // The memory request faulted
|
|
} FallibleMemoryResponse#(numeric type dataSz) deriving(Bits, Eq, FShow);
|
|
|
|
//
|
|
// ReadWriteMemory
|
|
//
|
|
typedef Client#(MemoryRequest#(addrSz, dataSz), FallibleMemoryResponse#(dataSz)) ReadWriteMemoryClient#(numeric type addrSz, numeric type dataSz);
|
|
typedef Server#(MemoryRequest#(addrSz, dataSz), FallibleMemoryResponse#(dataSz)) ReadWriteMemoryServer#(numeric type addrSz, numeric type dataSz);
|
|
|
|
//
|
|
// ReadOnlyMemory
|
|
//
|
|
typedef struct {
|
|
Bit#(TDiv#(dataSz,8)) byteen;
|
|
Bit#(addrSz) address;
|
|
} ReadOnlyMemoryRequest#(numeric type addrSz, numeric type dataSz) deriving(Bits, Eq, FShow);
|
|
|
|
typedef Client#(ReadOnlyMemoryRequest#(addrSz, dataSz), FallibleMemoryResponse#(dataSz)) ReadOnlyMemoryClient#(numeric type addrSz, numeric type dataSz);
|
|
typedef Server#(ReadOnlyMemoryRequest#(addrSz, dataSz), FallibleMemoryResponse#(dataSz)) ReadOnlyMemoryServer#(numeric type addrSz, numeric type dataSz);
|