<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.cadence.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Verification</title><link>https://community.cadence.com/cadence_blogs_8/b/fv</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 01 Oct 2026 10:07:00 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.cadence.com/cadence_blogs_8/b/fv" /><item><title>New Course Release: Python API and App Store Development with Verisium Debug</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/new-course-release-python-api-and-app-store-development-with-verisium-debug</link><pubDate>Thu, 01 Oct 2026 10:07:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:7e0d2f65-04d3-4bef-b027-731c67d54d7c</guid><dc:creator>Bhairava prasad</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;em&gt;Automate debug workflows. Build reusable apps. Extend Verisium Debug with Python.&lt;/em&gt;&lt;/p&gt;
&lt;table width="98%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Course focus:&lt;/strong&gt;&lt;br /&gt; Python automation, Verisium Debug APIs, GUI customization, batch-mode workflows, and App Store deployment.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Best suited for:&lt;/strong&gt;&lt;br /&gt; Verification engineers, debug specialists, automation developers, and teams building reusable productivity tools.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Move from manual debug tasks to scalable, reusable, Python-driven debug automation.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The world of digital design verification is evolving rapidly, and automation is becoming a critical skill for engineers seeking to debug faster, improve productivity, and build scalable workflows. To help engineers unlock the full potential of Verisium Debug, we are excited to announce the release of our new online course:&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhi0"&gt;Python API and App Store Development with Verisium Debug&lt;/h2&gt;
&lt;p&gt;This comprehensive course is designed to help verification engineers, debug specialists, and automation enthusiasts learn how to leverage the Verisium Debug Python API to automate tasks, analyze design data, customize workflows, and build deployable applications using the Verisium Debug App Store framework.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5367.pastedimage1788421210970v2.png" /&gt;&lt;/p&gt;
&lt;p&gt;You can find the course &lt;a href="https://cadence.docebosaas.com/learn/courses/3046/python-api-and-app-store-development-with-verisium-debug-v10-online?hash=6254b497f581f9e649596ee316fc65ac53840b47&amp;amp;generated_by=19659"&gt;here&lt;/a&gt;, or search for this course at&amp;nbsp;&lt;strong&gt;&lt;u&gt;ask.cadence.com&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhj1"&gt;Why This Course Matters&lt;/h2&gt;
&lt;p&gt;As design complexity continues to increase, engineers face growing challenges in debugging large datasets, identifying root causes, and managing repetitive analysis tasks. Manual debug processes can consume valuable engineering time and often limit productivity.&lt;/p&gt;
&lt;p&gt;The Verisium Debug Python API provides a powerful solution by enabling users to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programmatic access:&lt;/strong&gt; Access design, waveform, and debug databases directly from Python.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow automation:&lt;/strong&gt; Automate repetitive debug and analysis tasks that consume engineering time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced analysis:&lt;/strong&gt; Perform design, signal, transaction, and driver-tracing investigations with scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom experiences:&lt;/strong&gt; Create GUI components and utilities tailored to real debug use cases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flow integration:&lt;/strong&gt; Connect debug automation with larger verification and regression flows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reusable deployment:&lt;/strong&gt; Build applications that can be packaged and shared through the Verisium Debug App Store framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By learning these capabilities, engineers can move beyond traditional debugging and begin creating intelligent, reusable automation solutions that improve efficiency across projects.&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhj2"&gt;What You&amp;rsquo;ll Learn&lt;/h2&gt;
&lt;p&gt;The course takes a practical, hands-on approach and covers the complete workflow from Python API fundamentals to enterprise-ready application development.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj3"&gt;1. Python API Foundations&lt;/h3&gt;
&lt;p&gt;Learn the architecture of the Verisium Debug Python API, understand GUI and batch-mode execution models, and configure your Python development environment for productive automation development.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj4"&gt;2. Design and Value Analysis&lt;/h3&gt;
&lt;p&gt;Discover how to traverse design hierarchies, access signals, perform driver tracing, extract design information, and automate common debug investigations.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj5"&gt;3. Database Handling&lt;/h3&gt;
&lt;p&gt;Understand how to create, load, and interact with Verisium Debug databases programmatically using Python.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj6"&gt;4. GUI Automation and Customization&lt;/h3&gt;
&lt;p&gt;Learn how to interact with Verisium Debug GUI components, create custom widgets, and build enhanced user experiences inside the debugger environment.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj7"&gt;5. Batch Mode Automation&lt;/h3&gt;
&lt;p&gt;Explore how to execute analysis and automation tasks in batch mode to enable integration with regression and verification flows.&lt;/p&gt;
&lt;h3 id="mcetoc_1k3reldhj8"&gt;6. App Store Development&lt;/h3&gt;
&lt;p&gt;Learn how to package, deploy, manage, and distribute Python-based applications through the Verisium Debug App Store, transforming standalone scripts into maintainable and reusable tools.&lt;/p&gt;
&lt;table width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Learning path&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Practical takeaway&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;API fundamentals&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Understand how Python connects with Verisium Debug and how scripts run in GUI or batch mode.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Design exploration&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Traverse hierarchy, inspect signals, trace drivers, and extract design information programmatically.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Automation workflows&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Convert repetitive debug steps into repeatable scripts that reduce manual effort.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;App Store packaging&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Turn scripts into reusable applications that can be deployed and maintained across teams.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhj9"&gt;Key Benefits of Taking This Course&lt;/h2&gt;
&lt;p&gt;After completing this training, you&amp;#39;ll be able to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automate repetitive debug tasks and save valuable engineering time&lt;/li&gt;
&lt;li&gt;Build reusable Python-based verification and debug utilities&lt;/li&gt;
&lt;li&gt;Programmatically access and analyze Verisium Debug data&lt;/li&gt;
&lt;li&gt;Customize the debugging environment to match your workflow&lt;/li&gt;
&lt;li&gt;Develop scalable solutions that extend beyond standalone scripts&lt;/li&gt;
&lt;li&gt;Package and deploy applications through the Verisium Debug App Store&lt;/li&gt;
&lt;li&gt;Improve debug efficiency and accelerate issue resolution&lt;/li&gt;
&lt;li&gt;Enhance your Python-based automation skills for modern verification flows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whether you&amp;#39;re looking to increase personal productivity or develop shared tools for your organization, this course provides practical skills that can be immediately applied to real-world verification challenges.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/8081.pastedimage1788421178101v1.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhja"&gt;Earn Recognition Through the Badge Exam&lt;/h2&gt;
&lt;p&gt;Learning doesn&amp;#39;t stop when the course videos end.&lt;/p&gt;
&lt;p&gt;To help learners assess and validate their understanding, the course includes a &lt;strong&gt;Badge Exam&lt;/strong&gt; that measures knowledge gained throughout the training. The exam covers all major course topics, including Python API fundamentals, design analysis, database handling, GUI APIs, batch-mode automation, and App Store development.&lt;/p&gt;
&lt;p&gt;The badge exam enables learners to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Evaluate their understanding of the course material&lt;/li&gt;
&lt;li&gt;Verify mastery of key concepts and workflows&lt;/li&gt;
&lt;li&gt;Identify areas that may require additional study&lt;/li&gt;
&lt;li&gt;Demonstrate proficiency in Verisium Debug Python API development&lt;/li&gt;
&lt;li&gt;Showcase their expertise to peers and managers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Successfully completing the badge exam provides learners with confidence that they can apply the concepts and techniques learned throughout the course in real-world projects.&lt;/p&gt;
&lt;h2 id="mcetoc_1k3reldhjb"&gt;Start Building the Future of Debug Automation&lt;/h2&gt;
&lt;p&gt;The future of verification is driven by automation, customization, and intelligent tooling. The &lt;strong&gt;Python API and App Store Development with Verisium Debug&lt;/strong&gt; course equips engineers with the practical skills needed to build powerful automation solutions, streamline debugging workflows, and create deployable applications that extend the capabilities of Verisium Debug.&lt;/p&gt;
&lt;p&gt;Whether you are just beginning your automation journey or looking to expand your existing Python expertise, this course provides the knowledge, hands-on experience, and validation opportunities needed to take your Verisium Debug skills to the next level.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://cadence.docebosaas.com/learn/courses/3046/python-api-and-app-store-development-with-verisium-debug-v10-online?hash=6254b497f581f9e649596ee316fc65ac53840b47&amp;amp;generated_by=19659"&gt;Enroll today&lt;/a&gt; to master the Verisium Debug Python API, build your own applications, and prove your expertise through the course badge exam.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364356&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Functional%2bVerification">Functional Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verisium%2bDebug">Verisium Debug</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/verification">verification</category></item><item><title>AMBA CXS Interleaving: Shared Transport for Multi-Protocol, Multi-Node Systems</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/amba-cxs-interleaving-shared-transport-for-multi-protocol-multi-node-systems</link><pubDate>Wed, 30 Sep 2026 13:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:d430db0d-50d6-4cee-9171-7480326833c3</guid><dc:creator>Ravi Vora</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span data-contrast="none"&gt;Modern SoCs bring together CPUs, GPUs, AI accelerators, coherent memory devices, PCIe controllers, and chiplet interfaces, all generating packet traffic with different latency, ordering, and delivery requirements. When these flows converge on a shared transport, a basic first-in, first-out packet path can create avoidable blocking and leave expensive link bandwidth underused.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;AMBA CXS addresses this challenge with a credited, packetized streaming interface optimized for wide datapaths. Along with packing multiple packets into a flit, CXS can distinguish independent streams and define where traffic from another stream may be inserted. Earlier CXS revisions enabled protocol-aware sharing through CXSPRCLTYPE and controlled insertion through CXSLAST. Issue D extends stream identity with CXSSRCID and CXSTGTID, allowing the same link concepts to scale into multi-node networks.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The architectural value is straightforward: independent traffic can share a high-bandwidth link while preserving the ordering and contiguity guarantees required by each stream. Verification is more complex because the design must identify stream boundaries, preserve in-stream order, prevent illegal insertion, maintain protocol and node identity across flits, and honor credit and continuous-delivery constraints under stress.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3k9nkv10"&gt;&lt;span&gt;&lt;span class="TextRun SCXW2625919 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW2625919 BCX8" data-ccp-parastyle="heading 1"&gt;Overview of CXS Interleaving&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Consider a shared link carrying a long packet sequence while a short, latency-sensitive packet from another independent stream is ready. If the second stream must wait for the first sequence to drain, the system experiences head-of-line blocking. The effect becomes more visible as packet sizes vary, traffic sources multiply, and endpoints operate at different service rates.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Interleaving allows upstream arbitration to select traffic from another stream at a legal insertion point. This can improve responsiveness and keep the link active without violating the ordering of the original stream. CXS, therefore, does not treat interleaving as arbitrary flit switching. It identifies the stream and constrains insertion using protocol type, source ID, target ID, CXSLAST, and the CXSCONTINUOUSDATA property.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3ka0v4o1"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;Why CXS Needs Stream-Aware Interleaving&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25727926 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25727926 BCX8"&gt;Unrestricted switching can violate packet continuity or ordering, while overly conservative arbitration can preserve correctness but unnecessarily reduce link efficiency. CXS resolves this tension by distinguishing independent traffic streams and identifying the boundaries at which another stream can be inserted safely. The result is controlled sharing: the link can carry independent flows without losing the context needed for packet reconstruction, ordering, route attribution, or continuous delivery.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3ka22oc2"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25727926 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25727926 BCX8"&gt;&lt;span class="TextRun SCXW153260102 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW153260102 BCX8" data-ccp-parastyle="heading 1"&gt;CXS Interleaving Protocol Architecture&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="mcetoc_1k3ka2lrg3"&gt;&lt;span class="TextRun SCXW166846803 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW166846803 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25727926 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25727926 BCX8"&gt;&lt;span class="TextRun SCXW153260102 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW153260102 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW148986175 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW148986175 BCX8" data-ccp-parastyle="heading 2"&gt;Protocol-Aware Stream Identification with CXSPRCLTYPE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;CXS issue B added support for multiple protocol streams. When CXS_PROTOCOL_TYPE is True, the optional 3-bit CXSPRCLTYPE signal identifies the protocol type carried by a valid flit. The specification defines encodings for protocol type 0 and protocol type 1; other values are reserved.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;A packet spanning multiple flits must use the same protocol type on every flit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;If one flit contains multiple packets, all packets in that flit must have the same protocol type.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;When CXSCONTINUOUSDATA is false, flits with different protocol types can be interleaved on any cycle.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;When CXSCONTINUOUSDATA is true, the protocol type can change only after CXSLAST is asserted.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;These rules allow a receiver to route, decode, or account for traffic without parsing protocol-specific packet contents simply to determine the protocol stream. They also provide a directly observable basis for checking that a multi-flit packet never changes protocol identity during delivery.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3ka49dn4"&gt;&lt;span&gt;&lt;span class="TextRun SCXW69409279 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW69409279 BCX8" data-ccp-parastyle="heading 2"&gt;Legal Insertion Boundaries with CXSLAST&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;CXSLAST is an optional flit-level indication that flits from another source or stream can be inserted after the current cycle. It is best understood as an insertion-permission boundary, not simply an end-of-packet indication, because CXS can require multiple complete packets to remain contiguous as a group.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;CXSLAST must be de-asserted when the following packet must remain after the current packet, or when a packet has started but has not ended in the current flit. When CXSLAST is low, the receiver expects additional traffic for the protected sequence ,and another source must not be inserted. When the signal is not implemented, it is generally assumed asserted, except while a packet is incomplete in the current flit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The waveform illustrates how protocol streams share the CXS link while CXSLAST marks where a stream transition is permitted. A transition must not interrupt an incomplete packet or a packet group that is required to remain contiguous.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:195px;max-width:654px;" alt=" " src="https://community.cadence.com/resized-image/__size/1308x390/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/pastedimage1790609362763v1.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3ka5ta95"&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;Continuous Delivery with CXSCONTINUOUSDATA&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW185126833 BCX8"&gt;With continuous delivery disabled, a design can switch among streams more freely while still preserving packet continuation and same-stream ordering. With continuous delivery enabled, a stream change must wait until CXSLAST is asserted. The transmitter must also avoid starting a packet unless the complete packet can be delivered in consecutive cycles while credits are available.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3ka721p6"&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;Multi-Node Stream Identity in CXS Issue D&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW42432542 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW42432542 BCX8"&gt;Protocol type can distinguish different protocols, but it cannot distinguish two nodes carrying the same protocol. CXS issue D therefore adds optional source and target identifiers for multi-node networks. CXSSRCID identifies the node from which a flit originated, while CXSTGTID identifies the destination node. Each identifier can be configured from 0 to 8 bits, and both are valid when CXSVALID is asserted.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW42432542 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW237615502 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW237615502 BCX8"&gt;CXS stream identity = {CXSPRCLTYPE, CXSSRCID, CXSTGTID}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW241456531 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW241456531 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW185126833 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW226914495 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW226914495 BCX8" data-ccp-parastyle="heading 2"&gt;&lt;span class="TextRun SCXW42432542 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="TextRun SCXW237615502 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW237615502 BCX8"&gt;&lt;span class="TextRun SCXW62459823 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW62459823 BCX8"&gt;Flits from the same stream must remain in order. Flits from different streams can be inserted, subject to CXSCONTINUOUSDATA and CXSLAST. Because source and target identifiers apply to every packet in a flit, one flit cannot mix packets belonging to different source-target routes. This richer identity allows a shared transport to distinguish flows without dedicating a separate link to every node pair.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW62459823 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kaa8su7"&gt;Key Protocol Features&amp;nbsp;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Protocol-aware identification through CXSPRCLTYPE&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Multi-node source and destination identification through CXSSRCID and CXSTGTID&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Controlled insertion boundaries through CXSLAST&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Compatibility with continuous-delivery constraints through CXSCONTINUOUSDATA&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Preserved ordering within each configured stream identity&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-contrast="none"&gt;Efficient sharing of a wide link across independent traffic flows&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1k3kabks49"&gt;Practical Use Cases for CXS Interleaving&amp;nbsp;&lt;/h2&gt;
&lt;h3 id="mcetoc_1k3kac23qa"&gt;Multi-Protocol Controller Connectivity&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Independent protocol flows can share a wide CXS transport while retaining explicit protocol identity. This is useful for packetized communication between an on-chip interconnect and protocol controllers such as CHI, PCIe, CCIX, or CXL controllers.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3kacagib"&gt;Multi-Node and Modular Subsystem Fabrics&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Source and target identifiers allow flows using the same protocol to remain distinguishable when multiple initiators and endpoints share the transport. This supports modular subsystem and multi-node designs without requiring a dedicated physical link for each route.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1k3kacr9gd"&gt;Mixed-Latency and Variable-Length Traffic&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Legal insertion points allow a ready independent stream to use link capacity without waiting for an unrelated long sequence to drain. This can reduce avoidable head-of-line blocking while retaining stream-specific ordering and contiguity requirements.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;These are architectural advantages rather than an automatic guarantee of performance. Realized latency and throughput also depend on buffering, credit round-trip latency, arbitration policy, packet-size distribution, and downstream service behavior.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kacl1cc"&gt;Functional Verification Challenges&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Interleaving introduces state that extends beyond a single packet. Many defects are therefore temporal and cross-flit rather than simple signal-value errors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Stream Identity Integrity&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Verification must detect changes to CXSPRCLTYPE, CXSSRCID, or CXSTGTID within a multi-flit packet and reject flits that incorrectly combine packets with different protocol or route identities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Insertion-Boundary Correctness&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The environment must detect another stream inserted after CXSLAST was Low when continuous delivery is required, as well as premature assertion of CXSLAST while a packet or protected packet group remains incomplete.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Ordering and Packet Reconstruction&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Flits within the same stream must remain ordered, and packet continuation must be tracked independently for every enabled stream. An incorrect model can either miss same-stream reordering or falsely impose ordering across independent streams.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Credit and Delivery Continuity&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Verification must stress packet starts near credit-pressure boundaries and ensure uninterrupted delivery where continuous mode requires it. It should also identify over-constrained arbitration that blocks legal stream insertion and reduces achievable efficiency.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kadntbe"&gt;Verification Strategy&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Protocol and Flit-Level Checking&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Sample CXSPRCLTYPE, CXSSRCID, and CXSTGTID with CXSDATA and CXSCNTL whenever CXSVALID is high. Check identity stability across multi-flit packets, common identity for every packet packed into one flit, and the independent correctness of START, END, pointer, and ENDERROR fields.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Stream-Aware Scoreboarding&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Key scoreboard state by the complete enabled stream identity: protocol type for earlier configurations, or protocol type with source and target identifiers for issue D. Track packet continuation, expected bytes, protected packet-group state, ordering, and insertion permission independently for each stream.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Credit and Continuity Stress&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Randomize credit depth and credit-grant latency, start long packets near constrained-credit conditions, and verify consecutive delivery where continuous mode requires it. Include simultaneous credit grant and use, as well as legal transitions between independent streams.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;Coverage and Negative Testing&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Cross protocol type, source ID, target ID, previous and next stream, CXSCONTINUOUSDATA, CXSLAST, packet length, flit count, packets per flit, insertion outcome, and credit conditions. Add directed violations such as mid-packet identity changes, illegal insertion, premature CXSLAST, same-stream reordering, mixed identities within a flit, reserved protocol values, and identifier-width mismatches.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kaeah2f"&gt;Cadence CXS VIP Solution&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Cadence CXS Verification IP provides protocol-compliant stimulus, monitoring, checking, coverage, and debug capabilities for interleaving across multi-protocol and multi-node configurations. It enables verification environments to generate concurrent streams, validate complete stream identities, reconstruct packets independently for each stream, and check insertion, ordering, credit, and continuous-delivery behavior.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="11" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Concurrent generation of multi-protocol and multi-node streams&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="12" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Checks for CXSPRCLTYPE, CXSSRCID, CXSTGTID, and CXSLAST rule compliance&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="13" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Stream-aware packet reconstruction and ordering validation&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="14" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Credit-pressure and continuous-delivery stress scenarios&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="15" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Functional coverage across stream identities and insertion boundaries&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="1" data-aria-posinset="16" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;Debug visibility into stream transitions, insertion points, and continuity violations&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;By mapping stream-aware stimulus, checking, coverage, and debug directly to CXS interleaving risks, Cadence CXS VIP helps teams validate both protocol compliance and end-to-end stream correctness across shared CXS fabrics.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3kaeileg"&gt;Conclusion&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;AMBA CXS evolves a wide, credited link into a scalable shared transport for multi-protocol and multi-node traffic. Through CXSPRCLTYPE, CXSLAST, CXSCONTINUOUSDATA, CXSSRCID, and CXSTGTID, CXS enables controlled interleaving while preserving stream ordering, route identity, packet reconstruction, and required contiguity.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Because correctness depends on interactions across packets, flits, node routes, credits, and insertion boundaries, verification must be stateful and stream-aware. Cadence CXS VIP provides the stimulus, checking, coverage, and debug capabilities needed to verify these interactions as designs scale from point-to-point protocol links to multi-node fabrics.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;For more information on Cadence CXS Verification IP, visit the&lt;strong&gt;&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html" rel="noopener noreferrer" target="_blank"&gt;Cadence Simulation Verification IP Page&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;strong&gt;For additional clarification or technical assistance: &lt;/strong&gt;&lt;u&gt;talk_to_vip_expert@cadence.com.&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364411&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chiplet">chiplet</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/cxs_2D00_streaming">cxs-streaming</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Arm%2bNeoverse%2bCMN">Arm Neoverse CMN</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/ARM">ARM</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/CXS_2D00_D">CXS-D</category></item><item><title>Why LLMs Are the Best Thing to Happen to Chip Design</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-llms-are-the-best-thing-to-happen-to-chip-design</link><pubDate>Tue, 29 Sep 2026 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:c4bee109-8a70-4118-9994-864bb4491a23</guid><dc:creator>Corporate</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;em&gt;By Kartik Hegde, Sr. Engineering Group Director&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We live in a world increasingly shaped by artificial intelligence (AI). At the heart of this revolution lies a piece of technology that most people never see: the chip.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6114.Macro_5F00_of_5F00_Silicon_5F00_wafers_5F00_Low_2D00_D_5F00_blue_5F00_background_5F00_B_2D00_640x426_2D00_6897ad5.png" /&gt;&lt;/p&gt;
&lt;p&gt;Fueled by Moore&amp;#39;s Law, compute-per-dollar and compute-per-watt have improved by more than &lt;em&gt;a million times&lt;/em&gt; over the past few decades. These massive gains have enabled us to train large AI models on vast datasets, unlocking capabilities we once only imagined, including the large language models (LLMs) that power today&amp;#39;s most advanced AI applications.&lt;/p&gt;
&lt;p&gt;There is growing evidence that scaling laws are continuing to hold true for AI models. Increasing the compute used for training by an order of magnitude can result in a generational leap in model performance, as depicted by the graph above. As such, in the pursuit of artificial general intelligence (AGI), nearly every major tech company is now racing to build massive compute infrastructure to train these next-generation models.&lt;/p&gt;
&lt;p&gt;If chips are so fundamental to achieving AGI, why isn&amp;#39;t every large AI company building its own? The answer: They are. In fact, there are more companies building custom silicon today than ever before!&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rc13s0"&gt;Custom Silicon: Two-Year Minimum, 100+ Engineers&lt;/h2&gt;
&lt;p&gt;While there is a massive interest in building custom silicon for applications like AI, designing and taping out a chip continues to be a Herculean task. It demands immense engineering effort&amp;mdash;estimated at over 1,000 engineering months for an ASIC of typical complexity. Additionally, companies must identify and hire rare talent with expertise across various phases of chip design and have a leadership team willing to invest capital while bearing significant risk.&lt;/p&gt;
&lt;p&gt;So, what makes chip design today so complex? Let&amp;#39;s find out.&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rc13t1"&gt;Historical Perspective: Shifting Bottlenecks&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Key Insight: Pioneering work in EDA in synthesis, place and route, and HDLs over the last few decades has shifted the bottleneck to chip verification.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To understand the complexity of chip design today, let&amp;#39;s first outline the key steps in designing a chip. We&amp;#39;ll then travel back in time to examine the historical perspective of how bottlenecks in the chip design process have shifted.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34rc13t2"&gt;Key Stages of Chip Design&lt;/h3&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6835.Engineering-hours1.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Specification and architecture: Capture functional goals, PPA targets, and draft a high-level micro-architecture that meets the product requirements.&lt;/li&gt;
&lt;li&gt;Design and RTL development: Implement the architecture in an HDL (e.g., Verilog), writing clean, synthesizable RTL with clear timing and power intent.&lt;/li&gt;
&lt;li&gt;Functional verification: Use simulation, formal, and emulation to exhaustively prove the RTL behaves as intended before silicon dollars are at stake.&lt;/li&gt;
&lt;li&gt;Logic design and synthesis: Translate RTL into a gate-level netlist with constraints, optimizing for area, power, and timing while meeting foundry libraries.&lt;/li&gt;
&lt;li&gt;Physical design: Floorplan, place, clock-tree, and route the netlist; run STA, DRC/LVS, and power-integrity checks to produce tape-out-ready GDSII.&lt;/li&gt;
&lt;li&gt;Packaging and test: Define I/O ring and package, insert scan/BIST for manufacturability, and prepare ATE vectors for wafer sort, assembly, and final silicon validation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are wondering which stage takes more effort and engineering hours, the answer depends on when in history you&amp;#39;re asking.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34rc13t3"&gt;The 1980-2000s: Optimizing Logic Synthesis and Place and Route&lt;/h3&gt;
&lt;p&gt;Back in the 1980s, when chips had only a few thousand transistors, the design process looked very different from how it does today. Engineers designed circuits and placed transistors by hand. As the number of transistors grew, this approach quickly became unscalable. The emergence of electronic design automation (EDA) transformed the industry, diminishing manual effort and enabling designers to build much larger and more complex chips.&lt;/p&gt;
&lt;p&gt;Additionally, the emergence of hardware description languages (HDL) like Verilog in 1986 abstracted away low-level circuit details (much like C and C++ did for assembly programming), allowing engineers to focus on architecture and logic. A combination of HDLs and EDA significantly boosted designer productivity, enabling the production of the massive chips we see today.&lt;/p&gt;
&lt;p&gt;In parallel, Moore&amp;#39;s Law continued to fuel the semiconductor industry, doubling the number of transistors every two years at the same cost. The availability of these transistors led to scaling the number of cores on a chip and increased the complexity of the architecture.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/4377.Transistor-Growth.png" /&gt;&lt;/p&gt;
&lt;p&gt;To summarize:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;EDA tools emerged to address difficulties in place and route (P&amp;amp;R) and logic synthesis.&lt;/li&gt;
&lt;li&gt;HDLs made it easier to design logic and resulted in a major productivity boost.&lt;/li&gt;
&lt;li&gt;Availability of more transistors enabled chip designers to build more complex, higher-performance chips.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The net effect of these factors is clear from the figure above: In the last three decades, innovations in chip design methodologies and Moore&amp;#39;s Law have delivered us massive, multi-billion-transistor chips. Evolving maturity of EDA tools for synthesis and P&amp;amp;R continued to support the growth of chips in size and complexity. As such, the key bottlenecks in chip design shifted to the earlier stages of the flow: functional verification, logic design, and architectural innovation.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34rc13t4"&gt;2000s and Beyond: Increasing Complexity of Functional Verification&lt;/h3&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/Engineer-Effort1.png" /&gt;&lt;/p&gt;
&lt;p&gt;As chips grew larger and more complex, ensuring the functional correctness of the RTL became more cumbersome. Today, functional verification accounts for most of the effort in chip development, often as much as 60&amp;ndash;70%. These are complex, human-driven processes involving deep architectural reasoning, edge-case testing, and a careful understanding of constraints.&lt;/p&gt;
&lt;p&gt;Verification has expanded into a multi-layered, multi-method process that spans both the pre-silicon and post-silicon stages. Below are some examples of how verification approaches might vary:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Design Hierarchy&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Block-level verification (unit testing)&lt;/li&gt;
&lt;li&gt;Subsystem-level verification&lt;/li&gt;
&lt;li&gt;Chip/system-level verification&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Methodology&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simulation&lt;/li&gt;
&lt;li&gt;Formal verification&lt;/li&gt;
&lt;li&gt;Emulation&lt;/li&gt;
&lt;li&gt;Gate-level simulation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Abstraction Level&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spec-level (e.g., natural language or executable spec)&lt;/li&gt;
&lt;li&gt;RTL-level&lt;/li&gt;
&lt;li&gt;Netlist-level&lt;/li&gt;
&lt;li&gt;Post-layout (SPICE-level)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Verification Intent&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Functional verification (does it do what it&amp;#39;s supposed to?)&lt;/li&gt;
&lt;li&gt;Structural verification (e.g. connectivity, lint, DRC, CDC, RDC)&lt;/li&gt;
&lt;li&gt;Power-aware verification (UPF/CPF checks)&lt;/li&gt;
&lt;li&gt;Security verification (e.g. side channels, isolation)&lt;/li&gt;
&lt;li&gt;Timing verification (e.g. static timing analysis)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Environment&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pre-silicon (simulation/emulation)&lt;/li&gt;
&lt;li&gt;Post-silicon (bring-up, system validation, in-field testing)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each stage plays a critical role in ensuring correctness as complexity scales. The combinatorial explosion here is real: a chip with n transistors can theoretically exist in 2ⁿ possible states. For a chip with 1 billion transistors (10⁹), the number of possible binary states is 10^{3.0 x 10^{8}} , which is incomprehensibly larger than any physical quantity we can observe! While most of these states are irrelevant or unreachable in practice, this exponential growth gives a sense of the overwhelming complexity of verifying modern chips.&lt;/p&gt;
&lt;h3 id="mcetoc_1k34relbq5"&gt;It&amp;#39;s Getting Harder&amp;mdash;And More Costly&amp;mdash;To Build Chips&lt;/h3&gt;
&lt;p&gt;The challenges continue. It is taking more time and effort to build next-generation chips than before. There are three key drivers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Moore&amp;#39;s Law continues to add more transistors, meaning ever-larger chips&lt;/li&gt;
&lt;li&gt;Specialization continues to increase, and algorithms grow more complex&lt;/li&gt;
&lt;li&gt;Complexity grows, yet at smaller nodes and with more stringent power budgets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these are directly leading to increasing functional verification efforts. Failing to solve the verification bottleneck is not an option for fast-moving chip design teams today.&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rgk6a6"&gt;How LLMs Are Changing the Chip Design Game&lt;/h2&gt;
&lt;h3 id="mcetoc_1k34rgo7t7"&gt;AI Is Not New to Chip Design. What&amp;#39;s Different This Time?&lt;/h3&gt;
&lt;p&gt;AI has been used in chip design&amp;mdash;most notably for placement and routing tasks, which lend themselves well to black-box optimization techniques like reinforcement learning. They have been shown to improve the chip design flow. Given that the stages of synthesis, P&amp;amp;R, etc., have already been automated to a large extent, applying AI here offers only marginal gains and fails to address the true bottleneck: the cognitive effort required to design and verify chips.&lt;/p&gt;
&lt;h3 id="mcetoc_1k356iohq0"&gt;&lt;strong&gt;Why didn&amp;#39;t the industry create a tool for automating verification as well, much like synthesis?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The answer is simple: Design and verification are fundamentally natural language reasoning problems. Engineers must understand specifications, reason through architectural intent, and ensure that implementation aligns with that intent. All of these tasks involve processing, generating, and interpreting human language. Historically, there has not been a technology to automate this part, hence it has always been manual.&lt;/p&gt;
&lt;p&gt;This is where LLMs come in. LLMs excel at precisely what design and verification need: natural language understanding and reasoning. With LLMs, understanding the design intent, figuring out what to test, writing code, employing agentic approaches to run the right tools, debugging the failures, and finding coverage holes have all become possible. These new capabilities have galvanized our team to pioneer the next generation of verification tooling.&lt;/p&gt;
&lt;p&gt;There is a lot of excitement in this rapidly evolving landscape, but there are also many more questions to be answered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How should&amp;mdash;or how must&amp;mdash;chip design methodology change in the era of LLMs?&lt;/li&gt;
&lt;li&gt;How much of the design and verification process can be successfully automated?&lt;/li&gt;
&lt;li&gt;How will the roles of human engineers evolve and change alongside their new AI &amp;quot;colleagues&amp;quot;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; and a whole host of other queries that we, as an industry, have not even considered yet.&lt;/p&gt;
&lt;h2 id="mcetoc_1k34rj2kh8"&gt;The Road Ahead: Rise of New Abstractions for Chip Design&lt;/h2&gt;
&lt;p&gt;As chips grow in complexity and the demand for compute continues to surge, LLMs may become essential not only to AI workloads but also to the hardware that enables them. These models have the potential to transform chip design itself, closing the loop between silicon and software in ways we&amp;#39;ve never seen before.&lt;/p&gt;
&lt;p&gt;I believe chip design is poised for another &amp;quot;Verilog moment&amp;quot;&amp;mdash;a shift to a higher level of abstraction. We expect a move beyond RTL to a new representation that allows engineers to express intent more intuitively, potentially through natural language rather than rigid syntax. We refer to this as the &amp;quot;mental model,&amp;quot; and we&amp;#39;re actively researching how to make it a practical reality.&lt;/p&gt;
&lt;p&gt;The future of AI will be shaped by the chips we build&amp;mdash;and, soon, those chips may be shaped by the AI we have trained. It&amp;#39;s a two-way street. This cycle promises to accelerate innovation in both silicon and software, bringing us closer to the next generation of computing capabilities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learn more about the &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/chipstack-ai-superagent.html"&gt;Cadence &lt;/a&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/chipstack-ai-superagent.html"&gt;ChipStack AI Super Agent&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364390&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/featured">featured</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/chip%2bdesign">chip design</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AGI">AGI</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/LLMs">LLMs</category></item><item><title>GDDR7: Highlights of Memory of Choice for Graphics and High Bandwidth Apps</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/gddr7-feature-highlights-of-memory-of-choice-for-graphics-high-bandwidth-apps</link><pubDate>Sat, 26 Sep 2026 06:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:42ef9546-f064-479e-af88-c84ae4380c93</guid><dc:creator>Shyam Sharma</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Graphics Double Data Rate 7 (GDDR7) Synchronous Graphics Random Access Memory (SGRAM) is the latest generation of the Graphics DDR memory that is used in applications like graphics cards, high compute data centers. GDDR devices are also increasingly being used in artificial intelligence (AI) accelerators where bandwidth and performance are key requirements.&lt;/p&gt;
&lt;p&gt;This blog talks about the key features of the GDDR7 device standard, the latest version of which, JESD239F, was released by JEDEC in August 2026.&lt;/p&gt;
&lt;h2&gt;GDDR7-Based System Architecture&lt;strong&gt;&lt;u&gt;&lt;img class="align-right" style="float:right;max-height:227px;max-width:340px;" alt=" " src="https://community.cadence.com/resized-image/__size/680x454/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5141.Gddr7.png" /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;GDDR7 SGRAM devices support densities of 16GB through 128GB range with the 266-ball BGA package. A GDDR7 device memory subsystem typically contains &lt;strong&gt;four fully independent byte-wide channels&lt;/strong&gt;. Each channel has its own point-to-point command/address, data, error, and read-clock interfaces. A channel contains &lt;strong&gt;16 banks256-bit internal array&lt;/strong&gt;￼&lt;strong&gt; access&lt;/strong&gt;, and a &lt;strong&gt;32n&lt;/strong&gt;. The normal physical organization can be configured at reset as either four active channels or two active channels. In 2-channel mode, channels B and D are inactive, and their high-speed signals remain High-Z; this enables clamshell PCB topologies using channels A and C from devices mounted on opposite sides of the board.&lt;/p&gt;
&lt;h2&gt;Device Feature Overview&lt;/h2&gt;
&lt;h3&gt;Channel Operation&lt;/h3&gt;
&lt;p&gt;Each active channel uses a differential &lt;strong&gt;WCK_t/WCK_c&lt;/strong&gt; input for command/address capture, write-data capture, and read-data timing generation. Internally, &lt;strong&gt;CK4&lt;/strong&gt; is WCK divided by four and is the reference for cycle-based latencies and command timing. Commands that span more than one CK4 cycle use the last CK4 cycle as the timing reference. The output &lt;strong&gt;RCK_t/RCK_c&lt;/strong&gt; read clock is edge-aligned with read data and may be differential or single-ended, always on, started by a read, started explicitly with RCKSTRT, or disabled.&lt;/p&gt;
&lt;p&gt;The command/address interface is packetized over five single-ended NRZ inputs, &lt;strong&gt;CA[&lt;/strong&gt;&lt;strong&gt;4:0]&lt;/strong&gt;. CA[2:0] forms a semi-independent row-command path, and CA[4:3] forms a column-command path. This allows row and column commands to overlap when command legality and all timing constraints are satisfied. The protocol supports single- and multi-CK4-cycle commands, with separate NOP encodings for ordinary command slots and transition sequences.&lt;/p&gt;
&lt;h3&gt;Data Interface, PAM3 Encoding, and Signaling&lt;/h3&gt;
&lt;p&gt;GDDR7 supports two data modes. &lt;strong&gt;PAM3&lt;/strong&gt; is the high-bandwidth mode and uses DQ[9:0] plus DQE. &lt;strong&gt;NRZ&lt;/strong&gt; is the lower-speed, lower-power mode and uses DQ[7:0] plus DQE; DQ[9:8] are disabled. Both modes transfer a 256-bit user payload per channel access. A burst is 16 PAM3 symbols or 32 NRZ bits.&lt;/p&gt;
&lt;h3&gt;PAM3 Mode&lt;/h3&gt;
&lt;p&gt;PAM3 represents each unit interval with one of three levels: &lt;strong&gt;+1, 0, or -1&lt;/strong&gt;. With nominal 1.2 V VDDQ, the nominal signaling levels correspond to 100%, 75%, and 50% of VDDQ. Internally, the trits use two-bit representations: 11 for +1, 01 for 0, and 00 for -1; 10 is invalid. At an illustrative 7 GHz WCK, data operates at 14 Gbaud per pin, equivalent to 28 Gb/s over each effective binary data lane and 28 GB/s per channel.&lt;/p&gt;
&lt;p&gt;A complete PAM3 burst contains &lt;strong&gt;176 symbols&lt;/strong&gt; across 11 physical data signals. The data and metadata are packed through several codecs like &lt;strong&gt;11b7S, 3b2S, 2b1S,&lt;/strong&gt; etc.&lt;/p&gt;
&lt;h3&gt;Command, Clock, and Configuration Model&lt;/h3&gt;
&lt;p&gt;The CA interface is SDR relative to WCK and packetizes commands over CA[4:0]. GDDR7 separates an 11-bit row-command path on CA[2:0] from a 7-bit column-command path on CA[4:3], allowing compatible row and column commands to be issued in parallel. Core operations include ACT, RD/RDA, WR/WRA, PREpb/PREab, REFab/REFpb, RFM, MRS, IRD, power-state commands, and training commands.&lt;/p&gt;
&lt;p&gt;CABI limits low-going CA activity to reduce command-bus power. CAPAR supplies even parity across the command packet. With CAPARBLK, commands are held until parity is validated; a parity failure blocks execution and drives recovery into CA training with self-refresh. CSP aligns the internal CK4 phase to the host&amp;rsquo;s four-UI command boundary after CA-training or sleep exit. Optional CSP feedback on ERR lets the controller confirm that CSP was captured before normal traffic resumes.&lt;/p&gt;
&lt;p&gt;Sixty-four mode-register addresses are available. MR0&amp;ndash;MR47 are standardized or reserved; MR48&amp;ndash;MR63 are vendor-specific. Key controls cover PAM3/NRZ selection, read/write CRC, poison, and severity, RL/WL, RCK behavior, termination and driver strength, voltage references, CTLE/DFE/TX equalization, refresh management, training patterns, ECC test, and hPPR. MR10&amp;ndash;MR15 are frequency-dependent registers whose updates can be deferred until a sleep transition.&lt;/p&gt;
&lt;h3&gt;Data Integrity, Electrical Limits, Package, and Implementation Guidance&lt;/h3&gt;
&lt;p&gt;GDDR7 layers protection mechanisms across command, link, data path, and array:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRC:&lt;/strong&gt; Separate read and write link CRCs use two interleaved CRC-9 engines with polynomial 0x14B over even and odd 164-bit groups, producing 18 checksum bits. The scheme detects all single-, double-, and triple-bit errors, about 99.95% of four-bit errors, and about 99.99% of random burst errors. Write CRC failures are reported on ERR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On-die ECC:&lt;/strong&gt; Minimum capability per 256-bit access is 100% single-bit correction, 100% double-bit detection, and an average 99.3% detection for errors of three or more bits. Corrected data is returned on reads, but ordinary reads don&amp;rsquo;t scrub the array. Severity metadata reports uncorrectable errors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto ECS:&lt;/strong&gt; Background Error Check and Scrub reads codewords, corrects correctable errors, writes corrected codewords back, and logs correctable/uncorrectable events. It operates in REFab(TR=L), Self Refresh(TR=L), or Self Refresh Sleep when enabled. The required average ECS interval tightens with channel density, from 5.15 ms at 4 Gb/channel to 0.64 ms at 32 Gb/channel for a 24-hour full sweep.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Poison:&lt;/strong&gt; The host marks a 256-bit packet as known bad; the status is stored under ECC protection and returned on reads. Severity overrides poison when both occur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CAPAR/CAPARBLK:&lt;/strong&gt; Even parity covers the full 20-bit CA packet after CABI processing. Without blocking, a parity error is reported, but the decoded command still executes. With CAPARBLK, the bad command and its paired row/column command are suppressed, subsequent commands are blocked, and the device completes internal work before automatically entering CA Training with Self Refresh.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ERR:&lt;/strong&gt; A PAM3 output in both data modes. +1 means no error, 0 reports WRCRC/DPP parity or optional severity, and -1 reports CAPAR, which has priority.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DPP:&lt;/strong&gt; Optional end-to-end internal Data Path Protection adds parity across regions between on-die ECC and link CRC coverage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;hPPR:&lt;/strong&gt; Permanent row repair protected by a four-command MR31 guard key. The controller must verify spare availability, idle all channels, stop RCK, program at 200&amp;ndash;2000 MHz, allow a 2s programming interval, reset, and verify the repaired row.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSP feedback:&lt;/strong&gt; Optional CSP Feedback acknowledges the CSP command after exiting sleep mode, self-refresh sleep mode, or CA bus training. The feedback is transferred to the host by an ERR signal, informs it whether the CSP was properly detected, and whether it is safe to continue with normal operation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nominal 1.2 V operation specifies VDD and VDDQ of 1.164&amp;ndash;1.236 V and VPP of 1.746&amp;ndash;1.908 V. An optional 1.1 V range uses 1.067&amp;ndash;1.133 V for VDD/VDDQ. Absolute maxima are -0.3 to 1.5 V for VDD/VDDQ and -0.3 to 2.3 V for VPP. HBM and CDM minimum ESD targets are 1000 V and 250 V. GDDR7 relies on vendor-specific AC values, and system validation for jitter, channel loss, supply noise, and timing margin.&lt;/p&gt;
&lt;p&gt;Cadence VIPs offers a comprehensive memory subsystem solution that includes memory models for all generations of Graphics DDR devices (with GDDR7 being the latest), compliant to JEDEC specifications defined for each of those devices, DFI Memory Controller/PHY VIPs and a System Performance Analyzer (SPA) for GDDR devices.&lt;/p&gt;
&lt;p&gt;If you have any queries, feel free to contact us at &lt;a href="mailto:talk_to_vip_expert@cadence.com"&gt;talk_to_vip_expert@cadence.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;More information on Cadence GDDR7 VIP is available at &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/memory-models/dram/gddr7.html"&gt;Cadence VIP Memory Models Website&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364405&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/gddr6">gddr6</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/JEDEC">JEDEC</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DFI">DFI</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/GDDR">GDDR</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DRAM">DRAM</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Graphics%2bmemory">Graphics memory</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/memory%2bmodels">memory models</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/GDDR7">GDDR7</category></item><item><title>The Ethernet PHY We Knew, 
The UALink PHY We Needed</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/the-ethernet-phy-we-knew-the-ualink-phy-we-needed</link><pubDate>Fri, 25 Sep 2026 13:45:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:e31173a5-6f6f-4f1c-9737-3f41fca042e9</guid><dc:creator>durgarentikota</dc:creator><slash:comments>0</slash:comments><description>&lt;p id="mcetoc_1k3bj6u3p2"&gt;&lt;span class="TextRun SCXW13952559 BCX8" style="font-size:inherit;" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW13952559 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25448952 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25448952 BCX8" data-ccp-parastyle="Subtitle"&gt;&lt;span class="TextRun SCXW214231922 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW214231922 BCX8" data-ccp-parastyle="Subtitle"&gt;Same building blocks. Same lane rates. So why not just use Ethernet PHY unchanged?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW214231922 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bj61031"&gt;&lt;span class="TextRun SCXW13952559 BCX8" style="font-size:inherit;" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW13952559 BCX8" data-ccp-parastyle="heading 1"&gt;&lt;span class="TextRun SCXW25448952 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW25448952 BCX8" data-ccp-parastyle="Subtitle"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" data-contrast="none"&gt;The Myth We All Quietly Believe&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span class="EOP Selected SCXW13952559 BCX8"&gt;&lt;span class="TextRun SCXW11733292 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW11733292 BCX8"&gt;If you place an &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;&lt;strong&gt;Ethernet&lt;/strong&gt; &lt;/a&gt;PHY and a &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;UALink&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;span data-contrast="none"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11733292 BCX8"&gt;PHY side by side, the first thing you notice is not how different they are.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW11733292 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW13952559 BCX8"&gt;&lt;span class="EOP Selected SCXW11733292 BCX8"&gt;&lt;span class="TextRun SCXW67822881 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW67822881 BCX8"&gt;It is how similar they look.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW67822881 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;If &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt; already uses &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;PHY technology, why does it need a separate physical layer at all?&amp;nbsp;Why not simply use the&amp;nbsp;Ethernet&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt; &lt;/a&gt;PHY unchanged?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;It is a reasonable question.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;UALink&amp;nbsp;did not need Ethernet&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;&amp;nbsp;&lt;/a&gt;to become faster. Ethernet&amp;nbsp;already had the speed.&amp;nbsp;It did not need a completely new PMD, a new Reed-Solomon code, or a new way to train the link.&amp;nbsp;&lt;span lang="EN-US" data-contrast="none"&gt;What changed was something less obvious: &lt;/span&gt;&lt;span lang="EN-US" data-contrast="none"&gt;the rule the PHY had to obey.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW267611221 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:330px;max-width:437px;" alt=" " src="https://community.cadence.com/resized-image/__size/874x660/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/2538.pastedimage1790317117758v1.png" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bjs4ml4"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;Follow One Flit, and the Difference Appears&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span class="EOP Selected SCXW267611221 BCX8"&gt;&lt;span class="EOP Selected SCXW205094269 BCX8"&gt;&lt;span class="TextRun SCXW133804711 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW133804711 BCX8"&gt;Instead of walking through PCS, FEC, PMA, and PMD one block at a time, let us follow something the accelerator &lt;/span&gt;&lt;span class="NormalTextRun AdvancedProofingIssueV2Themed SCXW133804711 BCX8"&gt;actually cares&lt;/span&gt;&lt;span class="NormalTextRun SCXW133804711 BCX8"&gt; about:&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW133804711 BCX8"&gt;&amp;nbsp;a 640-byte DL flit.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW267611221 BCX8"&gt;&lt;span class="EOP Selected SCXW205094269 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:101px;max-width:468px;" alt=" " src="https://community.cadence.com/resized-image/__size/936x202/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3108.pastedimage1790317609690v2.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;At the data link layer, that flit is one meaningful unit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The PHY has to protect it, move it across the link, recover it at the receiver, and hand it back without losing where that flit begins or ends.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;And here, UALink makes the decision that changes the rest of the story.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:72px;max-width:527px;" alt=" " src="https://community.cadence.com/resized-image/__size/1054x144/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/7823.pastedimage1790317697699v4.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet does not require packet boundaries to line up with FEC-codeword boundaries.&lt;/span&gt; &lt;span data-contrast="none"&gt;A packet could begin in one codeword and end in another, and the PHY would not care.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink deliberately creates a fixed relationship between a 640-byte DL flit and a single RS(544,514) codeword.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Once that rule exists, anything that inserts, removes, delays, or rearranges data has to respect the flit boundary.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:129px;max-width:352px;" alt=" " src="https://community.cadence.com/resized-image/__size/704x258/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/7823.pastedimage1790317787122v5.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The arithmetic explains why this relationship works.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;A 640-byte DL flit contains 5120 payload bits. After 64B/66B encoding and 256B/257B transcoding, the information expands to exactly 514 ten-bit Reed-Solomon symbols. Adding 30 parity symbols produces a 544-symbol RS(544,514) codeword.&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW143134955 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW143134955 BCX8"&gt;Now our flit has armor.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW143134955 BCX8"&gt;&lt;span class="SCXW143134955 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span class="TextRun SCXW143134955 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW143134955 BCX8"&gt;But keeping that armor wrapped around exactly one flit creates the first problem.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW143134955 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bk4acp5"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;The First Thing Ethernet Already Solved &amp;mdash; Until It Didn&amp;#39;t&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet already knows how to align lanes.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Alignment markers help the receiver identify lanes, remove skew, and restore the correct lane order.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="TextRun SCXW237253125 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW237253125 BCX8"&gt;So why would &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW237253125 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW237253125 BCX8"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW237253125 BCX8"&gt;touch something that already works?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW237253125 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Because Ethernet inserts alignment markers into the PCS data stream without caring about packet boundaries.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink cannot do that.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;If an alignment marker were inserted using the traditional Ethernet mechanism, the carefully maintained DL-Flit-to-codeword relationship would be disturbed.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;To solve this, UALink introduces a coordinated RS and PCS mechanism.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="1" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;RS generates a &amp;#39;Start Flit Code Sequence&amp;#39;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="2" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;PCS recognizes that sequence&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="3" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;PCS overwrites specific 257-bit blocks with Ethernet alignment markers&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="4" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;On receive, PCS reconstructs the marker-containing interval as an AM flit code sequence&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="10" data-aria-posinset="5" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;RS uses that sequence to recover DL flit phase&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The alignment markers on the wire are unchanged from Ethernet. What changes is the mechanism used to introduce and recover them.&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;span class="TextRun SCXW234353928 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW234353928 BCX8"&gt;Same Ethernet alignment markers. Different handling around the flit.&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW234353928 BCX8"&gt;&lt;span class="SCXW234353928 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW234353928 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW234353928 BCX8"&gt;UALink &lt;/span&gt;&lt;span class="NormalTextRun SCXW234353928 BCX8"&gt;did not reinvent the marker. It changed how the PHY makes room for it.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW234353928 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;span class="EOP Selected SCXW234353928 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:176px;max-width:293px;" alt=" " src="https://community.cadence.com/resized-image/__size/586x352/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5265.pastedimage1790317905135v6.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;The special start sequence also has to remain recognizable before the PCS replaces part of it with alignment markers.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;That is why the relevant leading blocks bypass scrambling:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="1" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;100G: first 20 &amp;times; 64B/66B blocks&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="2" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;200G: first 4 &amp;times; 256B/257B blocks&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="3" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;400G: first 8 &amp;times; 256B/257B blocks&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li data-font="Symbol" data-listid="4" data-aria-posinset="4" data-aria-level="1"&gt;&lt;span data-contrast="none"&gt;800G: first 8 &amp;times; 256B/257B blocks per flow&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="NormalTextRun SCXW78124777 BCX8"&gt;The receiver performs the corresponding descrambler bypass and then &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW78124777 BCX8"&gt;resumes with&lt;/span&gt;&lt;span class="NormalTextRun SCXW78124777 BCX8"&gt; the correct state.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bk7qk36"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;Coming Back Is Harder&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Transmit knows exactly where every flit begins.&lt;/span&gt;&lt;span&gt;&amp;nbsp;The r&lt;/span&gt;eceiver does not.&amp;nbsp;&lt;span data-contrast="none"&gt;The receiver sees lanes arriving with possible skew, encoded codewords, alignment markers, and a continuous stream of blocks.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Ethernet alignment markers already answer:&amp;nbsp;&lt;/span&gt;&lt;span class="TextRun SCXW80663567 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW80663567 BCX8"&gt;Which lane is this, and how should the lanes be lined up?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW80663567 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="EOP SCXW80663567 BCX8"&gt;&lt;span class="TextRun SCXW77232424 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW77232424 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt;needs one &lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt;additional&lt;/span&gt;&lt;span class="NormalTextRun SCXW77232424 BCX8"&gt; answer:&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW77232424 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW80663567 BCX8"&gt;&lt;span class="EOP Selected SCXW77232424 BCX8"&gt;&lt;span class="TextRun SCXW192307946 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW192307946 BCX8"&gt;Where does the next 640-byte DL &lt;/span&gt;&lt;span class="NormalTextRun SCXW192307946 BCX8"&gt;flit&lt;/span&gt;&lt;span class="NormalTextRun SCXW192307946 BCX8"&gt; begin?&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW192307946 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;After the PCS establishes alignment, the marker-containing interval is reconstructed as an AM Flit Code Sequence.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The RS recognizes it and establishes the nominal flit phase.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;From there, the receiver can count the stream in groups of 80 blocks, which is equivalent to one DL flit opportunity.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:72px;max-width:547px;" alt=" " src="https://community.cadence.com/resized-image/__size/1094x144/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5265.pastedimage1790318014534v7.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&lt;span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:422px;max-width:281px;" alt=" " height="422" src="https://community.cadence.com/resized-image/__size/562x844/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1715.Designer-_2800_4_2900_.png" width="281" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bkaqhp7"&gt;&lt;span lang="EN-US" data-contrast="none"&gt;Then Latency Enters the Story&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="EOP Selected SCXW42889860 BCX8"&gt;&lt;span class="TextRun SCXW192900041 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW192900041 BCX8"&gt;Our &lt;/span&gt;&lt;span class="NormalTextRun SCXW192900041 BCX8"&gt;flit&lt;/span&gt;&lt;span class="NormalTextRun SCXW192900041 BCX8"&gt; is protected.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW192900041 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;It is aligned.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;But there is another question:&amp;nbsp;&lt;/span&gt;&lt;span class="TextRun SCXW69065632 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW69065632 BCX8"&gt;How long does it &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW69065632 BCX8"&gt;have&lt;/span&gt;&lt;span class="NormalTextRun SCXW69065632 BCX8"&gt; to wait?&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW69065632 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;span data-contrast="none"&gt;The answer involves FEC interleaving.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Interleaving spreads adjacent symbols across multiple codewords so burst errors become easier to correct. The tradeoff is additional latency because codewords become dependent on one another.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="max-height:130px;max-width:498px;" alt=" " height="130" src="https://community.cadence.com/resized-image/__size/996x260/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/5265.pastedimage1790318217608v9.png" width="498" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:207px;max-width:422px;" alt=" " height="207" src="https://community.cadence.com/resized-image/__size/844x414/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/4530.pastedimage1790322367169v3.png" width="422" /&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="max-height:346px;max-width:452px;" alt=" " src="https://community.cadence.com/resized-image/__size/904x692/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/8244.Picture14.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;em&gt;&lt;span class="TextRun SCXW163842132 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt;Figure: Standard Ethernet combines PCS symbol distribution with an &lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt;additional&lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt; PMA delay to produce 4-way interleaving. &lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align:left;"&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW163842132 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW163842132 BCX8"&gt;UALink&amp;#39;s&lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt; reduced modes remove the PMA delay and, for 1-way mode, also remove &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW163842132 BCX8"&gt;PCS&lt;/span&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt; pre-FEC distribution.&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW163842132 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW163842132 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW9692970 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt;In the reduced 2-way paths, &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW9692970 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt; removes the &lt;/span&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt;additional&lt;/span&gt;&lt;span class="NormalTextRun SCXW9692970 BCX8"&gt; PMA two-codeword delay.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW9692970 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;span class="EOP Selected SCXW163842132 BCX8"&gt;&lt;span class="EOP Selected SCXW9692970 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/8080.pastedimage1790318338320v12.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The tradeoff is intentional.&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;Less interleaving &amp;rarr; lower latency.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="none"&gt;More interleaving &amp;rarr; better burst-error spreading.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet&amp;#39;s choice was not wrong.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;UALink simply needed another choice.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bkkh5e8"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW234743411 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW234743411 BCX8" data-ccp-parastyle="heading 1"&gt;The Problem Ethernet Gets for Free&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW234743411 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Ethernet packets naturally leave gaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Those gaps provide Idle blocks, giving the PHY convenient places to absorb small clock differences.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink&amp;#39;s normal data path can instead look like this:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&amp;nbsp;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:88px;max-width:307px;" alt=" " src="https://community.cadence.com/resized-image/__size/614x176/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/6505.pastedimage1790321834830v1.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Where does rate matching happen if there are no natural gaps?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink solves this by creating its own opportunities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The RS periodically inserts an i&lt;/span&gt;dle flit code sequence&lt;span data-contrast="none"&gt;.&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;UALink solves this by creating its own opportunities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;The RS periodically inserts an i&lt;/span&gt;dle flit code sequence.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;span class="EOP Selected SCXW163842132 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:194px;max-width:430px;" alt=" " src="https://community.cadence.com/resized-image/__size/860x388/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3603.pastedimage1790318399098v13.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;In the applicable operating states, the RS provides an idle flit code sequence for every 1,024 codewords, unless that position is being used for an alignment-marker opportunity.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Rate matching can then add or remove Idle blocks at safe locations.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:75px;max-width:515px;" alt=" " src="https://community.cadence.com/resized-image/__size/1030x150/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3603.pastedimage1790318426744v14.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bkmu479"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW157897049 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW157897049 BCX8" data-ccp-parastyle="heading 1"&gt;Back-to-Back Does Not Mean Boundary-Free&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;A normal UALink data flit already occupies one complete 80-block unit.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;So, another flit can immediately follow it.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:99px;max-width:401px;" alt=" " src="https://community.cadence.com/resized-image/__size/802x198/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/3603.pastedimage1790318457589v15.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;No new Ethernet start delimiter.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;No terminate delimiter.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;No mandatory inter-frame gap.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Control sequences occupy complete flit opportunities only when the PHY needs them for alignment-marker handling, rate matching, Idle behavior, or fault signaling.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bko64ea"&gt;&lt;strong&gt;&lt;span class="TextRun SCXW162502238 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW162502238 BCX8" data-ccp-parastyle="heading 1"&gt;What &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW162502238 BCX8" data-ccp-parastyle="heading 1"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW162502238 BCX8" data-ccp-parastyle="heading 1"&gt; Refused to Reinvent&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW162502238 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;After seeing all these changes, it is easy to think UALink created a completely new PHY.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;It did not.&amp;nbsp;&lt;span data-contrast="none"&gt;UALink kept the parts the Ethernet had already solved well.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:201px;max-width:482px;" alt=" " height="201" src="https://community.cadence.com/resized-image/__size/964x402/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1055.pastedimage1790318525008v16.png" width="482" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span data-contrast="none"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:81px;max-width:563px;" alt=" " height="81" src="https://community.cadence.com/resized-image/__size/1126x162/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1055.pastedimage1790318586599v17.png" width="563" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;span class="TextRun SCXW20099292 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt;Inner FEC is conditional.&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW20099292 BCX8"&gt;&lt;span class="SCXW20099292 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW20099292 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt;It should only be shown where the selected IEEE PHY &lt;/span&gt;&lt;span class="NormalTextRun AdvancedProofingIssueV2Themed SCXW20099292 BCX8"&gt;actually uses&lt;/span&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt; it; it is not a universal &lt;/span&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt;UALink&lt;/span&gt;&lt;span class="NormalTextRun SCXW20099292 BCX8"&gt; KR/CR payload-path stage.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW20099292 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&lt;span data-contrast="none"&gt;&lt;span class="EOP Selected SCXW20099292 BCX8"&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:198px;max-width:284px;" alt=" " src="https://community.cadence.com/resized-image/__size/568x396/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1055.pastedimage1790318617921v18.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k3bksq5sb"&gt;&lt;strong&gt;&lt;span class="EOP Selected SCXW20099292 BCX8"&gt;&lt;span class="TextRun SCXW265157062 BCX8" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW265157062 BCX8" data-ccp-parastyle="heading 1"&gt;One Last Thing&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW265157062 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;We started with a myth:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;If &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;uses the same sublayers and the same speeds as &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet&lt;/a&gt;, why not simply use &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;PHY unchanged?&amp;nbsp;Now the answer is clearer.&amp;nbsp;The same building blocks do not mean the same behavior.&amp;nbsp;&lt;span data-contrast="none"&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;already had speed.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;It already had PAM4, RS-FEC, alignment markers, lane recovery, auto-negotiation, and link training.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;UALink&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;did not need to reinvent those things.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;What it needed was for those familiar mechanisms to obey a different rule:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Keep the flit together.&amp;nbsp;&lt;span data-contrast="none"&gt;Once one 640-byte DL flit became associated with one protected FEC codeword, everything around that relationship had to cooperate.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;Alignment marker handling changed. Receive synchronization gained a flit boundary. Reduced-interleave options appeared. Rate matching moved to safe opportunities. Back-to-back traffic followed a fixed 80-block rhythm.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Not because &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;failed.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;Because &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ethernet/ethernet-16t.html"&gt;Ethernet &lt;/a&gt;was solving a different problem, and&lt;/span&gt;&lt;span&gt;&amp;nbsp;t&lt;/span&gt;he Ethernet PHY we knew already knew how to move bits fast.&amp;nbsp;The &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;PHY we needed taught those same building blocks how to move flits predictably.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;Testing this carefully coordinated PHY behavior requires more than checking that bits move across the link. Verification must prove that the DL-flit-to-FEC-codeword relationship is preserved, alignment-marker opportunities are handled without breaking flit phase, receive logic can recover the correct 640-byte boundary, reduced-interleave modes behave as intended, and rate matching occurs only at safe Idle Flit Code Sequence locations. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;Cadence &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;UALink&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;VIP helps verification teams &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;validate&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; this end-to-end behavior with flit-aware and protocol-aware visibility across the stack, from UPLI down to PHY. Teams can drive realistic traffic, &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;monitor&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;flit&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;/codeword alignment, exercise marker and idle-sequence scenarios, inject malformed conditions, and &lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;validate&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; recovery behavior&amp;mdash;turning &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;&lt;b&gt;UALink&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;PHY architecture into measurable proof of design robustness. To integrate this validation capability into your environment, &lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;contact Cadence Support, visit the &lt;/span&gt;&lt;/span&gt;&lt;a class="Hyperlink SCXW142711385 BCX8" href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html" rel="noopener noreferrer" target="_blank"&gt;&lt;span class="TextRun Underlined SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8" data-ccp-charstyle="Hyperlink"&gt;Simulation VIP for UALink&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; product page, or explore the wider range of Cadence &lt;/span&gt;&lt;/span&gt;&lt;a class="Hyperlink SCXW142711385 BCX8" href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip" rel="noopener noreferrer" target="_blank"&gt;&lt;span class="TextRun Underlined SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8" data-ccp-charstyle="Hyperlink"&gt;Simulation VIP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;solutions. For any clarification or technical assistance, please reach out to us at &lt;/span&gt;&lt;/span&gt;&lt;a class="Hyperlink SCXW142711385 BCX8" href="mailto:talk_to_vip_expert@cadence.com" rel="noopener noreferrer" target="_blank"&gt;&lt;span class="TextRun Underlined SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8" data-ccp-charstyle="Hyperlink"&gt;talk_to_vip_expert@cadence.com&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="TextRun SCXW142711385 BCX8" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW142711385 BCX8"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP Selected SCXW142711385 BCX8"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364404&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/physical%2blayer">physical layer</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Ethernet">Ethernet</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/protocol%2bverification">protocol verification</category></item><item><title>Untangling PCIe L0p: How Four Bytes DLLP Reshape a Live Link</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/untangling-pcie-l0p-how-four-bytes-reshape-a-live-link</link><pubDate>Wed, 23 Sep 2026 09:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:fb7986a4-0d34-49e6-ba49-b18e4d17d328</guid><dc:creator>ManasiYadav</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;PCIe links in AI accelerators, storage subsystems, and data-centric platforms see traffic that arrives in bursts. Keeping every lane active through the quiet stretches burns power for bandwidth that isn&amp;#39;t being used. PCIe 6.0 addresses this tradeoff with L0p, a power-saving substate of L0 supported only in flit mode. At the center of the transition to L0p is the link management DLLP. It carries the requested width, response semantics, and priority information, allowing both sides of the link to agree on a width change without forcing the entire link back through the traditional recovery and configuration path. The simplicity is only on the surface. Underneath the surface sits a multiphase sequence with arbitration rules, response timing, post-response tracking windows, and a physical link reconfiguration that must be completed before the clocks run out. That is exactly what makes the link management DLLP worth a closer look.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This blog walks through how link management DLLPs work under the hood, where the verification complexity actually lives, and how Cadence PCIe VIP addresses that coverage space.&amp;nbsp;&amp;nbsp;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;When a Power Saving Feature Becomes a Protocol Puzzle&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;For years, changing link width was a disruptive event&amp;mdash;the link had to leave L0, traverse recovery, pass through configuration, and return to L0. With L0p, PCIe introduces a cleaner way to change link width while the link remains logically up.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It is tempting to picture L0p as a power knob: drop the active lane count on the fly, unused lanes go idle when bandwidth demand drops, bring them back when demand rises, and the link stays in L0 throughout. Getting it right means following a width change the way the silicon does: a link management DLLP exchange at the data link layer, an L0p Ack or Nak response within the required timing window, per-lane electrical idle signaling aligned with ordered set behavior, and training on lanes that are brought back into service. The lanes that remain active continue carrying flits. There is no full teardown. Just a live link changing its width under traffic. That&amp;#39;s the design intent, and it&amp;#39;s where most of the verification complexity begins.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue1"&gt;Inside the Link Management DLLP&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Link management DLLP is &lt;strong&gt;four bytes&lt;/strong&gt; wide with a compact but highly structured format:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h5 style="text-align:left;"&gt;&lt;img style="max-height:480px;max-width:640px;" alt="Link Management DLLP is four-bytes wide with a compact but highly structured format:&amp;nbsp;" src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/Blog_5F00_Figure_5F00_1_5F00_indigo_5F00_border_5F00_darker.png" /&gt;&amp;nbsp;&lt;span class="TextRun SCXW116403781 BCX0" lang="EN-US" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW116403781 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h5&gt;
&lt;p style="text-align:left;"&gt;The key semantic fields are:&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;L0p.Cmd: &lt;/strong&gt;Encodes operations such as request, Ack, and Nak.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L0p.Priority:&lt;/strong&gt;&amp;nbsp;Indicates requests that are policy or urgency-sensitive.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L0p link width: &lt;/strong&gt;Carries the requested or desired link width.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Response payload:&lt;/strong&gt;&amp;nbsp;Qualifies the response behavior when responding to a request.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1k369e3ue2"&gt;Same DLLP Encoding, Different Protocol Universe&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Link management DLLP shares the same encoding as conventional DLLPs (Ack/Nak, PM, UpdateFC), but the resemblance ends there. Those three are housekeeping&amp;mdash;the continuous background work that keeps the Data Link Layer operational. Link management DLLP carries no credits, no sequence numbers, no replay information. Its purpose is more direct: carry the L0p command, the priority bit, and the target width to the link partner, and get back a deterministic L0p Ack or Nak.&amp;nbsp;Conventional Ack/Nak DLLPs track TLP sequence numbers and gate the replay buffer. By contrast, an L0p Ack does not acknowledge a TLP, and an L0p Nak does not request TLP replay. They answer a width management proposal: an L0p Ack indicates that the requested Link Width change is accepted, whereas an L0p Nak indicates that it is not accepted.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue3"&gt;The Request-Response Contract&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;The link management DLLP operates within a tightly defined envelope. It is a flit mode mechanism, and if the link is not operating in flit mode, the receiver silently discards it. The same applies when reserved encodings are present in the DLLP fields. The DLLP must carry a valid link management type, a valid L0p command, and a valid link width encoding. Reserved fields are transmitted as zero, and reserved encodings do not go on the wire. The link management DLLP either fits the envelope completely, or it is treated as though it never arrived. A port initiates a link width change by transmitting up to three identical link management DLLPs within five consecutive flits. It gives the requester enough tolerance against loss without turning the request into noise on the link.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The responder side is just as constrained. When duplicates arrive within the observation window, the responder must return the same L0p Ack/Nak for every copy received. No divergence is permitted&amp;mdash;identical requests within the window get an identical response. That consistency is what keeps the exchange deterministic: the requester is allowed to repeat the ask, but the responder is not allowed to create ambiguity inside the same observation window.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue4"&gt;Ack, Nak, or Abandon: The Clock Keeps Running&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Response timing is where the link management DLLP becomes more than a request-response packet. It becomes a bounded protocol sequence. For links using 128b/130b or 1b/1b encoding, the responder must transmit an L0p Ack or Nak within 1 &amp;micro;s. For 8b/10b encoding, the response window extends to 4 &amp;micro;s. If the requester does not receive a response within 4 &amp;micro;s on 128b/130b or 1b/1b links, or within 8 &amp;micro;s on 8b/10b links, it must either re-request the same link width change or abandon the request. Once a response is out, both ports enter the post-response tracking window. The conditions for abandonment differ depending on the request direction and the response type. After an upsize Ack, the partner considers the request abandoned only if the requester does not initiate the link width upsize within 16 &amp;micro;s of the Ack and does not resend the upsize request within 8 &amp;micro;s of that Ack. For a downsize Ack, the request is considered abandoned only if the requester neither resends the downsize request within 4 &amp;micro;s of the Ack nor initiates the downsize within 16 &amp;micro;s. For a downsize Nak, if the requester does not resend the downsize request within 4 &amp;micro;s of the Nak, the partner considers the request abandoned.&amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue5"&gt;Small on the Wire, Big in Verification&amp;nbsp; &amp;nbsp;&lt;/h2&gt;
&lt;p&gt;A robust verification strategy has to follow it all the way down&amp;mdash;from the link management DLLP exchange to the physical realization of the width change on the lanes. &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/pcie/pcie.html"&gt;Cadence PCIe VIP&lt;/a&gt; helps exercise and observe L0p behavior across the protocol stack. Representative capabilities include protocol-aware generation and checking of link management DLLP transactions, Flit-aware DLP visibility for debug, timing, and protocol checks for request-response behavior, configuration, and LTSSM-aware scenario validation, and a combination of directed and constrained-random testing for negative and corner-case scenarios. &amp;nbsp;&lt;/p&gt;
&lt;h2 id="mcetoc_1k369e3ue6"&gt;More Information&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For more information on how Cadence PCIe Verification IP and TripleCheck enable users to confidently verify these new disruptive changes, see our &lt;a href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/pci-express-gen6-simulation-vip"&gt;VIP for PCI Express&lt;/a&gt;, &lt;a href="https://ip.cadence.com/ipportfolio/verification-ip/simulation-vip/pci-express/vip-for-compute-express-link-cxl"&gt;VIP for Compute Express Link&lt;/a&gt; and &lt;a href="https://ip.cadence.com/ipportfolio/verification-ip/productivity-tools"&gt;TripleCheck for PCI Express.&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;For more information on PCIe in general, and on the various PCI standards, see the &lt;a href="https://pcisig.com/"&gt;PCI-SIG website&lt;/a&gt;. &amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If you have feedback or need more information, reach out to us at &lt;a href="mailto:talk_to_vip_expert@cadence.com"&gt;talk_to_vip_expert@cadence.com&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364399&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Low%2bPower">Low Power</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Coverage_2D00_Driven%2bVerification">Coverage-Driven Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/PCIe">PCIe</category></item><item><title>Not Every Byte in a UALink DL Flit Is a Payload</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/not-every-byte-in-a-ualink-dl-flit-is-payload</link><pubDate>Tue, 22 Sep 2026 07:47:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:40b207da-4e3b-41b4-bf1e-5b46a5254ee2</guid><dc:creator>budarapuujwalk</dc:creator><slash:comments>0</slash:comments><description>Imagine a cargo train carrying three kinds of shipments: the railway company&amp;#39;s own cargo, customer packages, and unfinished packages that are continuing from an earlier train. Now imagine you&amp;#39;re unloading the train. Looking at a coach full of...(&lt;a href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/not-every-byte-in-a-ualink-dl-flit-is-payload"&gt;read more&lt;/a&gt;)&lt;img src="https://community.cadence.com/aggbug?PostID=1364387&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flit%2bPacking%2bRules">Flit Packing Rules</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Data%2bLink%2bLayer">Data Link Layer</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Flit%2bFormat">Flit Format</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category></item><item><title>Secure Imaging Starts at the Sensor: Understanding SEP in MIPI CSE v2.0</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/secure_2d00_imaging_2d00_starts_2d00_at_2d00_the_2d00_sensor_2d00_sep_2d00_mipi_2d00_cse_2d00_v2</link><pubDate>Mon, 21 Sep 2026 09:18:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:a31e25b8-7e28-4e0a-b493-864b01e46ad7</guid><dc:creator>Mohit1702</dc:creator><slash:comments>0</slash:comments><description>Secure imaging starts at the sensor. How the SEP protocol in MIPI CSE v2.0 protects every CSI-2 packet, and how Cadence VIP verifies it.(&lt;a href="https://community.cadence.com/cadence_blogs_8/b/fv/posts/secure_2d00_imaging_2d00_starts_2d00_at_2d00_the_2d00_sensor_2d00_sep_2d00_mipi_2d00_cse_2d00_v2"&gt;read more&lt;/a&gt;)&lt;img src="https://community.cadence.com/aggbug?PostID=1364372&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE%2bVerification">MIPI CSE Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bAlliance">MIPI Alliance</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE">MIPI CSE</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Camera%2bSecurity">Camera Security</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/SEP%2bProtocol%2bVerification">SEP Protocol Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSI_2D00_2">MIPI CSI-2</category></item><item><title>Verifying FSED in MIPI CSE v2.0 with Cadence VIP</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/verifying-fsed-in-mipi-cse-v2-0-with-cadence-vip</link><pubDate>Mon, 21 Sep 2026 06:47:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f2b8d656-50a5-4671-bb23-71dfdc15db58</guid><dc:creator>DhyeySoni</dc:creator><slash:comments>0</slash:comments><description>&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;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bCSE%2bVerification">MIPI CSE Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/FSED%2bProtocol%2bVerification">FSED Protocol Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MIPI%2bAlliance">MIPI Alliance</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Camera%2bSecurity">Camera Security</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/CSE">CSE</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/FSED">FSED</category></item><item><title>DisplayPort Adaptive-Sync: When Fixed Refresh Rate Is Not Enough</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/displayport-adaptive-sync-when-fixed-refresh-rate-is-not-enough</link><pubDate>Wed, 16 Sep 2026 19:53:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:ef2f70ce-f7f5-4077-bd34-601373eb8a66</guid><dc:creator>tfox</dc:creator><slash:comments>0</slash:comments><description>&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;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/DisplayPort">DisplayPort</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/EDP">EDP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AdaptiveSync">AdaptiveSync</category></item><item><title>AMBA AXI5 MPAM: Control and Visibility for Shared Memory Resources</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/amba-axi5-mpam-memory-partitioning-and-monitoring-pmg-partid-shared-memory-resources</link><pubDate>Tue, 15 Sep 2026 08:58:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:998be1a6-a088-4695-88cc-6281090183af</guid><dc:creator>DivyaBora1</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As modern SoCs become increasingly heterogeneous, the shared memory system has become a critical performance and isolation boundary. CPUs, GPUs, AI accelerators, DMA engines, display controllers, and virtualized workloads often compete for shared cache capacity and memory bandwidth. In these systems, high performance depends on more than simply moving data quickly. Resources must be shared fairly, usage must be tracked accurately, and interference between workloads must be controlled.&lt;/p&gt;
&lt;p&gt;Verifying MPAM, however, is challenging because the metadata must travel correctly with every memory transaction across the system. Arm Memory Partitioning and Monitoring (MPAM) addresses this challenge by adding transaction-level information to AMBA AXI5. This information identifies the resource partition associated with a memory access and the monitoring group to which its activity must be attributed. By making resource usage visible on the bus, MPAM supports more predictable performance, stronger workload isolation, and improved system-level observability.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2hpv1it0"&gt;Overview of Memory Partitioning and Monitoring&lt;/h2&gt;
&lt;p&gt;MPAM provides a framework for controlling and monitoring shared memory system resources. It allows system software and hardware to associate each memory transaction with a resource partition and a performance monitoring context. Components such as interconnects, caches, and memory controllers can use this information to apply resource policies and account usage.&lt;/p&gt;
&lt;p&gt;Partitioning and monitoring are complementary but independent. Partitioning determines how shared resources are controlled, while monitoring records how those resources are used. This separation allows workloads within the same resource partition to be measured independently, or different partitions to be managed under distinct allocation policies.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2hpv1iu1"&gt;Why AXI5 Needs MPAM Support&lt;/h2&gt;
&lt;p&gt;Standard AXI transaction attributes describe properties such as ordering, cacheability, protection, and Quality of Service. They do not, by themselves, identify the resource partition that should manage a transaction or the monitoring context that should account for its bandwidth and cache usage.&lt;/p&gt;
&lt;p&gt;AXI5 MPAM support closes this gap by carrying partitioning and monitoring metadata with every read and write request. This enables downstream components to consistently recognize the workload context, enforce resource-management policies, and collect meaningful usage information across the memory hierarchy.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2hpv1iu2"&gt;AXI5 MPAM Protocol Architecture&lt;/h2&gt;
&lt;p&gt;MPAM is defined as an optional AMBA 5 feature. Support is controlled through the MPAM_Support interface property. When MPAM is enabled, read and write address requests carry MPAM information using ARMPAM and AWMPAM. When the feature is not supported, these signals are not present on the interface.&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/5008.Designer-_2800_3_2900_.png" /&gt;&lt;/p&gt;
&lt;p&gt;The MPAM information contains three logical fields:&lt;/p&gt;
&lt;h3 id="mcetoc_1k2hq4cjn3"&gt;MPAM_NS: Security Context&lt;/h3&gt;
&lt;p&gt;MPAM_NS provides the security indicator associated with the transaction.&lt;/p&gt;
&lt;h3 id="mcetoc_1k2hq4cjn4"&gt;PARTID: Partition Identifier&lt;/h3&gt;
&lt;p id="mcetoc_1k2hq8a2h8"&gt;PARTID identifies the resource partition associated with the transaction. Interconnects, caches, and memory controllers can use the identifier when applying controls to shared resources such as cache capacity or memory bandwidth.&lt;/p&gt;
&lt;h3 id="mcetoc_1k2hq4cjn5"&gt;PMG: Performance Monitoring Group&lt;/h3&gt;
&lt;p&gt;PMG identifies the context used for performance accounting, traffic monitoring, profiling, and debug. It enables resource usage to be attributed to the appropriate workload or monitoring group without changing the partition assignment.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2hq4cjn6"&gt;How MPAM Information Flows Through the System&lt;/h2&gt;
&lt;p&gt;MPAM information travels as metadata alongside the transaction address. An MPAM-enabled master drives the appropriate value on a read or write address request, and downstream components sample the value with the corresponding valid address transfer. The interconnect can propagate the metadata toward caches, bridges, and memory controllers that implement partitioning or monitoring functions.&lt;/p&gt;
&lt;p&gt;The values generated by a master are implementation-defined and are typically selected through software, firmware, or system configuration. MPAM identifiers have global scope, so an interconnect is not required to remap them or make them unique for each master. Where system components use different MPAM configurations, the implementation must define how widths, defaults, and unsupported fields are handled.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " height="305" src="https://community.cadence.com/resized-image/__size/912x610/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/0753.Designer-_2800_5_2900_.png" width="456" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k2hqba499"&gt;Key Protocol Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configurable identifiers: Implementations can select partitioning and monitoring granularity appropriate to the system and interface configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Independent resource partitioning: PARTID values allow transactions to be associated with resource partitions used by components in the memory hierarchy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Independent monitoring: PMG values allow traffic within a partition to be accounted for through separate monitoring contexts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;End-to-end metadata propagation: MPAM information can travel through compatible interconnects and protocol bridges while preserving the transaction context.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Efficient signaling: Separating partitioning from monitoring avoids unnecessary coupling between resource-control and accounting requirements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Throughput management and workload isolation: By making each transaction&amp;rsquo;s resource context visible, MPAM helps memory-system components reduce workload interference, avoid unfair bandwidth usage, and improve performance predictability when multiple agents compete for shared resources.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1k2hqd55la"&gt;Practical System Use Cases&lt;/h2&gt;
&lt;h3 id="mcetoc_1k2hqd55lb"&gt;Cloud and Virtualized Workload Isolation&lt;/h3&gt;
&lt;p&gt;Hypervisors and system software can associate virtual machines, containers, or applications with distinct resource partitions and monitoring groups. This helps prevent one workload from monopolizing shared cache capacity or memory bandwidth, while enabling usage to be profiled or accounted for independently.&lt;/p&gt;
&lt;h3 id="mcetoc_1k2hqej0uc"&gt;AI Accelerators and Heterogeneous SoCs&lt;/h3&gt;
&lt;p&gt;CPUs, GPUs, AI accelerators, and DMA engines frequently share DRAM bandwidth. Assigning different PARTID values enables the memory system to distinguish traffic classes for resource control, while PMG values provide visibility into the bandwidth consumed by each monitored workload.&lt;/p&gt;
&lt;h3 id="mcetoc_1k2hqej0ud"&gt;Monitoring, Debug, and Accounting&lt;/h3&gt;
&lt;p&gt;Because monitoring information accompanies the transaction, memory-system usage can be attributed at multiple points in the hierarchy. This supports workload profiling, bottleneck analysis, latency debug, resource accounting, and placement optimization.&lt;/p&gt;
&lt;h3 id="mcetoc_1k2hqej0ue"&gt;Automotive and Real-Time Systems&lt;/h3&gt;
&lt;p&gt;In systems where predictable latency matters more than peak throughput, MPAM information can distinguish safety-critical or latency-sensitive traffic from background activity. Resource controls can then limit interference, while monitoring provides visibility into actual consumption.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2hqg71ef"&gt;Functional Verification Challenges&lt;/h2&gt;
&lt;p&gt;MPAM verification adds resource-context correctness to standard AXI protocol verification. A complete environment must verify not only that the AXI transfer is legal, but also that MPAM information is configured, generated, propagated, interpreted, and monitored consistently.&lt;/p&gt;
&lt;h3 id="mcetoc_1k2hqg71eg"&gt;IP-Level Verification&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Validate the presence and configuration of the partition and monitoring information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check identifier values against the configured widths and legal constraints.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify boundary configurations, including zero-width identifiers and maximum supported widths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Confirm protocol consistency across read and write transaction types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Validate interoperability between MPAM-capable and non-MPAM-capable interfaces.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1k2hqia40h"&gt;SoC-Level Verification&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Confirm end-to-end preservation of MPAM information through interconnects, caches, bridges, and memory controllers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Validate that transactions are associated with the intended resource partition and monitoring group.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exercise width adaptation, tied-off fields, truncation, default values, and potential identifier aliasing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check behavior through virtualization events, context switches, and heterogeneous protocol configurations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cover partition identifiers, monitoring groups, identifier crosses, width configurations, and bridge interoperability.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1k2hqia40i"&gt;Cadence AXI5 VIP Solution&lt;/h2&gt;
&lt;p&gt;Cadence AXI/ACE Verification IP provides a comprehensive solution for creating, observing, and checking MPAM-aware traffic across configurable AXI environments. It enables verification teams to validate protocol behavior at the IP level and preserve MPAM transaction context through system-level scenarios.&lt;/p&gt;
&lt;p&gt;Cadence AXI5 VIP accelerates MPAM verification closure by providing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ready-to-use generation of MPAM-aware read and write transactions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configurable partition and monitoring signaling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Protocol checks for MPAM configuration and transaction consistency&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Validation of identifier widths and interface interoperability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Functional coverage for MPAM values, configurations, and feature interactions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;End-to-end observability for MPAM metadata across the verification environment&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These capabilities help teams progress beyond basic signal checks and validate MPAM behavior under heterogeneous traffic, configurable widths, protocol bridges, and realistic resource-monitoring flows.&lt;/p&gt;
&lt;h2 id="mcetoc_1k2hqia40j"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;AMBA AXI5 MPAM makes shared memory-resource usage identifiable, controllable, and measurable at the transaction level. By carrying partition and monitoring information with read and write requests, it gives SoC implementations a practical mechanism for improving workload isolation, applying resource policies, attributing usage, and increasing performance predictability across heterogeneous systems.&lt;/p&gt;
&lt;p&gt;As MPAM behavior spans interface configuration, transaction signaling, metadata propagation, resource control, and monitoring, verification must address both protocol compliance and end-to-end system intent. Cadence AXI5 VIP provides the traffic generation, checking, coverage, interoperability validation, and observability needed to verify robust MPAM implementations from IP-level configuration through full-system operation.&lt;/p&gt;
&lt;p&gt;For more information on Cadence AXI/ACE VIP for AMBA AXI5 MPAM verification, visit the Cadence Functional Verification community or contact the Cadence VIP team.&lt;/p&gt;
&lt;table width="661" height="75"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="653"&gt;
&lt;p&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;/p&gt;
&lt;p&gt;&lt;strong&gt;More information: &lt;/strong&gt;&lt;u&gt;https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html&lt;/u&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364371&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/PMG">PMG</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/PARTID">PARTID</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/AXI5">AXI5</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/MPAM">MPAM</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/verification">verification</category></item><item><title>Why Faster Isn't Always Better: UALink Transmitter Pacing Explained</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-faster-isn-t-always-better-ualink-transmitter-pacing-explained</link><pubDate>Tue, 15 Sep 2026 05:03:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:071b44e7-e94b-4474-bd69-0b9aa8c73989</guid><dc:creator>SchrodingerBug</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Imagine two accelerators connected through a UALink link operating at full bandwidth. The link is running at full line rate, DL flits are flowing across the wire, and transactions are moving between devices. Yet one of those accelerators may already be falling behind.&lt;/p&gt;
&lt;p&gt;The reason is subtle. In UALink, the physical link and the accelerator behind it do not necessarily operate at the same rate. An accelerator may reduce its UPLI clock frequency for power-saving purposes while the link itself continues operating at line rate. This situation can occur when an accelerator is not fully utilized and chooses to lower its operating frequency to reduce power consumption, even though the UALink connection remains active. That creates an interesting engineering challenge: how do you prevent data from arriving faster than the receiver can consume it?&lt;/p&gt;
&lt;p&gt;The answer is transmitter pacing.&lt;/p&gt;
&lt;h2 id="mcetoc_1k0s36jhv0"&gt;&lt;span style="font-size:inherit;"&gt;The Journey from Transaction to Wire&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Before discussing pacing, it helps to understand where it fits in the&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt;&amp;nbsp;stack.&lt;/p&gt;
&lt;p&gt;A transaction begins at the functional/protocol layer, is packaged into 64-byte TL flits by the transaction layer, packed into 640-byte DL flits by the data link layer, and ultimately transmitted by the PHY across the serial link.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:186px;max-width:538px;" alt=" " height="186" src="https://community.cadence.com/resized-image/__size/1076x372/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/2260.pastedimage1787649316901v1.png" width="538" /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;em&gt;Figure 1: The UALink protocol stack&amp;nbsp;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Under normal conditions, data enters and exits the receive path at roughly the same rate. The interesting part begins when the receiver intentionally slows down.&lt;/p&gt;
&lt;h2 id="mcetoc_1k0s38fm61"&gt;&lt;span style="font-size:inherit;"&gt;When the Link Is Faster Than the Accelerator&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;UALink allows accelerators to operate their UPLI clock below the maximum rate to reduce power consumption. The physical link, however, does not automatically slow down.&lt;/p&gt;
&lt;p&gt;The receive-side adaptation FIFO is written using a rate derived from the recovered link clock, while data is removed by the transaction layer running on the local UPLI clock. If that UPLI clock is reduced, data can arrive faster than it is consumed. FIFO occupancy grows over time, eventually creating an overflow risk.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:208px;max-width:474px;" alt=" " height="208" src="https://community.cadence.com/resized-image/__size/948x416/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1512.pastedimage1787649349882v2.png" width="474" /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;span style="font-size:inherit;"&gt;&lt;em&gt;Figure 2: Receive-side rate mismatch&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This is the problem transmitter pacing was designed to solve.&lt;/p&gt;
&lt;h2 id="mcetoc_1k0s398ve2"&gt;&lt;span style="font-size:inherit;"&gt;What Transmitter Pacing Actually Does&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A common misconception is that pacing slows the physical link. That is not what happens.&lt;/p&gt;
&lt;p&gt;The serial link continues operating at line rate. DL flits continue being transmitted. What pacing controls is the rate at which TL flits are admitted into the DL transmit path. In other words, pacing acts between the transaction sayer and the data link layer, regulating how quickly useful traffic enters the link.&lt;/p&gt;
&lt;p&gt;This distinction is important because the goal is not to throttle the wire. The goal is to prevent the receiver from becoming overloaded when it is operating at a lower UPLI frequency.&lt;/p&gt;
&lt;h2 id="mcetoc_1k0s398ve4"&gt;&lt;span style="font-size:inherit;"&gt;The Challenge Hidden Behind a Simple Requirement&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;So far the solution sounds straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notify link partners about rate changes&lt;/li&gt;
&lt;li&gt;Adjust pacing&lt;/li&gt;
&lt;li&gt;Prevent receive-side overflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What the specification does not fully define is how pacing should be implemented. That creates an interesting design challenge.&lt;/p&gt;
&lt;p&gt;Consider a simple example. A transmitter is operating at full UPLI rate. Its link partner is operating at half that rate. Now, assume the link remains idle for a period of time. No TL flits are being admitted, and no useful traffic is sent. When traffic suddenly arrives, a natural question appears: Can the transmitter take advantage of that earlier idle period and temporarily send data more aggressively?&lt;/p&gt;
&lt;p&gt;From a utilization perspective, that sounds attractive. After all, no traffic was sent during the idle interval. But from the receiver&amp;#39;s perspective, sending a large burst immediately afterward may create much higher instantaneous FIFO occupancy. This is where implementation choices begin to matter.&lt;/p&gt;
&lt;p&gt;Should pacing strictly match the advertised long-term rate? Should some accumulation of unused opportunities be allowed? If so, how much? The specification intentionally leaves these implementation decisions open while still requiring that receive-side overflow never occurs. That turns pacing from a protocol feature into an engineering problem.&lt;/p&gt;
&lt;h2 id="mcetoc_1k0s39kkp5"&gt;&lt;span style="font-size:inherit;"&gt;Why Verification Gets Interesting&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Many protocol features can be validated with straightforward directed tests. Transmitter pacing is different. A simple test may show:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:inherit;"&gt;TL rate notifications were exchanged&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:inherit;"&gt;ACKs were returned&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:inherit;"&gt;Traffic continued flowing&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Everything appears correct. The difficult cases emerge over time. Questions quickly arise:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:inherit;"&gt;Was the new rate applied when expected?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:inherit;"&gt;Was the receiver protected under sustained traffic?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:inherit;"&gt;Did idle periods affect behavior correctly?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:inherit;"&gt;What happens when both ends of the link change rates independently?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;These are not packet-level questions. They are behavioral questions that play out over thousands of cycles. That is what makes pacing a particularly interesting verification problem.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1k0s39kkp6"&gt;&lt;span style="font-size:inherit;"&gt;The Takeaway&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;UALink transmitter pacing exists because the physical link and the accelerator behind it are not always operating at the same rate. The specification allows accelerators to lower their UPLI clock frequency for power reduction while the UALink link continues operating at full speed. Without pacing, the receive-side adaptation FIFO could fill faster than it is drained, eventually leading to overflow.&lt;/p&gt;
&lt;p&gt;What makes the feature especially interesting is that the specification defines the goal but largely leaves the implementation strategy to the designer.&amp;nbsp;The protocol tells us what must be achieved. The details of how it is achieved are implementation-specific.&amp;nbsp;For verification teams, that turns pacing from a simple protocol mechanism into a system-level behavior that must be validated across changing rates, idle periods, and real traffic scenarios.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cadence UALink VIP is designed to help verify exactly these situations. By providing visibility across UPLI, TL, DL, and PHY, it enables engineers to observe the impact of rate changes throughout the protocol stack. Protocol-aware checkers continuously monitor rate notifications, pacing-related behavior, and receiver-protection requirements, while detailed logs provide visibility into how the design responds to changing operating rates. Together, these capabilities help engineers validate pacing behavior and receiver protection while ensuring compliance with UALink protocol requirements.&lt;/p&gt;
&lt;p&gt;For further details,&amp;nbsp;contact&amp;nbsp;Cadence support&amp;nbsp;or&amp;nbsp;visit&amp;nbsp;the&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;Simulation VIP for UALink&lt;/a&gt;&amp;nbsp;product&amp;nbsp;page.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;also&amp;nbsp;explore&amp;nbsp;Cadence&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html"&gt;Simulation VIP&lt;/a&gt;&amp;nbsp;solutions&amp;nbsp;for&amp;nbsp;broader&amp;nbsp;protocol&amp;nbsp;VIP&amp;nbsp;support.&lt;/p&gt;
&lt;p&gt;The result is a simple but powerful lesson: in UALink, maximum performance is not achieved by sending data as fast as possible. It is achieved by matching transmission behavior to the rate the receiver can sustainably consume, even when the link itself continues operating at full speed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364334&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Transmitter%2bPacing">Transmitter Pacing</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/verification">verification</category></item><item><title>Flexible UALink Verification for Any Layer, Interface, and Design Configuration</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/flexible-ualink-verification-for-any-layer-interface-design-configuration</link><pubDate>Wed, 02 Sep 2026 09:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f19735e9-60b3-464e-a849-9459de75dbef</guid><dc:creator>SG202607104355</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Modern AI training and inference clusters rely on hundreds or even thousands of GPUs and accelerators working together as a unified compute fabric. As models continue to grow in size and complexity, communication between accelerators has become just as critical as the compute engines themselves.&lt;/p&gt;
&lt;p&gt;UALink was created to address this challenge. Designed as a high-bandwidth, low-latency scale-up interconnect, UALink enables efficient accelerator-to-accelerator communication and supports the construction of large AI fabrics where accelerators can exchange data quickly and predictably.&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;Simulation VIP for UALink | Cadence&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To achieve the scalability required by modern AI workloads, UALink adopts a layered architecture that cleanly separates protocol, transport, reliability, and physical communication functions. While this layered approach provides significant implementation flexibility, it also creates unique verification challenges. Different projects often implement different portions of the stack, resulting in a wide variety of valid design configurations that must all be verified with equal confidence.&lt;/p&gt;
&lt;h2&gt;The UALink Layered Architecture&lt;/h2&gt;
&lt;p&gt;UALink is organized as a four-layer stack:&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " height="519" src="https://community.cadence.com/resized-image/__size/692x1038/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1832.UALStack.png" width="346" /&gt;&lt;/p&gt;
&lt;p&gt;Each layer serves a distinct function, from protocol transactions at UPLI to reliable transport, replay handling, and physical communication at the lower layers.&lt;/p&gt;
&lt;p&gt;Because development often progresses layer by layer, customers rarely verify a complete stack from day one. Depending on project needs, verification may target individual layers, partial-stack implementations, full-stack designs, or custom partitions.&lt;/p&gt;
&lt;p&gt;As a result, verification environments must accommodate a variety of implementation boundaries and DUT to efficiently support the full development lifecycle of a UALink design.&lt;/p&gt;
&lt;h2&gt;Why Layered Protocols Need Layer-Aware Verification&lt;/h2&gt;
&lt;p&gt;The complexity of UALink verification is not simply a matter of supporting multiple configurations.&lt;/p&gt;
&lt;p&gt;Many of the protocol&amp;#39;s most important features span multiple layers.&lt;/p&gt;
&lt;p&gt;Consider link error recovery. The physical layer is responsible for detecting and recovering from transmission errors, but the behavior ultimately depends on interactions with neighboring layers.&lt;/p&gt;
&lt;p&gt;For example, protocol transactions initiated at UPLI traverse multiple layers before reaching the physical interface, while reliability features such as replay and recovery depend on coordinated behavior across layer boundaries. A protocol-only environment may be sufficient for early bring-up, but full-stack validation is often required to expose latency-dependent and integration-related issues.&lt;/p&gt;
&lt;p&gt;Consequently, many of the most challenging bugs appear not within a single layer, but at the boundaries between layers.&lt;/p&gt;
&lt;p&gt;Successful verification therefore requires visibility into both protocol-level behavior and lower-level link operations.&lt;/p&gt;
&lt;h2&gt;Multiple Interfaces, Maximum Flexibility&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;UPLI Interface&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Provides a protocol-level entry point for validating UPLI implementations as well as lower-stack DUTs through realistic protocol traffic generation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DL-PL Interface&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For customers focusing on data-link or physical-layer functionality, the DL-PL interface provides direct access to replay, retry, flow control, error handling, and PHY integration behavior, allowing customers to verify DL (w/o PL) or PL (w/o) centric implementations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full-Stack Verification&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For integrated designs, a full-stack VIP configuration provides complete end-to-end validation across the entire UALink protocol stack.&lt;/p&gt;
&lt;h2&gt;One VIP for Every UALink Design Configuration&lt;/h2&gt;
&lt;p&gt;In addition to standard interfaces, Cadence UALink VIP architecture is flexible enough to support implementation-specific environments and custom integration flows, allowing it to fit naturally into customer verification infrastructures. A key differentiator of the Cadence UALink VIP is its flexibility to adapt to any verification interface. It supports a large number of topologies including but not limited to the ones shown in the figure below:&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:600px;max-width:501px;" alt=" " src="https://community.cadence.com/resized-image/__size/1002x1200/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/2045.pastedimage1788247587724v1.png" /&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;UALink&amp;nbsp;Verification Topologies&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cadence UALink VIP (&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;Simulation VIP for UALink | Cadence&lt;/a&gt;) is designed to support the entire UALink verification lifecycle, from early layer bring-up to full-stack integration.&lt;/p&gt;
&lt;p&gt;The solution includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complete protocol stack support&lt;/li&gt;
&lt;li&gt;UPLI, DL-PL, and full-stack connectivity&lt;/li&gt;
&lt;li&gt;Protocol compliance checking&lt;/li&gt;
&lt;li&gt;Functional coverage&lt;/li&gt;
&lt;li&gt;Error injection capabilities&lt;/li&gt;
&lt;li&gt;Replay and recovery validation&lt;/li&gt;
&lt;li&gt;Advanced debug visibility&lt;/li&gt;
&lt;li&gt;Support for standard and custom verification topologies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The same VIP infrastructure can therefore be used across protocol-layer, subsystem, PHY, hybrid, and full-stack verification environments.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The flexibility of UALink architecture is one of its greatest strengths. However, that flexibility also means there is no single &amp;quot;typical&amp;quot; UALink implementation. Customers may be verifying protocol-layer functionality, link-level reliability mechanisms, standalone PHY implementations, full-stack designs, or any combination in between.&lt;/p&gt;
&lt;p&gt;Cadence UALink VIP (&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;Simulation VIP for UALink | Cadence&lt;/a&gt;) is built for exactly this reality.&lt;/p&gt;
&lt;p&gt;With support for all UALink layers, standard interfaces such as &lt;strong&gt;UPLI&lt;/strong&gt; and &lt;strong&gt;DL-PL&lt;/strong&gt;, full-stack verification capabilities, and the flexibility to adapt to customer-specific architectures, the VIP enables verification across virtually any UALink topology.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;For any clarification or technical assistance, please reach out to us at&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="mailto:talk_to_vip_expert@cadence.com"&gt;talk_to_vip_expert@cadence.com&lt;/a&gt;.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learn more about Cadence VIP on the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html"&gt;Cadence VIP website&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=1364299&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verification%2bIP">Verification IP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Functional%2bVerification">Functional Verification</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/VIP">VIP</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category></item><item><title>Software-Defined Coffee Machine</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/software-defined-coffee-machine</link><pubDate>Wed, 26 Aug 2026 14:55:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:70e7668d-c216-4f0b-8f58-14df6e6bb8c8</guid><dc:creator>JEngblom</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When I go to a hotel, a key component of the experience is the morning coffee. I am a Swede, and I want my coffee strong and plentiful. In most places outside the Nordic countries, this means figuring out the best approximation in the menus of coffee machines.&lt;/p&gt;
&lt;p&gt;During vacation this summer, we stayed in a hotel where there was indeed a coffee machine that had to be mastered in order to have a decent breakfast. The first morning, it featured a &amp;ldquo;large coffee&amp;rdquo; option that pretty much perfectly fit the bill. However, something happened the second morning&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;height:auto;margin-left:auto;margin-right:auto;max-width:1000px;" alt=" " src="https://community.cadence.com/resized-image/__size/2000x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/coffee_2D00_new_2D00_menu_2D00_1500.jpg" width="1000" /&gt;&lt;/p&gt;
&lt;p&gt;When we got down to the hotel restaurant, the staff seemed to be doing some simple maintenance of the coffee machines. Getting closer, it became clear that they were doing maintenance that was not so basic &amp;ndash; they were actually performing software updates! The result was a brand new menu where the large coffee was gone, forcing me to order an Americano, which turned out to be not quite the same thing.&lt;/p&gt;
&lt;p&gt;This offers an inadvertent but clear illustration of how software can change the characteristics of a device &amp;ndash; even with exactly the same hardware underneath, the available coffee variants changed. The functionality offered to the user was substantially different by changing the parameters and maybe even the control code, even as the hardware stayed constant.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;height:auto;margin-left:auto;margin-right:auto;max-width:800px;" alt=" " src="https://community.cadence.com/resized-image/__size/1600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/coffee_2D00_unchanged_2D00_hardware-_2800_blog1500_2900_.jpg" width="800" /&gt;&lt;/p&gt;
&lt;p&gt;That is the essence of &lt;a href="https://vlabworks.com/sia-cesa-2025-it-is-sdv-you-have-to-change-your-mindset/"&gt;software-defined vehicles&lt;/a&gt; &amp;ndash; and indeed software-defined anything. Use a single hardware platform in different ways depending on the software load. It might mean adding new functionality to products that are already out in the world (over-the-air updates, ideally), or it might mean doing different things with the same hardware product to target a new market.&lt;/p&gt;
&lt;p&gt;The coffee example here is kind of both. Clearly, it is an example of updating existing hardware with new functionality in the field. But it also shows how the manufacturer found a way to create a branded product for hotels. Using software, it is easy to add the hotel logo to the screen saver. Doing this physically would require manufacturing customer-specific plates or signs. With software, it is just an image file to do some image work.&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;height:auto;margin-left:auto;margin-right:auto;max-width:1000px;" alt=" " src="https://community.cadence.com/resized-image/__size/2000x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/coffee_2D00_branded-_2800_blog1500_2900_.jpg" width="1000" /&gt;&lt;/p&gt;
&lt;p&gt;I also admit loving the image used when the machine was out of order&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;max-height:480px;max-width:1000px;" alt=" " src="https://community.cadence.com/resized-image/__size/2000x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/coffee_2D00_happy_2D00_broken-_2800_blog1500_2900_.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Happy coffee cup when it cannot serve any coffee cups. The irony. At least the error message is clear.&lt;/p&gt;
&lt;p&gt;When it comes to developing software for a machine like this, a &lt;a href="https://vlabworks.com/sdv-europe-2025-virtualization-and-collaboration/"&gt;simulation environment&lt;/a&gt; can be a real game-changer. Especially one that combines software execution with a simulation of the dynamics of the brewing system. Engineers can see how their code behaves in realistic conditions without waiting for hardware or risking damage to an expensive prototype. Imagine the fun that can be had if you experiment freely with a system that runs a coffee grinder and is able to boil water and steam milk.&lt;/p&gt;
&lt;p&gt;Cadence has a &lt;a href="https://www.cadence.com/en_US/home/solutions/automotive-solution.html"&gt;full range of products&lt;/a&gt; to simulate everything from &lt;a href="https://vlabworks.com/"&gt;computer systems&lt;/a&gt; to &lt;a href="https://www.cadence.com/en_US/home/tools/msc-software/adams.html"&gt;systems dynamics&lt;/a&gt; to the &lt;a href="https://www.cadence.com/en_US/home/tools/msc-software/virtual-test-drive.html"&gt;world around it&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364337&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Automotive">Automotive</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/virtual%2bplatforms">virtual platforms</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/vlab">vlab</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/System%2bDesign%2band%2bVerification">System Design and Verification</category></item><item><title>When the Bug Is in the Waveform, the UALink Story Should Be There Too</title><link>https://community.cadence.com/cadence_blogs_8/b/fv/posts/why-a-protocol_2d00_aware-waveform-debugger-is-quietly-becoming-the-fastest-path-from-failure-to-fix-in-ualink-verification</link><pubDate>Fri, 31 Jul 2026 13:30:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:720265a8-c030-4ecc-b81c-990e8b9559aa</guid><dc:creator>Sandeep Grover</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="deck"&gt;Real design debug often ends in the same place: a waveform window full of DUT signals, a failing transaction, and a room of engineers trying to reconstruct what the protocol really did.&lt;/p&gt;
&lt;p&gt;This is not a niche problem. It is one of the most common patterns in complex SoC and protocol bring-up. Logs, checkers, scoreboards, and coverage all matter, but when the bug becomes subtle, the debug conversation usually moves to the waveform. Designers want to see the DUT. Verification engineers want to see protocol intent. The hard part is making both views meet in one timeline.&lt;/p&gt;
&lt;p&gt;A request disappears. A response arrives late. A credit counter looks suspicious. A link state moves at the wrong moment. Everyone can see the signals, but the real question is still open: which protocol event caused this behavior, and where did the packet actually go wrong?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="background-color:#ffcc99;"&gt;&lt;b&gt;The mass problem is not waveform visibility.&lt;/b&gt;&amp;nbsp;Designers already have visibility. The problem is that raw visibility is not the same as protocol understanding.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jurfpoim0"&gt;&lt;span style="color:#1861ab;"&gt;The Debug Scene We All Know&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Picture a late bring-up failure. The test times out after a transaction that looked legal at the top level. The first error message is not enough. The team loads resets, clocks, interface pins, internal state, VIP signals, and selected DUT hierarchy. The waveform has everything, but it does not explain itself.&lt;/p&gt;
&lt;p&gt;Someone now has to decode fields by hand, jump between log timestamps and waveform cursors, remember protocol rules, and keep a mental model of the packet as it moves through the stack. One missed tag, credit class, sequence number, or state transition can send the debug down the wrong path.&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/pastedimage1785482576247v5.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jurg2kuo5"&gt;&lt;span style="color:#1861ab;"&gt;&lt;/span&gt;&lt;span style="color:#1861ab;"&gt;Where Waveform Debugger Changes the Story&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Waveform Debugger (WD) changes this from a signal-hunting exercise into a protocol story. The VIP already understands the protocol: callbacks, fields, ports, layers, credits, state, and packet movement. WD brings that intelligence into the waveform as time-aligned transaction streams.&lt;/p&gt;
&lt;p&gt;The designer still sees raw RTL behavior. The verification engineer still sees protocol meaning. But now both are looking at one correlated debug view. Instead of asking, &amp;ldquo;Which signal transition maps to this protocol event&amp;quot;? the team can ask a better question: &amp;ldquo;What happened to this packet at each layer&amp;quot;?&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/3021.pastedimage1785480665686v1.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jurgra18a"&gt;&lt;span style="color:#1861ab;"&gt;&lt;img alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-11/1362.Screenshot-2026_2D00_07_2D00_31-123730.png" /&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h2 id="mcetoc_1jurfpoim2"&gt;&lt;span style="color:#1861ab;"&gt;A UALink Example: One Transaction, Four Layers&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;UALink&lt;/a&gt; makes this need very clear because a single transfer naturally crosses multiple layers. A transaction may begin at UPLI as intent: a read, write, atomic, or response with tags and credit context. TL turns that into 64-byte flits. DL packs data into 640-byte flits with headers, CRC, sequencing, and replay behavior. PHY carries the activity through lanes, FEC, alignment, and link behavior.&lt;/p&gt;
&lt;p&gt;Without Waveform Debugger (WD), the user may bounce between VIP logs, packet tracker output, register dumps, and raw waveforms. With WD, the same debug becomes a time-correlated path: UPLI intent, TL packing, DL flit movement, PHY activity, and DUT signal behavior around each step.&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/4186.pastedimage1785480705927v2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1jurfpoim3"&gt;&lt;span style="color:#1861ab;"&gt;Why the VIP Side Is the Right Place&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;The DUT owns the implementation, but the VIP owns protocol interpretation. That is why Waveform Debugger (WD) is powerful from the VIP side. It does not replace the waveform. It makes the waveform more useful by adding the protocol lens that the designer otherwise has to reconstruct manually.&lt;/p&gt;
&lt;p&gt;That lens matters in real customer debug, where the issue is rarely &amp;ldquo;I cannot see the signal.&amp;rdquo; The issue is usually &amp;ldquo;I can see too many signals, and I do not know which transition matters.&amp;rdquo; WD helps separate noise from meaning: which transaction is this, which layer touched it, which port did it use, and what happened just before the failure?&lt;/p&gt;
&lt;div class="callout"&gt;&lt;span style="background-color:#ffcc99;"&gt;&lt;b&gt;The pitch is simple:&lt;/b&gt;&amp;nbsp;Waveform Debugger does not ask designers to leave their natural debug environment. It brings VIP protocol intelligence into that environment.&lt;/span&gt;&lt;/div&gt;
&lt;div class="callout"&gt;&lt;/div&gt;
&lt;h2 id="mcetoc_1jurfpoin4"&gt;&lt;span style="color:#1861ab;"&gt;The Takeaway&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Waveform debug is not going away. It is where designers correlate evidence, challenge assumptions, and finally understand what went wrong. The opportunity is to make that environment smarter.&lt;/p&gt;
&lt;p&gt;Real design debug is collaborative. A protocol-aware waveform gives RTL, VIP, and testbench owners a shared object to reason about. That is the difference between visibility and productivity: visibility shows everything; productivity shows the right thing at the right time.&lt;/p&gt;
&lt;p&gt;Waveform Debugger turns VIP from a checker that reports protocol behavior into a debug companion that explains protocol behavior in the waveform. It connects packet flow, register state, and DUT signals in one timeline. For real design debug, that is the difference between staring at transitions and following the story.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id="mcetoc_1jurfpoin4"&gt;&lt;span style="color:#1861ab;"&gt;Explore UALink Debug with Cadence&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="color:#1861ab;"&gt;&lt;/span&gt;&lt;span class="___1cs5bdp f1w7gpdv f5p0z4x"&gt;Cadence&lt;/span&gt; &lt;span class="___1cs5bdp f1w7gpdv f5p0z4x"&gt;UALink&lt;/span&gt; &lt;span class="___1cs5bdp f1w7gpdv f5p0z4x"&gt;VIP&lt;/span&gt; &lt;span class="___1cs5bdp f1w7gpdv f5p0z4x"&gt;Waveform&lt;/span&gt; &lt;span class="___1cs5bdp f1w7gpdv f5p0z4x"&gt;Debugger&lt;/span&gt; &lt;span class="___1cs5bdp f1w7gpdv f5p0z4x"&gt;is&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;designed&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;for&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;exactly&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;this&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;challenge,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;bringing&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;protocol-aware,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;flit-accurate,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;and&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;cross-layer&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;visibility&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;directly&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;into&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;the&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;waveform.&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;By&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;connecting&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;activity&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;across&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;UPLI,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;TL,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;DL,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;and&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;PHY&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;on&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;a&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;common&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;timeline,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;it&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;helps&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;engineers&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;move&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;faster&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;from&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;a&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;visible&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;failure&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;to&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;an&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;understood&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;root&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;cause.&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;To&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;discuss&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;how&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;it&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;fits&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;your&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;verification&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;environment,&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;contact&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;Cadence&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;Support&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;or&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;visit&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;the&amp;nbsp;&lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip/ua-link.html"&gt;Simulation VIP for UALink&lt;/a&gt;&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;product&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;page.&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;You&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;can&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;also&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;explore&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;Cadence&lt;/span&gt; &lt;a href="https://www.cadence.com/en_US/home/tools/system-design-and-verification/verification-ip/simulation-vip.html"&gt;Simulation VIP&lt;/a&gt;&amp;nbsp;&lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;solutions&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;for&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;broader&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;protocol&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;VIP&lt;/span&gt; &lt;span class="___xxxjie0 f1w7gpdv f1gqqdtu"&gt;support.&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;The waveform already has the truth. Waveform Debugger helps it tell the protocol story.&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="https://community.cadence.com/aggbug?PostID=1364277&amp;AppID=11&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/bug">bug</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/waveform">waveform</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/UALink">UALink</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/Verisium%2bDebug">Verisium Debug</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/debugging">debugging</category><category domain="https://community.cadence.com/cadence_blogs_8/b/fv/archive/tags/verification">verification</category></item></channel></rss>