Skip to content

Commit

Permalink
Page break improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
IainCRobertson committed Feb 15, 2024
1 parent 4692cf8 commit 18572ad
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion encapsulation.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@ A _null_ packet is defined as a single *header* byte with a zero *length* field.

A _null_ packet is inserted in the data stream when there are no _normal_ encapsulated packets to send. This typically occurs at a trace sink where there are no sideband signals accompanying the data stream to identify valid data. Packets emitted from a trace source are generally transported over some form of on-chip transport (e.g. ATB) that includes sideband signalling to indicate when data is valid. In this situation when there is no data to send, valid is simply deasserted. That said, the *flow* field definition in _null_ packets is unchanged, so _null_ packets can be routed from a trace source to a specific sink if required. When generated at a sink, the *flow* field value is unimportant and is typically 0.

Usually, _null.idle_ will be used. _null.alignment_ is used for synchronization, as described in following section.
<<<
Usually, _null.idle_ will be used. _null.alignment_ is used for synchronization, as described in the following section.

Insertion of _null_ packets typically occurs at a trace sink where there are no sideband signals accompanying the data stream to identify valid data. Packets emitted from a trace source are generally transported over some form of on-chip transport (e.g. ATB) that includes sideband signalling to indicate when data is valid. In this situation when there is no data to send, valid is simply deasserted. That said, the *flow* field definition in _null_ packets is unchanged, so _null_ packets can be routed from a trace source to a specific sink if required. When generated at a sink, the *flow* field value is unimportant and is typically 0.

Expand All @@ -129,6 +130,7 @@ The synchronization requirements are summarized in the following rules:
- For unframed data streams, N consecutive _null.idle_ packets, directly followed by one _null.alignment_ packet;
- For framed data streams, N consecutive _null.idle_ packets, directly followed by one _null.idle_ or _null.alignment_ packet.

<<<
Synchronization sequences are typically inserted periodically. In addition, a sufficiently long run of _null_ packets (due to a lack of _normal_ packets to send) may also serve as an 'opportunistic' synchronization sequence. For unframed data streams, this requires _null.alignment_ packets to be included, either as every (N+1)th _null_, or as the final _null_.

For writing unframed data to memory, alternative synchronisation mechanisms may also be employed. For example, by dividing memory into blocks of known size, and requiring that packets do not straddle block boundaries. The first byte of every block will therefore be the start of a packet. Details of such schemes are out of scope of this specification.
Expand Down

0 comments on commit 18572ad

Please sign in to comment.