Incoming Request

Word#BITSNameDescriptionNote
0[7:0]Version[7:0]SRP Version number 
0[9:8]OpCode[1:0]Operation Code
  • 0x0=Non-Posted Read
  • 0x1=Non-Posted Write
  • 0x2=Posted Write
  • 0x3=NULL
0[23:10]ReservedReservedIgnored
0[14]LockRequestRequest a lock 
0[15]LockReleaseRelease a lock 
0[23:16]LockCodeExclusive access code

Set to 0 when requesting a lock

Set to the returned lock code once a lock has been granted

0[31:24]TimeoutCnt[7:0]Timeout Counter
  • If 0x00, then no timeout
  • In units of 100 ms
1[31:0]TID[31:0]Transaction ID 
2[31:0]Addr[31:0]Register AddressIn units of bytes
3[31:0]Addr[63:32]Register AddressIn units of bytes
4[31:0]ReqSize[31:0]Request Size
  • In units of bytes
  • Counting from zero
  • ReqSize = 0x0 is 1 byte request
5[31:0]WriteData[31:0]Write DataOnly used for write operations
............Only used for write operations
4+CEIL((ReqSize+1)/4)[31:0]WriteData[31:0]Write DataOnly used for write operations

Outgoing Response

Word#BITSNameDescriptionNote
0[7:0]Version[7:0]Module's SRP Version numberAlways respond with local value
0[9:8]OpCode[1:0]Operation CodeEchoed back
0[10]UnalignedAccessModule's support for non word-aligned addresses
  • Always respond with local value
  • 0 = not supported (only 32-bit alignment)
  • 1 = supported (byte alignment)
0[11]MinAccessSizeModule's byte/word transaction support
  • Always respond with local value
  • 0 = 32-bit (4 byte) transactions only
  • 1 = Byte level transactions allowed
0[12]WriteEnModule Write op support
  • Always respond with local value
  • 0 = write operations are not supported
  • 1 = write operations are supported
  • Applies to both posted and non-posted writes
0[13]ReadEnModule Read op support
  • Always respond with local value
  • 0 = read operations are not supported
  • 1 = read operations are supported
0[14]LockGrantLock granted for exclusive access 
0[15]LockReleaseLock release granted 
0[23:16]LockCodeExclusive access codeWhen an exclusive access lock has been granted, transactions must use this code
0[23:14]ReservedReservedResponds back with 0x0
0[31:24]TimeoutCnt[7:0]Timeout CounterEchoed back
1[31:0]TID[31:0]Transaction IDEchoed back
2[31:0]Addr[31:0]Register AddressEchoed back
3[31:0]Addr[63:32]Register AddressEchoed back
4[31:0]ReqSize[31:0]Request SizeEchoed back
5[31:0]MemData[31:0]Memory DataOnly used for non-posted operations
............Only used for non-posted operations
4+CEIL((ReqSize+1)/4)[31:0]MemData[31:0]Memory DataOnly used for non-posted operations
5+CEIL((ReqSize+1)/4)[7:0]MemResp[7:0]Memory Bus ResponseFooter :
  • if MemResp == 0, then success
  • if MemResp != 0, then failed

Each SRP bus bridge implementation will define it's own use for this field.

5+CEIL((ReqSize+1)/4)[8]timeouttimeout errorFooter
5+CEIL((ReqSize+1)/4)[9]eofeEnd of Frame with ErrorFooter
5+CEIL((ReqSize+1)/4)[10]frameErrorFraming error detectedFooter
5+CEIL((ReqSize+1)/4)[11]verMismatchVersion Mismatch ErrorFooter
5+CEIL((ReqSize+1)/4)[12]reqSizeErrorRequest Size ErrorFooter
5+CEIL((ReqSize+1)/4)[13]LockErrorLock ErrorFooter. Module has granted a lock and the incorrect lock code was sent in a txn.
5+CEIL((ReqSize+1)/4)[31:13]ReservedAlways zerosFooter
  • No labels