<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.cadence.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Verification</title><link>https://community.cadence.com/cadence_blogs_8/b/fv</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 27 Oct 2026 07:23:00 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.cadence.com/cadence_blogs_8/b/fv" /><item><title>From UPLI Poison to TL Message Type 0x20: Carrying Corrupted Data Through UALink</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/from-upli-poison-to-tl-message-type-0x20-carrying-corrupted-data-through-ualink</link><pubDate>Tue, 27 Oct 2026 07:23:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:b46c1c45-aa71-4247-83e6-27a2ea303ca7</guid><dc:creator>Nikshit</dc:creator><slash:comments>0</slash:comments><description>&lt;h2&gt;The Problem Nobody Wants to Talk About&lt;/h2&gt;
&lt;p&gt;Every high-speed link has a quiet fear: &lt;strong&gt;what happens when a piece of data is already bad before it even reaches the wire?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A soft error flips a bit in an SRAM. A parity check fails inside a switch. A read response arrives at an accelerator with a damaged payload. The data is corrupt, but the &lt;em&gt;protocol&lt;/em&gt; around it, the addresses, the tags, the credits, is perfectly healthy.&lt;/p&gt;
&lt;p&gt;You have three choices:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Drop&lt;strong&gt; the transaction.&lt;/strong&gt; Now, a requester waits forever for a response that will never come.&lt;/li&gt;
&lt;li&gt;Stop&lt;strong&gt; the link.&lt;/strong&gt; One bad beat takes down traffic for everyone sharing that fabric.&lt;/li&gt;
&lt;li&gt;Deliver&lt;strong&gt; the data, but label it as bad.&lt;/strong&gt; The transaction completes, the fabric keeps flowing, and the one chip that finally consumes the data knows not to trust it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt; picks option three. That label is called &lt;strong&gt;poison&lt;/strong&gt;, and the way it travels from the Protocol Level Interface (UPLI) down into the Transaction Layer (TL) and back up again is one of the most elegant, and most easily misverified, mechanisms in the specification.&lt;/p&gt;
&lt;p&gt;This blog focuses on a key aspect of data integrity in &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;: ensuring that corrupted data is never silently trusted. Through its poisoned data mechanism, &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;identifies, propagates, and contains data corruption, allowing downstream components to detect and respond to errors appropriately.&lt;/p&gt;
&lt;h2&gt;Poisoned Data: In-Band Error Signaling&lt;/h2&gt;
&lt;p&gt;When data corruption is detected, &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;propagates the error in-band with the affected data rather than relying on retransmission, acknowledgements, or additional buffering. The specification requires the corruption indication to remain coincided with the corrupted data half-flit, avoiding protocol feedback loops and complex buffering requirements. At the TL, the affected data half-flit is replaced with a poisoned data message (message type 0x20), preserving data ordering and allowing the corruption status to be propagated transparently to the final consumer of the data.&lt;/p&gt;
&lt;h2&gt;Step 1: Where Poison Is Born at the UPLI&lt;/h2&gt;
&lt;p&gt;Poison starts as a single bit on a UPLI data channel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Read data (&lt;/strong&gt;&lt;strong&gt;RdRspDataError):&lt;/strong&gt; This is a data &amp;quot;poison&amp;quot; indicator. It is asserted at any UALink protocol level interface on a switch or accelerator that detects a parity error on the RdRsp data beat, or by the switch core when it detects an error on read response data (data only, not control signals) according to the switch soft-error detection scheme. The key phrase: &lt;em&gt;it is asserted individually for each beat, according to the error state of that beat.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Write data (&lt;/strong&gt;&lt;strong&gt;OrigDataError):&lt;/strong&gt; The mirror image on the originator side. It is set at any interface that detects a parity error on the originator data, or by the switch detecting an error on data, and note the careful exclusion: &lt;em&gt;data only, not control signals, including byte enables&lt;/em&gt;. This signal is one bit wide and, when asserted, indicates the current data beat contains a data error. OrigData itself is 512 bits, so one OrigDataError bit covers one &lt;strong&gt;64-byte beat&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Two things to hold on to for the rest of this blog:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Poison is &lt;strong&gt;per beat&lt;/strong&gt;, not per transaction. A four-beat write can have beat one poisoned and the others perfectly clean.&lt;/li&gt;
&lt;li&gt;Poison covers &lt;strong&gt;payload&lt;/strong&gt;, never control information or byte enables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Poison Is Not the Same as an Error Status&lt;/h2&gt;
&lt;p&gt;It is tempting to confuse poison with a failed read. They are different tools:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Aspect&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;RdRspStatus Error&lt;/p&gt;
&lt;/td&gt;
&lt;td width="313"&gt;
&lt;p&gt;RdRspDataError/OrigDataError&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;What it indicates&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class="emoticon" data-url="https://community.cadence.com/cfs-file/__key/system/emoji/1f6ab.svg" title="No entry sign"&gt;&amp;#x1f6ab;&lt;/span&gt;&amp;nbsp;The operation failed (TARGET ABORT, DECODE ERROR, PROTECTION VIOLATION, CMPTO)&lt;/p&gt;
&lt;/td&gt;
&lt;td width="313"&gt;
&lt;p&gt;&lt;span class="emoticon" data-url="https://community.cadence.com/cfs-file/__key/system/emoji/26a0.svg" title="Warning"&gt;&amp;#x26a0;&lt;/span&gt;️ The operation completed, but a specific data beat is corrupt&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Granularity&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;One 4-bit status per response&lt;/p&gt;
&lt;/td&gt;
&lt;td width="313"&gt;
&lt;p&gt;One error bit per data beat&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Data on the wire&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Completer sends all requested beats with RdRspLast and manufactured data (typically all 1s / 0xFF)&lt;/p&gt;
&lt;/td&gt;
&lt;td width="313"&gt;
&lt;p&gt;Actual data is transmitted, but the affected beat is marked untrustworthy&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Cache behavior&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class="emoticon" data-url="https://community.cadence.com/cfs-file/__key/system/emoji/274c.svg" title="X"&gt;&amp;#x274c;&lt;/span&gt;&amp;nbsp;Returned data shall not be cached; cache state remains unchanged&lt;/p&gt;
&lt;/td&gt;
&lt;td width="313"&gt;
&lt;p&gt;&lt;span class="emoticon" data-url="https://community.cadence.com/cfs-file/__key/system/emoji/2623.svg" title="Biohazard"&gt;&amp;#x2623;&lt;/span&gt;️ Accelerator may cache the line while marking the data as poisoned&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Impact&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Entire transaction is considered unsuccessful&lt;/p&gt;
&lt;/td&gt;
&lt;td width="313"&gt;
&lt;p&gt;Only the affected beat(s) are suspect&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Recovery action&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Retry, software handling, or protocol-level recovery&lt;/p&gt;
&lt;/td&gt;
&lt;td width="313"&gt;
&lt;p&gt;Consumer decides whether to use, retry, or discard poisoned data&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Same fabric, two different failure stories. A good testbench checks both, and checks that they never get mixed up.&lt;/p&gt;
&lt;h2&gt;Step 2: The Hard Part, Moving From a Wire to a Flit&lt;/h2&gt;
&lt;p&gt;Inside a UPLI interface, poison is trivial: a sideband bit sitting right next to its data beat. But UALink traffic doesn&amp;#39;t stay on UPLI. It is packed into &lt;strong&gt;TL flits&lt;/strong&gt; for the trip across the fabric, and a TL flit has no DataError wire.&lt;/p&gt;
&lt;p&gt;Here is how a TL flit is built:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A TL flit is two &lt;strong&gt;32-byte Half-Flits&lt;/strong&gt;. Each half-flit carries a one-bit &lt;strong&gt;message indicator&lt;/strong&gt; (M1 for the upper half, M0 for the lower).&lt;/li&gt;
&lt;li&gt;When the indicator is 1, the half-flit is a &lt;strong&gt;TL message half-flit&lt;/strong&gt;: the low-order byte is the &lt;strong&gt;MsgType&lt;/strong&gt; (256 possible message types) and the remaining &lt;strong&gt;31 bytes&lt;/strong&gt; are message-specific payload.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Normal TL message half-flits are inserted into the stream and shift subsequent half-flits to maintain ordering. The poisoned data TL message half-flit (0x20) is the only exception, replacing the affected data half-flit(s) in place rather than being inserted, thereby preserving the existing TL sequence. Along with NOP (0x00) and initial credit release complete (0x01), it is one of the three legal TL message half-flit types.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Poisoned Data Handling Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;In-place substitution&lt;/strong&gt;: A corrupted data payload is indicated by replacing the corresponding TL data half-flit with a poisoned data TL message half-flit (MsgType = 0x20). No additional TL message half-flit is inserted into the stream.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Undefined payload content:&lt;/strong&gt; For a poisoned data TL message half-flit, only the MsgType field is defined. The remaining bytes are undefined and carry no protocol significance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restricted usage:&lt;/strong&gt; Poisoned data replacement is valid only in half-flits that would otherwise contain data payloads or atomic operands. It shall not be used in half-flits carrying byte enables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;64B-to-32B mapping requirement:&lt;/strong&gt; Since 64-byte UPLI data beat maps to two 32-byte TL data half-flits, poisoning a UPLI beat requires both associated TL data half-flits to be replaced with poisoned data message half-flits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication precedence:&lt;/strong&gt; When authentication is enabled, a poisoned data TL message half-flit shall not replace an AuthTags half-flit. Authentication-related half-flits retain priority over poison substitution.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;A Worked Example&lt;/h3&gt;
&lt;p&gt;A 256-byte write is four 64-byte UPLI beats, which is eight 32-byte data half-flits. Because the &lt;em&gt;second&lt;/em&gt; beat is the bad one, its two half-flits, &lt;strong&gt;Req0.Data.2 and &lt;/strong&gt;&lt;strong&gt;Req0.Data.3&lt;/strong&gt;, are replaced by poisoned data message half-flits. Every other half-flit travels as normal data.&lt;/p&gt;
&lt;p&gt;When this data finally reaches the accelerator that consumes it, the receiver sees the two 0x20 messages and drives &lt;strong&gt;OrigDataError for the second UPLI beat&lt;/strong&gt;, restoring the very same per-beat bit that existed on the sending side. The loop closes.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/pastedimage1793081142195v3.png" /&gt;&lt;/p&gt;
&lt;h3&gt;How Far Does Poison Travel?&lt;/h3&gt;
&lt;p&gt;The corrupt-data indication shall be carried through the various subsequent TL interfaces and UPLI interfaces, via RdRspDataError or OrigDataError, &lt;em&gt;until the data reaches the accelerator ultimately receiving the data&lt;/em&gt;. Every switch in between is a courier, not a judge. And that final accelerator is free to mark the data as poisoned in its caches or take whatever action it needs.&lt;/p&gt;
&lt;h3&gt;What Poison Is Not For&lt;/h3&gt;
&lt;p&gt;An error detected &lt;strong&gt;on the TL Rx interface&lt;/strong&gt; itself, by an implementation-specific detection scheme, is &lt;strong&gt;uncorrectable and fatal&lt;/strong&gt;. It cannot be fixed by poisoning data. The Rx TL interface on which it occurred stops forwarding all received TL flits. Errors on the &lt;strong&gt;TL Tx&lt;/strong&gt; interface are handled by UALink DL. Poison is a mechanism for &lt;em&gt;known-bad payload on a healthy link&lt;/em&gt;, not a way to paper over a broken one.&lt;/p&gt;
&lt;h2&gt;The Verification Iceberg: 6 Things That Must All Be Right&lt;/h2&gt;
&lt;p&gt;The visible tip is &amp;quot;when the data is bad, send a 0x20.&amp;quot; Below the waterline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Faithful mapping, per beat.&lt;/strong&gt; Every poisoned UPLI beat must become a poisoned data &lt;em&gt;pair&lt;/em&gt;, and every clean beat must stay real data. Poison one beat of four and exactly two half-flits change.&lt;/li&gt;
&lt;li&gt;Pairing&lt;strong&gt;.&lt;/strong&gt; One poisoned half-flit with a clean partner is a protocol violation. Both halves of a beat must agree.&lt;/li&gt;
&lt;li&gt;Position&lt;strong&gt;.&lt;/strong&gt; Poisoned data must never appear on a byte enable half-flit, and it cannot be the start of a new command. It only replaces data or atomic operand half-flits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Round-trip fidelity.&lt;/strong&gt; The OrigDataError or RdRspDataError pattern recovered at the far UPLI must equal the pattern injected at the near one, beat for beat.&lt;/li&gt;
&lt;li&gt;No&lt;strong&gt; collateral damage.&lt;/strong&gt; Poisoning a beat must not shift, delay, or corrupt neighbouring half-flits, since in-place replacement is the whole point.&lt;/li&gt;
&lt;li&gt;Both&lt;strong&gt; directions, both paths.&lt;/strong&gt; Writes (OrigDataError) and reads (RdRspDataError) take different channels and different code paths. Verifying one tells you nothing about the other.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Why Hand-Written Tests Fall Short&lt;/h2&gt;
&lt;p&gt;A directed test usually poisons &amp;quot;beat 0 of a write&amp;quot; and calls it a day. But poison position, beat count, transaction type (write, read, atomic), port, and traffic around it all interact. The bugs live in the corners: the &lt;em&gt;last&lt;/em&gt; beat of a burst, &lt;em&gt;two&lt;/em&gt; adjacent poisoned beats, poison on a read response that follows a write. Only constrained-random injection with continuous checking reaches them.&lt;/p&gt;
&lt;h2&gt;The Verification Hit List: 5 Scenarios Every Plan Should Include&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Random&lt;strong&gt; beat poison on writes.&lt;/strong&gt; Inject OrigDataError on a random subset of beats of a multi-beat write, and confirm the receive-side OrigDataError mask equals the transmitted one, beat for beat.&lt;/li&gt;
&lt;li&gt;Random&lt;strong&gt; beat poison on read responses.&lt;/strong&gt; The same for RdRspDataError on multi-beat read responses, checked end-to-end at the originator.&lt;/li&gt;
&lt;li&gt;Pairing&lt;strong&gt; violation.&lt;/strong&gt; Deliberately poison only one half of a beat&amp;#39;s half-flit pair, and confirm the checker flags it.&lt;/li&gt;
&lt;li&gt;Position&lt;strong&gt; violation.&lt;/strong&gt; Place Poisoned Data on a Byte Enable half-flit, and as the first message of a new command, and confirm both are flagged.&lt;/li&gt;
&lt;li&gt;Poison&lt;strong&gt; versus status.&lt;/strong&gt; Check that a read response carrying an error RdRspStatus (Manufactured Data, no caching) behaves differently from one carrying poisoned data beats, and that neither is confusing for each other.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;How Modern Verification IP Tackles This&lt;/h2&gt;
&lt;p&gt;Cadence&amp;#39;s Simulation VIP for UALink turns each of these rules into something you can run and measure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Built-in protocol checkers.&lt;/strong&gt; Dedicated receive-side validation checks ensure that poisoned data is used only in the locations permitted by the protocol. These checks verify that poisoning is applied consistently across paired half-flits and is not carried on byte-enable or control half-flits where it is not allowed. The checks are automatically applied to all received flits and require no additional test-specific set-up.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Granular control of the poison stimulus.&lt;/strong&gt; A verification environment should be able to select exactly which data beats of a transaction are poisoned, on both writes (OrigDataError) and read responses (RdRspDataError). A single beat, adjacent beats, or a random subset can be targeted while the remaining beats stay unaffected. This makes it possible to reach corner cases such as the last beat of a burst or two neighbouring poisoned beats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;End-to-end checking of the poison pattern.&lt;/strong&gt; The pattern injected at the originating UPLI is compared, beat for beat, with the pattern recovered at the far-end UPLI. The comparison runs on every transaction, on both channels and in both directions, and the same checking flags patterns the specification does not allow, such as poison on only one half of a beat&amp;#39;s pair or poisoned data in a non-permitted position.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;How Cadence VIP addresses this.&lt;/strong&gt; Cadence&amp;#39;s Simulation VIP for UALink already covers both areas, from poison stimulus to end-to-end checking. Verification teams can therefore focus on defining meaningful scenarios and analysing coverage, rather than building and maintaining the injection and checking infrastructure themselves.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion: The Label That Keeps the Fabric Honest&lt;/h2&gt;
&lt;p&gt;Credit flow is invisible when it works, because data flows at line rate. Poison is the opposite: it is the mechanism you &lt;em&gt;want&lt;/em&gt; to be visible exactly once, at the one chip that finally consumes the bad data.&lt;/p&gt;
&lt;p&gt;The path is short to describe and long to verify. A single bit on a UPLI beat becomes two 32-byte message half-flits tagged 0x20, travels unchanged through every hop, and re-emerges as the same single bit at the far UPLI. At every step, there are rules about pairing, position, and what must &lt;em&gt;not&lt;/em&gt; be poisoned.&lt;/p&gt;
&lt;p&gt;A poison bug does not crash your design. It does something much worse: it lets corrupt data look clean, in a cache, in a training run, at scale. Verify it now, while it is just a simulation log.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To integrate this end-to-end validation capability into your environment, contact Cadence Support, visit the Simulation VIP for &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;product page, or explore the wider range of Cadence Simulation VIP solutions. For technical assistance, reach out at talk_to_vip_expert@cadence.com.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364485&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>From Transactions to Flits: The Journey Through UALink Transaction Layer</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/from-transactions-to-flits-an-engineer-s-guide-to-the-ualink-transaction-layer</link><pubDate>Mon, 26 Oct 2026 09:23:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:74078c1b-b531-4a64-bcae-12a25f11e2e1</guid><dc:creator>Nirav Toliya</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="color:#000000;font-size:inherit;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:inherit;"&gt;AI accelerators are getting faster, but their performance increasingly depends on how quickly they can exchange data. In a multi-accelerator system, one device may finish computing a tensor, gradient block, or intermediate result while another device is already waiting for it. When communication cannot keep pace with computation, expensive accelerator cycles are lost.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;UALink is designed to remove that bottleneck inside the scale-up system. It gives accelerators a direct, high-bandwidth, low-latency path to peer memory using read, write, and atomic operations. Instead of treating communication as a separate networking task, UALink makes peer-memory access part of the accelerator&amp;rsquo;s memory-oriented transaction flow.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Consider one such transaction.&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:inherit;"&gt;A 256-byte result leaves accelerator A as one WriteFull request and four data beats. At accelerator B, the same request and data beats emerge. In between, however, the transaction is split, packed, routed, repacked, and reconstructed.&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:inherit;"&gt;The layer responsible for preserving its meaning throughout that journey is the &lt;strong&gt;UALink Transaction Layer (TL)&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/7875.pastedimage1792750231436v1.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;em&gt;UALink TL transforms, transports, and reconstructs a 256-byte WriteFull.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k5k48g6b0"&gt;TL Receives One Transaction&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;UPLI presents a WriteFull request and four associated 64-byte data beats on the originator data channel. TL must preserve the command, destination accelerator ID, transaction tag, and association between the request and all four data beats.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k5k48g6b1"&gt;&lt;span style="color:#000000;"&gt;TL Builds the Flit Sequence&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Tx TL places the WriteFull request in a control field and splits the 256-byte payload into eight 32-byte data half-flits. The control field tells Rx TL what transaction is coming and how much data belongs to it. Because WriteFull marks every byte as valid, no separate byte-enable half-flit is needed.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1680.pastedimage1792750264182v2.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;em&gt;One possible mapping of a 256-byte WriteFull into TL control and data half-flits.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style="border-color:#94c8f2;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Flow Control &amp;mdash; Is the Receiver Ready?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Before sending the WriteFull, Tx TL must have enough credits for both the request and its payload. A 256-byte WriteFull consumes &lt;strong&gt;one request CMD credit&lt;/strong&gt; and &lt;strong&gt;four request data credits&lt;/strong&gt;, with each data credit representing one 64-byte receive buffer. Each link maintains an independent credit loop, with credits returned as receive-buffer capacity becomes available.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Compression &amp;mdash; Can the Request Be Smaller?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;When the optional Tx and Rx address caches are implemented, an uncompressed request can load a corresponding entry in the receiver&amp;rsquo;s address cache. If a later WriteFull hits that entry and satisfies the compression rules, Tx TL can encode the request in &lt;strong&gt;two sectors instead of four&lt;/strong&gt;. Only the control encoding becomes smaller; the 256-byte payload still uses &lt;strong&gt;eight 32-byte data half-flits&lt;/strong&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1k5k48g6b2"&gt;&lt;span style="color:#000000;font-size:inherit;"&gt;TL Preserves the Transaction Across the Fabric&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;At the switch, the ingress TL reconstructs the WriteFull request and its associated data beats. The switch core uses the destination accelerator ID to select the outgoing port, and the switch egress TL builds a new flit sequence for the next link. Flit packing may change, but the request and its associated data must remain correctly sequenced and associated.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k5k48g6b3"&gt;&lt;span style="color:#000000;font-size:inherit;"&gt;Rx TL Reconstructs the Original UPLI Transaction&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Rx TL decodes the WriteFull control field, knows that eight data half-flits belong to the transaction, and collects them in sequence. It then recreates the corresponding UPLI WriteFull request and four 64-byte data beats for accelerator B&amp;rsquo;s completer.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k5k48g6b4"&gt;&lt;span style="color:#000000;font-size:inherit;"&gt;TL Carries Completion and Error Meaning&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;Completion:&lt;/strong&gt; After completing the write, accelerator B returns a write response containing the completion status and original transaction tag. Accelerator B&amp;rsquo;s Tx TL encodes the write response, and accelerator A&amp;rsquo;s Rx TL reconstructs it so the originator can retire the correct request.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;Corruption:&lt;/strong&gt; If a 64-byte data beat is marked corrupted, its two corresponding 32-byte data half-flits are replaced with poisoned data TL message half-flits using message type 0x20. Rx TL then reconstructs the corresponding UPLI beat with OrigDataError asserted. The data is not trusted, but the transaction sequence remains intact.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k5k48g6b5"&gt;&lt;span style="color:#000000;font-size:inherit;"&gt;Why TL Verification Gets Interesting&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;At the UPLI boundary, a WriteFull transaction appears simple: one request and four data beats. Within the transaction layer, however, the request may be compressed, its payload is divided into eight data half-flits, credits determine when it can advance, and switches may reconstruct and repack it for the next link.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Any of these steps can fail without stopping the protocol. The flit stream may remain valid while the reconstructed transaction is incorrect. This is what makes TL verification challenging, particularly in areas such as:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;Credit-controlled progress.&lt;/strong&gt; Command and data credits must be consumed and returned correctly on every link. When a transaction stalls, it can be difficult to tell expected backpressure from a credit-accounting error.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;Compression and reconstruction.&lt;/strong&gt; A request compressed to two sectors depends on a matching entry in the receiver&amp;rsquo;s address cache. If the Tx and Rx address caches fall out of sync, the reconstructed WriteFull can silently differ from the original.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;Transaction association.&lt;/strong&gt; Each data half-flit must remain associated with the correct request, including after switch repacking, and each completion must be matched to the correct outstanding request. With many transactions in flight, a broken association can still look like valid traffic.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;Error propagation.&lt;/strong&gt; A data beat marked corrupted must be reconstructed with OrigDataError asserted on the corresponding UPLI beat, without disrupting the transaction sequence. The poison indication must reach the correct beat, not just the correct transaction.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;WriteFull is only one example; reads and atomics follow the same principle. A transaction may change form many times on its journey, but its meaning must not.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Cadence UALink VIP helps verify that this meaning is preserved. Built-in protocol checkers flag violations, while transaction-aware visibility across the UPLI and TL interfaces connects flit-level activity to transaction-level behavior, shortening the path from a valid-looking flit stream to the root cause of an incorrect transaction.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;em&gt;&lt;span&gt;More information on Cadence UALink VIP is available at the&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;Simulation VIP for UALink&lt;/a&gt;.&amp;nbsp;You can also explore Cadence &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html"&gt;Simulation VIP&lt;/a&gt; solutions for other protocols.&amp;nbsp;&lt;/span&gt;&lt;span&gt;If you have any queries, feel free to contact us at talk_to_vip_expert@cadence.com&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364481&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Function%2bVerification">Function Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flow%2bControl">Flow Control</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink%2bVIP">UALink VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Transaction%2blayer">Transaction layer</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flit%2bPacking">Flit Packing</category></item><item><title>Demystifying NOP Debug Flits in PCIe Flit Mode</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/demystifying-nop-debug-flits-in-pcie-flit-mode</link><pubDate>Mon, 12 Oct 2026 22:35:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:a64c100b-6331-4e15-8569-fe02eda4ad05</guid><dc:creator>sabnams</dc:creator><slash:comments>0</slash:comments><description>&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;As PCIe bandwidth continues to double with every generation, complexity increases. The transition to flit mode, combined with advanced mechanisms such as replay buffers, flow control tracking, PAM4 signaling, and Forward Error Correction (FEC), has significantly improved link efficiency, but it has also made failure cause analysis far more challenging.&lt;/p&gt;
&lt;p&gt;When performance drops unexpectedly, retry counts increase, or a switch experiences traffic congestion, debug becomes difficult, making users trace the root cause. Traditional techniques provide only a partial view of what is happening inside the link, making debug a time-consuming and often frustrating process.&lt;/p&gt;
&lt;p&gt;To address this visibility gap, PCIe introduced the &lt;strong&gt;NOP.Debug flit&lt;/strong&gt;, a standardized mechanism for transporting diagnostic information directly over the PCIe link. Instead of relying solely on external debug aids, devices can communicate valuable runtime information such as flow-control status, retry counters, buffer occupancy, trace capture triggers, and other diagnostic data through structured debug chunks embedded within a NOP.Debug flit.&lt;/p&gt;
&lt;p&gt;Debug flits act as a built-in telemetry channel for PCIe links, rather than guessing why throughput is low or why replay activity is increasing; users can access real-time protocol state information directly from the communicating devices. The result is faster root-cause identification, improved performance analysis, and more efficient validation of complex PCIe systems.&lt;/p&gt;
&lt;h2&gt;NOP Debug Flit Layout and Details of Fields&lt;/h2&gt;
&lt;p&gt;A single debug flit can contain multiple chunks, and chunks from different vendors may coexist within the same flit. Unused space is filled using empty debug chunks.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:136px;max-width:512px;" alt=" " height="136" src="https://community.cadence.com/resized-image/__size/1024x272/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/pastedimage1790859841357v1.png" width="512" /&gt;&lt;em&gt;Figure 1: NOP.Debug flit debug chunk&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:395px;max-width:488px;" alt=" " height="395" src="https://community.cadence.com/resized-image/__size/976x790/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/pastedimage1790859870920v2.png" width="488" /&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;em&gt;Figure 2: NOP.Debug flit debug chunk fields&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;table style="margin-left:auto;margin-right:auto;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="78"&gt;
&lt;p&gt;&lt;strong&gt;Opcode&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;&lt;strong&gt;Debug chunk type&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="275"&gt;
&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000000b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;Empty debug chunk&lt;/p&gt;
&lt;/td&gt;
&lt;td width="277"&gt;
&lt;p&gt;Padding/alignment, contains no debug data&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000001b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;Start capture trigger debug chunk&lt;/p&gt;
&lt;/td&gt;
&lt;td width="273"&gt;
&lt;p&gt;Trigger trace capture start&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000010b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;Stop capture trigger debug chunk&lt;/p&gt;
&lt;/td&gt;
&lt;td width="273"&gt;
&lt;p&gt;Trigger trace capture stop&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000011b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;FC information tracked by transmitter&lt;/p&gt;
&lt;/td&gt;
&lt;td width="273"&gt;
&lt;p&gt;TX flow-control debug&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000100b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;FC information tracked by receiver&lt;/p&gt;
&lt;/td&gt;
&lt;td width="273"&gt;
&lt;p&gt;RX flow-control debug&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000101b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="303"&gt;
&lt;p&gt;Flit mode transmitter retry flags and counters&lt;/p&gt;
&lt;/td&gt;
&lt;td width="271"&gt;
&lt;p&gt;TX retry status and counters&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000110b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;Flit mode receiver retry flags and counters&lt;/p&gt;
&lt;/td&gt;
&lt;td width="273"&gt;
&lt;p&gt;RX retry status and counters&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0000111b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;Buffer occupancy debug chunk&lt;/p&gt;
&lt;/td&gt;
&lt;td width="273"&gt;
&lt;p&gt;Reports current buffer occupancy&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="80"&gt;
&lt;p&gt;0001000b&lt;/p&gt;
&lt;/td&gt;
&lt;td width="301"&gt;
&lt;p&gt;Link debug request debug chunk&lt;/p&gt;
&lt;/td&gt;
&lt;td width="287"&gt;
&lt;p&gt;Requests debug information from link partner&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="text-align:center;"&gt;&lt;em&gt;Table 1: PCI-SIG-defined debug chunk Opcodes&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Advantages of Debug Flits&lt;/h2&gt;
&lt;p&gt;Instead of relying entirely on internal DUT signals, verification environments can now observe protocol state through architecturally defined mechanisms.&lt;/p&gt;
&lt;p&gt;This improves:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Root-cause analysis&lt;/li&gt;
&lt;li&gt;Debug productivity&lt;/li&gt;
&lt;li&gt;Functional coverage&lt;/li&gt;
&lt;li&gt;Silicon correlation&lt;/li&gt;
&lt;li&gt;Interoperability testing&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Debug Flits Verification&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;From a verification standpoint, debug flits introduce an entirely new feature set that must be validated.&lt;/li&gt;
&lt;li&gt;The challenge is not simply verifying that a debug flit is transmitted, but one must ensure that the debug information contained within the flit accurately reflects the internal state of the DUT.&lt;/li&gt;
&lt;li&gt;This shifts verification from validating protocol transactions to validating protocol introspection.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For this, some crucial negative scenarios must include:&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;1. Stress Testing with High-Volume Traffic and Credit Starvation&lt;/h3&gt;
&lt;p&gt;This scenario verifies how the DUT behaves when flow-control credits are exhausted under heavy traffic conditions. Debug flits carrying flow control information help determine whether throughput degradation is caused by credit starvation, incorrect credit accounting, or transmission throttling.&lt;/p&gt;
&lt;h3&gt;2. Flit Replays Caused by CRC/FEC Error Injection&lt;/h3&gt;
&lt;p&gt;Creating error injection scenarios by CRC or FEC corruption, such that replay mechanism is triggered and validate retry behavior. Additionally, debug flits provide visibility into retry counters and replay activity, helping confirm that replay handling and sequence-number management are functioning correctly.&lt;/p&gt;
&lt;h3&gt;3. Handling Corrupted Debug Flit Headers&lt;/h3&gt;
&lt;p&gt;A robust PCle implementation must safely detect and discard malformed debug flits without affecting normal traffic. Verification should ensure that corrupted opcodes, invalid lengths, or malformed headers are handled gracefully and do not cause protocol errors or unexpected behavior.&lt;/p&gt;
&lt;h3&gt;4. Buffer Occupancy Reporting&lt;/h3&gt;
&lt;p&gt;Buffer occupancy debug chunks provide insight into congestion within endpoints or switches. By creating traffic hotspots and buffer pressure scenarios, validation of the reported occupancy can be done to check whether it accurately reflects the actual buffer usage and helps identify performance bottlenecks quickly.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;As PCIe systems continue to grow in bandwidth, scale, and complexity, the ability to understand what is happening inside the link becomes increasingly important. Debug flits represent a major step forward in PCIe observability. By providing standardized access to flow-control state, retry information, buffer occupancy, and trace-capture controls, they enable engineers to debug complex protocol issues with significantly greater efficiency.&lt;/p&gt;
&lt;p&gt;In the flit era of PCIe, debug flits are not just another protocol feature. They are a powerful visibility framework that transforms debugging from guesswork into insight. Cadence PCIe VIP solutions are proven to verify the PCIe7 features and provide a seamless usage model to cater to the verification of these complex features.&lt;/p&gt;
&lt;h2&gt;More Information&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For more info on how Cadence PCIe Verification IP and TripleCheck enable users to confidently verify these new disruptive changes, see our &lt;a id="menur19s0" class="fui-Link ___1q1shib f2hkw1w f3rmtva f1ewtqcl fyind8e f1k6fduh f1w7gpdv fk6fouc fjoy568 figsok6 f1s184ao f1mk8lai fnbmjn9 f1o700av f13mvf36 f1cmlufx f9n3di6 f1ids18y f1tx3yz7 f1deo86v f1eh06m1 f1iescvh fhgqx19 f1olyrje f1p93eir f1nev41a f1h8hb77 f1lqvz6u f10aw75t fsle3fq f17ae5zn" title="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/pci-express-gen6-simulation-vip" href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/pci-express-gen6-simulation-vip" rel="noopener noreferrer" target="_blank"&gt;VIP for PCI Express&lt;/a&gt;, &lt;a id="menur19s3" class="fui-Link ___1q1shib f2hkw1w f3rmtva f1ewtqcl fyind8e f1k6fduh f1w7gpdv fk6fouc fjoy568 figsok6 f1s184ao f1mk8lai fnbmjn9 f1o700av f13mvf36 f1cmlufx f9n3di6 f1ids18y f1tx3yz7 f1deo86v f1eh06m1 f1iescvh fhgqx19 f1olyrje f1p93eir f1nev41a f1h8hb77 f1lqvz6u f10aw75t fsle3fq f17ae5zn" title="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/vip-for-compute-express-link-cxl" href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/vip-for-compute-express-link-cxl" rel="noopener noreferrer" target="_blank"&gt;&lt;span&gt;VIP for Compute Express Link&lt;/span&gt;&lt;/a&gt;,&lt;span&gt; and &lt;/span&gt;&lt;a id="menur19s6" class="fui-Link ___1q1shib f2hkw1w f3rmtva f1ewtqcl fyind8e f1k6fduh f1w7gpdv fk6fouc fjoy568 figsok6 f1s184ao f1mk8lai fnbmjn9 f1o700av f13mvf36 f1cmlufx f9n3di6 f1ids18y f1tx3yz7 f1deo86v f1eh06m1 f1iescvh fhgqx19 f1olyrje f1p93eir f1nev41a f1h8hb77 f1lqvz6u f10aw75t fsle3fq f17ae5zn" title="https://ip.cadence.com/ipportfolio/verification-ip/productivity-tools" href="https://ip.cadence.com/ipportfolio/verification-ip/productivity-tools" rel="noopener noreferrer" target="_blank"&gt;&lt;span&gt;TripleCheck for PCI Express.&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;For more information on PCIe in general, and on the various PCI standards, see the &lt;/span&gt;&lt;a id="menur19s9" class="fui-Link ___1q1shib f2hkw1w f3rmtva f1ewtqcl fyind8e f1k6fduh f1w7gpdv fk6fouc fjoy568 figsok6 f1s184ao f1mk8lai fnbmjn9 f1o700av f13mvf36 f1cmlufx f9n3di6 f1ids18y f1tx3yz7 f1deo86v f1eh06m1 f1iescvh fhgqx19 f1olyrje f1p93eir f1nev41a f1h8hb77 f1lqvz6u f10aw75t fsle3fq f17ae5zn" title="https://pcisig.com/" href="https://pcisig.com/" rel="noopener noreferrer" target="_blank"&gt;&lt;span&gt;PCI-SIG website&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. &amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;If you have feedback or need more information, reach out to us at &lt;/span&gt;&lt;a id="menur19sc" class="fui-Link ___1q1shib f2hkw1w f3rmtva f1ewtqcl fyind8e f1k6fduh f1w7gpdv fk6fouc fjoy568 figsok6 f1s184ao f1mk8lai fnbmjn9 f1o700av f13mvf36 f1cmlufx f9n3di6 f1ids18y f1tx3yz7 f1deo86v f1eh06m1 f1iescvh fhgqx19 f1olyrje f1p93eir f1nev41a f1h8hb77 f1lqvz6u f10aw75t fsle3fq f17ae5zn" title="mailto:talk_to_vip_expert@cadence.com" href="mailto:talk_to_vip_expert@cadence.com" rel="noopener noreferrer" target="_blank"&gt;&lt;span&gt;talk_to_vip_expert@cadence.com&lt;/span&gt;&lt;/a&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364420&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/pcie%2bgen7">pcie gen7</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/nop%2bflit">nop flit</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/debug%2bflit">debug flit</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/pcie%2bgen6">pcie gen6</category></item><item><title>Why Protocol Compliance Is Not Enough: Performance Verification with ATP</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-protocol-compliance-is-not-enough-performance-verification-with-atp</link><pubDate>Mon, 12 Oct 2026 22:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f3b85369-3bed-442d-b4aa-93b94d902007</guid><dc:creator>PratikKumarGupta</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Constrained-random stimulus proves that an interconnect is functionally correct. It cannot prove that the interconnect will sustain the bandwidth of real traffic demands. Adaptive Traffic Profiles were defined to answer that second question, and Cadence Verification IP implements the model in full.&lt;/p&gt;
&lt;p&gt;A fully passing Advanced eXtensible Interface (AXI) test suite and a system that misses its performance targets in the lab are not a contradiction. The conventional stimulus is written to exercise protocol corners, so it issues bursts as fast as the subordinate will accept. Real traffic sources behave nothing like that. A camera pipeline or a display controller produces a steady, rate-limited stream of bytes and stalls when its buffer runs out of space. A stimulus that ignores that behavior measures peak throughput on an idle fabric, which is rarely the number that decides whether a design ships.&lt;/p&gt;
&lt;h2&gt;What Adaptive Traffic Profiles Describe&lt;/h2&gt;
&lt;p&gt;Adaptive Traffic Profiles, defined by Arm as part of the AMBA specification family, take a different approach from a conventional sequence. Rather than describing individual transactions, a profile describes a traffic source or sink that sits behind a first-in, first-out (FIFO) buffer. Three parameters carry most of the meaning: the rate in bytes per clock cycle at which the buffer drains or fills, the buffer depth, and whether the buffer starts empty or full.&lt;/p&gt;
&lt;p&gt;Traffic then generates itself from that description. A read profile models a consumer: the buffer drains at the specified rate, and a transaction is issued only when enough space exists to hold the data that will be returned. A write profile models a producer: the buffer fills at the specified rate, and a transaction is issued only once enough data has accumulated to send.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:220px;max-width:580px;" alt="Write and Read Profile" src="https://community.cadence.com/resized-image/__size/1160x440/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/33460.Picture1.png" /&gt;&lt;em&gt;The rate always applies to the traffic side of the buffer; the bus drives the other side. That asymmetry is the whole model.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The word adaptive is the important one. Because the buffer level responds to the latency the design under test actually returns, a profile throttles itself when the fabric gets congested and catches up when the fabric clears. Traffic shapes itself around the design rather than being replayed blindly at it.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;width:auto;" alt="AMBA ATP Flow" src="https://community.cadence.com/resized-image/__size/0x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3441.Picture2.png" /&gt;&lt;br /&gt;&lt;em&gt;Two loops run concurrently. The buffer fills and drains every cycle, while the issue loop consults the level before sending anything, which is where self-throttling comes from.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That property is also what makes a profile portable. Because it expresses a requirement rather than a fixed transaction list, the same description of a video pipeline holds its meaning in a block-level simulation, a full system run, an emulation platform, and a fabric that has since been reconfigured.&lt;/p&gt;
&lt;h2&gt;What the Model Demands of an Implementation&lt;/h2&gt;
&lt;p&gt;Expressing traffic this way is straightforward on paper and demanding in practice. A faithful implementation has to track buffer occupancy against in-flight data every cycle, convert a bandwidth figure into issue decisions, generate the address and identifier patterns the specification defines, honor outstanding-transaction limits, reproduce channel-level handshake timing, and do all of it without ever emitting a transaction that breaks protocol rules.&lt;/p&gt;
&lt;h2 id="mcetoc_1k4d8oa232"&gt;How Cadence Verification IP Delivers the Model&lt;/h2&gt;
&lt;p&gt;The Cadence Adaptive Traffic Profiles solution is built on the AMBA Verification IP, so profiles run inside a standard Universal Verification Methodology (UVM) environment and compose with existing stimulus rather than replacing it.&lt;/p&gt;
&lt;h3 id="mcetoc_1k4d8ofn53"&gt;Coverage across the AMBA family&lt;/h3&gt;
&lt;p&gt;Profiles drive AXI, the Advanced High-performance Bus (AHB), AXI Coherency Extensions (ACE) with control over the non-shareable, inner, outer, and system coherency domains, and the Coherent Hub Interface (CHI). Protocol-independent behavior is shared, so a profile written for one protocol carries the same meaning on another. Both Manager-side and Subordinate-side traffic can be modeled.&lt;/p&gt;
&lt;h3 id="mcetoc_1k4d8oldd4"&gt;The full pattern vocabulary&lt;/h3&gt;
&lt;p&gt;Addresses follow sequential, random, static, wrapping, or two-dimensional patterns, the last describing image-style access through an X range, a Y range, and a stride. Identifiers can be random, fixed, cycling, unique, or drawn from a supplied list, and generated addresses can be constrained to an alignment boundary.&lt;/p&gt;
&lt;h3 id="mcetoc_1k4d8or855"&gt;Timing fidelity beyond the rate&lt;/h3&gt;
&lt;p&gt;Bandwidth is specified as a real number rather than a coarse approximation, outstanding transactions are capped independently, profile start can be offset, and the delay between consecutive transactions can be fixed or normally distributed around a mean. The specification&amp;#39;s channel-level handshake delay parameters are supported under their standard names, so a timing requirement transfers directly from an architecture document into the testbench.&lt;/p&gt;
&lt;h3 id="mcetoc_1k4d8ovda6"&gt;Protocol legality guaranteed&lt;/h3&gt;
&lt;p&gt;Bursts generated from a bandwidth figure are automatically split at the AXI 4KB boundary and the AHB 1KB boundary, and unaligned transfers are handled. A performance requirement cannot accidentally become a protocol violation.&lt;/p&gt;
&lt;h3 id="mcetoc_1k4d8p5gb7"&gt;Measurement built in&lt;/h3&gt;
&lt;p&gt;Every profile tracks the minimum and maximum levels its buffer reached, reports them per burst and per profile, and raises a warning whenever the buffer touches empty or full. The performance result is an output of the run, not something that has to be reconstructed afterward from a waveform.&lt;/p&gt;
&lt;h3 id="mcetoc_1k4d8saqn8"&gt;Repeatable, trace-driven traffic&lt;/h3&gt;
&lt;p&gt;Addresses, identifiers, and data content can be supplied from plain text files in decimal or hexadecimal, so an address trace captured from software or a previous run can be replayed exactly. Files are shared across profiles and cycle automatically when shorter than the profile requires.&lt;br /&gt;Because profiles are ordinary UVM sequences, many can run concurrently and compete for the same fabric. That is where results get interesting: a profile that comfortably meets its rate in isolation and starves once its neighbors become active is precisely the finding worth having before tapeout.&lt;/p&gt;
&lt;h2&gt;Seeing the Result&lt;/h2&gt;
&lt;p style="text-align:center;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:365px;max-width:604px;" alt="FIFO level vs read latency" src="https://community.cadence.com/resized-image/__size/1208x730/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6165.Picture3.png" /&gt;&lt;br /&gt;&lt;em&gt;A read profile requesting three bytes per cycle. The buffer holds near 900 bytes while read latency is 30 cycles, drains once latency rises to 420, and then starves for 351 cycles, continuing for 252 cycles after the congestion itself has cleared. A buffer that reaches empty once the profile is running is the failure signature.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The reported buffer levels answer the original question. A read profile whose minimum level stays well clear of zero was served comfortably throughout. One that reaches empty indicates a design that could not meet its own requirement, and the margin between that minimum and the buffer depth quantifies the headroom left for the next derivative. A bandwidth number stops being a spreadsheet entry and becomes a simulation result with a pass or fail attached.&lt;/p&gt;
&lt;h2&gt;Learn More&lt;/h2&gt;
&lt;p&gt;Performance questions are easier to answer early, while the fabric can still change. &lt;strong&gt;Full details of Adaptive Traffic Profiles support, including the complete parameter set and supported protocols, are available through the &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/amba.html"&gt;Cadence AMBA Verification IP&lt;/a&gt;&amp;nbsp;documentation.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364441&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AMBA%2bVerification%2bIP">AMBA Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AMBA">AMBA</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ATP">ATP</category></item><item><title>UPLI Credit Flow: Why It Matters for UALink and What It Takes to Verify It Right</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/upli-credit-flow-why-it-matters-for-ualink-and-what-it-takes-to-verify-it-right</link><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:5d9bc084-eff2-4792-b394-a8c6cbb9f2e4</guid><dc:creator>AY20250725603</dc:creator><slash:comments>0</slash:comments><description>The Problem Nobody Talks About
Picture a world where 1,024 AI accelerator chips work shoulder-to-shoulder inside a single compute node - each one craving data as fast as it can process it, each one firing requests at its neighbours dozens of times ev...(&lt;a href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/upli-credit-flow-why-it-matters-for-ualink-and-what-it-takes-to-verify-it-right"&gt;read more&lt;/a&gt;)&lt;img src="https://community.cadence.com/aggbug?PostID=1364414&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category></item><item><title>UCIe 3.0: Faster Links Are Only Half the Story</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/ucie-3-0-faster-links-are-only-half-the-story</link><pubDate>Thu, 08 Oct 2026 08:52:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:50575ef2-559c-433b-b295-ddadb06324d3</guid><dc:creator>Mannan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The chiplet ecosystem continues to push performance boundaries, and the latest UCIe 3.0 specification takes a significant step forward with the introduction of 48 GT/s and 64 GT/s data rates, alongside enhancements to support continuous transmission protocols and improved framing error detection and correction capabilities. Together, these features represent much more than a simple speed upgrade. They fundamentally expand the scope of workloads that can efficiently leverage UCIe-based connectivity.&lt;/p&gt;
&lt;h2&gt;More Than Just Higher Bandwidth&lt;/h2&gt;
&lt;p&gt;The move from previous generations to 48 GT/s and 64 GT/s significantly increases die-to-die bandwidth, enabling chiplet-based systems to transfer data at unprecedented rates. For AI training clusters, inference accelerators, memory-centric architectures, and large-scale compute fabrics, this additional throughput helps address one of today&amp;#39;s biggest bottlenecks: data movement.&lt;/p&gt;
&lt;p&gt;However, higher bandwidth brings new challenges. As bandwidth scales, the tolerance for implementation issues shrinks. Small protocol violations, corner case timing interactions, or recovery sequence bugs that might have gone unnoticed at lower speeds can manifest as level failures in complex chiplet deployments.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3107.i4_5F00_1200x630_5F00_125kb.jpg" /&gt;&lt;/p&gt;
&lt;h2&gt;Enabling Continuous Transmission Workloads&lt;/h2&gt;
&lt;p&gt;One of the most significant enhancements in UCIe 3.0 is its support for protocols that require continuous transmission. A notable example is JESD204E, which introduces a UCIe optimized link layer for transporting high speed converter data across chiplet-based systems. By providing the high bandwidth, low latency foundation needed for sustained data streams, UCIe 3.0 extends its reach beyond traditional compute connectivity and into specialized data-intensive applications.&lt;/p&gt;
&lt;p&gt;Historically, many interconnect protocols have relied on burst-oriented or packet-based communication models, where transmission gaps occur naturally. Emerging workloads are increasingly different. AI data pipelines, streaming accelerators, memory fabrics, and converter-centric systems often require a continuous, deterministic flow of information across chiplets.&lt;/p&gt;
&lt;p&gt;Supporting these workloads demands more than higher bandwidth alone. The interconnect must sustain uninterrupted data transfer while maintaining framing integrity, link reliability, and protocol correctness across a wide range of operating conditions.&lt;/p&gt;
&lt;h2&gt;Reliability Becomes a First-Class Requirement&lt;/h2&gt;
&lt;p&gt;At higher speeds and under continuous traffic conditions, framing accuracy becomes increasingly critical. To strengthen link robustness, UCIe 3.0 introduces enhanced mechanisms for valid framing error detection and correction. These capabilities help identify framing-related issues before they propagate across the system, improving overall reliability and resiliency.&lt;/p&gt;
&lt;h2&gt;The Verification Challenge&lt;/h2&gt;
&lt;p&gt;While these features unlock new possibilities, they also introduce a new generation of verification challenges. Verification teams must validate not only the happy path, but also countless corner cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Can the design reliably sustain 48 GT/s and 64 GT/s operation?&lt;/li&gt;
&lt;li&gt;Does continuous transmission behave correctly during congestion and flow control events?&lt;/li&gt;
&lt;li&gt;Are framing errors detected precisely when they occur?&lt;/li&gt;
&lt;li&gt;Are the correction and recovery mechanisms executed according to the specification?&lt;/li&gt;
&lt;li&gt;How does the system behave when multiple protocol features interact simultaneously?&lt;/li&gt;
&lt;li&gt;Can interoperability be maintained across different implementations?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The difficulty lies not in testing a few isolated scenarios, but in exercising the enormous state space created by high speed operation, continuous traffic patterns, link recovery flows, and error injection scenarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6712.i2_5F00_edited.jpg" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Why Advanced VIP Matters&lt;/h2&gt;
&lt;p&gt;This is where a comprehensive verification solution becomes critical.&amp;nbsp;&lt;strong&gt;Cadence UCIe VIP&lt;/strong&gt; provides a protocol-aware verification environment that enables engineers to validate both mainstream and advanced UCIe 3.0 features efficiently.&lt;/p&gt;
&lt;p&gt;For higher speed operation, the &lt;strong&gt;Cadence UCIe VIP&lt;/strong&gt; helps verify link training, speed negotiation, protocol compliance, and data integrity across supported data rates. For continuous transmission use cases, the VIP can generate realistic traffic patterns, exercise streaming scenarios, and validate system behavior under stress conditions.&lt;/p&gt;
&lt;p&gt;Equally important, the &lt;strong&gt;Cadence UCIe VIP&lt;/strong&gt; provides extensive error injection and protocol checking capabilities, enabling teams to verify framing error detection, correction, recovery behavior, and overall protocol robustness before silicon.&lt;/p&gt;
&lt;p&gt;By combining automated protocol compliance checking, comprehensive coverage collection, configurable traffic generation, and interoperability-focused verification, engineers can focus on uncovering corner case issues rather than building complex verification infrastructure from scratch.&lt;/p&gt;
&lt;h2&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;What makes UCIe 3.0 exciting is not simply the introduction of 48 GT/s and 64 GT/s operation. It is the combination of higher bandwidth, continuous transmission enablement, and enhanced reliability mechanisms that broadens the range of protocols and workloads that can leverage the UCIe ecosystem.&lt;/p&gt;
&lt;p&gt;But as performance and protocol complexity increase, verification becomes a key enabler of successful deployment. Advanced verification solutions such as &lt;strong&gt;Cadence UCIe VIP&lt;/strong&gt; play a crucial role in helping engineering teams confidently adopt these new capabilities while maintaining interoperability, compliance, and reliability.&lt;/p&gt;
&lt;p&gt;Because in the world of chiplets, faster links are only half the story. Confident verification is the other half.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learn more about&amp;nbsp;Cadence UCIe Verification IP&amp;nbsp;on the&amp;nbsp;&lt;/strong&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/multi-die/ucie.html"&gt;&lt;strong&gt;Simulation VIP for UCIE | Cadence&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;&lt;strong&gt;or simply reach out to our Cadence Verification IP experts at&amp;nbsp;&lt;/strong&gt;&lt;a href="mailto:talk_to_vip_expert@cadence.com"&gt;&lt;strong&gt;talk_to_vip_expert@cadence.com&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364440&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ucie">ucie</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chiplets">chiplets</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/cadence">cadence</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Cadence%2bVIP%2bportfolio">Cadence VIP portfolio</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AIInfrastructure">AIInfrastructure</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UCIe%2b3-0">UCIe 3.0</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/HPC">HPC</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/SoCDesign">SoCDesign</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ASICDesign">ASICDesign</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/SiliconEngineering">SiliconEngineering</category></item><item><title>VLAB in Practice: Real Binary, Virtual Board, Real Web Browser</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/vlab-in-practice-real-binary-virtual-board-real-web-browser</link><pubDate>Sun, 04 Oct 2026 10:31:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:fe371f54-5bff-44cb-ac4b-14c3beb03088</guid><dc:creator>LeoHendrawan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The question posed was simple: how can we show that a virtual platform is actually real? That it runs real software, just like the real hardware board? The answer is quite simple too: build an existing software example for a development board without any changes, load the generated image onto a virtual platform, and run it. Use an application that makes it easy to see what is going on. The selected application was a web server running on an &lt;a href="https://www.infineon.com/products/microcontroller/32-bit-tricore"&gt;Infineon AURIX&lt;span style="font-size:75%;"&gt;&lt;sup&gt;TM&lt;/sup&gt;&lt;/span&gt;&amp;nbsp;MCU&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3sai91i0"&gt;Real Software Stack?&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Reusing the hardware image on the virtual platform keeps the entire development environment&amp;mdash;including the compiler, bootloader, drivers, middleware, and application behavior&amp;mdash;aligned across both virtual and real environments. This is one of the key advantages of what is commonly known in the automotive industry as &amp;ldquo;Level 4&amp;rdquo; or &amp;ldquo;L4&amp;rdquo; virtual platforms: run the real binary. It sets L4 apart from &amp;ldquo;Level 3&amp;rdquo; and below, where the software is compiled for the host and the software stack is modified to fake parts of the operating system. It allows software development, testing, and integration to begin before hardware is available and continue throughout the development lifecycle, without requiring a separate build process.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3msakod1"&gt;Virtual Board and Real Web Browser?&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Real software also implies virtually real IO &amp;ndash; the software on the virtual platform talks to the outside world through the same hardware drivers and hardware interfaces as the real board. For Ethernet, this results in network packets being sent through a virtual network device to either a virtual network or a connection to the real-world network. In this case, the real-world network is used, allowing a standard web browser to be run on the same host as the virtual platform (or a different host, the virtual platform is on the lab network effectively). The web browser connects to the web server running on the virtual platform, just like it would connect to a real development board.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/0474.HTTP_5F00_Server_5F00_Diagram.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3msakod2"&gt;Building the Software Example &amp;ldquo;As Is&amp;rdquo;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;We selected Infineon&amp;rsquo;s iLLD_TC3XX_ADS_GETH_LWIP_HTTP example from the open-source AURIX&amp;nbsp;code examples repository on&amp;nbsp;&lt;a href="https://github.com/Infineon/AURIX_code_examples"&gt;GitHub&lt;/a&gt;. The project was imported into &lt;a href="https://www.infineon.com/design-resources/platforms/aurix-software-tools/aurix-tools/aurix-development-studio"&gt;AURIX Development Studio&lt;/a&gt; and built as is, using the workflow intended for the hardware target. The resulting ELF image was then loaded into the VLAB AURIX TC37x VDM (Virtual Development Machine) using a VLAB Python script. The script prepares and starts the virtual target, loads the software image, and enables basic interfaces for logging, observing LED activity on a GPIO port, and accessing a UART terminal.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3msakod3"&gt;Debugging the First Blocker&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;After loading the image onto the VDM, the software started without any problems. However, the HTTP server application did not reach its expected operational state. The UART consoles printed out some initial debug messages, but it&amp;nbsp;did not&amp;nbsp;get to reach the code where it finishes the initialization and prints its IP address.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://community.cadence.com/resized-image/__size/640x480/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3108.Screenshot-2026_2D00_09_2D00_29-170634.png" /&gt;&lt;/p&gt;
&lt;p&gt;This is where the virtual development workflow became especially useful. By pausing the application at its entry point and attaching GDB from Visual Studio Code, we were able to debug the target software step by step on the virtual platform, just like you could do with a hardware debugger on real hardware. We could inspect the execution and identify where initialization had stopped progressing. The analysis showed that the software example expected an external &lt;a href="https://en.wikipedia.org/wiki/Physical_layer#PHY"&gt;Ethernet PHY&lt;/a&gt;&amp;nbsp;on the physical hardware, whereas the selected VDM contained the AURIX GETH MAC module but did not include the specific board-level PHY expected by the example.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/7823.Screenshot-2026_2D00_09_2D00_24-141751.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3msakod4"&gt;Bridging the Model Gap&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;There are three ways to handle such a missing component on a virtual platform. You can modify the software, add a full model of the PHY, or stub the PHY sufficiently to let the software work.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Instead of modifying the software source code or the hardware board, we used the VLAB Python API to provide the missing environmental behavior. Software stubs returned the expected results from the Ethernet PHY initialization and link-status functions. An execution-listener callback also updated the GETH PHY interface status register when execution reached the receiver-start routine. This approach kept the target image unchanged while making the board-level assumption explicit in the simulation harness. Because the demo also expects input from the on-chip Die Temperature Sensor (DTS), we used the VLAB Python API to simulate its register value, allowing the original HTTP application to report dynamic temperature information.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This kind of stubbing lets software get going quickly, while the board model is extended with the missing hardware models.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3msakod5"&gt;Connecting the Virtual Ethernet Network&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;With the target software now fully running, the next step was to connect its virtual Ethernet port to the host environment. This can be also easily done by using the VLAB Python API to create a network bridge between the virtual target and the host machine.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3msakod6"&gt;Voil&amp;agrave;: Accessing the Virtual HTTP Server in a Standard Web Browser&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;The final result was simple yet satisfying: we opened a web browser on the host machine and connected directly to the HTTP server application running on the virtual target. The page served by the AURIX example code displayed the simulated temperature data and provided controls for exercising the LED port. In the Visual Studio Code output, the resulting LED activity could be observed through logic-port logging.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This result also demonstrates the strong runtime performance of the VLAB virtual target. The web browser regularly requests updated data from the embedded HTTP server&amp;mdash;potentially every 100 ms&amp;mdash;while the virtual target continues to run the application and respond smoothly. Handling these frequent HTTP requests without noticeable delay shows that the virtual platform provides the performance needed for an interactive web-based application.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5518.Screenshot-2026_2D00_10_2D00_01-201622.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:800px;" alt=" " src="https://community.cadence.com/resized-image/__size/1600x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/8233.Screenshot-2026_2D00_10_2D00_01-201003.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3sao6c52"&gt;From L4 Simulation to a Complete Virtual ECU&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;The most valuable outcome was not only that the demo worked, but also what it revealed about the flexibility of L4 simulation. The same production software image could be loaded, debugged, observed, and connected to standard host tools while the simulation environment supplied focused models for behavior that was not yet available. This enables developers to begin application development and testing early and continue throughout the development lifecycle on a scalable virtual platform.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Although a virtual MCU model combined with targeted Python-based extensions was sufficient to create a realistic end-to-end workflow for this simple example, a production program requires a broader scope. The complete board or ECU environment&amp;mdash;including the relevant processors, peripherals, networks, sensors, actuators, and external devices&amp;mdash;must be represented with the fidelity required by each development and validation task. The ability to start with a focused use case and scale toward a complete virtual board or virtual ECU is a key strength of VLAB. It enables teams to preserve the production software image, make hardware dependencies visible, and apply the same L4 simulation approach from early shift-left development through continuous integration and later stretch-right validation.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Learn more about what Cadence has to offer for automotive and embedded software and hardware developers at &lt;a href="https://www.cadence.com/en_US/home/solutions/automotive-solution.html"&gt;Cadence Automotive Solutions&lt;/a&gt; and &lt;a href="https://vlabworks.com/"&gt;VLABworks.com&lt;/a&gt;!&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364416&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Automotive">Automotive</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Embedded%2bSoftware%2bDebugging">Embedded Software Debugging</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/vlab">vlab</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/virtual%2bplatform">virtual platform</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/embedded%2bsoftware">embedded software</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Shift_2D00_Left">Shift-Left</category></item><item><title>New Course Release: Python API and App Store Development with Verisium Debug</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/new-course-release-python-api-and-app-store-development-with-verisium-debug</link><pubDate>Thu, 01 Oct 2026 10:07:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:7e0d2f65-04d3-4bef-b027-731c67d54d7c</guid><dc:creator>Bhairava prasad</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;em&gt;Automate debug workflows. Build reusable apps. Extend Verisium Debug with Python.&lt;/em&gt;&lt;/p&gt;
&lt;table width="98%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Course focus:&lt;/strong&gt;&lt;br /&gt; Python automation, Verisium Debug APIs, GUI customization, batch-mode workflows, and App Store deployment.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Best suited for:&lt;/strong&gt;&lt;br /&gt; Verification engineers, debug specialists, automation developers, and teams building reusable productivity tools.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Move from manual debug tasks to scalable, reusable, Python-driven debug automation.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The world of digital design verification is evolving rapidly, and automation is becoming a critical skill for engineers seeking to debug faster, improve productivity, and build scalable workflows. To help engineers unlock the full potential of Verisium Debug, we are excited to announce the release of our new online course:&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhi0"&gt;Python API and App Store Development with Verisium Debug&lt;/h2&gt;
&lt;p&gt;This comprehensive course is designed to help verification engineers, debug specialists, and automation enthusiasts learn how to leverage the Verisium Debug Python API to automate tasks, analyze design data, customize workflows, and build deployable applications using the Verisium Debug App Store framework.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5367.pastedimage1788421210970v2.png" /&gt;&lt;/p&gt;
&lt;p&gt;You can find the course &lt;a href="https://cadence.docebosaas.com/learn/courses/3046/python-api-and-app-store-development-with-verisium-debug-v10-online?hash=6254b497f581f9e649596ee316fc65ac53840b47&amp;amp;generated_by=19659"&gt;here&lt;/a&gt;, or search for this course at&amp;nbsp;&lt;strong&gt;&lt;u&gt;ask.cadence.com&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhj1"&gt;Why This Course Matters&lt;/h2&gt;
&lt;p&gt;As design complexity continues to increase, engineers face growing challenges in debugging large datasets, identifying root causes, and managing repetitive analysis tasks. Manual debug processes can consume valuable engineering time and often limit productivity.&lt;/p&gt;
&lt;p&gt;The Verisium Debug Python API provides a powerful solution by enabling users to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programmatic access:&lt;/strong&gt; Access design, waveform, and debug databases directly from Python.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow automation:&lt;/strong&gt; Automate repetitive debug and analysis tasks that consume engineering time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced analysis:&lt;/strong&gt; Perform design, signal, transaction, and driver-tracing investigations with scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom experiences:&lt;/strong&gt; Create GUI components and utilities tailored to real debug use cases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flow integration:&lt;/strong&gt; Connect debug automation with larger verification and regression flows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reusable deployment:&lt;/strong&gt; Build applications that can be packaged and shared through the Verisium Debug App Store framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By learning these capabilities, engineers can move beyond traditional debugging and begin creating intelligent, reusable automation solutions that improve efficiency across projects.&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhj2"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;p&gt;The course takes a practical, hands-on approach and covers the complete workflow from Python API fundamentals to enterprise-ready application development.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj3"&gt;1. Python API Foundations&lt;/h3&gt;
&lt;p&gt;Learn the architecture of the Verisium Debug Python API, understand GUI and batch-mode execution models, and configure your Python development environment for productive automation development.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj4"&gt;2. Design and Value Analysis&lt;/h3&gt;
&lt;p&gt;Discover how to traverse design hierarchies, access signals, perform driver tracing, extract design information, and automate common debug investigations.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj5"&gt;3. Database Handling&lt;/h3&gt;
&lt;p&gt;Understand how to create, load, and interact with Verisium Debug databases programmatically using Python.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj6"&gt;4. GUI Automation and Customization&lt;/h3&gt;
&lt;p&gt;Learn how to interact with Verisium Debug GUI components, create custom widgets, and build enhanced user experiences inside the debugger environment.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj7"&gt;5. Batch Mode Automation&lt;/h3&gt;
&lt;p&gt;Explore how to execute analysis and automation tasks in batch mode to enable integration with regression and verification flows.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj8"&gt;6. App Store Development&lt;/h3&gt;
&lt;p&gt;Learn how to package, deploy, manage, and distribute Python-based applications through the Verisium Debug App Store, transforming standalone scripts into maintainable and reusable tools.&lt;/p&gt;
&lt;table width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Learning path&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Practical takeaway&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;API fundamentals&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Understand how Python connects with Verisium Debug and how scripts run in GUI or batch mode.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Design exploration&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Traverse hierarchy, inspect signals, trace drivers, and extract design information programmatically.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Automation workflows&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Convert repetitive debug steps into repeatable scripts that reduce manual effort.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;App Store packaging&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Turn scripts into reusable applications that can be deployed and maintained across teams.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhj9"&gt;Key Benefits of Taking This Course&lt;/h2&gt;
&lt;p&gt;After completing this training, you&amp;#39;ll be able to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automate repetitive debug tasks and save valuable engineering time&lt;/li&gt;
&lt;li&gt;Build reusable Python-based verification and debug utilities&lt;/li&gt;
&lt;li&gt;Programmatically access and analyze Verisium Debug data&lt;/li&gt;
&lt;li&gt;Customize the debugging environment to match your workflow&lt;/li&gt;
&lt;li&gt;Develop scalable solutions that extend beyond standalone scripts&lt;/li&gt;
&lt;li&gt;Package and deploy applications through the Verisium Debug App Store&lt;/li&gt;
&lt;li&gt;Improve debug efficiency and accelerate issue resolution&lt;/li&gt;
&lt;li&gt;Enhance your Python-based automation skills for modern verification flows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whether you&amp;#39;re looking to increase personal productivity or develop shared tools for your organization, this course provides practical skills that can be immediately applied to real-world verification challenges.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/8081.pastedimage1788421178101v1.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhja"&gt;Earn Recognition Through the Badge Exam&lt;/h2&gt;
&lt;p&gt;Learning doesn&amp;#39;t stop when the course videos end.&lt;/p&gt;
&lt;p&gt;To help learners assess and validate their understanding, the course includes a &lt;strong&gt;Badge Exam&lt;/strong&gt; that measures knowledge gained throughout the training. The exam covers all major course topics, including Python API fundamentals, design analysis, database handling, GUI APIs, batch-mode automation, and App Store development.&lt;/p&gt;
&lt;p&gt;The badge exam enables learners to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Evaluate their understanding of the course material&lt;/li&gt;
&lt;li&gt;Verify mastery of key concepts and workflows&lt;/li&gt;
&lt;li&gt;Identify areas that may require additional study&lt;/li&gt;
&lt;li&gt;Demonstrate proficiency in Verisium Debug Python API development&lt;/li&gt;
&lt;li&gt;Showcase their expertise to peers and managers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Successfully completing the badge exam provides learners with confidence that they can apply the concepts and techniques learned throughout the course in real-world projects.&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhjb"&gt;Start Building the Future of Debug Automation&lt;/h2&gt;
&lt;p&gt;The future of verification is driven by automation, customization, and intelligent tooling. The &lt;strong&gt;Python API and App Store Development with Verisium Debug&lt;/strong&gt; course equips engineers with the practical skills needed to build powerful automation solutions, streamline debugging workflows, and create deployable applications that extend the capabilities of Verisium Debug.&lt;/p&gt;
&lt;p&gt;Whether you are just beginning your automation journey or looking to expand your existing Python expertise, this course provides the knowledge, hands-on experience, and validation opportunities needed to take your Verisium Debug skills to the next level.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://cadence.docebosaas.com/learn/courses/3046/python-api-and-app-store-development-with-verisium-debug-v10-online?hash=6254b497f581f9e649596ee316fc65ac53840b47&amp;amp;generated_by=19659"&gt;Enroll today&lt;/a&gt; to master the Verisium Debug Python API, build your own applications, and prove your expertise through the course badge exam.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364356&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Functional%2bVerification">Functional Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verisium%2bDebug">Verisium Debug</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/verification">verification</category></item><item><title>AMBA CXS Interleaving: Shared Transport for Multi-Protocol, Multi-Node Systems</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/amba-cxs-interleaving-shared-transport-for-multi-protocol-multi-node-systems</link><pubDate>Wed, 30 Sep 2026 13:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:d430db0d-50d6-4cee-9171-7480326833c3</guid><dc:creator>Ravi Vora</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span data-contrast="none"&gt;Modern SoCs bring together CPUs, GPUs, AI accelerators, coherent memory devices, PCIe controllers, and chiplet interfaces, all generating packet traffic with different latency, ordering, and delivery requirements. When these flows converge on a shared transport, a basic first-in, first-out packet path can create avoidable blocking and leave expensive link bandwidth underused.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;AMBA CXS addresses this challenge with a credited, packetized streaming interface optimized for wide datapaths. Along with packing multiple packets into a flit, CXS can distinguish independent streams and define where traffic from another stream may be inserted. Earlier CXS revisions enabled protocol-aware sharing through CXSPRCLTYPE and controlled insertion through CXSLAST. Issue D extends stream identity with CXSSRCID and CXSTGTID, allowing the same link concepts to scale into multi-node networks.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The architectural value is straightforward: independent traffic can share a high-bandwidth link while preserving the ordering and contiguity guarantees required by each stream. Verification is more complex because the design must identify stream boundaries, preserve in-stream order, prevent illegal insertion, maintain protocol and node identity across flits, and honor credit and continuous-delivery constraints under stress.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3k9nkv10"&gt;&lt;span&gt;&lt;span class="TextRun SCXW2625919 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW2625919 BCX8" data-ccp-parastyle="heading 1"&gt;Overview of CXS Interleaving&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Consider a shared link carrying a long packet sequence while a short, latency-sensitive packet from another independent stream is ready. If the second stream must wait for the first sequence to drain, the system experiences head-of-line blocking. The effect becomes more visible as packet sizes vary, traffic sources multiply, and endpoints operate at different service rates.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Interleaving allows upstream arbitration to select traffic from another stream at a legal insertion point. This can improve responsiveness and keep the link active without violating the ordering of the original stream. CXS, therefore, does not treat interleaving as arbitrary flit switching. It identifies the stream and constrains insertion using protocol type, source ID, target ID, CXSLAST, and the CXSCONTINUOUSDATA property.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3ka0v4o1"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;Why CXS Needs Stream-Aware Interleaving&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25727926 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25727926 BCX8"&gt;Unrestricted switching can violate packet continuity or ordering, while overly conservative arbitration can preserve correctness but unnecessarily reduce link efficiency. CXS resolves this tension by distinguishing independent traffic streams and identifying the boundaries at which another stream can be inserted safely. The result is controlled sharing: the link can carry independent flows without losing the context needed for packet reconstruction, ordering, route attribution, or continuous delivery.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3ka22oc2"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25727926 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25727926 BCX8"&gt;&lt;span class="TextRun SCXW153260102 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW153260102 BCX8" data-ccp-parastyle="heading 1"&gt;CXS Interleaving Protocol Architecture&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="mcetoc_1k3ka2lrg3"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25727926 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25727926 BCX8"&gt;&lt;span class="TextRun SCXW153260102 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW153260102 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW148986175 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW148986175 BCX8" data-ccp-parastyle="heading 2"&gt;Protocol-Aware Stream Identification with CXSPRCLTYPE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;CXS issue B added support for multiple protocol streams. When CXS_PROTOCOL_TYPE is True, the optional 3-bit CXSPRCLTYPE signal identifies the protocol type carried by a valid flit. The specification defines encodings for protocol type 0 and protocol type 1; other values are reserved.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;A packet spanning multiple flits must use the same protocol type on every flit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;If one flit contains multiple packets, all packets in that flit must have the same protocol type.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;When CXSCONTINUOUSDATA is false, flits with different protocol types can be interleaved on any cycle.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;When CXSCONTINUOUSDATA is true, the protocol type can change only after CXSLAST is asserted.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;These rules allow a receiver to route, decode, or account for traffic without parsing protocol-specific packet contents simply to determine the protocol stream. They also provide a directly observable basis for checking that a multi-flit packet never changes protocol identity during delivery.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3ka49dn4"&gt;&lt;span&gt;&lt;span class="TextRun SCXW69409279 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW69409279 BCX8" data-ccp-parastyle="heading 2"&gt;Legal Insertion Boundaries with CXSLAST&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;CXSLAST is an optional flit-level indication that flits from another source or stream can be inserted after the current cycle. It is best understood as an insertion-permission boundary, not simply an end-of-packet indication, because CXS can require multiple complete packets to remain contiguous as a group.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;CXSLAST must be de-asserted when the following packet must remain after the current packet, or when a packet has started but has not ended in the current flit. When CXSLAST is low, the receiver expects additional traffic for the protected sequence ,and another source must not be inserted. When the signal is not implemented, it is generally assumed asserted, except while a packet is incomplete in the current flit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The waveform illustrates how protocol streams share the CXS link while CXSLAST marks where a stream transition is permitted. A transition must not interrupt an incomplete packet or a packet group that is required to remain contiguous.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:195px;max-width:654px;" alt=" " src="https://community.cadence.com/resized-image/__size/1308x390/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/pastedimage1790609362763v1.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3ka5ta95"&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;Continuous Delivery with CXSCONTINUOUSDATA&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW185126833 BCX8"&gt;With continuous delivery disabled, a design can switch among streams more freely while still preserving packet continuation and same-stream ordering. With continuous delivery enabled, a stream change must wait until CXSLAST is asserted. The transmitter must also avoid starting a packet unless the complete packet can be delivered in consecutive cycles while credits are available.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3ka721p6"&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;Multi-Node Stream Identity in CXS Issue D&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW42432542 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW42432542 BCX8"&gt;Protocol type can distinguish different protocols, but it cannot distinguish two nodes carrying the same protocol. CXS issue D therefore adds optional source and target identifiers for multi-node networks. CXSSRCID identifies the node from which a flit originated, while CXSTGTID identifies the destination node. Each identifier can be configured from 0 to 8 bits, and both are valid when CXSVALID is asserted.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW42432542 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW237615502 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW237615502 BCX8"&gt;CXS stream identity = {CXSPRCLTYPE, CXSSRCID, CXSTGTID}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW42432542 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW237615502 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW237615502 BCX8"&gt;&lt;span class="TextRun SCXW62459823 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW62459823 BCX8"&gt;Flits from the same stream must remain in order. Flits from different streams can be inserted, subject to CXSCONTINUOUSDATA and CXSLAST. Because source and target identifiers apply to every packet in a flit, one flit cannot mix packets belonging to different source-target routes. This richer identity allows a shared transport to distinguish flows without dedicating a separate link to every node pair.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW62459823 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kaa8su7"&gt;Key Protocol Features&amp;nbsp;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Protocol-aware identification through CXSPRCLTYPE&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Multi-node source and destination identification through CXSSRCID and CXSTGTID&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Controlled insertion boundaries through CXSLAST&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Compatibility with continuous-delivery constraints through CXSCONTINUOUSDATA&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Preserved ordering within each configured stream identity&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Efficient sharing of a wide link across independent traffic flows&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1k3kabks49"&gt;Practical Use Cases for CXS Interleaving&amp;nbsp;&lt;/h2&gt;
&lt;h3 id="mcetoc_1k3kac23qa"&gt;Multi-Protocol Controller Connectivity&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Independent protocol flows can share a wide CXS transport while retaining explicit protocol identity. This is useful for packetized communication between an on-chip interconnect and protocol controllers such as CHI, PCIe, CCIX, or CXL controllers.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3kacagib"&gt;Multi-Node and Modular Subsystem Fabrics&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Source and target identifiers allow flows using the same protocol to remain distinguishable when multiple initiators and endpoints share the transport. This supports modular subsystem and multi-node designs without requiring a dedicated physical link for each route.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3kacr9gd"&gt;Mixed-Latency and Variable-Length Traffic&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Legal insertion points allow a ready independent stream to use link capacity without waiting for an unrelated long sequence to drain. This can reduce avoidable head-of-line blocking while retaining stream-specific ordering and contiguity requirements.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;These are architectural advantages rather than an automatic guarantee of performance. Realized latency and throughput also depend on buffering, credit round-trip latency, arbitration policy, packet-size distribution, and downstream service behavior.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kacl1cc"&gt;Functional Verification Challenges&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Interleaving introduces state that extends beyond a single packet. Many defects are therefore temporal and cross-flit rather than simple signal-value errors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Stream Identity Integrity&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Verification must detect changes to CXSPRCLTYPE, CXSSRCID, or CXSTGTID within a multi-flit packet and reject flits that incorrectly combine packets with different protocol or route identities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Insertion-Boundary Correctness&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The environment must detect another stream inserted after CXSLAST was Low when continuous delivery is required, as well as premature assertion of CXSLAST while a packet or protected packet group remains incomplete.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Ordering and Packet Reconstruction&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Flits within the same stream must remain ordered, and packet continuation must be tracked independently for every enabled stream. An incorrect model can either miss same-stream reordering or falsely impose ordering across independent streams.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Credit and Delivery Continuity&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Verification must stress packet starts near credit-pressure boundaries and ensure uninterrupted delivery where continuous mode requires it. It should also identify over-constrained arbitration that blocks legal stream insertion and reduces achievable efficiency.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kadntbe"&gt;Verification Strategy&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Protocol and Flit-Level Checking&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Sample CXSPRCLTYPE, CXSSRCID, and CXSTGTID with CXSDATA and CXSCNTL whenever CXSVALID is high. Check identity stability across multi-flit packets, common identity for every packet packed into one flit, and the independent correctness of START, END, pointer, and ENDERROR fields.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Stream-Aware Scoreboarding&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Key scoreboard state by the complete enabled stream identity: protocol type for earlier configurations, or protocol type with source and target identifiers for issue D. Track packet continuation, expected bytes, protected packet-group state, ordering, and insertion permission independently for each stream.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Credit and Continuity Stress&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Randomize credit depth and credit-grant latency, start long packets near constrained-credit conditions, and verify consecutive delivery where continuous mode requires it. Include simultaneous credit grant and use, as well as legal transitions between independent streams.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Coverage and Negative Testing&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Cross protocol type, source ID, target ID, previous and next stream, CXSCONTINUOUSDATA, CXSLAST, packet length, flit count, packets per flit, insertion outcome, and credit conditions. Add directed violations such as mid-packet identity changes, illegal insertion, premature CXSLAST, same-stream reordering, mixed identities within a flit, reserved protocol values, and identifier-width mismatches.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kaeah2f"&gt;Cadence CXS VIP Solution&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Cadence CXS Verification IP provides protocol-compliant stimulus, monitoring, checking, coverage, and debug capabilities for interleaving across multi-protocol and multi-node configurations. It enables verification environments to generate concurrent streams, validate complete stream identities, reconstruct packets independently for each stream, and check insertion, ordering, credit, and continuous-delivery behavior.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="11" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Concurrent generation of multi-protocol and multi-node streams&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="12" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Checks for CXSPRCLTYPE, CXSSRCID, CXSTGTID, and CXSLAST rule compliance&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="13" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Stream-aware packet reconstruction and ordering validation&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="14" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Credit-pressure and continuous-delivery stress scenarios&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="15" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Functional coverage across stream identities and insertion boundaries&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="16" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Debug visibility into stream transitions, insertion points, and continuity violations&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;By mapping stream-aware stimulus, checking, coverage, and debug directly to CXS interleaving risks, Cadence CXS VIP helps teams validate both protocol compliance and end-to-end stream correctness across shared CXS fabrics.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kaeileg"&gt;Conclusion&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;AMBA CXS evolves a wide, credited link into a scalable shared transport for multi-protocol and multi-node traffic. Through CXSPRCLTYPE, CXSLAST, CXSCONTINUOUSDATA, CXSSRCID, and CXSTGTID, CXS enables controlled interleaving while preserving stream ordering, route identity, packet reconstruction, and required contiguity.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Because correctness depends on interactions across packets, flits, node routes, credits, and insertion boundaries, verification must be stateful and stream-aware. Cadence CXS VIP provides the stimulus, checking, coverage, and debug capabilities needed to verify these interactions as designs scale from point-to-point protocol links to multi-node fabrics.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;For more information on Cadence CXS Verification IP, visit the&lt;strong&gt;&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html" rel="noopener noreferrer" target="_blank"&gt;Cadence Simulation Verification IP Page&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;strong&gt;For additional clarification or technical assistance: &lt;/strong&gt;&lt;u&gt;talk_to_vip_expert@cadence.com.&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364411&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chiplet">chiplet</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/cxs_2D00_streaming">cxs-streaming</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Arm%2bNeoverse%2bCMN">Arm Neoverse CMN</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ARM">ARM</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/CXS_2D00_D">CXS-D</category></item><item><title>Why LLMs Are the Best Thing to Happen to Chip Design</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-llms-are-the-best-thing-to-happen-to-chip-design</link><pubDate>Tue, 29 Sep 2026 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:c4bee109-8a70-4118-9994-864bb4491a23</guid><dc:creator>Corporate</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;em&gt;By Kartik Hegde, Sr. Engineering Group Director&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We live in a world increasingly shaped by artificial intelligence (AI). At the heart of this revolution lies a piece of technology that most people never see: the chip.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6114.Macro_5F00_of_5F00_Silicon_5F00_wafers_5F00_Low_2D00_D_5F00_blue_5F00_background_5F00_B_2D00_640x426_2D00_6897ad5.png" /&gt;&lt;/p&gt;
&lt;p&gt;Fueled by Moore&amp;#39;s Law, compute-per-dollar and compute-per-watt have improved by more than &lt;em&gt;a million times&lt;/em&gt; over the past few decades. These massive gains have enabled us to train large AI models on vast datasets, unlocking capabilities we once only imagined, including the large language models (LLMs) that power today&amp;#39;s most advanced AI applications.&lt;/p&gt;
&lt;p&gt;There is growing evidence that scaling laws are continuing to hold true for AI models. Increasing the compute used for training by an order of magnitude can result in a generational leap in model performance, as depicted by the graph above. As such, in the pursuit of artificial general intelligence (AGI), nearly every major tech company is now racing to build massive compute infrastructure to train these next-generation models.&lt;/p&gt;
&lt;p&gt;If chips are so fundamental to achieving AGI, why isn&amp;#39;t every large AI company building its own? The answer: They are. In fact, there are more companies building custom silicon today than ever before!&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rc13s0"&gt;Custom Silicon: Two-Year Minimum, 100+ Engineers&lt;/h2&gt;
&lt;p&gt;While there is a massive interest in building custom silicon for applications like AI, designing and taping out a chip continues to be a Herculean task. It demands immense engineering effort&amp;mdash;estimated at over 1,000 engineering months for an ASIC of typical complexity. Additionally, companies must identify and hire rare talent with expertise across various phases of chip design and have a leadership team willing to invest capital while bearing significant risk.&lt;/p&gt;
&lt;p&gt;So, what makes chip design today so complex? Let&amp;#39;s find out.&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rc13t1"&gt;Historical Perspective: Shifting Bottlenecks&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Key Insight: Pioneering work in EDA in synthesis, place and route, and HDLs over the last few decades has shifted the bottleneck to chip verification.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To understand the complexity of chip design today, let&amp;#39;s first outline the key steps in designing a chip. We&amp;#39;ll then travel back in time to examine the historical perspective of how bottlenecks in the chip design process have shifted.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34rc13t2"&gt;Key Stages of Chip Design&lt;/h3&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6835.Engineering-hours1.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Specification and architecture: Capture functional goals, PPA targets, and draft a high-level micro-architecture that meets the product requirements.&lt;/li&gt;
&lt;li&gt;Design and RTL development: Implement the architecture in an HDL (e.g., Verilog), writing clean, synthesizable RTL with clear timing and power intent.&lt;/li&gt;
&lt;li&gt;Functional verification: Use simulation, formal, and emulation to exhaustively prove the RTL behaves as intended before silicon dollars are at stake.&lt;/li&gt;
&lt;li&gt;Logic design and synthesis: Translate RTL into a gate-level netlist with constraints, optimizing for area, power, and timing while meeting foundry libraries.&lt;/li&gt;
&lt;li&gt;Physical design: Floorplan, place, clock-tree, and route the netlist; run STA, DRC/LVS, and power-integrity checks to produce tape-out-ready GDSII.&lt;/li&gt;
&lt;li&gt;Packaging and test: Define I/O ring and package, insert scan/BIST for manufacturability, and prepare ATE vectors for wafer sort, assembly, and final silicon validation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are wondering which stage takes more effort and engineering hours, the answer depends on when in history you&amp;#39;re asking.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34rc13t3"&gt;The 1980-2000s: Optimizing Logic Synthesis and Place and Route&lt;/h3&gt;
&lt;p&gt;Back in the 1980s, when chips had only a few thousand transistors, the design process looked very different from how it does today. Engineers designed circuits and placed transistors by hand. As the number of transistors grew, this approach quickly became unscalable. The emergence of electronic design automation (EDA) transformed the industry, diminishing manual effort and enabling designers to build much larger and more complex chips.&lt;/p&gt;
&lt;p&gt;Additionally, the emergence of hardware description languages (HDL) like Verilog in 1986 abstracted away low-level circuit details (much like C and C++ did for assembly programming), allowing engineers to focus on architecture and logic. A combination of HDLs and EDA significantly boosted designer productivity, enabling the production of the massive chips we see today.&lt;/p&gt;
&lt;p&gt;In parallel, Moore&amp;#39;s Law continued to fuel the semiconductor industry, doubling the number of transistors every two years at the same cost. The availability of these transistors led to scaling the number of cores on a chip and increased the complexity of the architecture.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/4377.Transistor-Growth.png" /&gt;&lt;/p&gt;
&lt;p&gt;To summarize:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;EDA tools emerged to address difficulties in place and route (P&amp;amp;R) and logic synthesis.&lt;/li&gt;
&lt;li&gt;HDLs made it easier to design logic and resulted in a major productivity boost.&lt;/li&gt;
&lt;li&gt;Availability of more transistors enabled chip designers to build more complex, higher-performance chips.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The net effect of these factors is clear from the figure above: In the last three decades, innovations in chip design methodologies and Moore&amp;#39;s Law have delivered us massive, multi-billion-transistor chips. Evolving maturity of EDA tools for synthesis and P&amp;amp;R continued to support the growth of chips in size and complexity. As such, the key bottlenecks in chip design shifted to the earlier stages of the flow: functional verification, logic design, and architectural innovation.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34rc13t4"&gt;2000s and Beyond: Increasing Complexity of Functional Verification&lt;/h3&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/Engineer-Effort1.png" /&gt;&lt;/p&gt;
&lt;p&gt;As chips grew larger and more complex, ensuring the functional correctness of the RTL became more cumbersome. Today, functional verification accounts for most of the effort in chip development, often as much as 60&amp;ndash;70%. These are complex, human-driven processes involving deep architectural reasoning, edge-case testing, and a careful understanding of constraints.&lt;/p&gt;
&lt;p&gt;Verification has expanded into a multi-layered, multi-method process that spans both the pre-silicon and post-silicon stages. Below are some examples of how verification approaches might vary:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Design Hierarchy&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Block-level verification (unit testing)&lt;/li&gt;
&lt;li&gt;Subsystem-level verification&lt;/li&gt;
&lt;li&gt;Chip/system-level verification&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Methodology&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simulation&lt;/li&gt;
&lt;li&gt;Formal verification&lt;/li&gt;
&lt;li&gt;Emulation&lt;/li&gt;
&lt;li&gt;Gate-level simulation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Abstraction Level&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spec-level (e.g., natural language or executable spec)&lt;/li&gt;
&lt;li&gt;RTL-level&lt;/li&gt;
&lt;li&gt;Netlist-level&lt;/li&gt;
&lt;li&gt;Post-layout (SPICE-level)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Verification Intent&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Functional verification (does it do what it&amp;#39;s supposed to?)&lt;/li&gt;
&lt;li&gt;Structural verification (e.g. connectivity, lint, DRC, CDC, RDC)&lt;/li&gt;
&lt;li&gt;Power-aware verification (UPF/CPF checks)&lt;/li&gt;
&lt;li&gt;Security verification (e.g. side channels, isolation)&lt;/li&gt;
&lt;li&gt;Timing verification (e.g. static timing analysis)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Environment&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pre-silicon (simulation/emulation)&lt;/li&gt;
&lt;li&gt;Post-silicon (bring-up, system validation, in-field testing)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each stage plays a critical role in ensuring correctness as complexity scales. The combinatorial explosion here is real: a chip with n transistors can theoretically exist in 2ⁿ possible states. For a chip with 1 billion transistors (10⁹), the number of possible binary states is 10^{3.0 x 10^{8}} , which is incomprehensibly larger than any physical quantity we can observe! While most of these states are irrelevant or unreachable in practice, this exponential growth gives a sense of the overwhelming complexity of verifying modern chips.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34relbq5"&gt;It&amp;#39;s Getting Harder&amp;mdash;And More Costly&amp;mdash;To Build Chips&lt;/h3&gt;
&lt;p&gt;The challenges continue. It is taking more time and effort to build next-generation chips than before. There are three key drivers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Moore&amp;#39;s Law continues to add more transistors, meaning ever-larger chips&lt;/li&gt;
&lt;li&gt;Specialization continues to increase, and algorithms grow more complex&lt;/li&gt;
&lt;li&gt;Complexity grows, yet at smaller nodes and with more stringent power budgets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these are directly leading to increasing functional verification efforts. Failing to solve the verification bottleneck is not an option for fast-moving chip design teams today.&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rgk6a6"&gt;How LLMs Are Changing the Chip Design Game&lt;/h2&gt;
&lt;h3 id="mcetoc_1k34rgo7t7"&gt;AI Is Not New to Chip Design. What&amp;#39;s Different This Time?&lt;/h3&gt;
&lt;p&gt;AI has been used in chip design&amp;mdash;most notably for placement and routing tasks, which lend themselves well to black-box optimization techniques like reinforcement learning. They have been shown to improve the chip design flow. Given that the stages of synthesis, P&amp;amp;R, etc., have already been automated to a large extent, applying AI here offers only marginal gains and fails to address the true bottleneck: the cognitive effort required to design and verify chips.&lt;/p&gt;
&lt;h3 id="mcetoc_1k356iohq0"&gt;&lt;strong&gt;Why didn&amp;#39;t the industry create a tool for automating verification as well, much like synthesis?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The answer is simple: Design and verification are fundamentally natural language reasoning problems. Engineers must understand specifications, reason through architectural intent, and ensure that implementation aligns with that intent. All of these tasks involve processing, generating, and interpreting human language. Historically, there has not been a technology to automate this part, hence it has always been manual.&lt;/p&gt;
&lt;p&gt;This is where LLMs come in. LLMs excel at precisely what design and verification need: natural language understanding and reasoning. With LLMs, understanding the design intent, figuring out what to test, writing code, employing agentic approaches to run the right tools, debugging the failures, and finding coverage holes have all become possible. These new capabilities have galvanized our team to pioneer the next generation of verification tooling.&lt;/p&gt;
&lt;p&gt;There is a lot of excitement in this rapidly evolving landscape, but there are also many more questions to be answered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How should&amp;mdash;or how must&amp;mdash;chip design methodology change in the era of LLMs?&lt;/li&gt;
&lt;li&gt;How much of the design and verification process can be successfully automated?&lt;/li&gt;
&lt;li&gt;How will the roles of human engineers evolve and change alongside their new AI &amp;quot;colleagues&amp;quot;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; and a whole host of other queries that we, as an industry, have not even considered yet.&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rj2kh8"&gt;The Road Ahead: Rise of New Abstractions for Chip Design&lt;/h2&gt;
&lt;p&gt;As chips grow in complexity and the demand for compute continues to surge, LLMs may become essential not only to AI workloads but also to the hardware that enables them. These models have the potential to transform chip design itself, closing the loop between silicon and software in ways we&amp;#39;ve never seen before.&lt;/p&gt;
&lt;p&gt;I believe chip design is poised for another &amp;quot;Verilog moment&amp;quot;&amp;mdash;a shift to a higher level of abstraction. We expect a move beyond RTL to a new representation that allows engineers to express intent more intuitively, potentially through natural language rather than rigid syntax. We refer to this as the &amp;quot;mental model,&amp;quot; and we&amp;#39;re actively researching how to make it a practical reality.&lt;/p&gt;
&lt;p&gt;The future of AI will be shaped by the chips we build&amp;mdash;and, soon, those chips may be shaped by the AI we have trained. It&amp;#39;s a two-way street. This cycle promises to accelerate innovation in both silicon and software, bringing us closer to the next generation of computing capabilities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learn more about the &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/chipstack-ai-superagent.html"&gt;Cadence &lt;/a&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/chipstack-ai-superagent.html"&gt;ChipStack AI Super Agent&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364390&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/featured">featured</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chip%2bdesign">chip design</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AGI">AGI</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/LLMs">LLMs</category></item><item><title>GDDR7: Highlights of Memory of Choice for Graphics and High Bandwidth Apps</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/gddr7-feature-highlights-of-memory-of-choice-for-graphics-high-bandwidth-apps</link><pubDate>Sat, 26 Sep 2026 06:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:42ef9546-f064-479e-af88-c84ae4380c93</guid><dc:creator>Shyam Sharma</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Graphics Double Data Rate 7 (GDDR7) Synchronous Graphics Random Access Memory (SGRAM) is the latest generation of the Graphics DDR memory that is used in applications like graphics cards, high compute data centers. GDDR devices are also increasingly being used in artificial intelligence (AI) accelerators where bandwidth and performance are key requirements.&lt;/p&gt;
&lt;p&gt;This blog talks about the key features of the GDDR7 device standard, the latest version of which, JESD239F, was released by JEDEC in August 2026.&lt;/p&gt;
&lt;h2&gt;GDDR7-Based System Architecture&lt;strong&gt;&lt;u&gt;&lt;img class="align-right" style="float:right;max-height:227px;max-width:340px;" alt=" " src="https://community.cadence.com/resized-image/__size/680x454/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5141.Gddr7.png" /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;GDDR7 SGRAM devices support densities of 16GB through 128GB range with the 266-ball BGA package. A GDDR7 device memory subsystem typically contains &lt;strong&gt;four fully independent byte-wide channels&lt;/strong&gt;. Each channel has its own point-to-point command/address, data, error, and read-clock interfaces. A channel contains &lt;strong&gt;16 banks256-bit internal array&lt;/strong&gt;￼&lt;strong&gt; access&lt;/strong&gt;, and a &lt;strong&gt;32n&lt;/strong&gt;. The normal physical organization can be configured at reset as either four active channels or two active channels. In 2-channel mode, channels B and D are inactive, and their high-speed signals remain High-Z; this enables clamshell PCB topologies using channels A and C from devices mounted on opposite sides of the board.&lt;/p&gt;
&lt;h2&gt;Device Feature Overview&lt;/h2&gt;
&lt;h3&gt;Channel Operation&lt;/h3&gt;
&lt;p&gt;Each active channel uses a differential &lt;strong&gt;WCK_t/WCK_c&lt;/strong&gt; input for command/address capture, write-data capture, and read-data timing generation. Internally, &lt;strong&gt;CK4&lt;/strong&gt; is WCK divided by four and is the reference for cycle-based latencies and command timing. Commands that span more than one CK4 cycle use the last CK4 cycle as the timing reference. The output &lt;strong&gt;RCK_t/RCK_c&lt;/strong&gt; read clock is edge-aligned with read data and may be differential or single-ended, always on, started by a read, started explicitly with RCKSTRT, or disabled.&lt;/p&gt;
&lt;p&gt;The command/address interface is packetized over five single-ended NRZ inputs, &lt;strong&gt;CA[&lt;/strong&gt;&lt;strong&gt;4:0]&lt;/strong&gt;. CA[2:0] forms a semi-independent row-command path, and CA[4:3] forms a column-command path. This allows row and column commands to overlap when command legality and all timing constraints are satisfied. The protocol supports single- and multi-CK4-cycle commands, with separate NOP encodings for ordinary command slots and transition sequences.&lt;/p&gt;
&lt;h3&gt;Data Interface, PAM3 Encoding, and Signaling&lt;/h3&gt;
&lt;p&gt;GDDR7 supports two data modes. &lt;strong&gt;PAM3&lt;/strong&gt; is the high-bandwidth mode and uses DQ[9:0] plus DQE. &lt;strong&gt;NRZ&lt;/strong&gt; is the lower-speed, lower-power mode and uses DQ[7:0] plus DQE; DQ[9:8] are disabled. Both modes transfer a 256-bit user payload per channel access. A burst is 16 PAM3 symbols or 32 NRZ bits.&lt;/p&gt;
&lt;h3&gt;PAM3 Mode&lt;/h3&gt;
&lt;p&gt;PAM3 represents each unit interval with one of three levels: &lt;strong&gt;+1, 0, or -1&lt;/strong&gt;. With nominal 1.2 V VDDQ, the nominal signaling levels correspond to 100%, 75%, and 50% of VDDQ. Internally, the trits use two-bit representations: 11 for +1, 01 for 0, and 00 for -1; 10 is invalid. At an illustrative 7 GHz WCK, data operates at 14 Gbaud per pin, equivalent to 28 Gb/s over each effective binary data lane and 28 GB/s per channel.&lt;/p&gt;
&lt;p&gt;A complete PAM3 burst contains &lt;strong&gt;176 symbols&lt;/strong&gt; across 11 physical data signals. The data and metadata are packed through several codecs like &lt;strong&gt;11b7S, 3b2S, 2b1S,&lt;/strong&gt; etc.&lt;/p&gt;
&lt;h3&gt;Command, Clock, and Configuration Model&lt;/h3&gt;
&lt;p&gt;The CA interface is SDR relative to WCK and packetizes commands over CA[4:0]. GDDR7 separates an 11-bit row-command path on CA[2:0] from a 7-bit column-command path on CA[4:3], allowing compatible row and column commands to be issued in parallel. Core operations include ACT, RD/RDA, WR/WRA, PREpb/PREab, REFab/REFpb, RFM, MRS, IRD, power-state commands, and training commands.&lt;/p&gt;
&lt;p&gt;CABI limits low-going CA activity to reduce command-bus power. CAPAR supplies even parity across the command packet. With CAPARBLK, commands are held until parity is validated; a parity failure blocks execution and drives recovery into CA training with self-refresh. CSP aligns the internal CK4 phase to the host&amp;rsquo;s four-UI command boundary after CA-training or sleep exit. Optional CSP feedback on ERR lets the controller confirm that CSP was captured before normal traffic resumes.&lt;/p&gt;
&lt;p&gt;Sixty-four mode-register addresses are available. MR0&amp;ndash;MR47 are standardized or reserved; MR48&amp;ndash;MR63 are vendor-specific. Key controls cover PAM3/NRZ selection, read/write CRC, poison, and severity, RL/WL, RCK behavior, termination and driver strength, voltage references, CTLE/DFE/TX equalization, refresh management, training patterns, ECC test, and hPPR. MR10&amp;ndash;MR15 are frequency-dependent registers whose updates can be deferred until a sleep transition.&lt;/p&gt;
&lt;h3&gt;Data Integrity, Electrical Limits, Package, and Implementation Guidance&lt;/h3&gt;
&lt;p&gt;GDDR7 layers protection mechanisms across command, link, data path, and array:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRC:&lt;/strong&gt; Separate read and write link CRCs use two interleaved CRC-9 engines with polynomial 0x14B over even and odd 164-bit groups, producing 18 checksum bits. The scheme detects all single-, double-, and triple-bit errors, about 99.95% of four-bit errors, and about 99.99% of random burst errors. Write CRC failures are reported on ERR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On-die ECC:&lt;/strong&gt; Minimum capability per 256-bit access is 100% single-bit correction, 100% double-bit detection, and an average 99.3% detection for errors of three or more bits. Corrected data is returned on reads, but ordinary reads don&amp;rsquo;t scrub the array. Severity metadata reports uncorrectable errors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto ECS:&lt;/strong&gt; Background Error Check and Scrub reads codewords, corrects correctable errors, writes corrected codewords back, and logs correctable/uncorrectable events. It operates in REFab(TR=L), Self Refresh(TR=L), or Self Refresh Sleep when enabled. The required average ECS interval tightens with channel density, from 5.15 ms at 4 Gb/channel to 0.64 ms at 32 Gb/channel for a 24-hour full sweep.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Poison:&lt;/strong&gt; The host marks a 256-bit packet as known bad; the status is stored under ECC protection and returned on reads. Severity overrides poison when both occur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CAPAR/CAPARBLK:&lt;/strong&gt; Even parity covers the full 20-bit CA packet after CABI processing. Without blocking, a parity error is reported, but the decoded command still executes. With CAPARBLK, the bad command and its paired row/column command are suppressed, subsequent commands are blocked, and the device completes internal work before automatically entering CA Training with Self Refresh.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ERR:&lt;/strong&gt; A PAM3 output in both data modes. +1 means no error, 0 reports WRCRC/DPP parity or optional severity, and -1 reports CAPAR, which has priority.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DPP:&lt;/strong&gt; Optional end-to-end internal Data Path Protection adds parity across regions between on-die ECC and link CRC coverage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;hPPR:&lt;/strong&gt; Permanent row repair protected by a four-command MR31 guard key. The controller must verify spare availability, idle all channels, stop RCK, program at 200&amp;ndash;2000 MHz, allow a 2s programming interval, reset, and verify the repaired row.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSP feedback:&lt;/strong&gt; Optional CSP Feedback acknowledges the CSP command after exiting sleep mode, self-refresh sleep mode, or CA bus training. The feedback is transferred to the host by an ERR signal, informs it whether the CSP was properly detected, and whether it is safe to continue with normal operation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nominal 1.2 V operation specifies VDD and VDDQ of 1.164&amp;ndash;1.236 V and VPP of 1.746&amp;ndash;1.908 V. An optional 1.1 V range uses 1.067&amp;ndash;1.133 V for VDD/VDDQ. Absolute maxima are -0.3 to 1.5 V for VDD/VDDQ and -0.3 to 2.3 V for VPP. HBM and CDM minimum ESD targets are 1000 V and 250 V. GDDR7 relies on vendor-specific AC values, and system validation for jitter, channel loss, supply noise, and timing margin.&lt;/p&gt;
&lt;p&gt;Cadence VIPs offers a comprehensive memory subsystem solution that includes memory models for all generations of Graphics DDR devices (with GDDR7 being the latest), compliant to JEDEC specifications defined for each of those devices, DFI Memory Controller/PHY VIPs and a System Performance Analyzer (SPA) for GDDR devices.&lt;/p&gt;
&lt;p&gt;If you have any queries, feel free to contact us at &lt;a href="mailto:talk_to_vip_expert@cadence.com"&gt;talk_to_vip_expert@cadence.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;More information on Cadence GDDR7 VIP is available at &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/memory-models/dram/gddr7.html"&gt;Cadence VIP Memory Models Website&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364405&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/gddr6">gddr6</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/JEDEC">JEDEC</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DFI">DFI</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/GDDR">GDDR</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DRAM">DRAM</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Graphics%2bmemory">Graphics memory</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/memory%2bmodels">memory models</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/GDDR7">GDDR7</category></item><item><title>The Ethernet PHY We Knew, 
The UALink PHY We Needed</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/the-ethernet-phy-we-knew-the-ualink-phy-we-needed</link><pubDate>Fri, 25 Sep 2026 13:45:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:e31173a5-6f6f-4f1c-9737-3f41fca042e9</guid><dc:creator>durgarentikota</dc:creator><slash:comments>0</slash:comments><description>&lt;p id="mcetoc_1k3bj6u3p2"&gt;&lt;span class="TextRun SCXW13952559 BCX8" style="font-size:inherit;" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW13952559 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25448952 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25448952 BCX8" data-ccp-parastyle="Subtitle"&gt;&lt;span class="TextRun SCXW214231922 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW214231922 BCX8" data-ccp-parastyle="Subtitle"&gt;Same building blocks. Same lane rates. So why not just use Ethernet PHY unchanged?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW214231922 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bj61031"&gt;&lt;span class="TextRun SCXW13952559 BCX8" style="font-size:inherit;" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW13952559 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25448952 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25448952 BCX8" data-ccp-parastyle="Subtitle"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" data-contrast="none"&gt;The Myth We All Quietly Believe&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span class="EOP Selected SCXW13952559 BCX8"&gt;&lt;span class="TextRun SCXW11733292 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW11733292 BCX8"&gt;If you place an &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;&lt;strong&gt;Ethernet&lt;/strong&gt; &lt;/a&gt;PHY and a &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;UALink&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11733292 BCX8"&gt;PHY side by side, the first thing you notice is not how different they are.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW11733292 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW13952559 BCX8"&gt;&lt;span class="EOP Selected SCXW11733292 BCX8"&gt;&lt;span class="TextRun SCXW67822881 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW67822881 BCX8"&gt;It is how similar they look.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW67822881 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;If &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt; already uses &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;PHY technology, why does it need a separate physical layer at all?&amp;nbsp;Why not simply use the&amp;nbsp;Ethernet&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt; &lt;/a&gt;PHY unchanged?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;It is a reasonable question.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;UALink&amp;nbsp;did not need Ethernet&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;&amp;nbsp;&lt;/a&gt;to become faster. Ethernet&amp;nbsp;already had the speed.&amp;nbsp;It did not need a completely new PMD, a new Reed-Solomon code, or a new way to train the link.&amp;nbsp;&lt;span lang="EN-US" data-contrast="none"&gt;What changed was something less obvious: &lt;/span&gt;&lt;span lang="EN-US" data-contrast="none"&gt;the rule the PHY had to obey.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW267611221 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:330px;max-width:437px;" alt=" " src="https://community.cadence.com/resized-image/__size/874x660/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/2538.pastedimage1790317117758v1.png" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bjs4ml4"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;Follow One Flit, and the Difference Appears&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span class="EOP Selected SCXW267611221 BCX8"&gt;&lt;span class="EOP Selected SCXW205094269 BCX8"&gt;&lt;span class="TextRun SCXW133804711 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW133804711 BCX8"&gt;Instead of walking through PCS, FEC, PMA, and PMD one block at a time, let us follow something the accelerator &lt;/span&gt;&lt;span class="NormalTextRun AdvancedProofingIssueV2Themed SCXW133804711 BCX8"&gt;actually cares&lt;/span&gt;&lt;span class="NormalTextRun SCXW133804711 BCX8"&gt; about:&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW133804711 BCX8"&gt;&amp;nbsp;a 640-byte DL flit.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW267611221 BCX8"&gt;&lt;span class="EOP Selected SCXW205094269 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:101px;max-width:468px;" alt=" " src="https://community.cadence.com/resized-image/__size/936x202/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3108.pastedimage1790317609690v2.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;At the data link layer, that flit is one meaningful unit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The PHY has to protect it, move it across the link, recover it at the receiver, and hand it back without losing where that flit begins or ends.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;And here, UALink makes the decision that changes the rest of the story.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:72px;max-width:527px;" alt=" " src="https://community.cadence.com/resized-image/__size/1054x144/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/7823.pastedimage1790317697699v4.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet does not require packet boundaries to line up with FEC-codeword boundaries.&lt;/span&gt; &lt;span data-contrast="none"&gt;A packet could begin in one codeword and end in another, and the PHY would not care.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink deliberately creates a fixed relationship between a 640-byte DL flit and a single RS(544,514) codeword.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Once that rule exists, anything that inserts, removes, delays, or rearranges data has to respect the flit boundary.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:129px;max-width:352px;" alt=" " src="https://community.cadence.com/resized-image/__size/704x258/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/7823.pastedimage1790317787122v5.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The arithmetic explains why this relationship works.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;A 640-byte DL flit contains 5120 payload bits. After 64B/66B encoding and 256B/257B transcoding, the information expands to exactly 514 ten-bit Reed-Solomon symbols. Adding 30 parity symbols produces a 544-symbol RS(544,514) codeword.&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW143134955 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW143134955 BCX8"&gt;Now our flit has armor.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW143134955 BCX8"&gt;&lt;span class="SCXW143134955 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="TextRun SCXW143134955 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW143134955 BCX8"&gt;But keeping that armor wrapped around exactly one flit creates the first problem.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW143134955 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bk4acp5"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;The First Thing Ethernet Already Solved &amp;mdash; Until It Didn&amp;#39;t&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet already knows how to align lanes.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Alignment markers help the receiver identify lanes, remove skew, and restore the correct lane order.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="TextRun SCXW237253125 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW237253125 BCX8"&gt;So why would &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW237253125 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW237253125 BCX8"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW237253125 BCX8"&gt;touch something that already works?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW237253125 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Because Ethernet inserts alignment markers into the PCS data stream without caring about packet boundaries.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink cannot do that.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;If an alignment marker were inserted using the traditional Ethernet mechanism, the carefully maintained DL-Flit-to-codeword relationship would be disturbed.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;To solve this, UALink introduces a coordinated RS and PCS mechanism.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="1" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;RS generates a &amp;#39;Start Flit Code Sequence&amp;#39;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="2" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;PCS recognizes that sequence&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="3" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;PCS overwrites specific 257-bit blocks with Ethernet alignment markers&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="4" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;On receive, PCS reconstructs the marker-containing interval as an AM flit code sequence&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="5" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;RS uses that sequence to recover DL flit phase&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The alignment markers on the wire are unchanged from Ethernet. What changes is the mechanism used to introduce and recover them.&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;span class="TextRun SCXW234353928 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW234353928 BCX8"&gt;Same Ethernet alignment markers. Different handling around the flit.&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW234353928 BCX8"&gt;&lt;span class="SCXW234353928 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW234353928 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW234353928 BCX8"&gt;UALink &lt;/span&gt;&lt;span class="NormalTextRun SCXW234353928 BCX8"&gt;did not reinvent the marker. It changed how the PHY makes room for it.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW234353928 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;span class="EOP Selected SCXW234353928 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:176px;max-width:293px;" alt=" " src="https://community.cadence.com/resized-image/__size/586x352/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5265.pastedimage1790317905135v6.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The special start sequence also has to remain recognizable before the PCS replaces part of it with alignment markers.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;That is why the relevant leading blocks bypass scrambling:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="1" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;100G: first 20 &amp;times; 64B/66B blocks&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="2" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;200G: first 4 &amp;times; 256B/257B blocks&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="3" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;400G: first 8 &amp;times; 256B/257B blocks&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="4" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;800G: first 8 &amp;times; 256B/257B blocks per flow&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="NormalTextRun SCXW78124777 BCX8"&gt;The receiver performs the corresponding descrambler bypass and then &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW78124777 BCX8"&gt;resumes with&lt;/span&gt;&lt;span class="NormalTextRun SCXW78124777 BCX8"&gt; the correct state.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bk7qk36"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;Coming Back Is Harder&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Transmit knows exactly where every flit begins.&lt;/span&gt;&lt;span&gt;&amp;nbsp;The r&lt;/span&gt;eceiver does not.&amp;nbsp;&lt;span data-contrast="none"&gt;The receiver sees lanes arriving with possible skew, encoded codewords, alignment markers, and a continuous stream of blocks.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Ethernet alignment markers already answer:&amp;nbsp;&lt;/span&gt;&lt;span class="TextRun SCXW80663567 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW80663567 BCX8"&gt;Which lane is this, and how should the lanes be lined up?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW80663567 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="EOP SCXW80663567 BCX8"&gt;&lt;span class="TextRun SCXW77232424 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW77232424 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt;needs one &lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt;additional&lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt; answer:&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW77232424 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW80663567 BCX8"&gt;&lt;span class="EOP Selected SCXW77232424 BCX8"&gt;&lt;span class="TextRun SCXW192307946 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW192307946 BCX8"&gt;Where does the next 640-byte DL &lt;/span&gt;&lt;span class="NormalTextRun SCXW192307946 BCX8"&gt;flit&lt;/span&gt;&lt;span class="NormalTextRun SCXW192307946 BCX8"&gt; begin?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW192307946 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;After the PCS establishes alignment, the marker-containing interval is reconstructed as an AM Flit Code Sequence.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The RS recognizes it and establishes the nominal flit phase.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;From there, the receiver can count the stream in groups of 80 blocks, which is equivalent to one DL flit opportunity.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:72px;max-width:547px;" alt=" " src="https://community.cadence.com/resized-image/__size/1094x144/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5265.pastedimage1790318014534v7.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&lt;span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:422px;max-width:281px;" alt=" " height="422" src="https://community.cadence.com/resized-image/__size/562x844/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1715.Designer-_2800_4_2900_.png" width="281" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bkaqhp7"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;Then Latency Enters the Story&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="EOP Selected SCXW42889860 BCX8"&gt;&lt;span class="TextRun SCXW192900041 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW192900041 BCX8"&gt;Our &lt;/span&gt;&lt;span class="NormalTextRun SCXW192900041 BCX8"&gt;flit&lt;/span&gt;&lt;span class="NormalTextRun SCXW192900041 BCX8"&gt; is protected.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW192900041 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;It is aligned.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;But there is another question:&amp;nbsp;&lt;/span&gt;&lt;span class="TextRun SCXW69065632 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW69065632 BCX8"&gt;How long does it &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW69065632 BCX8"&gt;have&lt;/span&gt;&lt;span class="NormalTextRun SCXW69065632 BCX8"&gt; to wait?&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW69065632 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;span data-contrast="none"&gt;The answer involves FEC interleaving.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Interleaving spreads adjacent symbols across multiple codewords so burst errors become easier to correct. The tradeoff is additional latency because codewords become dependent on one another.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="max-height:130px;max-width:498px;" alt=" " height="130" src="https://community.cadence.com/resized-image/__size/996x260/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5265.pastedimage1790318217608v9.png" width="498" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:207px;max-width:422px;" alt=" " height="207" src="https://community.cadence.com/resized-image/__size/844x414/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/4530.pastedimage1790322367169v3.png" width="422" /&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="max-height:346px;max-width:452px;" alt=" " src="https://community.cadence.com/resized-image/__size/904x692/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/8244.Picture14.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;em&gt;&lt;span class="TextRun SCXW163842132 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt;Figure: Standard Ethernet combines PCS symbol distribution with an &lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt;additional&lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt; PMA delay to produce 4-way interleaving. &lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW163842132 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW163842132 BCX8"&gt;UALink&amp;#39;s&lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt; reduced modes remove the PMA delay and, for 1-way mode, also remove &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW163842132 BCX8"&gt;PCS&lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt; pre-FEC distribution.&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW163842132 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW9692970 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt;In the reduced 2-way paths, &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW9692970 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt; removes the &lt;/span&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt;additional&lt;/span&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt; PMA two-codeword delay.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW9692970 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;span class="EOP Selected SCXW163842132 BCX8"&gt;&lt;span class="EOP Selected SCXW9692970 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/8080.pastedimage1790318338320v12.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The tradeoff is intentional.&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;Less interleaving &amp;rarr; lower latency.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;More interleaving &amp;rarr; better burst-error spreading.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet&amp;#39;s choice was not wrong.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;UALink simply needed another choice.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bkkh5e8"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW234743411 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW234743411 BCX8" data-ccp-parastyle="heading 1"&gt;The Problem Ethernet Gets for Free&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW234743411 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet packets naturally leave gaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Those gaps provide Idle blocks, giving the PHY convenient places to absorb small clock differences.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink&amp;#39;s normal data path can instead look like this:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&amp;nbsp;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:88px;max-width:307px;" alt=" " src="https://community.cadence.com/resized-image/__size/614x176/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6505.pastedimage1790321834830v1.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Where does rate matching happen if there are no natural gaps?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink solves this by creating its own opportunities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The RS periodically inserts an i&lt;/span&gt;dle flit code sequence&lt;span data-contrast="none"&gt;.&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink solves this by creating its own opportunities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The RS periodically inserts an i&lt;/span&gt;dle flit code sequence.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;span class="EOP Selected SCXW163842132 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:194px;max-width:430px;" alt=" " src="https://community.cadence.com/resized-image/__size/860x388/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3603.pastedimage1790318399098v13.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;In the applicable operating states, the RS provides an idle flit code sequence for every 1,024 codewords, unless that position is being used for an alignment-marker opportunity.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Rate matching can then add or remove Idle blocks at safe locations.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:75px;max-width:515px;" alt=" " src="https://community.cadence.com/resized-image/__size/1030x150/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3603.pastedimage1790318426744v14.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bkmu479"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW157897049 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW157897049 BCX8" data-ccp-parastyle="heading 1"&gt;Back-to-Back Does Not Mean Boundary-Free&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;A normal UALink data flit already occupies one complete 80-block unit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;So, another flit can immediately follow it.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:99px;max-width:401px;" alt=" " src="https://community.cadence.com/resized-image/__size/802x198/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3603.pastedimage1790318457589v15.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;No new Ethernet start delimiter.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;No terminate delimiter.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;No mandatory inter-frame gap.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Control sequences occupy complete flit opportunities only when the PHY needs them for alignment-marker handling, rate matching, Idle behavior, or fault signaling.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bko64ea"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW162502238 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW162502238 BCX8" data-ccp-parastyle="heading 1"&gt;What &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW162502238 BCX8" data-ccp-parastyle="heading 1"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW162502238 BCX8" data-ccp-parastyle="heading 1"&gt; Refused to Reinvent&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW162502238 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;After seeing all these changes, it is easy to think UALink created a completely new PHY.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;It did not.&amp;nbsp;&lt;span data-contrast="none"&gt;UALink kept the parts the Ethernet had already solved well.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:201px;max-width:482px;" alt=" " height="201" src="https://community.cadence.com/resized-image/__size/964x402/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1055.pastedimage1790318525008v16.png" width="482" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:81px;max-width:563px;" alt=" " height="81" src="https://community.cadence.com/resized-image/__size/1126x162/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1055.pastedimage1790318586599v17.png" width="563" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW20099292 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt;Inner FEC is conditional.&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW20099292 BCX8"&gt;&lt;span class="SCXW20099292 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW20099292 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt;It should only be shown where the selected IEEE PHY &lt;/span&gt;&lt;span class="NormalTextRun AdvancedProofingIssueV2Themed SCXW20099292 BCX8"&gt;actually uses&lt;/span&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt; it; it is not a universal &lt;/span&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt; KR/CR payload-path stage.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW20099292 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&lt;span data-contrast="none"&gt;&lt;span class="EOP Selected SCXW20099292 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:198px;max-width:284px;" alt=" " src="https://community.cadence.com/resized-image/__size/568x396/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1055.pastedimage1790318617921v18.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bksq5sb"&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW20099292 BCX8"&gt;&lt;span class="TextRun SCXW265157062 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW265157062 BCX8" data-ccp-parastyle="heading 1"&gt;One Last Thing&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW265157062 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;We started with a myth:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;If &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;uses the same sublayers and the same speeds as &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet&lt;/a&gt;, why not simply use &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;PHY unchanged?&amp;nbsp;Now the answer is clearer.&amp;nbsp;The same building blocks do not mean the same behavior.&amp;nbsp;&lt;span data-contrast="none"&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;already had speed.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;It already had PAM4, RS-FEC, alignment markers, lane recovery, auto-negotiation, and link training.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;UALink&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;did not need to reinvent those things.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;What it needed was for those familiar mechanisms to obey a different rule:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Keep the flit together.&amp;nbsp;&lt;span data-contrast="none"&gt;Once one 640-byte DL flit became associated with one protected FEC codeword, everything around that relationship had to cooperate.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Alignment marker handling changed. Receive synchronization gained a flit boundary. Reduced-interleave options appeared. Rate matching moved to safe opportunities. Back-to-back traffic followed a fixed 80-block rhythm.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Not because &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;failed.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Because &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;was solving a different problem, and&lt;/span&gt;&lt;span&gt;&amp;nbsp;t&lt;/span&gt;he Ethernet PHY we knew already knew how to move bits fast.&amp;nbsp;The &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;PHY we needed taught those same building blocks how to move flits predictably.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;Testing this carefully coordinated PHY behavior requires more than checking that bits move across the link. Verification must prove that the DL-flit-to-FEC-codeword relationship is preserved, alignment-marker opportunities are handled without breaking flit phase, receive logic can recover the correct 640-byte boundary, reduced-interleave modes behave as intended, and rate matching occurs only at safe Idle Flit Code Sequence locations. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;Cadence &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;UALink&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;VIP helps verification teams &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;validate&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; this end-to-end behavior with flit-aware and protocol-aware visibility across the stack, from UPLI down to PHY. Teams can drive realistic traffic, &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;monitor&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;flit&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;/codeword alignment, exercise marker and idle-sequence scenarios, inject malformed conditions, and &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;validate&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; recovery behavior&amp;mdash;turning &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;UALink&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;PHY architecture into measurable proof of design robustness. To integrate this validation capability into your environment, &lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;contact Cadence Support, visit the &lt;/span&gt;&lt;/span&gt;&lt;a class="Hyperlink SCXW142711385 BCX8" href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html" rel="noopener noreferrer" target="_blank"&gt;&lt;span class="TextRun Underlined SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8" data-ccp-charstyle="Hyperlink"&gt;Simulation VIP for UALink&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; product page, or explore the wider range of Cadence &lt;/span&gt;&lt;/span&gt;&lt;a class="Hyperlink SCXW142711385 BCX8" href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip" rel="noopener noreferrer" target="_blank"&gt;&lt;span class="TextRun Underlined SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8" data-ccp-charstyle="Hyperlink"&gt;Simulation VIP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;solutions. For any clarification or technical assistance, please reach out to us at &lt;/span&gt;&lt;/span&gt;&lt;a class="Hyperlink SCXW142711385 BCX8" href="mailto:talk_to_vip_expert@cadence.com" rel="noopener noreferrer" target="_blank"&gt;&lt;span class="TextRun Underlined SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8" data-ccp-charstyle="Hyperlink"&gt;talk_to_vip_expert@cadence.com&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW142711385 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364404&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/physical%2blayer">physical layer</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Ethernet">Ethernet</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/protocol%2bverification">protocol verification</category></item><item><title>Untangling PCIe L0p: How Four Bytes DLLP Reshape a Live Link</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/untangling-pcie-l0p-how-four-bytes-reshape-a-live-link</link><pubDate>Wed, 23 Sep 2026 09:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:fb7986a4-0d34-49e6-ba49-b18e4d17d328</guid><dc:creator>ManasiYadav</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;PCIe links in AI accelerators, storage subsystems, and data-centric platforms see traffic that arrives in bursts. Keeping every lane active through the quiet stretches burns power for bandwidth that isn&amp;#39;t being used. PCIe 6.0 addresses this tradeoff with L0p, a power-saving substate of L0 supported only in flit mode. At the center of the transition to L0p is the link management DLLP. It carries the requested width, response semantics, and priority information, allowing both sides of the link to agree on a width change without forcing the entire link back through the traditional recovery and configuration path. The simplicity is only on the surface. Underneath the surface sits a multiphase sequence with arbitration rules, response timing, post-response tracking windows, and a physical link reconfiguration that must be completed before the clocks run out. That is exactly what makes the link management DLLP worth a closer look.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This blog walks through how link management DLLPs work under the hood, where the verification complexity actually lives, and how Cadence PCIe VIP addresses that coverage space.&amp;nbsp;&amp;nbsp;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;When a Power Saving Feature Becomes a Protocol Puzzle&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;For years, changing link width was a disruptive event&amp;mdash;the link had to leave L0, traverse recovery, pass through configuration, and return to L0. With L0p, PCIe introduces a cleaner way to change link width while the link remains logically up.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It is tempting to picture L0p as a power knob: drop the active lane count on the fly, unused lanes go idle when bandwidth demand drops, bring them back when demand rises, and the link stays in L0 throughout. Getting it right means following a width change the way the silicon does: a link management DLLP exchange at the data link layer, an L0p Ack or Nak response within the required timing window, per-lane electrical idle signaling aligned with ordered set behavior, and training on lanes that are brought back into service. The lanes that remain active continue carrying flits. There is no full teardown. Just a live link changing its width under traffic. That&amp;#39;s the design intent, and it&amp;#39;s where most of the verification complexity begins.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue1"&gt;Inside the Link Management DLLP&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Link management DLLP is &lt;strong&gt;four bytes&lt;/strong&gt; wide with a compact but highly structured format:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h5 style="text-align:left;"&gt;&lt;img style="max-height:480px;max-width:640px;" alt="Link Management DLLP is four-bytes wide with a compact but highly structured format:&amp;nbsp;" src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/Blog_5F00_Figure_5F00_1_5F00_indigo_5F00_border_5F00_darker.png" /&gt;&amp;nbsp;&lt;span class="TextRun SCXW116403781 BCX0" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW116403781 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h5&gt;
&lt;p style="text-align:left;"&gt;The key semantic fields are:&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;L0p.Cmd: &lt;/strong&gt;Encodes operations such as request, Ack, and Nak.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L0p.Priority:&lt;/strong&gt;&amp;nbsp;Indicates requests that are policy or urgency-sensitive.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L0p link width: &lt;/strong&gt;Carries the requested or desired link width.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Response payload:&lt;/strong&gt;&amp;nbsp;Qualifies the response behavior when responding to a request.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1k369e3ue2"&gt;Same DLLP Encoding, Different Protocol Universe&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Link management DLLP shares the same encoding as conventional DLLPs (Ack/Nak, PM, UpdateFC), but the resemblance ends there. Those three are housekeeping&amp;mdash;the continuous background work that keeps the Data Link Layer operational. Link management DLLP carries no credits, no sequence numbers, no replay information. Its purpose is more direct: carry the L0p command, the priority bit, and the target width to the link partner, and get back a deterministic L0p Ack or Nak.&amp;nbsp;Conventional Ack/Nak DLLPs track TLP sequence numbers and gate the replay buffer. By contrast, an L0p Ack does not acknowledge a TLP, and an L0p Nak does not request TLP replay. They answer a width management proposal: an L0p Ack indicates that the requested Link Width change is accepted, whereas an L0p Nak indicates that it is not accepted.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue3"&gt;The Request-Response Contract&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;The link management DLLP operates within a tightly defined envelope. It is a flit mode mechanism, and if the link is not operating in flit mode, the receiver silently discards it. The same applies when reserved encodings are present in the DLLP fields. The DLLP must carry a valid link management type, a valid L0p command, and a valid link width encoding. Reserved fields are transmitted as zero, and reserved encodings do not go on the wire. The link management DLLP either fits the envelope completely, or it is treated as though it never arrived. A port initiates a link width change by transmitting up to three identical link management DLLPs within five consecutive flits. It gives the requester enough tolerance against loss without turning the request into noise on the link.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The responder side is just as constrained. When duplicates arrive within the observation window, the responder must return the same L0p Ack/Nak for every copy received. No divergence is permitted&amp;mdash;identical requests within the window get an identical response. That consistency is what keeps the exchange deterministic: the requester is allowed to repeat the ask, but the responder is not allowed to create ambiguity inside the same observation window.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue4"&gt;Ack, Nak, or Abandon: The Clock Keeps Running&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Response timing is where the link management DLLP becomes more than a request-response packet. It becomes a bounded protocol sequence. For links using 128b/130b or 1b/1b encoding, the responder must transmit an L0p Ack or Nak within 1 &amp;micro;s. For 8b/10b encoding, the response window extends to 4 &amp;micro;s. If the requester does not receive a response within 4 &amp;micro;s on 128b/130b or 1b/1b links, or within 8 &amp;micro;s on 8b/10b links, it must either re-request the same link width change or abandon the request. Once a response is out, both ports enter the post-response tracking window. The conditions for abandonment differ depending on the request direction and the response type. After an upsize Ack, the partner considers the request abandoned only if the requester does not initiate the link width upsize within 16 &amp;micro;s of the Ack and does not resend the upsize request within 8 &amp;micro;s of that Ack. For a downsize Ack, the request is considered abandoned only if the requester neither resends the downsize request within 4 &amp;micro;s of the Ack nor initiates the downsize within 16 &amp;micro;s. For a downsize Nak, if the requester does not resend the downsize request within 4 &amp;micro;s of the Nak, the partner considers the request abandoned.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue5"&gt;Small on the Wire, Big in Verification&amp;nbsp; &amp;nbsp;&lt;/h2&gt;
&lt;p&gt;A robust verification strategy has to follow it all the way down&amp;mdash;from the link management DLLP exchange to the physical realization of the width change on the lanes. &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/pcie/pcie.html"&gt;Cadence PCIe VIP&lt;/a&gt; helps exercise and observe L0p behavior across the protocol stack. Representative capabilities include protocol-aware generation and checking of link management DLLP transactions, Flit-aware DLP visibility for debug, timing, and protocol checks for request-response behavior, configuration, and LTSSM-aware scenario validation, and a combination of directed and constrained-random testing for negative and corner-case scenarios. &amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue6"&gt;More Information&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For more information on how Cadence PCIe Verification IP and TripleCheck enable users to confidently verify these new disruptive changes, see our &lt;a href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/pci-express-gen6-simulation-vip"&gt;VIP for PCI Express&lt;/a&gt;, &lt;a href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/vip-for-compute-express-link-cxl"&gt;VIP for Compute Express Link&lt;/a&gt; and &lt;a href="https://ip.cadence.com/ipportfolio/verification-ip/productivity-tools"&gt;TripleCheck for PCI Express.&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;For more information on PCIe in general, and on the various PCI standards, see the &lt;a href="https://pcisig.com/"&gt;PCI-SIG website&lt;/a&gt;. &amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If you have feedback or need more information, reach out to us at &lt;a href="mailto:talk_to_vip_expert@cadence.com"&gt;talk_to_vip_expert@cadence.com&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364399&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Low%2bPower">Low Power</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Coverage_2D00_Driven%2bVerification">Coverage-Driven Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/PCIe">PCIe</category></item><item><title>Not Every Byte in a UALink DL Flit Is a Payload</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/not-every-byte-in-a-ualink-dl-flit-is-payload</link><pubDate>Tue, 22 Sep 2026 07:47:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:40b207da-4e3b-41b4-bf1e-5b46a5254ee2</guid><dc:creator>budarapuujwalk</dc:creator><slash:comments>0</slash:comments><description>Imagine a cargo train carrying three kinds of shipments: the railway company&amp;#39;s own cargo, customer packages, and unfinished packages that are continuing from an earlier train. Now imagine you&amp;#39;re unloading the train. Looking at a coach full of...(&lt;a href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/not-every-byte-in-a-ualink-dl-flit-is-payload"&gt;read more&lt;/a&gt;)&lt;img src="https://community.cadence.com/aggbug?PostID=1364387&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flit%2bPacking%2bRules">Flit Packing Rules</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Data%2bLink%2bLayer">Data Link Layer</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flit%2bFormat">Flit Format</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category></item><item><title>Secure Imaging Starts at the Sensor: Understanding SEP in MIPI CSE v2.0</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/secure_2d00_imaging_2d00_starts_2d00_at_2d00_the_2d00_sensor_2d00_sep_2d00_mipi_2d00_cse_2d00_v2</link><pubDate>Mon, 21 Sep 2026 09:18:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:a31e25b8-7e28-4e0a-b493-864b01e46ad7</guid><dc:creator>Mohit1702</dc:creator><slash:comments>0</slash:comments><description>Secure imaging starts at the sensor. How the SEP protocol in MIPI CSE v2.0 protects every CSI-2 packet, and how Cadence VIP verifies it.(&lt;a href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/secure_2d00_imaging_2d00_starts_2d00_at_2d00_the_2d00_sensor_2d00_sep_2d00_mipi_2d00_cse_2d00_v2"&gt;read more&lt;/a&gt;)&lt;img src="https://community.cadence.com/aggbug?PostID=1364372&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE%2bVerification">MIPI CSE Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bAlliance">MIPI Alliance</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE">MIPI CSE</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Camera%2bSecurity">Camera Security</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/SEP%2bProtocol%2bVerification">SEP Protocol Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSI_2D00_2">MIPI CSI-2</category></item></channel></rss>