This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

difference between the Tag and Sequence Num. in PCIe DSPC6678



Hi,

In TLPs packet, I found two fields that identify each packet and I can not differentiate between them!

1-      Tag [header]

2-      Sequence Number

Please what is the difference???

  • Based on the description of PCIe standard specification in PCISIG:

    Tag is the number assigned to a given Non-posted Request to distinguish Completions for that Request from other Requests.

    Requesters uses the tag field in the completion to associate it with a request TLP of the same tag value it transmitted earlier. Use of a tag in the request and completion TLPs allows a requester to manage multiple outstanding transactions.

    The Sequence Number in TLP is added in the Data Link Layer, which is used to detect cases where one or more entire TLPs have been lost.

    The Receive Data Link Layer validates received TLPs by checking the Sequence Number, LCRC code and any error indications from the Receive Physical Layer. In case of error in a TLP, Data Link Layer Retry is used for recovery.

    Hope the above helps.

  • Steven,

    So how many tag DSPC6678 support???

    and the tag is specific to each transaction(request) or each TLP packet??

  • Please take a look at section 2.2.6.2 "Transaction ID Field" in PCIe base specification Rev2.0 (which C667x PCIe module complies with).

    • Tag[7:0] is a 8-bit field generated by each Requestor, and it must be unique for all outstanding Requests (not each TLP) that require a Completion for that Requester
    • By default, the maximum number of outstanding Requests per Function shall be limited to 32, and only the lower 5 bits of the Tag field are used with the remaining upper 3 bits required to be 000b
    • If the Extended Tag Field Enable bit (see Section 7.8.4) is set, the maximum is increased to 256, and the entire Tag field is used (C667x does not support Extended Tag Field, please refer to EXT_TAG_FLD field in DEVICE_CAP register in C6678 PCIe user guide)