<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.cadence.com/cfs-file/__key/system/syndication/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Verification</title><subtitle type="html" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/atom</id><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv" /><link rel="self" type="application/atom+xml" href="https://community.cadence.com/cadence_blogs_8/b/fv/atom" /><generator uri="http://telligent.com" version="13.0.4.37021">Telligent Community (Build: 13.0.4.37021)</generator><updated>2026-09-16T12:53:00Z</updated><entry><title>Demystifying NOP Debug Flits in PCIe Flit Mode</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/demystifying-nop-debug-flits-in-pcie-flit-mode" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/demystifying-nop-debug-flits-in-pcie-flit-mode</id><published>2026-10-12T22:35:00Z</published><updated>2026-10-12T22:35:00Z</updated><content type="html">&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;</content><author><name>sabnams</name><uri>https://community.cadence.com/members/sabnams</uri></author><category term="pcie gen7" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/pcie%2bgen7" /><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="nop flit" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/nop%2bflit" /><category term="debug flit" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/debug%2bflit" /><category term="pcie gen6" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/pcie%2bgen6" /></entry><entry><title>Why Protocol Compliance Is Not Enough: Performance Verification with ATP</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-protocol-compliance-is-not-enough-performance-verification-with-atp" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-protocol-compliance-is-not-enough-performance-verification-with-atp</id><published>2026-10-12T22:00:00Z</published><updated>2026-10-12T22:00:00Z</updated><content type="html">&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;</content><author><name>PratikKumarGupta</name><uri>https://community.cadence.com/members/pratikkumargupta</uri></author><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="AMBA Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AMBA%2bVerification%2bIP" /><category term="AMBA" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AMBA" /><category term="ATP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ATP" /></entry><entry><title>UPLI Credit Flow: Why It Matters for UALink and What It Takes to Verify It Right</title><link rel="alternate" type="text/html" 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" /><id>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</id><published>2026-10-09T00:00:00Z</published><updated>2026-10-09T00:00:00Z</updated><content type="html">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;</content><author><name>AY20250725603</name><uri>https://community.cadence.com/members/ay20250725603</uri></author><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="VIP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP" /><category term="UALink" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink" /></entry><entry><title>UCIe 3.0: Faster Links Are Only Half the Story</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/ucie-3-0-faster-links-are-only-half-the-story" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/ucie-3-0-faster-links-are-only-half-the-story</id><published>2026-10-08T08:52:00Z</published><updated>2026-10-08T08:52:00Z</updated><content type="html">&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;</content><author><name>Mannan</name><uri>https://community.cadence.com/members/mannan</uri></author><category term="ucie" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ucie" /><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="chiplets" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chiplets" /><category term="cadence" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/cadence" /><category term="Cadence VIP portfolio" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Cadence%2bVIP%2bportfolio" /><category term="VIP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP" /><category term="AIInfrastructure" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AIInfrastructure" /><category term="UCIe 3.0" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UCIe%2b3-0" /><category term="HPC" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/HPC" /><category term="SoCDesign" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/SoCDesign" /><category term="ASICDesign" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ASICDesign" /><category term="SiliconEngineering" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/SiliconEngineering" /></entry><entry><title>VLAB in Practice: Real Binary, Virtual Board, Real Web Browser</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/vlab-in-practice-real-binary-virtual-board-real-web-browser" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/vlab-in-practice-real-binary-virtual-board-real-web-browser</id><published>2026-10-04T10:31:00Z</published><updated>2026-10-04T10:31:00Z</updated><content type="html">&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;</content><author><name>LeoHendrawan</name><uri>https://community.cadence.com/members/leohendrawan</uri></author><category term="Automotive" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Automotive" /><category term="Embedded Software Debugging" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Embedded%2bSoftware%2bDebugging" /><category term="vlab" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/vlab" /><category term="virtual platform" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/virtual%2bplatform" /><category term="embedded software" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/embedded%2bsoftware" /><category term="Shift-Left" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Shift_2D00_Left" /></entry><entry><title>New Course Release: Python API and App Store Development with Verisium Debug</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/new-course-release-python-api-and-app-store-development-with-verisium-debug" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/new-course-release-python-api-and-app-store-development-with-verisium-debug</id><published>2026-10-01T10:07:00Z</published><updated>2026-10-01T10:07:00Z</updated><content type="html">&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;</content><author><name>Bhairava prasad</name><uri>https://community.cadence.com/members/bhairava-prasad</uri></author><category term="Functional Verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Functional%2bVerification" /><category term="Verisium Debug" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verisium%2bDebug" /><category term="verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/verification" /></entry><entry><title>AMBA CXS Interleaving: Shared Transport for Multi-Protocol, Multi-Node Systems</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/amba-cxs-interleaving-shared-transport-for-multi-protocol-multi-node-systems" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/amba-cxs-interleaving-shared-transport-for-multi-protocol-multi-node-systems</id><published>2026-09-30T13:30:00Z</published><updated>2026-09-30T13:30:00Z</updated><content type="html">&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;</content><author><name>Ravi Vora</name><uri>https://community.cadence.com/members/ravi-vora</uri></author><category term="chiplet" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chiplet" /><category term="cxs-streaming" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/cxs_2D00_streaming" /><category term="Arm Neoverse CMN" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Arm%2bNeoverse%2bCMN" /><category term="ARM" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ARM" /><category term="CXS-D" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/CXS_2D00_D" /></entry><entry><title>Why LLMs Are the Best Thing to Happen to Chip Design</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-llms-are-the-best-thing-to-happen-to-chip-design" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-llms-are-the-best-thing-to-happen-to-chip-design</id><published>2026-09-29T16:00:00Z</published><updated>2026-09-29T16:00:00Z</updated><content type="html">&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;</content><author><name>Corporate</name><uri>https://community.cadence.com/members/corporate</uri></author><category term="featured" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/featured" /><category term="chip design" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chip%2bdesign" /><category term="AGI" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AGI" /><category term="LLMs" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/LLMs" /></entry><entry><title>GDDR7: Highlights of Memory of Choice for Graphics and High Bandwidth Apps</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/gddr7-feature-highlights-of-memory-of-choice-for-graphics-high-bandwidth-apps" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/gddr7-feature-highlights-of-memory-of-choice-for-graphics-high-bandwidth-apps</id><published>2026-09-26T06:00:00Z</published><updated>2026-09-26T06:00:00Z</updated><content type="html">&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;</content><author><name>Shyam Sharma</name><uri>https://community.cadence.com/members/shyam-sharma</uri></author><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="gddr6" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/gddr6" /><category term="VIP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP" /><category term="JEDEC" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/JEDEC" /><category term="DFI" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DFI" /><category term="GDDR" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/GDDR" /><category term="DRAM" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DRAM" /><category term="Graphics memory" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Graphics%2bmemory" /><category term="memory models" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/memory%2bmodels" /><category term="GDDR7" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/GDDR7" /></entry><entry><title>The Ethernet PHY We Knew, 
The UALink PHY We Needed</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/the-ethernet-phy-we-knew-the-ualink-phy-we-needed" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/the-ethernet-phy-we-knew-the-ualink-phy-we-needed</id><published>2026-09-25T13:45:00Z</published><updated>2026-09-25T13:45:00Z</updated><content type="html">&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;</content><author><name>durgarentikota</name><uri>https://community.cadence.com/members/durgarentikota</uri></author><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="physical layer" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/physical%2blayer" /><category term="Ethernet" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Ethernet" /><category term="UALink" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink" /><category term="protocol verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/protocol%2bverification" /></entry><entry><title>Untangling PCIe L0p: How Four Bytes DLLP Reshape a Live Link</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/untangling-pcie-l0p-how-four-bytes-reshape-a-live-link" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/untangling-pcie-l0p-how-four-bytes-reshape-a-live-link</id><published>2026-09-23T09:30:00Z</published><updated>2026-09-23T09:30:00Z</updated><content type="html">&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;</content><author><name>ManasiYadav</name><uri>https://community.cadence.com/members/manasiyadav</uri></author><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="Low Power" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Low%2bPower" /><category term="Coverage-Driven Verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Coverage_2D00_Driven%2bVerification" /><category term="PCIe" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/PCIe" /></entry><entry><title>Not Every Byte in a UALink DL Flit Is a Payload</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/not-every-byte-in-a-ualink-dl-flit-is-payload" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/not-every-byte-in-a-ualink-dl-flit-is-payload</id><published>2026-09-22T07:47:00Z</published><updated>2026-09-22T07:47:00Z</updated><content type="html">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;</content><author><name>budarapuujwalk</name><uri>https://community.cadence.com/members/budarapuujwalk</uri></author><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="Flit Packing Rules" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flit%2bPacking%2bRules" /><category term="Data Link Layer" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Data%2bLink%2bLayer" /><category term="VIP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP" /><category term="Flit Format" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flit%2bFormat" /><category term="UALink" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink" /></entry><entry><title>Secure Imaging Starts at the Sensor: Understanding SEP in MIPI CSE v2.0</title><link rel="alternate" type="text/html" 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" /><id>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</id><published>2026-09-21T09:18:00Z</published><updated>2026-09-21T09:18:00Z</updated><content type="html">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;</content><author><name>Mohit1702</name><uri>https://community.cadence.com/members/mohit1702</uri></author><category term="MIPI CSE Verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE%2bVerification" /><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="MIPI Alliance" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bAlliance" /><category term="MIPI CSE" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE" /><category term="VIP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP" /><category term="Camera Security" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Camera%2bSecurity" /><category term="SEP Protocol Verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/SEP%2bProtocol%2bVerification" /><category term="MIPI CSI-2" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSI_2D00_2" /></entry><entry><title>Verifying FSED in MIPI CSE v2.0 with Cadence VIP</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/verifying-fsed-in-mipi-cse-v2-0-with-cadence-vip" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/verifying-fsed-in-mipi-cse-v2-0-with-cadence-vip</id><published>2026-09-21T06:47:00Z</published><updated>2026-09-21T06:47:00Z</updated><content type="html">&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Automotive camera systems face a threat model that goes beyond packet-level tampering. Someone with physical access to the camera data link could swap out an entire live video frame for a fabricated one while every individual packet checksum stays untouched &amp;mdash; a gap that per-packet protection alone can&amp;#39;t close. At the same time, that same link has to prove it can catch faults reliably enough to meet automotive safety requirements, frame after frame, at scale.&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span&gt;The&amp;nbsp;&lt;strong&gt;Frame-based Service Extensions Data (FSED)&lt;/strong&gt;&amp;nbsp;protocol in&amp;nbsp;&lt;strong&gt;MIPI CSE v2.0&lt;/strong&gt;&amp;nbsp;(&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/mipi/mipi-csi-2.html"&gt;Simulation VIP for MIPI CSI-2 | Cadence&lt;/a&gt;) takes on both challenges at once. It inserts dedicated cryptographic messages at defined frame partition boundaries to authenticate entire frame segments (the security service), while appending interlocking CRC-32 checks and message counters to those same messages to satisfy functional safety detection requirements (the Functional Safety, or FuSa, service). This frame-level approach is fundamentally more efficient for high-resolution camera systems than per-packet Service Extension Packet (SEP) protection, and verifying its correctness demands an equally sophisticated tool.&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/fsed_5F00_message_5F00_sequence_5F00_v2.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;i&gt;&lt;span data-contrast="none"&gt;Figure 1. FSED messages sit at fixed points in the CSI-2 frame&amp;nbsp; FSED_CTRL_SYNC after frame start, an optional FSED_TOP_TAG mid-frame, and FSED_FRAME_TAG before frame end.&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Introduction to FSED&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;FSED works by inserting up to three dedicated messages directly into the CSI-2 frame, at fixed points in the packet sequence, rather than adding headers or footers to every packet the way MIPI&amp;#39;s other CSE protocol, SEP, does. Each FSED message is simply a CSI-2 Embedded Data (ED) Long Packet &amp;mdash;&amp;nbsp;FSED_CTRL_SYNC&amp;nbsp;right after frame start, an optional&amp;nbsp;FSED_TOP_TAG&amp;nbsp;mid-frame, and&amp;nbsp;FSED_FRAME_TAG&amp;nbsp;just before frame end &amp;mdash; so no new packet type needs to be introduced into the protocol. The key advantages of this frame-level approach include:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frame-level efficiency:&amp;nbsp;&lt;/strong&gt;One authentication and safety check per frame segment instead of per packet, which scales far better for high-resolution ADAS and autonomous-driving cameras.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Three services, one structure:&amp;nbsp;&lt;/strong&gt;The same three messages carry a mandatory base service plus two independently selectable services &amp;mdash; Security (authentication, with optional encryption) and Functional Safety (CRC-based fault detection) &amp;mdash; so designs get either or both protections without duplicating the frame structure.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backward-compatible by design:&amp;nbsp;&lt;/strong&gt;The mid-frame message is optional, so implementations can start with the minimum message set and add mid-frame checking only where latency budgets allow.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Built-in replay protection:&amp;nbsp;&lt;/strong&gt;Layered frame counters embedded in the authentication tag catch replayed or stale frames, even across session boundaries.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Security Meets Functional Safety&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;FSED is actually three independently selectable services, layered on top of each other rather than bundled as one fixed feature. The &lt;/span&gt;&lt;b&gt;&lt;span data-contrast="auto"&gt;FSED Base Service&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast="auto"&gt; is mandatory &amp;mdash; it tags every FSED message with a source identifier, the eVC (virtual channel) it belongs to, and a frame counter, so every message is uniquely identified and ordered no matter which protections are switched on above it. Layered on that foundation, designs can independently enable the &lt;/span&gt;&lt;b&gt;&lt;span data-contrast="auto"&gt;Security Service&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast="auto"&gt;, the &lt;/span&gt;&lt;b&gt;&lt;span data-contrast="auto"&gt;FuSa Service&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast="auto"&gt;, or both &amp;mdash; with Security sitting at a higher layer than FuSa, a detail that turns out to matter once both are active.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;FSED&amp;#39;s Security service offers a choice of two ciphersuites on the same message structure - a performance mode (AES-GMAC, with optional AES-CTR encryption) built for high-throughput, forward-facing ADAS cameras, and an efficiency mode (AES-CMAC, no encryption) for area- and power-constrained image sensor silicon. Switching between them is a configuration choice, not a redesign.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The Functional Safety service layers five interlocking Cyclic Redundancy Check (CRC-32) checks plus two independent counters (frame-level and message-level) on top of the same messages, catching corrupted, dropped, duplicated, or reordered frames before they ever reach the application layer. When both services run together, Security is applied first at the transmitter and verified last at the receiver &amp;mdash; a direct consequence of Security sitting above FuSa in the layering &amp;mdash; so the safety checks cover the fully protected data, not just the raw payload.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;FSED is actually three independently selectable services, layered on top of each other rather than bundled as one fixed feature. The&amp;nbsp;&lt;strong&gt;FSED base service&lt;/strong&gt;&amp;nbsp;is mandatory &amp;mdash; it tags every FSED message with a source identifier, the eVC (virtual channel) it belongs to, and a frame counter, so every message is uniquely identified and ordered, no matter which protections are switched on above it. Layered on that foundation, designs can independently enable the&amp;nbsp;&lt;strong&gt;security service&lt;/strong&gt;, the&amp;nbsp;&lt;strong&gt;FuSa service&lt;/strong&gt;, or both &amp;mdash; with security sitting at a higher layer than FuSa, a detail that turns out to matter once both are active.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;FSED&amp;#39;s security service offers a choice of two ciphersuites on the same message structure - a performance mode (AES-GMAC, with optional AES-CTR encryption) built for high-throughput, forward-facing ADAS cameras, and an efficiency mode (AES-CMAC, no encryption) for area- and power-constrained image sensor silicon. Switching between them is a configuration choice, not a redesign.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Functional Safety service layers five interlocking Cyclic Redundancy Check (CRC-32) checks plus two independent counters (frame-level and message-level) on top of the same messages, catching corrupted, dropped, duplicated, or reordered frames before they ever reach the application layer. When both services run together, security is applied first at the transmitter and verified last at the receiver &amp;mdash; a direct consequence of security sitting above FuSa in the layering &amp;mdash; so the safety checks cover the fully protected data, not just the raw payload.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Key Verification Challenges&amp;nbsp;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security variant coverage:&amp;nbsp;&lt;/strong&gt;Each security variant, including Cadence&amp;#39;s own region-of-interest extension, defines a different MAC coverage boundary across the frame partitions, so each one needs its own targeted test scenarios.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optional payload encryption:&amp;nbsp;&lt;/strong&gt;When AES-CTR encryption is layered on top of the MAC, verification has to confirm the plaintext round-trips byte-for-byte through encryption and decryption without disturbing MAC coverage.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optional packet presence and absence:&amp;nbsp;&lt;/strong&gt;The pre-image and post-image embedded data packets and the mid-frame message are all optional, so verification has to exercise every combination of which ones are present or missing, since that directly changes what gets MAC- and CRC-covered.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MAC validation across every message type:&amp;nbsp;&lt;/strong&gt;CTRL_SYNC, TOP_TAG, and FRAME_TAG each carry independent MAC coverage, and all three need correct generation and checking under both ciphersuites.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Counter roll-over without false alarms:&amp;nbsp;&lt;/strong&gt;Frame counters must wrap and hand off to a secondary counter without triggering a false frame-loss error.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fault injection granularity:&amp;nbsp;&lt;/strong&gt;Proving out diagnostic coverage requires corrupting each MAC and CRC field independently and confirming the matching checker fires.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align:center;"&gt;&lt;span&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/fsed_5F00_verification_5F00_challenges_5F00_v5.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;i&gt;&lt;span data-contrast="none"&gt;Figure 2. Six key FSED verification challenges: Security variant coverage; optional AES-CTR payload encryption; optional packet presence; MAC validation across all three FSED messages; counter roll-over; and per-field fault injection granularity.&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Simplifying FSED Verification with Cadence CSI-2 VIP&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&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/fsed_5F00_vip_5F00_architecture_5F00_v2.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;i&gt;&lt;span data-contrast="none"&gt;Figure 3. Cadence CSI-2 VIP test bench: Active and passive primary/secondary agents generate and check FSED CTRL_SYNC, TOP_TAG, and FRAME_TAG messages against a PHY-agnostic DUT.&lt;/span&gt;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Cadence CSI-2 Verification IP (&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/mipi/mipi-csi-2.html"&gt;Simulation VIP for MIPI CSI-2 | Cadence&lt;/a&gt;) is built to close every one of these gaps with a single, spec-compliant verification solution. It provides a golden reference model that runs as primary or secondary, generating and checking all FSED messages in real time, exercising every Security Variant defined in the specification. Backed by an industry-standard cryptographic library, it verifies AES-CTR payload encryption round-trips byte-for-byte and validates the MAC independently at CTRL_SYNC, TOP_TAG, and FRAME_TAG under both ciphersuites.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It also exercises every combination of optional pre-image, post-image, and mid-frame message presence, includes a dedicated regression for frame-counter roll-over, and ships with independent, targeted fault injection for every MAC and CRC field, so teams can generate per-mechanism diagnostic-coverage evidence and confirm each checker fires exactly when it should.&amp;nbsp;With this breadth of coverage,&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/mipi/mipi-csi-2.html"&gt;Cadence CSI-2 VIP&lt;/a&gt;&amp;nbsp;eliminates the verification gap for FSED, letting design teams validate frame-level security and functional safety together, out of the box.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Learn more about Cadence MIPI CSI-2 Verification IP, including key features, capabilities, and benefits, by visiting our product page:&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/mipi/mipi-csi-2.html"&gt;Simulation VIP for MIPI CSI-2 | Cadence&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For more details, connect directly with Cadence Verification IP experts at&amp;nbsp;&lt;a href="mailto:talk_to_vip_expert@cadence.com"&gt;talk_to_vip_expert@cadence.com&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&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=1364382&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>DhyeySoni</name><uri>https://community.cadence.com/members/dhyeysoni</uri></author><category term="MIPI CSE Verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE%2bVerification" /><category term="Verification IP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP" /><category term="FSED Protocol Verification" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/FSED%2bProtocol%2bVerification" /><category term="MIPI Alliance" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bAlliance" /><category term="Camera Security" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Camera%2bSecurity" /><category term="CSE" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/CSE" /><category term="FSED" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/FSED" /></entry><entry><title>DisplayPort Adaptive-Sync: When Fixed Refresh Rate Is Not Enough</title><link rel="alternate" type="text/html" href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/displayport-adaptive-sync-when-fixed-refresh-rate-is-not-enough" /><id>https://community.cadence.com/cadence_blogs_8/b/fv/posts/displayport-adaptive-sync-when-fixed-refresh-rate-is-not-enough</id><published>2026-09-16T19:53:00Z</published><updated>2026-09-16T19:53:00Z</updated><content type="html">&lt;p style="font-weight:400;"&gt;Displays are central to nearly every modern computing experience. Whether we are watching a video or playing games, we expect motion to appear clear and continuous. However, when the rate at which a Graphics Processing Unit (GPU) produces frames does not align with the rate at which a display refreshes, visible artifacts such as screen tearing and stutter can occur. Adaptive-Sync addresses this mismatch by allowing the display&amp;#39;s refresh rate to follow the timing of frames driven by the GPU.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2gnv0n10"&gt;Understanding the Artifacts that Can Occur without Adaptive-Sync&lt;/h2&gt;
&lt;p style="font-weight:400;"&gt;A conventional display refreshes at a fixed rate. For example, a display operating at 120 Hz begins a new refresh approximately every 8.33 ms, calculated as 1000 divided by 120. The GPU, however, may not produce every frame in exactly 8.33 ms. One frame might take 8 ms to render, another 12 ms, and another 20 ms, causing screen tearing or screen stutter.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Screen tearing&lt;/strong&gt; can occur when a new frame is transported while the display is still scanning the previous frame. The resulting image may contain portions of two different frames.&lt;/li&gt;
&lt;li&gt;Screen stutter can occur when a frame is not ready for the next fixed refresh interval. The display may repeat the previous frame, momentarily pausing motion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="font-weight:400;"&gt;Adaptive-Sync reduces these artifacts by allowing the GPU to vary the interval between transmitted frames within the refresh rate range supported by the display.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2gnv0n11"&gt;Fixed Refresh Rate vs Variable Refresh Rate (Adaptive-Sync)&lt;/h2&gt;
&lt;p style="font-weight:400;"&gt;Let&amp;#39;s assume the monitor is configured for its maximum refresh rate of 125 Hz, which makes its refresh period set at 8 ms. If the GPU renders frames at intervals of 8 ms, 12 ms, and 20 ms, the monitor continues to refresh every 8 ms, regardless of when the GPU makes each frame available. This creates a mismatch between the GPU and monitor, which produces undesirable visual artifacts.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;With Adaptive-Sync, the source can dynamically vary the frame interval based on the application, allowing the display&amp;#39;s refresh rate timing to more closely track the GPU&amp;#39;s output. For example, an 8 ms frame interval corresponds to a 125 Hz refresh rate, a 12 ms interval corresponds to approximately 83.3 Hz, and a 20 ms interval corresponds to a 50 Hz refresh rate. Synchronizing the GPU and display reduces artifacts while improving the overall experience.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;The link rate and lane count do not need to change. See Figure &lt;span&gt;1&lt;/span&gt; for a comparison of the GPU-to-display timing relationship before and after Adaptive-Sync.&lt;/p&gt;
&lt;p style="font-weight:400;text-align:center;"&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/Fig1.png" /&gt;&lt;/p&gt;
&lt;h5 style="text-align:center;"&gt;&lt;em&gt;Figure 1: Adaptive-Sync aligns the display refresh interval with the GPU&amp;rsquo;s frame interval&lt;/em&gt;&lt;/h5&gt;
&lt;h2 id="mcetoc_1k2gnv0n12"&gt;How DisplayPort Frame Timing Works&lt;/h2&gt;
&lt;p style="font-weight:400;"&gt;All frames have a blanking region and an active video region. The DPTX, such as the GPU, transmits Main Stream Attributes, or MSA, describing the frame. The key MSA timing parameters include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTotal;&lt;/li&gt;
&lt;li&gt;HStart;&lt;/li&gt;
&lt;li&gt;HSync Width;&lt;/li&gt;
&lt;li&gt;VTotal;&lt;/li&gt;
&lt;li&gt;VStart;&lt;/li&gt;
&lt;li&gt;VSync Width;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="font-weight:400;"&gt;During fixed timing operation, the DPRX (display) uses the MSA timing parameters to interpret the transmitted video timing and reconstruct the displayed frame.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2gnv0n13"&gt;What Changes with Adaptive-Sync?&lt;/h2&gt;
&lt;p style="font-weight:400;"&gt;Under Adaptive-Sync, the duration between frames may change. The active video resolution can remain the same while the vertical blanking interval is shortened or extended.&lt;/p&gt;
&lt;p style="font-weight:400;"&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/Fig2.png" /&gt;&lt;/p&gt;
&lt;h5 style="text-align:center;"&gt;&lt;em&gt;Figure 2: Adaptive-Sync varies frame duration by adjusting the vertical blanking interval&lt;/em&gt;&lt;/h5&gt;
&lt;p style="font-weight:400;"&gt;Because the actual frame duration is now variable, certain fixed MSA timing parameters can no longer be relied on for the frame&amp;#39;s timing and reconstruction.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;span&gt;Before Adaptive-Sync can be used, the DPRX must advertise support for ignoring MSA timing parameters during the discovery phase before link training. Once link training is complete, the DPTX can enable this functionality by setting the &lt;strong&gt;MSA_TIMING_PAR_IGNORE_EN&lt;/strong&gt; bit (bit 7) in &lt;strong&gt;DisplayPort Configuration Data (DPCD) address 00107h&lt;/strong&gt;. After this bit is enabled, the DPRX ignores the applicable MSA timing parameters as defined in the DisplayPort specification. The Adaptive-Sync SDP communicates the information needed to coordinate variable frame timing. The DPRX uses this information, together with the transmitted video stream and MSA, to control its refresh timing. &lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k2gnv0n14"&gt;&lt;span&gt;Adaptive-Sync Secondary Data Packet (SDP)&lt;/span&gt;&lt;/h2&gt;
&lt;p style="font-weight:400;"&gt;Modern Adaptive-Sync operation uses an Adaptive-Sync SDP to communicate frame-related timing information. Depending on the SDP version and operating mode, its payload can identify the Adaptive-Sync operating mode and carry information such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Target refresh rate&lt;/li&gt;
&lt;li&gt;Target refresh-rate divider&lt;/li&gt;
&lt;li&gt;Frame duration increase constraints&lt;/li&gt;
&lt;li&gt;Frame duration decrease constraints&lt;/li&gt;
&lt;li&gt;Panel Replay timing information&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="font-weight:400;"&gt;This allows the source and sink to coordinate variable timing without changing the active frame.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2gnv0n15"&gt;&lt;span&gt;AVT and FAVT Adaptive-Sync Features&lt;/span&gt;&lt;/h2&gt;
&lt;p style="font-weight:400;"&gt;More advanced Adaptive-Sync features add greater flexibility.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adaptive Video Timing, or AVT&lt;/strong&gt;, allows the source to vary frame duration dynamically within the capabilities advertised by the sink. The DPTX may increase or decrease the interval between frames while respecting the supported timing boundaries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed Average Video Timing, or FAVT&lt;/strong&gt;, allows individual frame durations to vary while maintaining a specified average frame duration or target refresh rate over time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1k2gnv0n16"&gt;Conclusion&lt;/h2&gt;
&lt;p style="font-weight:400;"&gt;The key capability provided by Adaptive-Sync is the ability for the DPTX to vary frame duration while communicating the associated timing information to the DPRX through Adaptive-Sync protocol mechanisms. This enables smooth operation without requiring link-rate or lane count changes.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;Cadence has a very mature Verification IP solution. Verification over many different configurations can be used with eDP 1.5, DisplayPort 1.4, DisplayPort 2.1, and USB4 DP tunneling designs, so you can choose the best version for your specific needs.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;strong&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html"&gt;Learn more about Cadence&amp;rsquo;s Verification IP solutions.&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=1364368&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>tfox</name><uri>https://community.cadence.com/members/tfox</uri></author><category term="DisplayPort" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DisplayPort" /><category term="EDP" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/EDP" /><category term="AdaptiveSync" scheme="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AdaptiveSync" /></entry></feed>