Bringup trace
captured: 06.09.2019
file name: ccpi_bringup_4lane_bidir_256G.bin
During the capture of this trace, the ECI link has been reset. We expect to see a full re-establishment of an ECI link. Layer after layer, we should be able to observer how an ECI link should be established.
Interlaken layer
It looks like the Interlaken layer has not been reset. The metaframes are all complete and span the entire trace.
Block layer
The following table shows the exchanged blocks. For each phase, only the first timestamp is shown. Until the next timestamp shown in the table, the blocks sent are the same.
Timestamps in ms |
Node 0 => Node 1 |
Node 0 <= Node 1 |
Node 0 state |
Node 1 state |
Comment |
0.0 |
INIT_REQ, ACK=1 |
INIT_REQ, ACK=0 |
IREQ |
IREQ |
|
7894.684827 |
INIT_REQ, ACK=1 |
INIT_REQ, ACK=1 (one single message) |
IREQ |
IACK |
Node 1 accepts ACK from node 0 and sends one back |
7894.684880 |
INIT_REQ, ACK=1 |
9 times SYNC, REQ=00 |
IACK |
IACK |
Node 1 waits until no more REQ!=00 blocks arrive and goes to RUN immediately |
7894.685363 |
SYNC, REQ=00 |
CREDITS |
IACK |
RUN |
Node 1 sends initial credits to node 0 |
7894.687292 |
SYNC, REQ=00 |
IDLE, ACK=0 |
IACK |
RUN |
Node 0 stays in state IACK and sends empty SYNC blocks as normal for IACK. Not receiving any more INIT_REQ blocks or blocks with ACK=1, it should go to RUN state.There seems to be a timeout, it only happens after approximately 10ms |
7903.367620 |
CREDITS and 4 time ACK, first four ACK=1 others ACK=0 |
4x IDLE block with ACK=1, others are all ACK=0 |
RUN |
RUN |
Node 0 sends initial credits to node 1 and acknowledges the received Credits from earlier. Node 1 acknowledges the received CREDIT (=DATA) blocks. (1 ACK <=> 8 correct data blocks, 4x ACK are for 32 blocks with initial credits ) |
7903.369550 |
IDLE, ACK=0 |
IDLE, ACK=0 |
RUN |
RUN |
|
The first blocks observed, in both directions, are SYNC blocks, requesting link initiation. All blocks until second 7.894 are of this type. Node 0 has the ACK flag set in its initiation requests, node 1 does not.
Then both nodes send some blocks that are not quite covered by our user guide (see below).
Undocumented SYNC Blocks
The blocks sent after INIT_REQ and before the CREDITS are sent are not in a format described by the user guide document. But our older description here describes this particular field a bit differently and with that those can just be SYNC blocks with SM_REQ set to false. (TODO: Update user guide?)
Following are the details of said blocks.
They are marked as SYNC blocks (Header bits 63:61 = 110) but the field Req[53:52] contains 00, which is not explained by our block-layer documentation so far.
Node 0
Node 0 sends these blocks for about 10ms. All but the first blocks look exactly the same.
For node 0, the header information is the same for all those blocks. Disregarding the CRC field, everything except the SYNC block marker is set to 0, including the ACK field.
The data words (unused for normal SYNC blocks) are not completely 0, as you can see below. Also interesting, the first block has some different values in there, whereas all following blocks have the same values.
Here is how all blocks except the first look
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="280d5357-f452-462a-b835-63c1a05de87b"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="40a4553e-a988-4a1f-9237-f12c6c1755f7"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000C0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="6ae8c183-fece-47d4-a091-d1cd4a244784"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="7836c468-5042-4887-86c2-814d309866aa"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000C0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="be4a5422-5dac-4dbc-a70d-30e4869f8eb5"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="7e0b975a-ae23-4fb2-a5f4-99824db48326"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000C0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="b9d5c71c-e7a1-4c51-b799-308e4cfd07ed"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
Header |
<0xC00000000034329C> |
Here is the first block:
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="616160ea-cd43-44b5-9ef3-3a31bf6098d8"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="590c40fc-0022-4752-83ed-98052469c6fd"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="37900fe2-ad5a-4435-a8c6-d96e369ef713"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="2a53fa3b-f8ff-4cd9-b138-b1951da0635f"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="11b3c618-a7d8-42a1-8639-b1bb3837bacd"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e6b61b9f-769b-450f-8df6-3f9bb8407c3f"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="72cb9497-02a7-460d-91e6-ed637d6653cd"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
Header |
<0xC000000000246F62> |
Node 1
The other node only sends precisely 9 SYNC blocks with REQ=00. In this case, the first 8 blocks look all the same and the last block is different.
The important difference here is that the the first 8 blocks have the ACK bit (bit 60) set to 1, otherwise the blocks look mostly the same in both directions.
First 8 blocks:
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="3db726c5-e971-4bb8-92df-21c35f42012b"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a2fe7174-9af9-4142-8677-b3e792d835f3"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8283c777-ba0a-4995-9072-5820997b6426"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e23d2c92-198f-4c24-b47a-b476c164eaf3"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="454b1d04-7d05-482c-bffa-a4da2e5ed1b3"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="11963a4b-8f7e-47a9-be6a-82b5f24046d6"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="59d754c9-7ebb-4662-8470-46db015f46aa"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
Header |
<0xD0000000005253FB> |
Last block:
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="3297d612-28e0-400d-993b-30c20b81c1f1"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="9811ed95-48ec-43de-a91c-74bbe34447b4"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="af7d3a27-ea59-4f77-b4da-fa146e35ecea"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="34934fd6-ea3b-456d-b330-9d46f7a25599"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="053d601a-c2c2-44c3-a411-ffefc8abddde"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="9e9125d3-fede-4cef-a263-5e835fb602fa"><ac:plain-text-body><![CDATA[ |
Unused |
[0x00000000000000D0] |
]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4c6bc348-1802-40c7-9de5-112dc91ffd64"><ac:plain-text-body><![CDATA[ |
Unused |
[0x0000000000000000] |
]]></ac:plain-text-body></ac:structured-macro> |
Header |
<0xC000000000246F62> |
Credits
For initialization, credits in both direction are sent in the same pattern. Here is the full part of the trace where credit are sent from node 0 to node 1. (Only the timestamps differ in the other direction.)
[7903.367620] DATA BLOCK (ACK=1) Credits: [0, 1, 2, 3, 4, 5, 6, 7] [7903.367674] DATA BLOCK (ACK=1) Credits: [8, 9, 10, 11, 12] [7903.367728] DATA BLOCK (ACK=1) Credits: [0, 1, 2, 3, 4, 5, 6, 7] [7903.367781] DATA BLOCK (ACK=1) Credits: [8, 9, 10, 11, 12] [7903.367835] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5, 6, 7] [7903.367888] DATA BLOCK (ACK=0) Credits: [8, 9, 10, 11, 12] [7903.367942] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5, 6, 7] [7903.367996] DATA BLOCK (ACK=0) Credits: [8, 9, 10, 11, 12] [7903.368049] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368103] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368156] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368210] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368264] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368317] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368371] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368424] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368478] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368532] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368585] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368639] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368692] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368746] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368800] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368853] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368907] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.368960] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369014] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369068] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369121] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369175] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369228] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369282] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369336] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369389] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369443] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5] [7903.369496] DATA BLOCK (ACK=0) Credits: [0, 1, 2, 3, 4, 5]
VC layer (ECI messages)
In the table below are the first ECI CC messages in the trace. There is exactly one messages on each side of the trace that cannot be parsed with our current specification. The message is sent on VC 13 which is supposed to be used for multicore debug messages and CSR data.
Note that the timestamps are from different sides and may not be ordered exactly. (It is possible that the order below is not 100% correct)
Timestamps in ms |
Node 0 => Node 1 |
Node 0 <= Node 1 |
Address |
ppvid |
DID |
payload |
9129.338690 |
|
0x80055E6807F80000 vc=0xD |
|
|
|
|
9134.199566 |
|
ECI_IREQ_SLILD |
0x2200004 |
0x0 |
0x7e |
|
9134.199911 |
ECI_IRSP_SLIRSP |
|
|
0x30 |
|
000000000000000c |
9134.201121 |
|
ECI_IREQ_SLIST |
0x2200004 |
0x0 |
0x7e |
000000000000000c |
9139.493800 |
|
ECI_IREQ_SLIST |
0x2202005 |
0x0 |
0x7e |
0000abcd00000000 |
9139.493960 |
|
ECI_IREQ_SLILD |
0x2200005 |
0x0 |
0x7e |
|
9139.494143 |
0x80055E6800000000 vc=0xD |
|
|
|
|
|
9139.494304 |
ECI_IRSP_SLIRSP |
|
|
0x30 |
|
0000000000000027 |
9139.494979 |
|
ECI_IREQ_SLIST |
0x2200005 |
0x0 |
0x7e |
0000000000000007 |
9143.399738 |
|
ECI_IREQ_SLILD |
0x2200006 |
0x0 |
0x7e |
|
9143.400082 |
ECI_IRSP_SLIRSP |
|
|
0x30 |
|
0000000000000026 |
9143.400810 |
|
ECI_IREQ_SLIST |
0x2200006 |
0x0 |
0x7e |
0000000000000006 |
9162.754805 |
|
ECI_IREQ_SLILD |
0x2203005 |
0x0 |
0x7e |
|
9162.755150 |
ECI_IRSP_SLIRSP |
|
|
0x30 |
|
8000abcd00ff0000 |
9168.309267 |
|
ECI_IREQ_SLILD |
0x2203405 |
0x0 |
0x7e |
|
9168.309610 |
ECI_IRSP_SLIRSP |
|
|
0x30 |
|
0000000000000000 |
9172.562159 |
|
ECI_IREQ_SLILD |
0x2203805 |
0x0 |
0x7e |
|
9172.562502 |
ECI_IRSP_SLIRSP |
|
|
0x30 |
|
0000000000000000 |
9176.815158 |
|
ECI_IREQ_SLILD |
0x2200000 |
0x0 |
0x7e |
|
9176.815502 |
ECI_IRSP_SLIRSP |
|
|
0x30 |
|
000000000000000d |