Communications protocols describe the data in a message as well as how it's transferred in a reliable way between initiator and target.
Accurate, unambiguous rules are vital for reliable inter-block communication, as well as conformance to published specifications like AMBA bus protocols or specifications from PCISIG.
At the System-level we can encapsulate the data domain of a 'transaction' as a class
class APBx32ArgT {
sc_uint< 32 > addr_arg;
sc_uint< 32 > data_arg;
sc_uint< 8 > delay_arg;
sc_uint< 2 > resp_val;
};
The time domain or signal sequences that manage the data transfer can be described accurately using Regular Expressons from a Property Description language such as PSL.
We can define the full set of legal behavior of a medium such as a processor bus by defining the set of legal transactions, plus the idle and reset sequence. For this popular AHB bus this might comprise:
{
BurstModeRead
| BurstModeWrite
| SingleRead
| SingleWrite
| Inactive
| Reset
};