<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Above the RTL]]></title><description><![CDATA[Above the RTL: AI and chip design from inside the industry. Practitioner-first, anti-hype, honest about what works. By Marco Brambilla — 25 years of tape-outs. Drafted with AI as a writing partner.]]></description><link>https://www.abovethertl.com</link><image><url>https://substackcdn.com/image/fetch/$s_!OOOF!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51493a34-c743-4730-b4bb-b1a3a843fce9_1024x1024.png</url><title>Above the RTL</title><link>https://www.abovethertl.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 17 May 2026 06:35:04 GMT</lastBuildDate><atom:link href="https://www.abovethertl.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Marco Brambilla]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[abovethertl@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[abovethertl@substack.com]]></itunes:email><itunes:name><![CDATA[Marco Brambilla]]></itunes:name></itunes:owner><itunes:author><![CDATA[Marco Brambilla]]></itunes:author><googleplay:owner><![CDATA[abovethertl@substack.com]]></googleplay:owner><googleplay:email><![CDATA[abovethertl@substack.com]]></googleplay:email><googleplay:author><![CDATA[Marco Brambilla]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The AI Methodology Gap: Why Bottom-Up Has a Ceiling]]></title><description><![CDATA[Engineer-driven AI adoption solves a thousand local problems. The ones that actually move the needle &#8212; specs, contracts, sign-off &#8212; aren't local.]]></description><link>https://www.abovethertl.com/p/the-ai-methodology-gap-why-bottom</link><guid isPermaLink="false">https://www.abovethertl.com/p/the-ai-methodology-gap-why-bottom</guid><dc:creator><![CDATA[Marco Brambilla]]></dc:creator><pubDate>Tue, 28 Apr 2026 16:02:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yLVx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yLVx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yLVx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!yLVx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!yLVx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!yLVx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yLVx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7403192,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.abovethertl.com/i/195695627?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yLVx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!yLVx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!yLVx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!yLVx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ffe6b8e-fb30-417a-a19d-7a1118087a40_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Written with Claude Opus.</em></p><p><a href="https://www.abovethertl.com/p/claude-47-getting-it-wrong-more-persuasively">My last post</a> ended with a question it didn&#8217;t quite answer. If Engineer A&#8217;s AI review and Engineer B&#8217;s AI review produce different verdicts on functionally equivalent CDC crossings, and a new model release can flip which of them was right, the obvious follow-up is: whose job is it to make sure the company&#8217;s CDC sign-off doesn&#8217;t float on whichever model happened to be open the afternoon of the review?</p><p>The CDC tools already catch the structural violation. That&#8217;s not the issue - a modern CDC tool flags the OR-before-sync the moment the RTL compiles, and has for years. The divergence shows up one step downstream, at the waive-or-fix decision. Whether a flagged crossing gets waived as a benign same-domain glitch or fixed as a real violation has always been a judgment call, and AI is now embedded in that judgment step without any company-level decision about whose judgment governs. The next generation of AI-aware sign-off tools may well pull that judgment step back into the flow - that is exactly what a tool-enforced layer would look like - but whether they do or don&#8217;t, the decision about which layer is canonical for a given company is not a decision the tool makes. It is a decision the company makes, and most companies deploying AI into chip design have not made it yet.</p><p>The version of AI adoption most companies are actually running looks like this: encourage engineers to experiment, share what works, let the good stuff percolate up. It produces real wins. It also has a ceiling - a structural one, not a motivational one - and the problems above the ceiling are the ones that matter most for silicon. This post is about where the ceiling is and why it&#8217;s where it is.</p><h2><strong>Point solutions are genuine wins</strong></h2><p>Let me start by being clear about what&#8217;s working. An engineer who writes a Python-plus-AI script to parse a timing report and flag outliers has solved their own friction point on their own schedule. They did not file a ticket with the CAD team and wait six months. They did not negotiate with a vendor. They opened Claude or Cursor, described the problem, iterated for an afternoon, and moved on. That is real productivity. Multiply it across a few hundred engineers and a few hundred little friction points, and the aggregate is substantial.</p><p>The same pattern applies to block-level assertion drafting, to ad-hoc log analysis, to writing small tools that bridge between incompatible formats, to parsing design-review minutes into trackable items. These are exactly the problems an engineer can see clearly because they live inside them. They&#8217;re also exactly the problems where the engineer has the context to verify the output - they know what a correct timing-report analysis looks like, they know what a sane block-level assertion reads like, and they can spot when the AI has produced something that sounds right but isn&#8217;t.</p><p>This is AI <em>for</em> the engineer, in the sense Post 1 used the phrase. It&#8217;s liberating, it&#8217;s fast, and no one above them needs to sign off on it for it to work. Companies should encourage it. The mistake is in what comes next.</p><h2><strong>What point solutions can&#8217;t reach</strong></h2><p>The problems that actually define a company&#8217;s silicon capability - the ones that show up in tape-out outcomes, integration schedules, and product competitiveness - are not block-local. They are cross-block, cross-team, or cross-release, and they cannot be built by any engineer from their desk.</p><p>Consider spec-to-design. Making it work requires that every block&#8217;s spec use a consistent structure, that the RTL coding standards match what the model is trained or prompted to produce, that the verification plan references the spec in a format the automation can check, and that the sign-off criteria treat the spec as the authoritative source. No individual engineer can deliver that. They don&#8217;t have authority over the spec format, they don&#8217;t write the coding standards, they don&#8217;t set the verification-plan template, and they certainly don&#8217;t modify the sign-off flow. The most a well-intentioned engineer can produce is a spec-to-design script that works for their own block and breaks the moment it meets a neighboring block&#8217;s conventions. The bottom-up version gives you five incompatible prototypes, none of which survives integration.</p><p>Design by Contract is the same shape. Contracts work when every block has them in a consistent schema, when integration tests consume the schema, when sign-off references it. Any single engineer writing contracts for their own block is doing useful work, but the methodology only pays off when the entire SoC speaks the same contract language, and no engineer can make that happen from their desk.</p><p>CDC sign-off under AI, which Post 5 walked through in detail, is the same kind of problem arriving from a different angle. The question isn&#8217;t whether any particular engineer can use AI well on their own crossings. The question is which analysis the company&#8217;s sign-off rests on. If the answer is &#8220;whichever one each engineer chose,&#8221; then the variance the CDC tool was invented to eliminate has been reintroduced above the tool. Someone has to decide, with authority that extends across every block in the SoC, which AI layer is canonical. That decision is not an engineer&#8217;s to make.</p><h2><strong>Sign-off is a named-owner process</strong></h2><p>Chip design has a vocabulary for this kind of problem, and it&#8217;s worth using it. CDC sign-off, timing sign-off, power sign-off, DFT sign-off - each of these is an auditable process with a named owner, a documented flow, an audit trail, and a filed report. When a failure shows up in silicon, the trail leads back to a specific person who signed a specific document on a specific date. That isn&#8217;t bureaucracy. It&#8217;s the mechanism by which the enterprise guarantees that rigor was applied and that someone is accountable for the verdict.</p><p>The AI layer inside any of these flows has to inherit that structure or it is not sign-off. It is an opinion. Specifically, if the methodology permits Engineer A&#8217;s assistant to say &#8220;fix this&#8221; and Engineer B&#8217;s assistant to say &#8220;fine under the level protocol&#8221; for functionally equivalent crossings in the same SoC, the integration engineer is no longer reviewing the design - they are adjudicating between model outputs. When the failure shows up in silicon, the person who signed the report is left holding the candle for a decision made by whichever model was hosted at their desk the week of the review.</p><p>What the process requires instead is what Post 5 closed on: a shared tool-enforced layer, uniform across the team, grounded in the same structural analysis, auditable in the same way the rest of sign-off is. Disagreements resolve in the graph rather than in model temperature or training cutoff. This is not an optional refinement. It is the minimum condition under which &#8220;AI in CDC review&#8221; describes a sign-off flow rather than a collection of individually persuaded reviewers.</p><p>And the thing to notice is that a tool-enforced layer like that is categorically not something an engineer builds from their desk. It requires tool choice, corpus curation, agent orchestration, model-version pinning, audit instrumentation, and the authority to tell every engineer in the group to use this and not that. It is methodology work, and methodology has always been an org function.</p><h2><strong>ChipNeMo was a Jensen-level decision</strong></h2><p>The clearest industry example of the kind of AI work that can only happen with real organizational mandate is ChipNeMo. Twenty-three billion tokens of proprietary internal data, thirty years of institutional design history, infrastructure investment sized for deployment to eleven thousand engineers. That is not a staff engineer&#8217;s 20% project. It is not an initiative a good team pushed up from the bottom. It is a multi-year commitment that required a CEO-level decision that AI for chip design was strategically central to the company, and the decision was made by someone with the authority to say yes.</p><p>Most companies will never build their own ChipNeMo, for reasons Post 1 went into - the corpus isn&#8217;t there, and the handful of companies with the corpus are already the ones doing it. But the analogy is what matters for everyone else. The company-scale AI decisions - which commercial models are canonical, which EDA integrations are supported, which agents are sanctioned for which tasks, which flows are in scope and which are off-limits, who owns the methodology and who the engineers file against - are leadership-level decisions. They don&#8217;t get made at the engineer level because they can&#8217;t be made at the engineer level. The engineer level can&#8217;t enforce them.</p><p>When a company leaves the company-scale decisions unmade and tells the engineers to experiment, what it gets is a very energetic floor of point solutions and a ceiling it never breaks through. The floor is a real asset. The ceiling is the problem.</p><h2><strong>The cost-cutting misread</strong></h2><p>One last trap worth naming, because it&#8217;s running in multiple companies right now and it is orthogonal to everything above. The misread is this: AI makes engineers more productive, therefore you can run the same design with fewer or cheaper engineers, therefore senior headcount is a cost-cutting target. It is a misunderstanding of what AI actually replaces.</p><p>AI replaces the activity of generating code - the typing, the boilerplate, the repetitive structural work. It does not replace the judgment that decides whether the generated code is correct, whether the spec it was generated from describes the right design, whether the verification plan actually exercises the risky paths, whether the sign-off report tells the truth about what was checked. The judgment layer is not an adjunct to the activity. It is the load-bearing piece. When you remove the activity, you do not reduce the need for judgment - you increase it, because the activity used to filter for competence along the way, and now it does not.</p><p>A company that cuts senior engineers because AI made juniors &#8220;as productive&#8221; has possibly increased its tape-out throughput of written code. It has also reduced its capacity to tell whether the code is working. That cost does not show up in Q1 headcount metrics. It shows up at bring-up, where the engineers who would have spotted the problem are either not in the room, or are but have been moved into purely reviewing roles without the technical runway to pattern-match what they&#8217;re looking at. It is a cost that accrues silently and presents all at once.</p><p>It also raises a separate question I want to come back to in the next post: if AI is now doing the activity that used to teach junior engineers the judgment they grow into, where do the senior engineers of five and ten years from now come from? That is its own problem, and it deserves its own piece.</p><div><hr></div><p><em>Marco Brambilla is a semiconductor industry veteran with 25 years in chip design, most recently as Senior Technical Director at Meta Reality Labs. He writes about AI, chip design, and the future of hardware engineering at Above the RTL.</em></p>]]></content:encoded></item><item><title><![CDATA[Join my new subscriber chat]]></title><description><![CDATA[A private space for us to converse and connect]]></description><link>https://www.abovethertl.com/p/join-my-new-subscriber-chat</link><guid isPermaLink="false">https://www.abovethertl.com/p/join-my-new-subscriber-chat</guid><dc:creator><![CDATA[Marco Brambilla]]></dc:creator><pubDate>Sat, 25 Apr 2026 06:00:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KYZT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today I&#8217;m announcing a brand new addition to my Substack publication: Above the RTL subscriber chat.</p><p>This is a conversation space exclusively for subscribers&#8212;kind of like a group chat or live hangout. I&#8217;ll post questions and updates that come my way, and you can jump into the discussion.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/pub/abovethertl/chat&quot;,&quot;text&quot;:&quot;Join chat&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://open.substack.com/pub/abovethertl/chat"><span>Join chat</span></a></p><div><hr></div><h2>How to get started</h2><ol><li><p><strong>Get the Substack app by clicking <a href="https://substack.com/app/app-store-redirect">this link</a> or the button below.</strong> New chat threads won&#8217;t be sent sent via email, so turn on push notifications so you don&#8217;t miss conversation as it happens. You can also access chat <a href="https://open.substack.com/pub/abovethertl/chat">on the web</a>.</p></li></ol><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.com/app/app-store-redirect&quot;,&quot;text&quot;:&quot;Get app&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://substack.com/app/app-store-redirect"><span>Get app</span></a></p><ol start="2"><li><p><strong>Open the app and tap the Chat icon.</strong> It looks like two bubbles in the bottom bar, and you&#8217;ll see a row for my chat inside.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KYZT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KYZT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KYZT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:241528,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://kylewarrentest.substack.com/i/114198534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KYZT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="3"><li><p><strong>That&#8217;s it!</strong> Jump into my thread to say hi, and if you have any issues, check out <a href="https://support.substack.com/hc/en-us/sections/360007461791-Frequently-Asked-Questions">Substack&#8217;s FAQ</a>.</p></li></ol>]]></content:encoded></item><item><title><![CDATA[Claude 4.7: Getting It Wrong More Persuasively]]></title><description><![CDATA[Post 3 set out a CDC test. 4.6 failed it. 4.7 ships ten weeks later and fails it differently &#8212; more sophistication, more confidence, a second error on top. Why "capable" isn't "trustworthy."]]></description><link>https://www.abovethertl.com/p/claude-47-getting-it-wrong-more-persuasively</link><guid isPermaLink="false">https://www.abovethertl.com/p/claude-47-getting-it-wrong-more-persuasively</guid><dc:creator><![CDATA[Marco Brambilla]]></dc:creator><pubDate>Sat, 25 Apr 2026 05:21:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mz7F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mz7F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mz7F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Mz7F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Mz7F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Mz7F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mz7F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7821794,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.abovethertl.com/i/195410629?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mz7F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Mz7F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Mz7F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Mz7F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb38db0f4-5f0b-4b53-9170-0b27222bfb1e_2752x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Written with Claude Opus.</em></p><p>In my <a href="https://www.abovethertl.com/p/the-physics-of-safety-why-we-get">previous post</a> I walked through a CDC review question: an OR of multiple requesters feeding a 2-flop synchronizer, across four configurations of the OR &#8212; same-domain flops, same-domain state-machine outputs, different-domain flops, and different-domain combinational logic. I tested ChatGPT 5.3, Claude Opus 4.6, and Gemini 3.1 Pro against it. Gemini was the only one that gave the methodologically correct answer: all four are CDC violations, full stop. ChatGPT 5.3 declared the same-domain case &#8220;generally OK.&#8221; Claude 4.6 recognized the physics of the glitch but concluded the design &#8220;works, with a caveat.&#8221; Both positions steer a junior designer toward waiving a violation that has no business being waived.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Above the RTL! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Anthropic shipped Claude Opus 4.7 on April 16, about ten weeks after 4.6 went out in early February. I re-ran the same question against 4.7 within days of its release. The answer moved &#8212; in a specific direction, and in a way worth paying attention to. This post is about what moved, what didn&#8217;t, and why the &#8220;better model&#8221; assumption is not safe when AI is being deployed into engineering review.</p><h2><strong>What Claude 4.6 did</strong></h2><p>Claude 4.6 got to the right structural observation about the same-domain case &#8212; that routing-delay skew at the OR gate can produce a brief 1&#8594;0&#8594;1 transient when multiple requesters toggle on the same source edge &#8212; and then concluded that because the transient is narrow and the destination holds the signal high across multiple cycles, the design &#8220;works.&#8221; Under pushback citing the strict rule, 4.6 agreed it had made a mistake and reversed to the rule-literal position.</p><p>That&#8217;s the wrong behavior for an assistant whose role in a review is catching the reviewer&#8217;s blind spots. A reviewer who capitulates the moment the designer pushes back is not adding safety; it&#8217;s adding validation. In review the user is often the one who needs to be corrected, not agreed with.</p><h2><strong>What Claude 4.7 did</strong></h2><p>Claude 4.7&#8217;s first-pass answer on the same case was more sophisticated than 4.6&#8217;s. It described the glitch mechanism the same way but added an extended analysis of why the glitch is absorbed under a level protocol with multi-cycle hold-high. It reasoned about metastability resolution correctly in the small-signal picture &#8212; that &#964; is a regenerative time constant of the flop and is not fundamentally changed by input waveform shape &#8212; and argued that the 2FF structure gives the first flop a full destination cycle to resolve, so a brief runt at the input doesn&#8217;t translate into a deeper metastable state at the output.</p><p>On the physics, 4.7 is more rigorous than 4.6 was. And on pushback, 4.7 held ground &#8212; it did not capitulate when I cited Gemini&#8217;s absolutist answer. It restated its reasoning, acknowledged the strict rule as the safe default, and maintained that under the specific conditions of the same-domain case (level protocol, multi-cycle hold-high) the design absorbs the glitch.</p><p>That sounds like progress. It isn&#8217;t. It&#8217;s a more convincing wrong answer &#8212; and in a review context, a more convincing wrong answer is more dangerous than a less convincing one. A junior designer who pushes back on 4.6&#8217;s &#8220;works, with a caveat&#8221; might still be caught by a senior reviewer. A junior designer armed with 4.7&#8217;s detailed physics defense walks into a review with an argument the reviewer now has to rebut in detail rather than flag with &#8220;rule violation, fix it.&#8221; The bar to waive the violation just moved up; the bar to catch the violation moved up with it.</p><h2><strong>A second error layered on top</strong></h2><p>On top of getting the same-domain case wrong more persuasively, 4.7 made a ranking error on the other configurations that 4.6 did not have space to make. Asked to rank severity across the four cases, 4.7 placed the <em>different-domain flop OR</em> as categorically worse than the <em>same-domain state-machine decode</em> &#8212; labeling the cross-domain case as a fundamental violation of the synchronizer model and the state-machine case as merely &#8220;unreliable.&#8221;</p><p>That ordering is backwards in a specific, important way. The state-machine decode is always broken &#8212; silent phantom requests asserted from states the source FSM never actually reached, with the synchronizer faithfully forwarding the lie downstream. The different-domain flop OR is in a different category: every high on the synchronizer input still corresponds to a real request somewhere; the failure modes are narrow dips and MTBF pressure, both analyzable and bounded. A manager acting on 4.7&#8217;s ordering would prioritize fixing the cross-domain case while leaving the state-machine decode in place. That prioritization removes a configuration whose failure mode the level protocol tolerates and leaves the configuration that produces silent functional lies untouched.</p><p>So 4.7 isn&#8217;t wrong in one place. It&#8217;s wrong in two compounding places: a more persuasive defense of a rule violation, and a backwards severity ranking on the rest of the cases.</p><h2><strong>What the physics says, and where it stops</strong></h2><p>4.7&#8217;s defense isn&#8217;t pure fiction. It&#8217;s a regime-specific argument dressed as a general one, and that distinction matters for understanding what actually went wrong with the model&#8217;s reasoning.</p><p>Three threads run through the technical defense, and each fails the same way. The small-signal claim about &#964; being unchanged by runt-pulse input is correct in linear analysis &#8212; but the linear analysis stops short of the question that actually matters, which is whether a partially-conducting input transistor extends effective resolution time during the metastability aperture. The empirical observation that shipped silicon with rule-violating crossings hasn&#8217;t failed in the field &#8212; which readers raised after Post 3 &#8212; is real, but it&#8217;s a frequency-regime observation, not a methodology result; the MTBF exponent that makes low-frequency violations invisible evaporates as destination clocks climb. And even granting the physics defense at face value, there&#8217;s a perpetual reuse cost to safe-under-assumptions designs that correct-by-construction designs don&#8217;t carry, with break-even at one or two reuses against IP that typically reuses many more times than that.</p><p>The detailed analysis &#8212; the math, the configuration-by-configuration breakdown, the frequency-regime arithmetic, the reuse economics &#8212; is in the companion reference note linked at the end of this post. The point on the editorial side is what the three threads have in common: 4.7 reasoned at one level (small-signal physics, regime-specific behavior) and presented its conclusion at another (general methodology). That kind of level-mismatch is exactly what a reviewer is supposed to catch, and it&#8217;s exactly what a more sophisticated wrong answer makes harder to catch.</p><h2><strong>The organizational piece</strong></h2><p>One last point, and the one that compresses everything above into a practical consequence for anyone trying to put AI into engineering review.</p><p>Sign-off is an auditable process with named owners. A review produces a report. Waivers are listed with reasons. Someone&#8217;s name goes on the document that gets filed. That process cannot rest on which model the reviewer happened to have open that afternoon.</p><p>If Engineer A&#8217;s assistant says &#8220;fix this&#8221; and Engineer B&#8217;s assistant says &#8220;fine under the level protocol&#8221; for functionally equivalent crossings in the same SoC, the integration engineer is adjudicating between model outputs, not reviewing a design. Worse: the block might pass review in Q2 with one model version and fail review in Q3 when the same engineer re-runs it against a newer release that happens to be more or less absolutist than the previous one. That is variance reintroduced above the structural tool that exists specifically to eliminate it. And when the failure shows up in silicon, the person who signed the report is left holding the candle for a decision made by whichever model was hosted at their desk the week of the review.</p><p>I&#8217;ll come back to that organizational thread in the next post &#8212; it deserves more space than the closing of this one.</p><h2><strong>Three takeaways</strong></h2><p><strong>The tools evolve non-monotonically, and the non-monotonicity happens on release-cadence timescales.</strong> Two Opus releases ten weeks apart produced incompatible failures on the same review question. Plan for that. Don&#8217;t plan for monotonic improvement you can bank on.</p><p><strong>A more sophisticated wrong answer is more dangerous than a less sophisticated one.</strong> 4.7&#8217;s physics rigor made its methodology conclusion more persuasive than 4.6&#8217;s had been &#8212; and more persuasive wrong is harder to overrule in review than obviously wrong. The gating question for a review assistant isn&#8217;t &#8220;how well does it reason about the physics,&#8221; it&#8217;s &#8220;does it hold the methodology line under conditions the physics argument can&#8217;t fully close.&#8221;</p><p><strong>&#8220;Better model&#8221; is not the same as &#8220;more trustworthy in review.&#8221;</strong> Engineering review is not a benchmark task. Capability gains on coding evals do not automatically translate into capability gains on the harder question of when to refuse a plausible-sounding waiver. The trust calculus has to be re-run on every release, and the answers won&#8217;t always go the same direction.</p><div><hr></div><p><em>The full technical analysis &#8212; configuration-by-configuration physics, runt-pulse and MTBF arithmetic, the frequency-regime explanation of why low-frequency silicon forgives the violation, and the reuse economics &#8212; lives in the companion reference note at <a href="https://notes.abovethertl.com/blog/cdc-synchronizer-analysis/">notes.abovethertl.com</a>. That&#8217;s the technical archive for the publication going forward; future deep-physics work will publish there so Above the RTL can stay focused on the broader story.</em></p><div><hr></div><p><em>Marco Brambilla is a semiconductor industry veteran with 25 years in chip design, most recently as Senior Technical Director at Meta Reality Labs. He writes about AI, chip design, and the future of hardware engineering at Above the RTL.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Above the RTL! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Spec Is the Design]]></title><description><![CDATA[If the engineer&#8217;s job is moving up the abstraction stack, then the spec is where they land.]]></description><link>https://www.abovethertl.com/p/the-spec-is-the-design</link><guid isPermaLink="false">https://www.abovethertl.com/p/the-spec-is-the-design</guid><dc:creator><![CDATA[Marco Brambilla]]></dc:creator><pubDate>Thu, 09 Apr 2026 06:38:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e35cf42e-d9da-4eeb-a1f6-471dcec5bd90_1119x1124.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!grGr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!grGr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 424w, https://substackcdn.com/image/fetch/$s_!grGr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 848w, https://substackcdn.com/image/fetch/$s_!grGr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!grGr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!grGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png" width="1119" height="1124" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1124,&quot;width&quot;:1119,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:980855,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.abovethertl.com/i/193433819?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!grGr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 424w, https://substackcdn.com/image/fetch/$s_!grGr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 848w, https://substackcdn.com/image/fetch/$s_!grGr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!grGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff321d9-68be-48b8-8eee-a26454691b81_1119x1124.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><blockquote><p><strong>Usual note on how this was written.</strong> Claude Opus as writing partner, me directing the argument and reviewing every concept. See <a href="https://abovethertl.com/">Post 1</a> for why I think this transparency matters.</p></blockquote><div><hr></div><p>In the first three posts of this series, I&#8217;ve argued that the engineer&#8217;s role is shifting from <em>how</em> to <em>what</em> &#8212; from writing implementation syntax to owning design intent. I&#8217;ve shown that the model you choose matters enormously, and that even frontier models can be dangerously permissive when it comes to hardware safety rules.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>All of that raises a question: if the engineer&#8217;s job is increasingly about intent rather than implementation, where does that intent actually live?</p><p>The answer, I believe, is the spec. And I mean something very specific by that &#8212; not the 200-page PDF that sits in a SharePoint folder and nobody reads after kickoff.</p><h2><strong>How specs actually work (and don&#8217;t)</strong></h2><p>Let&#8217;s be honest about what happens in most chip design organizations.</p><p>The project starts with a spec &#8212; an ERS, a microarchitecture document, sometimes a full chip-level specification. The team writes it carefully. It describes the major blocks, the interfaces, the register map, the performance targets. Often there&#8217;s a numbered feature list: FR-001 through FR-247, each describing a capability the chip must have. The document gets reviewed, signed off, maybe even blessed by the system architect.</p><p>Then reality sets in.</p><p>The design starts before the spec is complete &#8212; it has to, because the schedule demands it. Engineers begin writing RTL for the blocks they understand well enough, while the spec for the trickier parts is still being debated. As the RTL takes shape, edge cases surface that the spec didn&#8217;t anticipate. The engineer makes a judgment call, writes the code, and moves on. Maybe they update the spec. More often they don&#8217;t &#8212; they&#8217;re under pressure to hit a milestone, and updating the document feels like overhead.</p><p>Week by week, the gap widens. The RTL evolves, the spec doesn&#8217;t. By mid-project, the spec describes a chip that no longer exists. By tape-out, the RTL <em>is</em> the spec &#8212; the document is an artifact of the past, and everyone knows it.</p><p>Now consider what happens on the verification side.</p><p>The DV team starts from the spec too &#8212; they build testbenches, write checkers, define coverage models based on the numbered feature list. But as simulation runs uncover mismatches, a subtle drift begins. When the RTL doesn&#8217;t match the testbench, the team has to decide: is the RTL wrong, or is the testbench wrong? In theory, you go back to the spec and check. In practice &#8212; especially when the spec is stale &#8212; the team uses their engineering judgment to determine which side is correct and fixes the other. The testbench gets adjusted to match the RTL, or the RTL gets adjusted to match the testbench. The engineers are making the right call based on their understanding of the design. But the spec is no longer the arbiter &#8212; and nobody updates it with the decision.</p><p>The result is a design with 100% code coverage, 100% toggle coverage, comprehensive functional coverage. The verification team has demonstrated, exhaustively, that they have a perfectly working coffee machine.</p><p>Except the spec called for a dishwasher.</p><p>This isn&#8217;t a failure of engineering talent. It&#8217;s a failure of methodology. The spec was supposed to be the source of truth, but it became a historical document the moment the first engineer made an undocumented judgment call. Everything downstream &#8212; RTL, verification, constraints, signoff &#8212; lost its anchor.</p><p>This has been tolerable for decades because the engineer who wrote the spec also wrote the RTL. The intent lived in their head, even when it didn&#8217;t live in the document. The spec was communication &#8212; a way to tell <em>other people</em> what you were building. If it was ambiguous, the same brain disambiguated it in real time.</p><p>AI breaks this model.</p><h2><strong>Why ambiguity becomes bugs</strong></h2><p>When an AI generates RTL from a spec, the ambiguity that a human engineer would resolve through experience and domain knowledge becomes a design decision made by the model. And the model will make <em>a</em> decision &#8212; it won&#8217;t stop and ask. It will pick the interpretation that seems most likely based on its training data, produce syntactically correct code, and move on.</p><p>Sometimes that interpretation will be right. Sometimes it won&#8217;t. And the failure mode is the worst kind: the output looks correct. It compiles, it simulates, it passes the tests you thought to write. The ambiguity in the spec became a silent assumption in the RTL, and unless someone catches it in review, it ships.</p><p>This is not a theoretical concern. Here&#8217;s one I&#8217;ve seen play out: a spec says &#8220;the register shall support both software write and hardware write.&#8221; It doesn&#8217;t say who wins when both write on the same cycle. The designer &#8212; human or AI &#8212; makes a choice. Maybe hardware wins, because that&#8217;s what their experience suggests. The RTL is clean, the register works, the block passes verification.</p><p>Six months later, the firmware team discovers that their writes to this register occasionally don&#8217;t stick. They file a bug. The verification team can&#8217;t reproduce it in their testbench, because their tests never happened to hit the simultaneous-write corner case.</p><p>And this isn&#8217;t a failure of verification effort. Simultaneous write scenarios of this kind are notoriously difficult to hit in simulation &#8212; even with constrained-random. Without an explicit constraint targeting that exact cycle-level overlap between the SW write and the HW write, a random stimulus generator may never produce it within any practical simulation budget. But nobody wrote that constraint, because nobody knew there was a decision to test. The spec said &#8220;shall support both&#8221; &#8212; which a coverage model dutifully marks as satisfied the first time either path fires. The corner case was invisible to verification not because the testbench was weak, but because the spec never defined it as a corner case at all.</p><p>The firmware team spends days chasing what looks like a timing issue. Eventually someone reads the RTL line by line and discovers: hardware has precedence. The firmware needs to read-back after write to confirm. Nobody knew this, because the decision was made by one engineer (or one AI) and never written down. The spec said &#8220;shall support both.&#8221; It didn&#8217;t say what happens when they collide.</p><p>In a human-only flow, the designer who chose hardware-wins would probably remember the decision and mention it in a review. In an AI-assisted flow, the model made the choice silently. There&#8217;s no memory of the reasoning, no hallway conversation where the firmware lead overhears &#8220;oh by the way, HW wins on that register.&#8221; The review burden shifts: you&#8217;re not checking whether the code matches your intuition, you&#8217;re checking whether the code matches <em>intent that was never formally expressed</em>.</p><p>And here&#8217;s where the old methodology and the new one converge: the spec drift problem existed before AI. AI just makes it lethal. When a human engineer made undocumented judgment calls, at least the intent stayed in <em>someone&#8217;s</em> head. When an AI makes those calls, the intent is gone. There&#8217;s no brain to query. There&#8217;s just code that looks right.</p><p>The fix, at least when AI is generating the RTL, is to make silent choices structurally impossible. A well-designed AI flow doesn&#8217;t just translate spec to code &#8212; it monitors for underspecification. When the model encounters a behavioral case the spec doesn&#8217;t address, it shouldn&#8217;t pick an interpretation. It should stop, flag the gap against the specific spec section, and refuse to proceed until a human reviews the ambiguity, makes a deliberate call, and updates the spec. The choice gets made &#8212; but it gets made at the spec level, explicitly, with a human in the loop.</p><p>The harder case is AI-assisted review of human-generated RTL. A human engineer writing code makes dozens of undocumented judgment calls &#8212; small decisions scattered across thousands of lines, each individually reasonable, collectively forming a shadow spec that exists only in the code. Getting an AI to read that RTL and reconstruct every implicit decision &#8212; then trace each one back to what the spec says (or doesn&#8217;t say) &#8212; is a far more demanding task than flagging gaps during generation. There&#8217;s no clean exception to raise. The AI has to infer intent from implementation, identify the decisions that were made, and surface the ones the spec never authorized. That three-way relationship &#8212; between the spec, the implementation, and the artifacts that verify them against each other &#8212; is what the next post sets out to formalize.</p><h2><strong>The spec must become the source of truth</strong></h2><p>The coffee machine problem and the AI ambiguity problem have the same root cause: the spec stopped being the thing you measured against.</p><p>In an AI-assisted design flow, the spec can&#8217;t be a communication document that drifts. It has to be the <strong>source of truth</strong> &#8212; the artifact that everything else is generated from, verified against, and traced back to. When the RTL doesn&#8217;t match the testbench, the answer is never a blind fix to either side. The testbench may have been written by someone who misread the spec; the RTL may have drifted from it. Both artifacts get measured against the spec. The answer is either &#8220;fix the RTL,&#8221; &#8220;fix the testbench,&#8221; or &#8220;update the spec&#8221; &#8212; and the last one is a deliberate, reviewed decision, not an expedient hack at midnight before milestone.</p><p>That means the spec needs to be:</p><p><strong>Precise enough to generate from.</strong> Every behavioral requirement needs to be unambiguous. Not &#8220;the register shall support SW write and HW write&#8221; but &#8220;the register supports concurrent SW and HW write; on collision, HW write takes precedence and the SW write is silently dropped; SW must read-back to confirm.&#8221; That level of precision feels pedantic when a human is reading it. When an AI is generating from it, it&#8217;s the difference between correct and plausible. And when the firmware team reads it, they know exactly what to expect.</p><p><strong>Structured enough to verify against.</strong> If the spec says the response latency is at most 5 cycles, that&#8217;s a requirement that can become an SVA assertion. If the spec says &#8220;the block should be fast,&#8221; nobody &#8212; human or AI &#8212; can write a meaningful check against that. Every requirement in the spec must be translatable into something verifiable: an assertion, a coverage point, a formal property, a test case.</p><p>This points to something important about what the spec needs to <em>be</em>. In the methodology we&#8217;re building toward, the spec is not a prose document that happens to contain requirements &#8212; it&#8217;s a <strong>structured artifact</strong>: YAML, a requirements database, or another machine-readable format in which every feature entry is defined precisely enough to be testable. Not &#8220;testable in principle,&#8221; but concretely mapped: each requirement either generates a formal property, an SVA assertion, a simulation test case, or at minimum a defined check. The hierarchy matters &#8212; formal beats simulation beats manual &#8212; but anything that produces a verifiable artifact is a valid expression of a requirement. We&#8217;ll expand on what that structure looks like in future posts. The principle belongs here: if a requirement can&#8217;t be expressed in measurable terms, it isn&#8217;t a requirement &#8212; it&#8217;s a wish.</p><p><strong>Maintained as a living artifact.</strong> The spec isn&#8217;t done when coding starts. It evolves alongside the implementation, and any change to the RTL that contradicts the spec is either a spec update (the intent changed) or a bug (the implementation diverged). This requires discipline &#8212; and here&#8217;s the hypothesis at the center of this whole approach: AI is what finally makes that discipline enforceable. The reason it has historically broken down is human fatigue. Re-reading a 200-page spec on the hundredth RTL change, cross-referencing every new line of code against every relevant section &#8212; nobody does that consistently under schedule pressure. AI does. It doesn&#8217;t tire of reading the same document, doesn&#8217;t skip the cross-check because it&#8217;s Friday afternoon, doesn&#8217;t decide a section is &#8220;probably fine.&#8221; The discipline that was always theoretically correct but practically unsustainable may finally be achievable &#8212; because the entity enforcing it doesn&#8217;t get tired.</p><h2><strong>What this looks like in practice</strong></h2><p>I&#8217;ve been developing a methodology around this, and while the details could fill a book, the core idea is a pipeline:</p><p><strong>Phase 1 &#8212; Structural decomposition.</strong> Load the spec into the AI and extract the design hierarchy: blocks, interfaces, dependencies, parameters. The output is a structured representation that becomes the map for everything that follows &#8212; the exact format is still an open question I&#8217;m working through, and it matters more than it might seem. What&#8217;s already clear is that this phase, as currently implemented, is not a single AI call. It requires a team of agents, each with their own specialization, reviewing and cross-checking each other&#8217;s outputs before the result is trusted.</p><p><strong>Phase 2 &#8212; Coherence checking.</strong> With the full spec in context, have the AI cross-reference every section against every other section. Interface mismatches, undefined behaviors, contradictions, missing specifications. A 200-page spec written by three different engineers over six months <em>will</em> have contradictions. Finding them before RTL generation starts saves weeks.</p><p><strong>Phase 3 &#8212; Requirements extraction.</strong> For each block, distill the spec into numbered, verifiable requirements. Each requirement traces back to a specific spec section. This is the layer that turns prose into contracts. At this point, the original prose spec becomes a human-readable reference, not the source of truth. The structured feature list is. The prose should be fully reconstructable from it &#8212; if it isn&#8217;t, the extraction wasn&#8217;t complete.</p><p><strong>Phase 4 &#8212; Design collateral generation.</strong> This is where hardware diverges sharply from software, and it&#8217;s worth being explicit about it. In software, the source code is the artifact &#8212; everything else is derived from it. In hardware, the RTL is fundamental but, on its own, utterly useless. Without SDC (timing constraints), CDC verification intent, UPF (power intent), scan and DFT constraints, and a growing list of other collaterals, the RTL cannot be implemented, verified, or manufactured. Each of these must be generated from the same requirements, and each must be completely aligned with the RTL and with each other. A timing constraint that doesn&#8217;t reflect the RTL&#8217;s clock structure is a silent bug. A power domain definition that doesn&#8217;t match the RTL&#8217;s isolation logic is a functional failure waiting for silicon. The spec-centric approach applies equally to all of them &#8212; RTL generation is one output of this phase, not the only one.</p><p><strong>Phase 5 &#8212; Verification.</strong> Generate assertions, coverage points, and test plans directly from the requirements. Every requirement has at least one verification artifact. The traceability matrix connects spec &#8594; requirement &#8594; collaterals &#8594; test &#8212; where collaterals means all of them: RTL, SDC, UPF, CDC intent, DFT constraints. Verification is not complete until every requirement is covered across every artifact it touches.</p><p>The critical insight is that this pipeline doesn&#8217;t work without a spec that&#8217;s precise enough to drive it. Garbage in, garbage out applies with ruthless efficiency when the &#8220;garbage&#8221; is an ambiguous spec and the &#8220;out&#8221; is AI-generated silicon.</p><h2><strong>The organizational challenge</strong></h2><p>I&#8217;ll be direct about this: the hardest part of spec-centric design isn&#8217;t technical. It&#8217;s cultural.</p><p>Engineers want to write code. That&#8217;s what they were hired to do, that&#8217;s what they&#8217;re good at, and that&#8217;s what feels productive. Writing a precise spec &#8212; one that&#8217;s unambiguous enough for an AI to generate from &#8212; feels slow. It feels like bureaucracy. The temptation to skip the spec and go straight to RTL is enormous, especially under schedule pressure.</p><p>But here&#8217;s the reframe: <em>writing the spec is the engineering work now</em>. The precision that used to go into hand-crafting RTL now goes into hand-crafting the spec. The intellectual challenge hasn&#8217;t decreased &#8212; it&#8217;s moved upward. Defining exactly what a block should do at every boundary, under every condition, is harder than coding it. The code is the easy part. The thinking is the hard part. And the thinking lives in the spec.</p><p>There is a harder truth underneath this that the industry is not yet ready to say plainly: engineers should no longer be writing RTL. The writing should be done by AI. The engineer&#8217;s role is to instruct, review, and approve &#8212; not to type the code.</p><p>We should be precise about what that means in practice, because it&#8217;s easy to misread. It does not mean throwing a vague sentence at a model and expecting a correct memory controller to emerge. In the near term, generating anything beyond simple blocks will require intensive back-and-forth: clarifying intent, correcting misinterpretations, tightening the microarch spec until the model has enough precision to proceed. There will be cases where writing the RTL directly is still faster than describing the behavior in sufficient detail for the AI to get it right. That is where the technology is today, and it&#8217;s a legitimate engineering judgment call.</p><p>But the direction is not ambiguous. <em>Writing</em> RTL &#8212; the physical act of authoring Verilog or SystemVerilog syntax &#8212; is a skill that will matter less with each generation of tooling. What will matter is the ability to specify with precision, to evaluate generated output, and to recognize what the model got wrong. For now, understanding the code well enough to review it remains essential. The threshold for what can be trusted without close inspection will keep rising. The goal is to move that threshold &#8212; not to defend the one we&#8217;re standing at today.</p><blockquote><p><em>&#8220;I&#8217;ll never ship code I don&#8217;t understand&#8221;</em> &#8212; it sounds like a principle. It&#8217;s actually a myth engineers tell themselves. In any real project, you have coworkers. You review their PRs at the architectural level, you read the commit message, you spot-check the tricky parts. You do not read every single line of every module that ends up in the chip. You never did. What you actually do is calibrate trust: you decide how much autonomy to extend to a given person, on a given block, given what you know about them. A senior engineer you&#8217;ve worked with for five years gets a different level of scrutiny than a contractor you hired last month.</p><p>AI has the same calibration problem. The question isn&#8217;t &#8220;do I understand every line it wrote?&#8221; &#8212; the question is &#8220;have I worked with this tool long enough, on this class of problem, to know where it&#8217;s reliable and where it needs supervision?&#8221; That&#8217;s how you treat a skilled colleague. Not with blind trust, and not with the paranoid assumption that every output needs to be verified from first principles. You learn the failure modes, you build intuition about where to look closely, and you extend autonomy accordingly.</p></blockquote><p>Hardware has one structural advantage here that software doesn&#8217;t: a deep bench of deterministic automated checkers. Lint catches style and coding rule violations before simulation. CDC and RDC tools find structural clock and reset domain crossings that no human reviewer reliably spots at scale. SDC checkers verify that timing constraints are consistent with the design. Formal verification and simulation catch functional divergence. Power extraction validates that UPF intent matches RTL behavior. These tools don&#8217;t care whether the code was written by a human or an AI &#8212; they apply the same rules either way. That changes the trust calibration: extending autonomy to an AI-generated collateral isn&#8217;t a leap of faith when a CDC tool is going to run over it regardless. The toolchain is part of the review.</p><h2><strong>What comes next</strong></h2><p>This post has been deliberately general &#8212; a framing of why the spec matters and what it needs to become. In the next post, I&#8217;ll get much more specific. Design by Contract is a concept from software engineering that maps surprisingly well onto hardware interfaces: clock domains, resets, protocols. I&#8217;ll show what it looks like to define formal contracts at block boundaries &#8212; assume/guarantee pairs that are precise enough to drive assertion generation and compositional verification.</p><p>The spec is the design. The contract is how you make it enforceable.</p><div><hr></div><p><em>Marco Brambilla is a semiconductor industry veteran with 25 years in chip design, most recently as Senior Technical Director at Meta Reality Labs. He writes about AI, chip design, and the future of hardware engineering at Above the RTL.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Physics of Safety: Why We Get CDC Wrong, and Why AIs Get it Worse]]></title><description><![CDATA[Or, how an over-trusted AI will quietly wave through catastrophic silicon failures.]]></description><link>https://www.abovethertl.com/p/the-physics-of-safety-why-we-get</link><guid isPermaLink="false">https://www.abovethertl.com/p/the-physics-of-safety-why-we-get</guid><dc:creator><![CDATA[Marco Brambilla]]></dc:creator><pubDate>Tue, 07 Apr 2026 05:07:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0d6419a9-6f37-434c-bb43-8710c9193862_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aXiQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aXiQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!aXiQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!aXiQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!aXiQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aXiQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5633515,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.abovethertl.com/i/193408396?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aXiQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!aXiQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!aXiQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!aXiQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f8f0b72-927a-411b-96d6-e277e27131ae_2752x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>A note on how this was written.</strong> A combination of Claude Opus and Gemini as writing partners this time around, with me directing the argument and reviewing every claim. Fitting, given what this post is about. See <a href="https://abovethertl.com/">Post 1</a> for why I think this transparency matters.</p><p>Every textbook on digital design talks about Clock Domain Crossing (CDC) and metastability. They show you the internal CMOS cross-coupled inverters of a flip-flop, detail the setup and hold windows, and invariably use the mechanical analogy of a ball balanced perfectly on the crest of a hill. They spend pages explaining precisely why and how metastability happens <em>inside</em> the flip-flop.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>But almost none of them spend time explaining why it is so catastrophic <em>after</em> the flop.</p><p>Let&#8217;s clear that up right now, because understanding the &#8220;after&#8221; is the only way to understand why synchronizer methodology isn&#8217;t just a set of guidelines&#8212;it&#8217;s safety physics.</p><h3><strong>The Danger After the Flop</strong></h3><p>When a signal violates a flip-flop&#8217;s setup or hold time, the internal transistors fight each other, and the output node gets stuck hovering at a mid-level voltage&#8212;let&#8217;s call it VDD/2<em>VDD</em>&#8203;/2.</p><p>If that mid-level voltage escapes the flop and travels down the wire into your clock domain, it&#8217;s going to hit the next stage of logic. In any real design, that signal will have a fan-out; it will drive multiple downstream gates simultaneously. Let&#8217;s say it drives Gate A and Gate B.</p><p>Here is where the silicon reality bites: because of microscopic variations in semiconductor manufacturing, local voltage (IR) drops across the die, and temperature gradients, Gate A and Gate B do not have the exact same logic switching threshold.</p><p>Furthermore, a metastable signal isn&#8217;t just hovering at a mid-level voltage&#8212;it is also incredibly <em>slow</em> to resolve. Instead of snapping with a clean, sharp transition, it sludges through the voltage threshold. Because the edge rate is so degraded, different branches of the signal path will see the value change at significantly variable delays, completely blowing up any static timing analysis you did on the logic cloud.</p><p>So when that degraded voltage sweeps across the downstream logic, two disasters can occur: <strong>Gate A might interpret it as a perfect logic HIGH (&#8217;1&#8217;) while Gate B interprets the exact same voltage as a logic LOW (&#8217;0&#8217;). Or, Gate A might see the transition much earlier than Gate B, causing a functional timing failure.</strong></p><p>In a single clock cycle, your logic paths have completely decorrelated. They disagree on the fundamental reality of the system. Because of this, a state machine&#8217;s next-state computation becomes essentially random. It can even be forced into forbidden, illegal states&#8212;imagine a strict one-hot encoded state machine that suddenly registers two bits hot because the branching decode logic read the metastable signal differently. The logical coherence of the design simply shatters.</p><p>This is why metastability is lethal. It isn&#8217;t just a signal arriving late; it is systemic structural corruption. It causes hard crashes that are completely invisible in your RTL simulator (because simulators assume instantaneous, ideal logic levels) and infuriatingly unreproducible in the lab (because they depend on exact voltage and temperature alignments).</p><h3><strong>The Synchronizer (And the Golden Rule)</strong></h3><p>The defense mechanism against this is the standard two-flop synchronizer. You put two flip-flops in series on the receiving clock domain. The first flop catches the asynchronous signal. It might go metastable, but you give it an entire clock cycle for that internal ball to fall off the hill and resolve to a clean &#8216;1&#8217; or &#8216;0&#8217;. The second flop then safely samples that clean signal and presents it to the rest of the logic.</p><p>This exact mathematical necessity is why the two flops must be physically placed directly next to each other on the silicon. In fact, many modern foundries provide a dedicated, pre-characterized two-flop sync macro in their standard cell libraries. The first flop in this cell is structurally optimized for rapid metastability resolution, and the second is a &#8220;regular&#8221; flop. By packing them tightly together, the physical design flow avoids wasting precious setup margins buffering or driving a degraded signal over a long wire. Instead, it allocates the vast majority of the clock cycle entirely to resolving the metastability.</p><p>Because this risk is so absolute, we have Golden Rules in hardware design. One of the biggest: <strong>You never put combinational logic before a synchronizer.</strong></p><p>But what happens when you ask the smartest AI models in the world to evaluate that rule? Do they understand it?</p><p>Let&#8217;s look at a &#8220;simple&#8221; test I recently threw at ChatGPT 5.3, Claude Opus 4.6, and Gemini 3.1 Pro.</p><p>I gave them a single-bit synchronizer used to pass a level signal (guaranteed to stay high long enough for the receive clock to capture it reliably). However, there are multiple request signals, and as long as at least one requests it, the sync request stays high. I placed an OR gate <em>before</em> the synchronizer.</p><p>I asked the models to evaluate this configuration across four scenarios:</p><ul><li><p><strong>Case A:</strong> All requesting flops are in the same source clock domain and are ORed together.</p></li><li><p><strong>Case B:</strong> All requesting flops are in the same source clock domain, and the request signal is the decode of a state machine.</p></li><li><p><strong>Case C:</strong> All requesting flops are in <em>different</em> clock domains and are ORed together.</p></li><li><p><strong>Case D:</strong> All requesting flops are in different clock domains and there is combinational logic before the OR.</p></li></ul><h3><strong>Why Context Is Everything</strong></h3><p>This question zeroes in on exactly what we just discussed: the physics of passing a signal between domains.</p><p>To a non-expert, <strong>Case C</strong> (OR&#8217;ing signals perfectly asynchronous to each other from different clock domains) sounds obviously incorrect&#8212;and all the models easily flagged it.</p><p>But <strong>Case A</strong> is a massive, deadly trap. Because the source flops are all in the <em>same</em> clock domain, designers (and AIs) often assume the resulting signal is &#8220;synchronous and therefore safe.&#8221; They completely discount the fact that physical routing delay differences and the analog nature of the OR gate itself will inevitably create a glitchy signal before it ever reaches the synchronizer.</p><p><strong>ChatGPT 5.3</strong> fell right into this trap. It confidently declared Case A &#8220;Generally OK&#8221; and &#8220;glitch-free,&#8221; completely missing the physical reality of Tco<em>Tco</em>&#8203; (clock-to-output) skew.</p><p><strong>Claude Opus 4.6</strong> did better, but would still steer a junior designer off a cliff. It correctly recognized the Tco<em>Tco</em>&#8203; skew and noted that Case A could generate a narrow glitch. But it concluded that because the glitch is very narrow, the statistical probability of it being captured is low&#8212;meaning the design &#8220;works, with a caveat.&#8221;</p><p><strong>Gemini 3.1 Pro</strong> provided the only methodologically correct answer: <em>Every single one of these implementations is unsafe.</em></p><p>The absolute, non-negotiable physical rule of CDC is this: <strong>There must be exactly ONE flop before the synchronizer.</strong> No gates, no combinational logic, no exceptions.</p><h3><strong>Why &#8220;Low Probability&#8221; Still Kills Silicon</strong></h3><p>To understand why Claude&#8217;s answer (&#8221;the glitch is narrow, so the probability of capturing it is low&#8221;) is so dangerous, you have to look at the math that keeps our silicon safe.</p><p>When Gemini 3.1 Pro was pushed to explain the physics of <em>why</em> Case A is a methodology violation despite the low statistical probability of capture, it nailed the absolute truth of synchronizer design.</p><p>The problem isn&#8217;t about <em>how often</em> a narrow glitch&#8212;what we call a &#8220;runt pulse&#8221;&#8212;gets captured. The real issue is <em>what happens</em> when it does get captured.</p><p>The MTBF (Mean Time Between Failures) calculations that prove a synchronizer is trustworthy are mathematically built on a fundamental assumption: <strong>the incoming signal has a sharp, clean edge.</strong></p><p>When you OR two signals together, and routing skew causes them to slightly overlap, the transistors inside the OR gate fight each other. The output doesn&#8217;t transition cleanly; it dips to a mid-level voltage and weakly pulls back up, generating a runt pulse. If your synchronizer captures that sludgy, half-voltage runt pulse exactly as the clock ticks, you aren&#8217;t just risking standard metastability&#8212;you are forcing the flip-flop into a much deeper metastable state.</p><p>This violently degrades the resolution time. A synchronizer that gets hit by a runt pulse will take substantially longer to resolve than one hit by a clean edge.</p><p>When that happens, you are no longer operating inside the design&#8217;s safety envelope. The golden rule&#8212;<em>exactly one flop before the synchronizer</em>&#8212;isn&#8217;t there just because a glitch is likely to cause a problem. It is there because if you violate it, you fundamentally break the physics assumptions of the MTBF math, meaning you can no longer computationally prove that your chip won&#8217;t fail.</p><p>And in hardware, if you can&#8217;t prove it works, it&#8217;s already broken.</p><h3><strong>The &#8220;Silicon is Forgiving&#8221; Fallacy</strong></h3><p>When you bring up the physical reality of runt pulses and MTBF degradation, you will inevitably hear a variation of this defense from experienced engineers:</p><blockquote><p><em>&#8220;We do this all the time. Silicon is inherently good, and it practically always forgives things like this. These failures happen in theoretical models, not in reality.&#8221;</em></p></blockquote><p>To be fair, they aren&#8217;t entirely wrong&#8212;but they are deeply misguided. Silicon <em>is</em> incredibly robust. Statistically speaking, the physical chance of a runt glitch perfectly aligning with the exact setup and hold window of a receiving flip-flop is astronomically low. In the lab, on the test bench, and at room temperature, the design will pass. It will probably pass for the first million hours of customer use.</p><p>This is exactly the logic Claude used to dismiss the risk. It looked at the probability and decided &#8220;it works.&#8221;</p><p>But here is the reality of modern semiconductor scale: when you ship 100 million devices, a &#8220;one in a billion&#8221; statistical anomaly stops being a theoretical edge case. It becomes an emergent, systemic failure.</p><p>When that failure finally happens in the field, it doesn&#8217;t leave a software crash dump. It manifests as a silent, unexplainable hang. It happens only at 0&#176;C or 105&#176;C, or only when a specific voltage drops on the power rail. It triggers an RMA (Return Merchandise Authorization) that your verification engineers will spend weeks trying to reproduce, chasing a ghost that refuses to show up in standard RTL simulations because simulators don&#8217;t model runt pulses.</p><p>Rule-bending relies on the assumption that &#8220;it usually doesn&#8217;t fail.&#8221; True hardware engineering relies on mathematically proving that it <em>cannot</em> fail. We don&#8217;t enforce the &#8220;One Flop Rule&#8221; because failure is <em>likely</em>. We enforce it because the moment you step outside the physical assumptions of your MTBF math, you are no longer designing. You are gambling.</p><p>And at advanced nodes and massive scale, gambling with silicon is how you waste millions of dollars on a respin. I have a personal rule I half-jokingly repeat to my engineering teams: <em>As engineers, we should save our luck to protect us from the issues we weren&#8217;t aware of. We shouldn&#8217;t waste it on the stuff we already knew about.</em></p><h3><strong>The Deadly Forest of CDC Waivers</strong></h3><p>But let&#8217;s play devil&#8217;s advocate for a second. If a runt pulse failure is truly &#8220;one in a billion,&#8221; maybe it really is just as rare as a software glitch or a cosmic ray bit-flip. If it happens that rarely, why bother fixing it?</p><p>Because the danger of breaking the rules is much more insidious than just relying on luck.</p><p>When you adopt a culture of &#8220;it probably works,&#8221; your design quickly becomes filled with tens of thousands of CDC waivers. Your verification tools will flag every single instance of combinational logic before a synchronizer, and your tired engineers will look at the logic, decide it&#8217;s statistically safe, and hit &#8220;waive.&#8221;</p><p>This creates <strong>waiver blindness</strong>. Hidden somewhere in that forest of 10,000 &#8220;probably safe&#8221; waivers is one real, catastrophic CDC error. But because your team&#8217;s attitude is that CDC glitch and reconvergence issues can generally be waived, that deadly error gets rubber-stamped along with the rest. It is perfectly camouflaged.</p><p>If, instead, you enforce the strict taxonomy of CDC design&#8212;where exactly ONE flop sits before the synchronizer&#8212;you drastically reduce your waivers. (We will always need a few unfortunate waivers, such as recombining after a gray code pointer, but they should be the exception, not the rule). When your design is clean, the handful of remaining CDC warnings are taken incredibly seriously. They stick out like sore thumbs.</p><p>This brings us right back to the role of AI in hardware engineering.</p><p>If you use a lightweight model that only understands Verilog syntax, it will look at a questionable CDC structure, calculate the statistical likelihood of failure, shrug, and tell you it&#8217;s &#8220;Generally OK.&#8221; It will actively help you grow your forest of dangerous waivers.</p><p>But if you use a frontier model that understands hardware physics, you unlock an entirely new, incredibly powerful symbiosis between AI and traditional EDA workflows.</p><p>You let the deterministic EDA tool do what it does best: it analyzes every single line of code and flags all the risky CDC areas computationally, without burning inference tokens or missing corner cases.</p><p>Then, you let the AI do what it does best: evaluate intent. When combined with tools like Verific&#8217;s Invio or Defacto&#8217;s SoC Compiler that run structural analysis, you can feed those flagged regions to the AI. The AI applies sharp physical reasoning to the actual violation. It <em>understands</em> the code and its intent. It can separate a harmless gray-code recombination from a fatal &#8220;Case A&#8221; architecture trap, and propose the exact, methodologically sound fix.</p><p>And unlike a verification engineer staring at their 100,000th waiver review on a Friday afternoon, the AI never gets tired of looking at RTL. <strong>It will flatly refuse to waive something that should never be waived on waiver number 1, and on waiver number 100,000.</strong></p><p>This fundamentally shifts the team dynamic. It puts deep, physical CDC understanding within the reach of junior engineers. Instead of a junior designer making a statistical guess and waiting three weeks for a Senior Architect to flag the violation in a grueling design review, the AI safety net catches it at the desk and explains the physics immediately. This drastically reduces the bottleneck of manager-led and expert-led design reviews.</p><h3><strong>The Imperative of Internal Testing</strong></h3><p>However, this brings us full circle to the problem I highlighted in the previous post: <strong>We currently lack public benchmarks to prove an AI can do this safely.</strong></p><p>Before any hardware company integrates this AI + EDA symbiosis into their production flow, they have a massive engineering responsibility. You cannot just deploy an LLM and hope it continues to understand metastability forever. You must rigorously prove that the toolchain will not hallucinate structural safety, and that it will not regress on future version updates.</p><p>Semiconductor companies must prepare their own internal, rigorous test suites&#8212;exactly like the CDC synchronizer test we just ran. They must continuously test their AI methodology against these cases, and explicitly prompt the system with absolute guardrails: <em>Do not validate anything that does not match our known safe methodologies. If a structure falls outside the Golden Rules, either propose a structurally safe fix, or immediately highlight it for review by a human expert.</em></p><p>That is the difference between using an AI as a syntax generator, and building an AI-enabled methodology that acts as your ultimate safety net.</p><h3><strong>What&#8217;s Next: Rethinking the EDA Flow</strong></h3><p>But we shouldn&#8217;t stop at just catching errors. EDA companies currently hold the keys to this kingdom, but their structural analysis flows are still fundamentally reactive. With the introduction of intent-aware AI, there is a massive, untapped opportunity to completely rethink how we automate hardware signoff from the ground up.</p><p>I have a few very specific ideas on how EDA vendors need to forcefully evolve their toolchains to make this intensely automated future a reality&#8212;but we&#8217;ll save that deep dive for the next post. Subscribe below so you don&#8217;t miss it!</p><div><hr></div><p><em>Marco Brambilla is a semiconductor industry veteran with 25 years in chip design, most recently as Senior Technical Director at Meta Reality Labs. He writes about AI, chip design, and the future of hardware engineering at Above the RTL.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Model Matters More Than You Think]]></title><description><![CDATA[Not all AI is created equal. In chip design, the difference can cost you a respin.]]></description><link>https://www.abovethertl.com/p/the-model-matters-more-than-you-think</link><guid isPermaLink="false">https://www.abovethertl.com/p/the-model-matters-more-than-you-think</guid><dc:creator><![CDATA[Marco Brambilla]]></dc:creator><pubDate>Sat, 04 Apr 2026 00:51:21 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f5c61a62-289c-4b56-a08c-d146ab3e5354_1507x532.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><strong>A note on how this was written.</strong> A combination of Claude Opus and Gemini as writing partners this time around, with me directing the argument and reviewing every claim. See <a href="https://abovethertl.com/">Post 1</a> for why I think this transparency matters.</p></blockquote><div><hr></div><p>In the <a href="https://abovethertl.com/">first post in this series</a>, I argued that AI is coming <em>for</em> chip designers &#8212; as a tool, not a replacement. That the engineer&#8217;s job is moving up the abstraction stack, from writing syntax to owning intent.</p><p>But there&#8217;s a critical assumption buried in that argument: that the AI you&#8217;re using actually understands hardware.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Most don&#8217;t.</p><h2><strong>The synchronizer test</strong></h2><p>Here&#8217;s something every chip designer learns early in their career: when a signal crosses from one clock domain to another, you need a synchronizer. Two flip-flops clocked by the <em>destination</em> clock, in series. The first flop may go metastable &#8212; that&#8217;s expected. The second flop samples the resolved output and provides a clean signal to the destination domain. This is foundational. It&#8217;s in every textbook. Get it wrong and you get intermittent, unreproducible failures that escape simulation and show up in silicon.</p><p>I asked two popular open-source models &#8212; Qwen 3.5 (9B parameters) and Qwen Coder (14B parameters) &#8212; to write a basic two-flop synchronizer. Both produced code. Both produced code that was syntactically correct. Neither produced a synchronizer.</p><p>Both models clocked the two synchronizer flops with the <em>source</em> clock. Then they added a third flop on the destination clock to capture the output.</p><p>Think about what that means. The two &#8220;synchronizer&#8221; flops are just a pipeline in the source domain &#8212; they accomplish nothing. The actual clock domain crossing happens at the third flop, which is a single bare register with no metastability protection. It&#8217;s worse than no synchronizer at all, because it <em>looks</em> correct. It has the right structure, the right signal names, the right number of flops. A quick visual review might miss it. The synthesis tool won&#8217;t flag it. And if it goes metastable in silicon, you&#8217;ll spend weeks chasing a bug that only appears under certain temperature and voltage conditions.</p><p>I showed both models the error. Explained exactly what was wrong and why. Neither could fix it. They didn&#8217;t understand what the correction should be &#8212; because they don&#8217;t understand what a synchronizer <em>does</em>. They had learned the shape of the code, not the purpose of the circuit.</p><p>This is not a minor failure. This is the difference between a tool you can use and one that will bury a silicon-killing bug under syntactically perfect code.</p><p>And here&#8217;s the real damage: imagine a designer &#8212; someone with ten or twenty years of experience &#8212; sees this output. They asked the AI to do one of the simplest things in digital design, and it got the clocking wrong on a synchronizer. What do they do? They close the tool, they tell their colleagues it doesn&#8217;t work, and they go back to writing RTL by hand. You&#8217;ve lost them &#8212; not because AI can&#8217;t help them, but because the wrong model just proved to them that it can&#8217;t be trusted with the basics.</p><p>That first impression is almost impossible to undo. Every engineer I know who has dismissed AI tools has a story like this: they tried it once, it produced something obviously wrong, and they concluded the technology isn&#8217;t ready. In many cases they were right &#8212; but about the <em>model</em>, not about AI in general.</p><p>Expert models&#8212;like Claude, GPT-4, Gemini, and even advanced open-weight models like Gemma 4 31B&#8212;get this right every time. I&#8217;ve generated dozens of simple CDC blocks with them, and the destination clock is exactly where it belongs. When asked to explain <em>why</em> the flops need to be on the destination clock, they give a correct, coherent explanation about metastability resolution.</p><p>At first glance, this looks like a huge win. The larger models know how to write the code. But there is a dangerous trap here: just because a model has memorized the correct <em>structure</em> of a common circuit doesn&#8217;t mean it actually understands the <em>physics</em> underlying it. Getting the basic coding right is just table stakes. The real test is methodology.</p><h2><strong>Pushing the frontier models</strong></h2><p>The two-flop synchronizer test is the baseline. But I wanted to see what happens when you push the frontier models on a much more delicate CDC architecture question. We explicitly said in the <a href="https://abovethertl.com/">first post</a> that I am not pushing a specific tool, so I ran this test across four of the best models available today: Claude Opus 4.6 (extended), Gemini 3.1 Pro, ChatGPT 5.3, and Gemma 4 31B.</p><p>Here is the setup: I gave them a complex single-bit synchronizer scenario with multiple OR&#8217;ed requests, testing four different configurations involving combinational logic before the synchronizer and clock domain crossings.</p><p>The results were incredibly revealing:</p><ul><li><p><strong>ChatGPT 5.3</strong> hit immediate methodology violations, confidently calling an unsafe single-domain OR &#8220;Generally OK.&#8221;</p></li><li><p><strong>Claude Opus 4.6</strong> caught the risk of a narrow glitch but concluded it &#8220;works, with a caveat&#8221; because the glitch probability is low&#8212;steering a designer down a dangerous path.</p></li><li><p><strong>Gemini 3.1 Pro</strong> provided the only methodologically correct answer: <em>none of these implementations are safe</em>.</p></li></ul><p>When pushed on the physics of <em>why</em>, Gemini correctly landed on the deeper truth of synchronizer design: that runt glitches force flops into deeper metastable states, which completely invalidates the MTBF math that proves the silicon safe.</p><p>Keep in mind, I only caught this because it was a microscopic, directed test. But imagine a designer asking an AI to generate a large, complex block. If the AI hallucinates a structure like Case A and calls it &#8220;generally OK,&#8221; that error will get buried in thousands of lines of RTL. The synthesis tool won&#8217;t flag it. It might not get caught until CDC signoff&#8212;or worse, a tired engineer might decide to waive the CDC warning because the logic &#8220;looks right,&#8221; sending a fundamental metastability flaw straight to silicon. The fact that Gemini definitively &#8220;refused&#8221; to budge on the methodology is exactly the kind of safety net hardware engineering requires.</p><p>But models change constantly. This introduces a new operational requirement for hardware teams: regression testing. You cannot blindly deploy a model update just because its generic coding benchmarks improved. Companies must build their own suite of CDC and methodology tests and run rigorous regressions on every model version to ensure these fundamental capabilities remain intact.</p><p><em>(This specific test gets into the deep physics of runt glitches and metastability calculations. Analyzing what the models got wrong here tells you everything you need to know about how AI handles complex hardware constraints. I&#8217;ll do a full teardown of this problem&#8212;and exactly why a runt glitch breaks a synchronizer&#8217;s safety envelope&#8212;in the next post.)</em></p><h2><strong>Why this happens</strong></h2><p>The explanation is straightforward: training data.</p><p>Large language models learn from the data they&#8217;re trained on. The public internet contains billions of lines of Python, JavaScript, Java, and C++. It contains a vanishingly small amount of SystemVerilog, and even less of it is production-quality RTL with correct CDC handling. Verilog and SystemVerilog combined account for fewer than 7,000 publicly tagged repositories on GitHub &#8212; against over 500 million total.</p><p>Smaller models, trained on smaller datasets, have seen even less hardware content. A 14B parameter model has likely encountered a handful of synchronizer examples in its entire training set &#8212; if any. It has learned that synchronizers involve two flops and a clock, but it hasn&#8217;t seen enough correct examples to learn <em>which</em> clock matters and <em>why</em>.</p><p>Frontier models &#8212; Claude, GPT-4 &#8212; have larger training sets and more capacity to retain domain-specific knowledge. They&#8217;ve seen more RTL, more CDC documentation, more EDA tool references. But even they are working from a fundamentally impoverished corpus compared to what they have for software.</p><p>This is the training data gap that Moshe Zalcberg identified in his <a href="https://moshezalcberg.substack.com/p/why-software-sprints-while-chip-design">hype cycle analysis</a>. It&#8217;s not just an abstract structural problem. It shows up concretely, in wrong clocks on synchronizer flops, in incorrect reset sequencing, in SDC constraints that are syntactically legal but semantically wrong.</p><h2><strong>The NVIDIA lesson</strong></h2><p>This is also exactly why NVIDIA built ChipNeMo. As I discussed in <a href="https://abovethertl.com/">Post 1</a>, NVIDIA invested in domain-adaptive pretraining on 23 billion tokens of their own internal chip design data &#8212; 30 years of design documents, bug reports, and verification scripts. They did this because they understood that general-purpose models, no matter how large, don&#8217;t have enough hardware knowledge to be reliable.</p><p>But here&#8217;s the uncomfortable follow-up: NVIDIA can do this because they&#8217;re NVIDIA. They have the data, the compute, and the institutional history to build a domain-specific model. Only a few top companies can do something similar, or can even afford to.</p><p>Everyone else &#8212; and that&#8217;s the vast majority of the semiconductor industry &#8212; does not have 30 years of proprietary RTL, bug databases, and design reviews to train their own model. They cannot build a ChipNeMo. They are entirely dependent on what the commercially available LLMs offer out of the box. For these companies, the quality of the frontier models isn&#8217;t a nice-to-have &#8212; it&#8217;s the whole story. If the best available model can&#8217;t write a correct synchronizer, there is no fallback. There is no internal corpus to fine-tune against, no domain-adapted alternative to switch to.</p><p>This is why model selection matters so much more in chip design than in software. A software team that picks a weaker model gets slower code reviews and buggier autocomplete &#8212; annoyances they can iterate past. A chip design team that picks a weaker model gets wrong clocks on synchronizers, incorrect CDC assumptions, and SDC constraints that look right but aren&#8217;t. And they may not find out until silicon.</p><h2><strong>What I&#8217;ve seen work (and what doesn&#8217;t)</strong></h2><p>I want to be specific here, because vague claims about AI quality are part of the noise this series is trying to cut through.</p><p><strong>Frontier models (Claude Opus/Sonnet, GPT-4) &#8212; reliable for structured hardware tasks.</strong> Synchronizers, FSMs, protocol implementations, SVA assertions, SDC constraints. They understand the domain well enough that the output is correct more often than not, and when they make mistakes, they can usually diagnose and fix them when shown the error. Claude in particular has been consistently strong on CDC-related work &#8212; I&#8217;ve used it extensively for assertion writing and formal verification setup, and it understands the semantics, not just the syntax.</p><p><strong>Mid-tier models &#8212; hit or miss.</strong> They can produce useful boilerplate and handle simple RTL tasks, but they start failing on anything that requires domain-specific reasoning. CDC, timing constraints, reset sequencing &#8212; the areas where getting the semantics wrong is dangerous &#8212; are unreliable.</p><p><strong>Small open-source models (sub-20B parameters) &#8212; not ready for hardware.</strong> The synchronizer test is the simple version. These models also struggle with basic concepts like the difference between blocking and non-blocking assignments in the context of synthesis, or why you can&#8217;t have combinational loops in synchronous logic. They have learned Verilog syntax from whatever fragments exist in their training data, but they haven&#8217;t learned hardware design.</p><p>This doesn&#8217;t mean small models are useless everywhere. For scripting, documentation, code formatting, and other tasks where hardware domain knowledge isn&#8217;t critical, they can be fine. But for anything that touches the actual design &#8212; RTL, constraints, assertions, verification &#8212; model selection is a professional decision with real consequences.</p><h2><strong>Model selection is now an engineering skill</strong></h2><p>This brings me to the point I want to leave you with.</p><p>When the industry talks about &#8220;using AI for chip design,&#8221; it often treats the model as interchangeable &#8212; as if the magic is in the workflow, the RAG system, the agent framework, the integration with EDA tools. Those things matter. But they&#8217;re all downstream of a more fundamental question: does the model understand hardware?</p><p>If it doesn&#8217;t, no amount of prompt engineering or toolchain integration will save you. You&#8217;ll get confident, syntactically correct output that embeds domain errors you may not catch until silicon. And the smaller your team, the fewer experienced engineers you have to review that output, the more dangerous this becomes.</p><p>Choosing the right model for hardware work is not a procurement decision. It&#8217;s an engineering decision, and it deserves the same rigor you&#8217;d apply to selecting an EDA tool or a verification methodology.</p><p>So what does that rigor look like in practice?</p><p>It means you don&#8217;t evaluate AI for your team by reading marketing claims, and you certainly don&#8217;t rely on generic software coding benchmarks. You need to build your own &#8220;synchronizer test.&#8221; You take half a dozen fundamental, domain-specific tasks that are critical to your workflow&#8212;a specific CDC scenario, a tricky SDC constraint problem, a finite state machine with specific reset conditions&#8212;and you see how the models handle them. You test them on edge cases. You see if they can correct themselves when you explain an error in their logic.</p><p>You establish this baseline of hardware competence <em>before</em> you roll the tool out to your engineers. Because as we saw earlier, you only get one chance to build their trust. If you hand them a model that doesn&#8217;t understand the domain, they won&#8217;t blame the model. They&#8217;ll blame the technology, and they&#8217;ll go back to writing RTL by hand.</p><p>In the next post, we will do a full teardown of the advanced CDC synchronizer test, breaking down exactly how these models handled the deep physics of hardware methodology and what it means for your verification flow. After that, we&#8217;ll move to the spec: what it means to treat it as the central artifact in an AI-assisted flow, and why Design by Contract isn&#8217;t just a software concept.</p><div><hr></div><p><em>Marco Brambilla is a semiconductor industry veteran with 25 years in chip design, most recently as Senior Technical Director at Meta Reality Labs. He writes about AI, chip design, and the future of hardware engineering at Above the RTL.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Is AI Coming FOR You, or for YOU?]]></title><description><![CDATA[The noise is louder than the signal. Let's fix that.]]></description><link>https://www.abovethertl.com/p/is-ai-coming-for-you-or-for-you</link><guid isPermaLink="false">https://www.abovethertl.com/p/is-ai-coming-for-you-or-for-you</guid><dc:creator><![CDATA[Marco Brambilla]]></dc:creator><pubDate>Fri, 03 Apr 2026 21:32:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OOOF!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51493a34-c743-4730-b4bb-b1a3a843fce9_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>Is AI Coming FOR You, or for YOU?</strong></h1><p><em>The noise is louder than the signal. Let&#8217;s fix that.</em></p><blockquote><p><strong>A note on how this was written.</strong> Practicing what I preach: this post was written with Claude Opus as a writing partner. I directed the argument, shaped every claim, and reviewed the final result. The AI helped draft the prose. That&#8217;s the <em>what</em> vs. <em>how</em> distinction this entire series is about &#8212; and yes, it works for writing too.</p></blockquote><div><hr></div><p>If you&#8217;re a chip design engineer and you&#8217;ve been reading the headlines, you&#8217;d be forgiven for thinking your career has an expiration date.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Jensen Huang says he wants every engineer at NVIDIA burning through a massive number of AI tokens per year. The productivity studies say 50x. The conference keynotes show demos where natural language becomes RTL in seconds. The implication, if you take it all at face value, is clear: the craft you spent a decade mastering is about to be automated out from under you.</p><p>I want to make two arguments in this post. The first is that the fear is understandable but wrong. The second is that the hype is understandable but dangerous &#8212; not because AI isn&#8217;t real, but because the distorted version of it is causing engineers to freeze and managers to plan against a fantasy.</p><h2><strong>Give Jensen his due</strong></h2><p>Let&#8217;s start with Jensen, because he&#8217;s being misquoted by implication.</p><p>When Jensen talks about token consumption as a metric, he&#8217;s not saying engineers are replaceable. He&#8217;s saying something much more specific: if you&#8217;re not integrating AI into your daily workflow <em>right now</em>, you&#8217;re falling behind. It&#8217;s a call to action, not a eulogy.</p><p>Jensen knows perfectly well that AI is not ready to design chips autonomously. He&#8217;s said as much &#8212; he&#8217;s talked publicly about how NVIDIA is <em>improving</em> AI&#8217;s ability to generate code, which is an admission that it&#8217;s not there yet. This is a man whose company tapes out some of the most complex silicon on the planet. He understands the gap between generating plausible-looking RTL and shipping a chip that works.</p><p>The message isn&#8217;t &#8220;AI is replacing you.&#8221; The message is &#8220;tool up or fall behind.&#8221; That&#8217;s a fundamentally different statement, and it&#8217;s one that every serious engineer should take seriously. The mental switch Jensen is signaling is real and important: stop treating AI as a threat to resist and start treating it as a capability to develop.</p><p>This isn&#8217;t theoretical for Jensen. NVIDIA built <a href="https://arxiv.org/abs/2311.00176">ChipNeMo</a>, a domain-adapted LLM trained on 23 billion tokens of their own internal chip design data &#8212; 30 years of design documents, bug reports, verification scripts, and engineering decisions &#8212; and deployed it to over 11,000 engineers. They&#8217;ve seen firsthand where AI delivers real value: bug triage, EDA script generation, onboarding junior engineers who suddenly have access to three decades of institutional knowledge in a five-second query. And they&#8217;ve seen where the human remains irreplaceable: the spec, the intent, the architectural judgment.</p><p>Here&#8217;s the telling detail: at GTC 2026, Jensen noted that 100% of NVIDIA&#8217;s software engineers use off-the-shelf AI tools &#8212; Claude Code, Codex, Cursor. Three different companies, no internal solution needed. For chip design, NVIDIA had to build their own. As CTO Bill Dally put it, the thing that makes ChipNeMo work is 30 years of design data that doesn&#8217;t exist anywhere else. General-purpose AI isn&#8217;t enough for this domain. Jensen knows that better than anyone making the headlines.</p><p>Now here&#8217;s the uncomfortable part for the rest of the industry: NVIDIA can do this because they&#8217;re NVIDIA. So can Intel, Apple, Qualcomm &#8212; a handful of companies with decades of proprietary design data at massive scale. Everyone else &#8212; and that&#8217;s the vast majority of chip design organizations &#8212; is working with what the commercially available models offer. Models trained overwhelmingly on software, not hardware. Models that have seen billions of lines of Python and JavaScript, and a vanishingly small amount of SystemVerilog. For these companies, the gap between the AI hype and what the tools can actually deliver today is even wider. The disillusionment hits harder, because there&#8217;s no internal corpus to fall back on.</p><p>But that nuance evaporates the moment the quote hits a headline. What engineers hear is: <em>even Jensen thinks we&#8217;re done</em>.</p><h2><strong>The 50x problem</strong></h2><p>Then there&#8217;s the productivity story, which makes things worse.</p><p>I wrote about this in detail in a <a href="https://www.linkedin.com/posts/marcobrambilla99_aiengineering-softwaredevelopment-chipdesign-activity-7442362228223348737-Z-iO">recent LinkedIn post</a>: the 50x productivity claims, the studies that contradict them, the perception gap where engineers <em>think</em> they&#8217;re faster but measurably aren&#8217;t. I won&#8217;t rehash all the data here &#8212; go read that post if you want the specifics.</p><p>The short version: the numbers don&#8217;t survive contact with reality, and they&#8217;re doing active damage when they get repeated uncritically in planning meetings.</p><p>But here&#8217;s what I want to add, because it&#8217;s the part that matters most for hardware: even in <em>software</em>, where you can test in seconds and ship a fix tomorrow, the productivity story is far messier than the headlines suggest. Now imagine applying those same inflated expectations to a domain where the planning alone takes months, where the verification pipeline runs overnight, and where a mistake in silicon costs tens of millions of dollars with no hotfix available.</p><p>The gap between what AI can do today and what chip design demands isn&#8217;t just a matter of model capability &#8212; it&#8217;s a matter of <em>planning complexity</em>. A chip is not a codebase you iterate on. It&#8217;s an artifact you must get right before it exists physically. That requires a level of upfront specification, constraint definition, and cross-domain coordination that has no equivalent in software. And that planning layer &#8212; the hardest, most valuable part of the work &#8212; is exactly the part that AI cannot do for you.</p><h2><strong>The damage on both sides</strong></h2><p>This matters because the distortion hits from two directions simultaneously.</p><p>Engineers hear the inflated claims and conclude they need to either become AI prompt wizards overnight or start updating their resumes. The anxiety is real &#8212; I talk to engineers who feel it. Some are paralyzed, unsure what to invest in learning. Others are churning out AI-generated code to look productive without understanding whether what they&#8217;re producing is actually correct. Neither response is healthy.</p><p>Managers hear the same claims and conclude they can do more with less. They walk into planning meetings expecting the mythical 50x and staff accordingly. When reality delivers something closer to 1.2x &#8212; with new categories of bugs to deal with &#8212; the gap between expectation and delivery creates its own set of problems. Teams get squeezed. Schedules get set to fantasy numbers. The engineers who are supposed to be benefiting from the tools end up under more pressure, not less.</p><p>The irony is that both sides are reacting rationally to bad information.</p><h2><strong>Where the engineer&#8217;s value actually lives</strong></h2><p>Moshe Zalcberg recently published <a href="https://moshezalcberg.substack.com/p/why-software-sprints-while-chip-design">an excellent analysis</a> of why AI adoption in chip design structurally lags software &#8212; the training data gap, the slow feedback loops, the correctness bar, the proprietary toolchains. I&#8217;d encourage you to read it; he&#8217;s right on all four counts, and I won&#8217;t repeat his argument here.</p><p>What I want to focus on is something different: the nature of the work itself, and specifically what happens <em>before</em> anyone writes a single line of RTL.</p><p>A chip design project begins with months of planning that has no real equivalent in software. Before a gate is synthesized, engineers must define clock architectures, reset strategies, power domains, interface protocols, and the timing relationships between all of them. They must specify what every block does, how blocks talk to each other, what assumptions each block makes about its neighbors, and what guarantees it provides in return. This is not boilerplate. This is the intellectual core of the work.</p><p>I&#8217;ll put it simply: <strong>the engineer&#8217;s job is moving up the abstraction stack, not disappearing.</strong></p><p>The AI can write your SystemVerilog. It can generate your SDC constraints. It can produce your SVA assertions. And it will remember the syntax options and corner-case flags that you forgot existed. That&#8217;s genuinely valuable.</p><p>But only the engineer can review a spec and determine whether the <em>intent</em> is correct. Only the engineer can look at a clock domain crossing definition and understand whether the synchronization strategy actually matches the system&#8217;s timing requirements. Only the engineer can evaluate whether a test plan covers the failure modes that matter, not just the ones that are easy to test.</p><p>The distinction is between <em>what</em> and <em>how</em>. AI is getting very good at <em>how</em>. The <em>what</em> &#8212; the specification, the intent, the architectural judgment &#8212; that&#8217;s where the engineer&#8217;s value lives, and it&#8217;s not going anywhere.</p><p>And here&#8217;s the part that gets underappreciated: that <em>what</em> layer doesn&#8217;t just need to be correct. It needs to be <em>precise enough that both humans and machines can execute against it</em>. A vague spec was tolerable when the same engineer who wrote it also wrote the RTL &#8212; the ambiguity lived in their head. In an AI-assisted workflow, ambiguity in the spec becomes bugs in the output. The spec has to become a contract: formal, unambiguous, and verifiable. That&#8217;s harder than writing the code, and it&#8217;s a skill the industry needs to develop deliberately.</p><h2><strong>What comes next</strong></h2><p>This is the first post in an ongoing series. Three threads will run through everything that follows.</p><p>The first is <strong>the spec as the nexus of the design</strong>. If the engineer&#8217;s job is shifting from <em>how</em> to <em>what</em>, then the spec &#8212; the formal expression of design intent &#8212; becomes the most important artifact in the entire flow. I&#8217;ll explore what a spec actually means in chip design, why it&#8217;s harder to write than the code it describes, and how concepts like Design by Contract apply to hardware interfaces: clock domains, resets, protocols. The spec isn&#8217;t just documentation. It&#8217;s the contract that everything else &#8212; implementation, verification, signoff &#8212; must be measured against.</p><p>The second, and arguably the bigger topic, is <strong>verification</strong>. Verification is where the majority of chip design effort and cost already lives, and it&#8217;s where AI has the most potential to change the economics &#8212; but only if we get the approach right. I&#8217;ll dig into how we actually measure AI&#8217;s effectiveness in a verification flow, how to write assertions in natural language and have them mean something formal, and how AI-assisted verification can close gaps that simulation alone never will. I&#8217;ll show working examples, including an AI-assisted CDC verification proof, to make this tangible rather than theoretical.</p><p>The third is <strong>the model matters more than you think</strong>. Not all AI is equal, and in chip design the differences are stark. I&#8217;ve tested smaller open-source models on something as fundamental as writing a clock domain synchronizer &#8212; and watched them use the wrong clock. Worse, when shown the error, they couldn&#8217;t understand what was wrong. The frontier models get this right every time. In a domain where a subtle bug costs millions, the gap between a model that understands hardware semantics and one that&#8217;s pattern-matching syntax is not academic &#8212; it&#8217;s existential. I&#8217;ll share concrete comparisons.</p><p>The goal isn&#8217;t to sell a methodology or push a product. It&#8217;s to have an honest, technically grounded conversation about where this is actually going &#8212; from someone who works in the trenches, not from a keynote stage.</p><p>If that sounds useful, stick around. And if you disagree with anything I&#8217;ve said here, I want to hear it. The best thinking comes from friction.</p><div><hr></div><p><em>Marco Brambilla is a semiconductor industry veteran with 25 years in chip design, most recently as Senior Technical Director at Meta Reality Labs. He writes about AI, chip design, and the future of hardware engineering at Above the RTL.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.abovethertl.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>