<?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[Chip Insights]]></title><description><![CDATA[Semiconductor Industry Deep Dives]]></description><link>https://chipinsights.net</link><image><url>https://substackcdn.com/image/fetch/$s_!Z-fT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png</url><title>Chip Insights</title><link>https://chipinsights.net</link></image><generator>Substack</generator><lastBuildDate>Tue, 14 Apr 2026 20:00:24 GMT</lastBuildDate><atom:link href="https://chipinsights.net/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Bharath Suresh]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[chipinsights@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[chipinsights@substack.com]]></itunes:email><itunes:name><![CDATA[Bharath Suresh]]></itunes:name></itunes:owner><itunes:author><![CDATA[Bharath Suresh]]></itunes:author><googleplay:owner><![CDATA[chipinsights@substack.com]]></googleplay:owner><googleplay:email><![CDATA[chipinsights@substack.com]]></googleplay:email><googleplay:author><![CDATA[Bharath Suresh]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Art of Architectural Analysis: Utilization, Throughput, Latency]]></title><description><![CDATA[Putting TinyXPU Under the Microscope]]></description><link>https://chipinsights.net/p/the-art-of-architectural-analysis</link><guid isPermaLink="false">https://chipinsights.net/p/the-art-of-architectural-analysis</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 30 Mar 2026 00:48:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9ab5082a-13dd-4059-b346-316fd31def8f_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>In this post, we introduce the art of architectural analysis through three key concepts and use them to evaluate the <a href="https://github.com/avikde/tiny-xpu">TinyXPU architecture</a> - a systolic array based 2D matrix multiplication accelerator we designed to study the evolving trends in custom silicon. The ability to analyze architectures is becoming an increasingly valuable skill - especially in a world of rapidly growing custom architectures. So, whether you&#8217;re a software or hardware engineer, you will benefit from reading about these concepts.</p><p>If you are new here, this post is part of our ongoing series on custom accelerators. In the first part of this series, we motivated the need for a bridge between a software engineer (Alice) to a new architecture developed by a hardware engineer (Harry).</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0fb3b5a2-59a2-46ab-8a9f-2ec6faf33829&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Mapping algorithms to custom silicon - Part 1&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-02-09T00:15:44.482Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f063e77-8634-49db-83c3-bab1a1dff047_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/mapping-algorithms-to-custom-silicon&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:187337389,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:26,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>In the second part, we introduced our <a href="https://github.com/avikde/tiny-xpu">TinyXPU project</a> - a practical demonstration of the hardware-software bridge.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;65cbb397-c80a-46e9-9cde-28b8681c5da9&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Mapping Algorithms to Custom Silicon - Part 2&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-03-15T18:42:10.275Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6954c585-f006-40f3-a68b-78a4b1a7e52d_1536x948.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/mapping-algorithms-to-custom-silicon-efd&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:191037416,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:2,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>While we recommend reading the first two parts, it&#8217;s not a prerequisite as this post takes a slightly different direction. </p><p></p><h1>Why does Architectural Analysis matter?</h1><p>So far, we&#8217;ve focused on how Alice and Harry can work together more effectively. Using a framework like ONNX, we showed that Alice can now target many different architectures (and many different Harrys) with relative ease.</p><p>This naturally leads to the next question: <strong>How does Alice decide which Harry to choose?</strong></p><p>At first glance, the answer seems simple: <strong>Alice would pick the &#8220;best architecture&#8221; for her algorithm. </strong>But what does &#8220;best&#8221; actually mean?</p><p>From Alice&#8217;s perspective, it could mean:</p><ul><li><p>I want my algorithm to finish faster</p></li><li><p>I want to start seeing outputs as early as possible</p></li><li><p>I want it to fit within a smartwatch, a robot, or a datacenter</p></li></ul><p>From Harry&#8217;s perspective, the architecture might be &#8220;best&#8221; because:</p><ul><li><p>It reduces the number of arithmetic operations or data movement</p></li><li><p>It runs at a higher clock frequency than competitors</p></li><li><p>It occupies less chip area than other implementations</p></li></ul><p>Clearly, Alice and Harry are both trying to communicate. But they are speaking completely different languages. If Harry wants to convince Alice to use his architecture, and Alice wants to make the right choice, they need a shared vocabulary for analyzing architectures. This is where understanding concepts in architectural analysis becomes important.</p><div><hr></div><p></p><h1><strong>The Cooking Analogy</strong></h1><p>To build intuition for the ideas in this post, we&#8217;ll use a simple analogy: cooking.</p><p>More specifically:</p><ul><li><p><strong>The Algorithm:</strong> Boiling eggs</p></li><li><p><strong>The Hardware:</strong> A kitchen stove</p></li></ul><p>Boiling eggs is simple, but it can be done in many different ways.</p><p>You might cook eggs one at a time or in batches. You might prioritize getting the first egg ready as quickly as possible or finishing all of them as fast as you can.</p><p>Similarly, each stove is different. One might have more burners. Another might heat up faster. A third might support a larger pot but heats up slower.</p><p>This is not too different from the problem Alice and Harry are trying to solve.</p><blockquote><p>For clarity, all future references to this analogy are displayed as quotes.</p></blockquote><div><hr></div><p></p><h1><strong>Recap: The TinyXPU Terminology</strong></h1><p>We briefly introduced the parameters used in the <a href="https://github.com/avikde/tiny-xpu">TinyXPU project</a> and the matrix sizes in <a href="https://chipinsights.net/i/191037416/the-hardware-architecture">part 2 of our series of posts</a>. Here&#8217;s a quick recap of variables that will be used in the rest of the post.</p><ul><li><p>The Input Matrix X has M rows and K columns.</p></li><li><p>The Weight Matrix W has K rows and N columns.</p></li><li><p>The PEs are arranged as a 2D array with HW_ROWS rows and HW_COLS columns. In this post, we will only explore the 16*16 configuration.</p></li></ul><div><hr></div><p></p><h1>Concept 1: Hardware Utilization</h1><h2>Quick Takes</h2><h3>What is it?</h3><p>How much of the hardware is being used to produce useful output.</p><blockquote><p>In our cooking analogy, if your kitchen stove has 4 burners but you only use 3 simultaneously, the utilization is 75%.</p></blockquote><h3>Why does it matter?</h3><p>High utilization means more of the hardware is active at the same time. In general, this implies that more sub-operations (additions, multiplications, data movement) are happening in parallel.</p><blockquote><p>If more burners on your stove are on, it means more eggs are being boiled.</p></blockquote><h3>When does it not matter as much?</h3><p>In general-purpose architectures like CPUs and GPUs, the hardware is almost never fully utilized. In these systems, overall utilization matters less than the utilization of specific components (such as ALUs).</p><p>However, an accelerator is designed for a very specific purpose. It is therefore wasteful to build hardware that cannot be effectively utilized. In most accelerators, high utilization is close to a non-negotiable.</p><blockquote><p>Having low utilization is like using a 4-burner stove when you only need to boil one egg.</p></blockquote><div><hr></div><h2>PE Utilization in TinyXPU</h2><p>In TinyXPU, the size of the systolic array is fixed in hardware (16&#215;16 in our case), but the matrices we run on it are not. This mismatch is the primary reason utilization becomes an important metric.</p><p>The goal is simple: <strong>keep as many PEs busy as possible for as long as possible.</strong></p><blockquote><p>In our cooking analogy, this is equivalent to keeping all burners active. If you only have enough eggs for two burners, the remaining burners sit idle, even though the stove could do more work.</p></blockquote><h3>Where does underutilization come from?</h3><h4>1. When the workload is smaller than the array</h4><p>If the weight matrix is smaller than the systolic array, for example fewer than 16 rows or columns, some PEs will not map to useful computation. To maintain correctness, we typically pad the matrix with zeros. These PEs still perform MAC operations, but their outputs are discarded.</p><blockquote><p>This is like turning on burners with empty pots. Heat is being generated, but no eggs are being cooked.</p></blockquote><h4>2. When the workload is larger than the array</h4><p>If the matrix is larger than the array, we process it in tiles. While tiling allows us to handle arbitrarily large matrices, the last tile is often smaller than the array, leading again to underutilization. We will skip the details of tiling in this post, but this edge effect is quite common in practice.</p><h3>Startup overhead: why utilization is not 100%</h3><p>Even when the workload maps perfectly to the array, utilization is not immediately 100%. This is because not all cycles contribute to useful work. At the start of execution, the systolic array needs a few cycles before all PEs begin performing meaningful computations. Similarly, toward the end, some PEs become idle as the computation completes.</p><p>From a utilization perspective, these cycles are overhead. The hardware is active, but not all of it is doing useful work.</p><blockquote><p>Before you can boil eggs, you need to fill the pot and wait for the water to heat up. During this time, the stove is on, but no eggs are being cooked.</p></blockquote><p>Considering this overhead, we define utilization as:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{PE Utilization} = \\frac{M}{M + \\text{pipeline latency}} = \\frac{M}{M + HW\\_ROWS + N - 2}&quot;,&quot;id&quot;:&quot;QNRZVWRMGT&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>This shows that utilization improves as the workload grows, because the fixed overhead is amortized over more useful work.</p><h3>PE Utilization vs Batch Size</h3><p>The impact of matrix sizes on PE utilization is shown in this plot:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GjWG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GjWG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 424w, https://substackcdn.com/image/fetch/$s_!GjWG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 848w, https://substackcdn.com/image/fetch/$s_!GjWG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 1272w, https://substackcdn.com/image/fetch/$s_!GjWG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GjWG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png" width="671" height="516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10588ab4-72f0-4055-a125-143a1e21b208_671x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:671,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/192536198?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.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_!GjWG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 424w, https://substackcdn.com/image/fetch/$s_!GjWG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 848w, https://substackcdn.com/image/fetch/$s_!GjWG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 1272w, https://substackcdn.com/image/fetch/$s_!GjWG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10588ab4-72f0-4055-a125-143a1e21b208_671x516.png 1456w" sizes="100vw" loading="lazy"></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>Key takeaways:</strong></p><ul><li><p>The 16&#215;16 case asymptotically approaches 100% utilization, as the pipeline overhead becomes negligible compared to useful work.</p></li><li><p>The other shapes (4&#215;16, 8&#215;8, 16&#215;4) all have 64 total weights, and therefore can only utilize 64 out of 256 PEs, which corresponds to a maximum of 25% utilization.</p></li><li><p>For small values of M, utilization is low across all configurations due to pipeline overhead.</p></li><li><p>As M increases, all curves improve, but they plateau at different levels depending on how well the workload matches the hardware.</p></li></ul><p>Utilization is a useful analytical metric. It tells us how much of the hardware is actively doing useful work and highlights inefficiencies due to pipeline overhead.</p><div><hr></div><h2>How architects use this metric in real chips</h2><p>In real chips, utilization is rarely exposed as a single number. Instead, architects infer it using performance counters, stall analysis, and activity factors across compute units. A classic example is <a href="https://arxiv.org/pdf/1704.04760">the TPU v1 paper</a>, where the authors show that achieving high utilization of the 256&#215;256 systolic array was critical to performance. They analyze how different workloads map to the array and highlight cases where underutilization leads to significant efficiency loss.</p><div><hr></div><p></p><h1>Concept 2: Throughput</h1><h2>Quick Takes</h2><h3>What is it?</h3><p>The number of useful operations completed per unit time.</p><blockquote><p>In our cooking analogy, this is the number of eggs you can boil per hour.</p></blockquote><h3>Why does it matter?</h3><p>Throughput directly determines how fast an algorithm completes. If more operations are finished per unit time, the total execution time is lower.</p><h3>When does it not matter as much?</h3><p>In many systems, overall throughput is limited by the slowest component. Even if one part of the system achieves very high throughput, it may not translate into end-to-end performance improvements.</p><p>Custom accelerators are typically designed to maximize throughput. However, understanding what limits that throughput is just as important.</p><div><hr></div><h2>From Throughput to the Roofline Model</h2><p>So far, we have treated throughput as a single number. In reality, it is constrained by two fundamental limits:</p><ul><li><p>How fast the hardware can compute</p></li><li><p>How fast data can be moved to and from the hardware</p></li></ul><p>The roofline model captures both of these limits in a single diagram, which is why it is a better representation of our throughput analysis.</p><blockquote><p>In our cooking analogy, the number of eggs you can boil per hour is not just determined by how many burners your stove has. It is also limited by how quickly you can bring water, eggs, and utensils to the stove. If you have many burners but can only carry a few eggs at a time, most burners will sit idle. On the other hand, if you can supply eggs very quickly but only have a small stove, the burners themselves become the bottleneck.</p></blockquote><div><hr></div><h2>TinyXPU Roofline Model</h2><h3>Vertical Axis: Peak Throughput</h3><p>For a systolic array, if the workload fully utilizes the array, the peak compute throughput is:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{Throughput}_{\\text{max}} = R \\times C&quot;,&quot;id&quot;:&quot;QTAXMYUDWS&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>For our 16&#215;16 array, this gives a peak of <strong>256 MACs per cycle</strong>. However, if the weight matrix is smaller than the array, only K&#215;N PEs perform useful work. This represents the vertical axis of our roofline model.</p><h3>Horizontal Axis: Arithmetic intensity</h3><p>Arithmetic intensity is the number of MACs executed for each byte of data read from the memory. For our matrix multiplication example:</p><ul><li><p>Weights are loaded once: K&#215;N bytes (we ignore this as batch size is usually large)</p></li><li><p>Inputs contribute: M&#215;K bytes</p></li><li><p>Outputs contribute M&#215;N values, each 4 bytes (we assume output values are 32-bit integers)</p></li></ul><p>This gives:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{Total Bytes} = M \\times (K + 4N)&quot;,&quot;id&quot;:&quot;DHWBOGTGKK&quot;}" data-component-name="LatexBlockToDOM"></div><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{Total MACs} = M \\times K \\times N&quot;,&quot;id&quot;:&quot;GNRMRHNQLY&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>So, the arithmetic intensity (AI) becomes:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{AI} = \\frac{K \\times N}{K + 4N}&quot;,&quot;id&quot;:&quot;HAXIYXLOKK&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><h3>Roofline Plot</h3><p>Based on the definitions above, the roofline plot for TinyXPU is shown here:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wyjK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wyjK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 424w, https://substackcdn.com/image/fetch/$s_!wyjK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 848w, https://substackcdn.com/image/fetch/$s_!wyjK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 1272w, https://substackcdn.com/image/fetch/$s_!wyjK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wyjK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png" width="680" height="519" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:519,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157445,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/192536198?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.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_!wyjK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 424w, https://substackcdn.com/image/fetch/$s_!wyjK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 848w, https://substackcdn.com/image/fetch/$s_!wyjK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 1272w, https://substackcdn.com/image/fetch/$s_!wyjK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a22cf2f-cba0-4900-ad5d-ad0b021f7880_680x519.png 1456w" sizes="100vw" loading="lazy"></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>Each point on the plot represents a specific workload running on the hardware. The <strong>horizontal axis</strong> is arithmetic intensity and the peak throughput. The roofline plot also includes two lines which are important:</p><ul><li><p>The <strong>horizontal line</strong> represents the peak compute capability of the hardware</p></li><li><p>The <strong>sloped lines</strong> represent memory bandwidth limits</p></li></ul><p>Several insights emerge from this single diagram:</p><ul><li><p>If the weight matrix is smaller than the array, peak compute throughput cannot be reached due to underutilization (this aligns with our earlier analysis on PE utilization.)</p></li><li><p>Among shapes with the same number of weights, taller matrices perform better than wider ones. This happens for two reasons:</p><ul><li><p>Idle rows waste more hardware than idle columns</p></li><li><p>Output traffic scales with N, and outputs are larger in size</p></li></ul></li></ul><ul><li><p>The 4&#215;16 shape is more bandwidth-limited than 16&#215;4, since it produces more output data</p></li><li><p>Most configurations in this example are memory-bound unless bandwidth exceeds 64 bytes per cycle (which is <a href="https://www.avikde.me/p/cache-effects-in-object-oriented">rare in CPU L1 caches as seen from this post on min{power}</a>)</p></li></ul><p>Using a roofline plot, it becomes clear how throughput can be maximized:</p><ul><li><p>Move upward by increasing compute efficiency (Larger batch sizes)</p></li><li><p>Move right by increasing arithmetic intensity (Taller matrices)</p></li></ul><p>By being in the top right, we get the best throughput.</p><div><hr></div><h2>How architects use this metric in real chips</h2><p>The <a href="https://people.eecs.berkeley.edu/~kubitron/cs252/handouts/papers/RooflineVyNoYellow.pdf">roofline model</a> is one of the most widely used tools for reasoning about throughput limits. Modern accelerators frequently use roofline-style analysis. For example, NVIDIA presents roofline-inspired performance characterizations in its architecture whitepapers, (For example, <a href="https://images.nvidia.com/aem-dam/en-zz/Solutions/data-center/nvidia-ampere-architecture-whitepaper.pdf">NVIDIA A100 Architecture</a>) where compute throughput and memory bandwidth limits are analyzed together.</p><p>In fact, the roofline plot we obtained for TinyXPU is not too different from the plot shared in the <a href="https://arxiv.org/pdf/1704.04760">TPU v1 paper</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PVLb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PVLb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 424w, https://substackcdn.com/image/fetch/$s_!PVLb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 848w, https://substackcdn.com/image/fetch/$s_!PVLb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 1272w, https://substackcdn.com/image/fetch/$s_!PVLb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PVLb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png" width="1148" height="980" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:980,&quot;width&quot;:1148,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:457532,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/192536198?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F062ab955-09e2-4f91-a17a-d23082fe0e20_1148x980.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_!PVLb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 424w, https://substackcdn.com/image/fetch/$s_!PVLb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 848w, https://substackcdn.com/image/fetch/$s_!PVLb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 1272w, https://substackcdn.com/image/fetch/$s_!PVLb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53d46ac-b71f-48fc-8fb9-0002f8d61555_1148x980.png 1456w" sizes="100vw" loading="lazy"></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 style="text-align: center;">Source: <a href="https://arxiv.org/pdf/1704.04760">https://arxiv.org/pdf/1704.04760</a></p><div><hr></div><p></p><h1>Concept 3: Latency</h1><h2>Quick Takes</h2><h3>What is it?</h3><p>Latency is the time it takes to produce the first useful output after the first input is provided.</p><blockquote><p>In our cooking analogy, this is the time between turning on the stove and having the first boiled egg ready.</p></blockquote><h3>Why does it matter?</h3><p>Latency matters when partial results are useful before the entire computation is complete. For example, modern LLM-based systems stream outputs token by token. As soon as the first token is ready, it is displayed to the user. In such systems, latency directly impacts user experience.</p><h3>When does it not matter?</h3><p>Latency matters less when the full output is required before any further computation can proceed. For example, in a classification task such as predicting whether an image contains a cat or a dog, the final decision can only be made after all computations are complete. In such cases, throughput is often the more relevant metric.</p><div><hr></div><h2>Latency in TinyXPU</h2><p>To analyze latency, we first need to define what we mean by the &#8220;first output.&#8221; In matrix multiplication, we define the first output as the result corresponding to the <strong>first row of the input matrix X</strong>.</p><p>For readers familiar with LLMs, consider the computation of the query matrix:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{Q} = X \\times W_q&quot;,&quot;id&quot;:&quot;TARRPUEFVL&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>Each row of X corresponds to the embedding of an input token. The first row of Q therefore corresponds to the first token. The time taken to produce this row is a key component of <strong>time to first token (TTFT)</strong>.</p><h3>Where does latency come from?</h3><p>Even if the input matrix X has many rows, the first result that emerges from the systolic array corresponds to the first row. This delay is caused by the time it takes for data to propagate through the array.</p><blockquote><p>In the cooking analogy, this is like the time it takes to heat the water and cook the first egg. Even if you plan to cook many eggs, the first one still takes the same amount of time.</p></blockquote><p>For a weight-stationary systolic array, the latency to first output is:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{Latency} = \\text{HW_ROWS} + \\text{N} - \\text{2}&quot;,&quot;id&quot;:&quot;QUMWTMEIKA&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>Essentially, the latency only depends on the number of rows in the hardware array and the number of output columns. It is independent of the batch size M.</p><h2>Throughput vs Latency Tradeoff</h2><p>The plot below shows throughput on the vertical axis and latency on the horizontal axis for different matrix shapes. Each curve corresponds to a fixed number of rows K, while varying the number of columns N. The batch size (M) is fixed to 256. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bgk-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bgk-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 424w, https://substackcdn.com/image/fetch/$s_!bgk-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 848w, https://substackcdn.com/image/fetch/$s_!bgk-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 1272w, https://substackcdn.com/image/fetch/$s_!bgk-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bgk-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png" width="629" height="518" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:518,&quot;width&quot;:629,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108050,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/192536198?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.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_!bgk-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 424w, https://substackcdn.com/image/fetch/$s_!bgk-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 848w, https://substackcdn.com/image/fetch/$s_!bgk-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 1272w, https://substackcdn.com/image/fetch/$s_!bgk-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2083951-dfeb-474c-b8b8-c3bac97adbba_629x518.png 1456w" sizes="100vw" loading="lazy"></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>This plot clearly shows the inherent tradeoff between throughput and latency.</p><ul><li><p>Increasing N increases throughput, since more PEs are active</p></li><li><p>However, increasing N also increases latency</p></li></ul><p>This means designs with the same total compute capacity (total number of PEs) can have very different latency and throughput characteristics. If you want fast response to the first output, you prefer smaller matrices with lower latency. If you want higher overall throughput, you prefer larger matrices that utilize more of the hardware. </p><blockquote><p>In the cooking analogy, this is like choosing between boiling one egg quickly or boiling many eggs at once. Using a larger pot allows you to cook more eggs simultaneously, but it may take longer before the first one is ready.</p></blockquote><p>This throughput-latency tradeoffs starts to become even more interesting in accelerator designs with pipelined PEs to achieve higher clock frequencies, and full-system implementations with non-zero instruction and memory latencies - topics we will explore in future posts.</p><div><hr></div><h2>How architects use this metric in real chips</h2><p>Latency is typically modeled using a combination of analytical models and cycle-accurate simulations that capture pipeline depth and data movement delays. For example, Google discusses latency-sensitive inference in the <a href="https://edge.seas.harvard.edu/sites/g/files/omnuum6351/files/edge/files/mlperf_inference.pdf">MLPerf Inference Benchmark</a>, which includes metrics like time-to-first-token and tail latency.</p><div><hr></div><p></p><p>As you can see from the discussion, architectural analysis is as much art as it is science. It&#8217;s more like appreciating a painting than reading a book. An experienced art connoisseur can analyze a painting at a glance. But that ability comes from a shared understanding of color, brushwork, and design principles between the artist and the observer.</p><p>This post aims to build a mental model for architectural analysis, using our basic TinyXPU implementation as a concrete example. As we continue to expand TinyXPU by adding activation functions, mapping it to an FPGA, and <a href="https://www.avikde.me/p/systolic-arrays-for-general-robotics">exploring unorthodox systolic networks</a>, we&#8217;ll build on these ideas and introduce new ones along the way.</p><p>Subscribe to <a href="https://chipinsights.net/">Chip Insights</a> and <a href="https://www.avikde.me/">min{power}</a> to follow along as we do that.</p><div><hr></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Mapping Algorithms to Custom Silicon - Part 2]]></title><description><![CDATA[Running matrix multiplication on a TPU-style architecture]]></description><link>https://chipinsights.net/p/mapping-algorithms-to-custom-silicon-efd</link><guid isPermaLink="false">https://chipinsights.net/p/mapping-algorithms-to-custom-silicon-efd</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sun, 15 Mar 2026 18:42:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6954c585-f006-40f3-a68b-78a4b1a7e52d_1536x948.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>This post is the second in our series on custom hardware accelerators. In part 1, we introduced the hardware-software interface problem that has kept the two domains as separate islands and limited co-innovation. We also introduced two approaches to overcome this gap. If you haven&#8217;t done so already, check out that post here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;e4718d2e-cbd6-4479-b3c4-3ca0f5a168b1&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Mapping algorithms to custom silicon - Part 1&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-02-09T00:15:44.482Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f063e77-8634-49db-83c3-bab1a1dff047_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/mapping-algorithms-to-custom-silicon&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:187337389,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:22,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>In this part, we present <a href="https://github.com/avikde/tiny-xpu">TinyXPU, an open-source, extensible project</a> we are building in conjunction with this series of posts. In this post, we focus on two pieces:</p><ul><li><p>The hardware architecture of TinyXPU</p></li><li><p>The software interface that allows it to run ONNX models</p></li></ul><p>The goal of this project is to show what the bridge between software and hardware looks like in practice, and is a stepping stone to the architectural analysis we have planned in upcoming posts.</p><div><hr></div><p></p><h1><strong>Why Matrix Multiplication</strong></h1><p>The first important decision is to pick the right algorithm to study. We picked Matrix Multiplication, primarily because of its widespread use in many of today&#8217;s most important software domains. Here are a few representative examples:</p><ul><li><p><a href="https://docs.pytorch.org/docs/stable/generated/torch.nn.Linear.html">Deep Learning</a>: Neural network layers compute weighted sums using matrix multiplications.</p></li><li><p><a href="https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms">Robotics</a>: BLAS, in particular the Level 3 GEMM routine, is used in many robotics libraries</p></li><li><p><a href="https://docs.vulkan.org/features/latest/features/proposals/VK_NV_cooperative_vector.html">Computer Graphics</a>: Shaders use matrix math for transformations; modern APIs like Vulkan have started exposing this directly.</p></li></ul><p>Matrix multiplication also stresses both compute throughput (number of arithmetic operations completed per second) and memory bandwidth (the number of bits read from memory per second). This helps us identify both compute and memory bottlenecks - a topic we will explore in future posts.</p><div><hr></div><p></p><h1><strong>Why build an accelerator from scratch</strong></h1><p>We are not the first to focus on matrix multiplication, and we certainly won&#8217;t be the last. As <a href="https://chipinsights.net/p/the-alphabet-soup-of-processors">mentioned in an earlier post</a>, there has been an explosion of &#8220;processing units&#8221; like TPUs and NPUs that, at their core, accelerate matrix multiplication. In fact, modern GPUs and even CPUs now support <a href="https://developer.arm.com/community/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-scalable-matrix-extension-introduction">matrix multiplication extensions</a> and dedicated units to handle the operation efficiently. There are also a number of &#8220;tinyTPU&#8221; projects out there with an architecture very similar to the one we will be demonstrating. (Some examples are <a href="https://github.com/tiny-tpu-v2/tiny-tpu/tree/main">tiny-tpu-v2/tiny-tpu</a> and <a href="https://github.com/Alanma23/tinytinyTPU">Alanma23/tinytinyTPU</a>.) So before we go any further, we wanted to explain why we are doing this from scratch.</p><p>Our main motivation is that building from scratch allows us to understand (and hopefully explain) everything we are doing from first principles. As you will see, we are only starting with two simple SystemVerilog files. This way, we do not have to make any assumptions or shoot in the dark to understand architectural decisions. This also allows us the flexibility to scale or modify the architecture for future posts in this series.</p><p>It&#8217;s not just the hardware architecture that could be confusing. As we <a href="https://chipinsights.net/p/mapping-algorithms-to-custom-silicon">mentioned in Part 1, the software interface is messy and still evolving</a>. As this is the first implementation in our series, we wanted to keep a simple but still operational software interface. Setting up this interface is important to obtain performance metrics that will be used for architectural analysis in future posts in this series.</p><p>With that motivation, we can now look at the two parts of the TinyXPU project: the hardware architecture and the software interface.</p><div><hr></div><p></p><h1><strong>The Hardware Architecture</strong></h1><p>We built the first version of our matrix multiplication accelerator based on the weight stationary systolic array architecture: the same one at the heart of Google&#8217;s TPUs. While this post will not go into the details of this architecture, here&#8217;s a dedicated post that&#8217;s got you covered:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:190643644,&quot;url&quot;:&quot;https://www.avikde.me/p/systolic-arrays-for-general-robotics&quot;,&quot;publication_id&quot;:7287367,&quot;publication_name&quot;:&quot;min{power}&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z7FY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea21ccc-90aa-4750-861d-eb48a6144608_176x176.png&quot;,&quot;title&quot;:&quot;Systolic arrays for general robotics, AI, and scientific computing&quot;,&quot;truncated_body_text&quot;:null,&quot;date&quot;:&quot;2026-03-12T15:09:36.193Z&quot;,&quot;like_count&quot;:8,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;handle&quot;:&quot;avikde&quot;,&quot;previous_name&quot;:&quot;Avik De, PhD&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;profile_set_up_at&quot;:&quot;2025-09-01T11:05:25.762Z&quot;,&quot;reader_installed_at&quot;:&quot;2025-12-14T02:43:43.888Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7436599,&quot;user_id&quot;:356074997,&quot;publication_id&quot;:7287367,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:7287367,&quot;name&quot;:&quot;min{power}&quot;,&quot;subdomain&quot;:&quot;minpower&quot;,&quot;custom_domain&quot;:&quot;www.avikde.me&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Explorations in computing and robotics focused on power-efficiency and safety -- personal posts by Avik De, robotics Ph.D. and founder&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ea21ccc-90aa-4750-861d-eb48a6144608_176x176.png&quot;,&quot;author_id&quot;:356074997,&quot;primary_user_id&quot;:356074997,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-16T12:24:04.343Z&quot;,&quot;email_from_name&quot;:&quot;Avik De from min{power}&quot;,&quot;copyright&quot;:&quot;Avik De&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[1063960],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.avikde.me/p/systolic-arrays-for-general-robotics?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Z7FY!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea21ccc-90aa-4750-861d-eb48a6144608_176x176.png" loading="lazy"><span class="embedded-post-publication-name">min{power}</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Systolic arrays for general robotics, AI, and scientific computing</div></div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a month ago &#183; 8 likes &#183; Avik De</div></a></div><p></p><h2><strong>The Processing Element (PE)</strong></h2><p>The core block in TinyXPU is called a Processing Element (PE), a term that originated in <a href="https://ieeexplore.ieee.org/document/1653825">H. T. Kung&#8217;s seminal work in 1982</a>. Here&#8217;s the block diagram of our PE (the <a href="https://github.com/avikde/tiny-xpu/blob/main/src/pe.sv">SystemVerilog implementation can be found in pe.sv</a>):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!--KK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!--KK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 424w, https://substackcdn.com/image/fetch/$s_!--KK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 848w, https://substackcdn.com/image/fetch/$s_!--KK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 1272w, https://substackcdn.com/image/fetch/$s_!--KK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!--KK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png" width="932" height="665" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:665,&quot;width&quot;:932,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45772,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/191037416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.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_!--KK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 424w, https://substackcdn.com/image/fetch/$s_!--KK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 848w, https://substackcdn.com/image/fetch/$s_!--KK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 1272w, https://substackcdn.com/image/fetch/$s_!--KK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9f982c4-784f-4fc3-9985-b8965b84d9a1_932x665.png 1456w" sizes="100vw" loading="lazy"></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>This PE block executes the following operation:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c4bf8843-def5-4fe2-9882-25a1ff272038&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">acc_out = data_in * weight_in + acc_in</code></pre></div><p>However, this operation is executed in two phases:</p><ol><li><p>Weight Loading Phase: In this phase, the value of weight_in is stored in the register weight_r when weight_ld is set to 1.</p></li><li><p>Multiply Accumulate Phase: Here, the stored value weight_r is multiplied with data_in, and acc_in is added to get the final result. When en is set to 1, this result is sent as the output.</p></li></ol><p>The reason for having these two phases comes from its primary use case in neural networks, where we typically process multiple inputs (called &#8220;batches&#8221;) using the same weights - so loading the weights once prevents the need to continuously broadcast its value during the computation. This is called a "weight-stationary" architecture, indicating that the weights don't move through the array in the Multiply Accumulate Phase.</p><p>It&#8217;s also important to highlight that the Multiply Accumulate Phase has a latency of 1 cycle - which means that the output of the PE is ready one cycle after the inputs. This pipeline stage is needed to break the combinational logic path when two PEs are connected together, in order to achieve a high clock frequency. (If you are new to digital design, <a href="https://chipinsights.net/p/confessions-of-a-static-timing-analysis">this post on Static Timing Analysis</a> would help you understand why this matters.)</p><div><hr></div><p></p><h2><strong>Matrix Multiplication on a PE array</strong></h2><p>The functionality of a single PE can be achieved using the Arithmetic and Logic Unit (ALU) in most CPUs. So, to really understand the benefit of a PE array, let&#8217;s consider a PE array with 2 rows and 2 columns, and map a matrix operation on it. Specifically, we will be implementing this operation:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wwyr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wwyr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 424w, https://substackcdn.com/image/fetch/$s_!wwyr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 848w, https://substackcdn.com/image/fetch/$s_!wwyr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 1272w, https://substackcdn.com/image/fetch/$s_!wwyr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wwyr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png" width="693" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:693,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9271,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/191037416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.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_!wwyr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 424w, https://substackcdn.com/image/fetch/$s_!wwyr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 848w, https://substackcdn.com/image/fetch/$s_!wwyr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 1272w, https://substackcdn.com/image/fetch/$s_!wwyr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7af4603d-5621-4381-92d2-3d90e89ea2a8_693x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Our PE array performs matrix multiplication by arranging PEs in a grid where data flows between neighboring elements. Each PE stores one weight value and performs a multiply-accumulate operation every cycle. As input values move across the array, partial sums are passed between PEs until the final output values emerge from the last column. We depict the cycle-by-cycle dataflow in this diagram:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ccvc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ccvc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 424w, https://substackcdn.com/image/fetch/$s_!ccvc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 848w, https://substackcdn.com/image/fetch/$s_!ccvc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 1272w, https://substackcdn.com/image/fetch/$s_!ccvc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ccvc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png" width="1191" height="622" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:622,&quot;width&quot;:1191,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61833,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/191037416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.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_!ccvc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 424w, https://substackcdn.com/image/fetch/$s_!ccvc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 848w, https://substackcdn.com/image/fetch/$s_!ccvc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 1272w, https://substackcdn.com/image/fetch/$s_!ccvc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5520f78-99fd-46fa-86a8-e6e606ea175c_1191x622.png 1456w" sizes="100vw" loading="lazy"></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><ul><li><p>In the first cycle, X11 is passed as input to PE with weight W11</p></li><li><p>In the second cycle, X11 moves on to the next PE. (with weight W12.) Simultaneously, X21 and X12 are passed to the first PE column. (with weights W11 and W21.)</p></li><li><p>In the third cycle, X21 and X12 move to the second PE column.( with weights W12 and W22.) Also, X22 is passed to PE with weight W21. In this cycle, we also have the first output value ready:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;87924e6d-eeaf-4775-9b72-cdbcc6d08e08&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Y11 = X11 &#215; W11 + X12 &#215; W21</code></pre></div><p>Note that the latency (time from first input to first output) is 2 cycles in this example. As the number of rows of the PE array increases, this latency also increases. After the first output, new outputs are ready in every adjacent cycle, as we will see.</p></li><li><p>In cycle 4, X22 moves to the second PE column. We also get output Y21 and Y12 from both the PE columns.</p></li><li><p>Finally, in cycle 5, the last output Y22 is ready in the second PE column.</p></li></ul><div><hr></div><p></p><h2><strong>What makes this an accelerator?</strong></h2><p>The biggest advantage of this PE architecture is that we read the operands only once from memory. In the above example:</p><ul><li><p>Weights W11, W12, W21, W22 are only read in the Weight Loading Phase and are then stored in the PEs</p></li><li><p>Although Inputs X11, X12, X21, X22 are used twice during the matrix multiplication, they are only read once (For example, after X11 is read in Cycle 1, it is just passed to the next PE in Cycle 2 - it does not have to be read again.)</p></li></ul><p>In a standard CPU, the intermediate values would need to be stored somewhere. It could be stored in a fast register for small matrices, but might need to spill to slower caches and main memory as the matrix size increases.</p><p>Our PE array avoids repeatedly fetching operands from memory because values propagate directly between neighboring PEs. This is what makes the PE array architecture great for matrix multiplication. (This statement assumes PE array size and matrix sizes are the same - the <a href="https://github.com/avikde/tiny-xpu/blob/main/src/array.sv">PE array SystemVerilog implementation</a> in TinyXPU is parametrized to support different number of rows and columns. In our upcoming posts, we will explore the impact of these different configurations on the performance of our chip.)</p><p>Finally, although our current implementation is just a PE array, we want to highlight that a real accelerator has other components in its microarchitecture which we are skipping here for the sake of simplicity:</p><ul><li><p>We need to define an <a href="https://chipinsights.net/p/the-isa-debate">Instruction Set Architecture (ISA)</a> and include an instruction decode unit</p></li><li><p>We need a Unified Buffer (typically SRAM) to hold the matrix data before streaming it into the PE array. (Typically, a DMA controller would stream data from CPU DRAM to the local SRAM.)</p></li></ul><p>As this project evolves, some of these components will be (and must be) included in the design.</p><div><hr></div><p></p><h1><strong>The Software Bridge</strong></h1><p>In the previous section, we described the hardware implementation of our TinyXPU Matrix Multiplier. Hopefully, you are convinced that the PE array is an improvement over using general-purpose CPUs for matrix multiplication. If you are a hardware engineer, many of your projects stop here with this question: how do you connect your hardware with the existing software ecosystem and actually run matrix multiplication on your chip? <a href="https://chipinsights.net/i/187337389/the-two-bridges">In part 1, we described two approaches to solve this problem</a> - Runtime-level and Compiler level integration. In this section, we will implement runtime-level integration using an ONNX Runtime Execution Provider.</p><p></p><h2><strong>The ONNX Runtime Flow</strong></h2><p>The flow used in our project is intentionally simple.</p><p>First, a small ONNX model containing a matrix multiplication operation is <a href="https://github.com/avikde/tiny-xpu/blob/main/scripts/matmul.py">generated using a Python script</a>. An ONNX model represents a computation as a graph, where each node corresponds to an operation such as matrix multiplication. In our implementation, the generated ONNX file includes a <a href="https://onnx.ai/onnx/operators/onnx__MatMulInteger.html">MatMulInteger operator</a>, as shown in this code snippet:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;cpp&quot;,&quot;nodeId&quot;:&quot;df923a2b-7cf7-4b78-88b5-a3fe3f3d7568&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-cpp">X = helper.make_tensor_value_info("X", TensorProto.INT8, [None, W_data.shape[0]])
Y = helper.make_tensor_value_info("Y", TensorProto.INT32, [None, W_data.shape[1]])
W_init = numpy_helper.from_array(W_data, name="W")
node = helper.make_node("MatMulInteger", inputs=["X", "W"], outputs=["Y"])
graph = helper.make_graph(
[node],
"MatMulInteger_4x4",
[X],
[Y],
initializer=[W_init],
)</code></pre></div><p>Next, a<a href="https://github.com/avikde/tiny-xpu/blob/main/scripts/run_matmul.py"> Python driver loads this model</a> using ONNX Runtime and registers the<a href="https://github.com/avikde/tiny-xpu/blob/main/onnx-plugin/src/tinyxpu_ep.cpp"> TinyXPU Execution Provider (EP)</a>, as shown in this code snippet:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;cpp&quot;,&quot;nodeId&quot;:&quot;3e606b32-be23-4437-8af7-8aabf0876b2c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-cpp">ort.register_execution_provider_library("SampleEP", path_to_dll)
session_options = ort.SessionOptions()
session_options.add_provider_for_devices(tinyxpu_devices, {})</code></pre></div><p>The goal of the EP is to inspect the ONNX model, looking for an eligible operation: in our case, it would be MatMulInteger. (See the <a href="https://github.com/avikde/tiny-xpu/blob/main/onnx-plugin/src/tinyxpu_ep.cpp">GetCapabilityImpl() method in the TinyXPU EP</a> for details.) The ONNX Runtime will call the function where we registered our ability to execute MatMulInteger when the session is instantiated.</p><p>When the runtime encounters the matrix multiplication operation, it dispatches that operation to the TinyXPU backend (via the <a href="https://github.com/avikde/tiny-xpu/blob/main/onnx-plugin/src/tinyxpu_ep.cpp">ComputeImpl() hook)</a> instead of executing it on the CPU (which is the default option when no match is found.) This way, we are able to connect the TinyXPU hardware directly to software without requiring a custom compiler - a major benefit of this approach.</p><div><hr></div><p></p><h2><strong>Practical Constraints</strong></h2><p>Much like the hardware implementation, our current ONNX interface has some constraints that we would like to highlight.</p><p>Firstly, instead of exporting a Pytorch/Tensorflow implementation into the ONNX format, we directly use <a href="https://github.com/avikde/tiny-xpu/blob/main/scripts/matmul.py">a Python script</a> to generate an ONNX model containing a single MatMulInteger operation. This keeps the software stack minimal while still exercising the same ONNX Runtime execution flow that would be used with real models. <a href="https://docs.pytorch.org/tutorials/beginner/onnx/export_simple_model_to_onnx_tutorial.html">Pytorch</a> and <a href="https://onnxruntime.ai/docs/tutorials/tf-get-started.html">Tensorflow</a> both support functions to export to ONNX, so this additional step is fairly trivial. In fact, ONNX is a common intermediate exchange format before going to many hardware APIs including TensorRT for NVIDIA embedded devices, Qualcomm Hexagon, and others.</p><p>As mentioned in the previous section, we do not yet have an FPGA or ASIC implementation of our design for this part. That&#8217;s where Verilator comes into the picture. The SystemVerilog implementation of the TinyXPU systolic array is compiled into a cycle-accurate C++ model using Verilator. The TinyXPU Execution Provider links directly against this generated C++ model. When ONNX Runtime dispatches a matrix multiplication operation (MatMulInteger) to TinyXPU, the Execution Provider performs three steps (See the <a href="https://github.com/avikde/tiny-xpu/blob/main/onnx-plugin/src/tinyxpu_ep.cpp">ComputeImpl() method in the TinyXPU EP</a> for details):</p><ol><li><p>Read input tensors from ONNX Runtime</p></li><li><p>Drive the Verilator simulation input signals and toggle the clock</p></li><li><p>Collect output signals from the simulation</p></li></ol><p>So, in our implementation, the ONNX runtime connects the software world with a cycle-accurate simulation of the hardware, as shown in this diagram below (The &#8220;real silicon&#8221; version of this diagram was included in <a href="https://chipinsights.net/i/187337389/1-runtime-level-integration">part 1</a>):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TNuy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TNuy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 424w, https://substackcdn.com/image/fetch/$s_!TNuy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 848w, https://substackcdn.com/image/fetch/$s_!TNuy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 1272w, https://substackcdn.com/image/fetch/$s_!TNuy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TNuy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png" width="1018" height="747" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:747,&quot;width&quot;:1018,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85480,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/191037416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.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_!TNuy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 424w, https://substackcdn.com/image/fetch/$s_!TNuy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 848w, https://substackcdn.com/image/fetch/$s_!TNuy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 1272w, https://substackcdn.com/image/fetch/$s_!TNuy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ad66433-7426-41ef-8ae3-92c3880dcf62_1018x747.png 1456w" sizes="100vw" loading="lazy"></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>It&#8217;s important to mention that irrespective of whether we are running on a Verilator-generated simulation, custom hardware implemented on FPGAs or as an ASIC, or existing processors on an SoC like CPUs, GPUs, or NPUs - this implementation successfully abstracts the hardware away from the software - our stated goal from <a href="https://chipinsights.net/i/187337389/the-push-and-the-pull">Part 1</a>.</p><div><hr></div><p></p><p>Part 2 ends here. Although the current implementation is intentionally minimal, it already gives us a complete system: a software stack capable of dispatching matrix multiplication operations to a cycle-accurate simulation of our accelerator. This demonstrates how runtime-level integration works, and more importantly, provides a useful platform for experimentation.</p><p>In the next post, we use this framework to analyze the architecture in more detail, exploring how design parameters such as the size of the array compared to the workload and memory bandwidth affect throughput, latency and utilization. Check it out here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5e4908da-8b02-442d-acd8-d07f32e601c2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Art of Architectural Analysis: Utilization, Throughput, Latency&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-03-30T00:48:09.476Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ab5082a-13dd-4059-b346-316fd31def8f_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/the-art-of-architectural-analysis&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:192536198,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>The <a href="https://github.com/avikde/tiny-xpu">TinyXPU project</a> will also expand to support activation functions to run complete ONNX ML models that can be deployed on an FPGA. To get notified about all this and more, subscribe to both <a href="https://chipinsights.net/">Chip Insights</a> and <a href="https://www.avikde.me/">Min{power}</a>. And if you have some experience taking up similar projects, or have an interesting direction for us to explore, let us know in the comments.</p>]]></content:encoded></item><item><title><![CDATA[ENIAC and the Workload Problem - Part 1]]></title><description><![CDATA[Why studying ENIAC Matters - Especially now.]]></description><link>https://chipinsights.net/p/eniac-and-the-workload-problem-part</link><guid isPermaLink="false">https://chipinsights.net/p/eniac-and-the-workload-problem-part</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 09 Mar 2026 05:31:06 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6f6da59c-dccd-4de4-9008-b5938c7293d2_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>This is the first post in a series aimed at understanding the ENIAC architecture and the lessons that remain relevant in today&#8217;s computing landscape. In this post, I introduce the ENIAC story and explain why it still matters.</p><div><hr></div><h1><strong>The First Workload Problem</strong></h1><p>On December 7, 1941, the attack on Pearl Harbor became a key moment in computing history. The US, having now entered World War II, commissioned the Army&#8217;s Ballistic Research Laboratory (BRL) with a project: To improve the accuracy of artillery strikes. This effort led to the creation of artillery firing tables: one of the first large computing workloads.</p><p>When I was in school, some of our mathematics and physics exams did not allow the use of calculators. Instead, when complex arithmetic problems were involved, we were allowed to bring in something called log tables: collections of precalculated values used to solve complex arithmetic problems in place of a calculator. (I never understood the point then, but maybe it was all for this moment.) An artillery firing table was essentially the Army version of a log table. Instead of telling you what 10.14 &#247; 2.38 equals, it turns complex ballistic calculations into simple lookups that a gun crew can use to quickly determine the correct elevation or angle before firing at a target.</p><p>Unlike arithmetic, which does not change with time, firing tables were different based on the gun type, barrel wear, and environmental conditions. To generate the data for each of these situations, ballistic trajectories had to be solved numerically. Human calculators could not produce these tables with the speed and accuracy the war demanded. BRL used a Differential Analyzer, the state-of-the-art computer of the time, to run these calculations. They brought down the computation time from 3 days to just 15 minutes per trajectory. This was still too slow, and the results were often inaccurate, requiring human verification. The most important computational workload of that time was still waiting for a faster machine.</p><p>In 1943, the Army approved a proposal from J. Presper Eckert and John Mauchly at the University of Pennsylvania to build a machine with a completely new architecture. This computer, called the Electronic Numerical Integrator and Computer (ENIAC), had one goal: calculate firing tables at an exponentially faster rate to help with the US&#8217;s World War II defense. On September 2, 1945, just two years after the ENIAC project was approved, Japan surrendered, and this officially marked the end of World War II. ENIAC served its purpose and has its place in history as one of the most influential computers.</p><p>Well&#8230; that&#8217;s not quite how the story goes. Sure, ENIAC was commissioned to calculate firing tables, and its architecture actually improved the speed of trajectory calculations, reducing the time taken from 15 minutes on the Differential Analyzer to about 30 seconds. ENIAC also made giant strides to improve the setup time and accuracy when running ballistic calculations. But one detail surprised me: ENIAC was announced complete in February 1946. <strong>This means ENIAC was never used to compute a single entry in the artillery firing tables used during World War II.</strong> From 1943 to 1945, ENIAC experienced major delays, and also went significantly over its initial budget. ENIAC also consumed on the order of 150-200 kW of power, and sometimes contributed to power outages in the Philadelphia area. When the war ended, ENIAC was just an expensive infrastructure investment whose primary workload was no longer important.</p><div><hr></div><h1><strong>Why ENIAC Still Matters</strong></h1><p>Despite a lack of demand for ballistic calculations, the ENIAC project continued after the war. In fact, this is where the ENIAC story really starts, and was my motivation to write this post.</p><p>ENIAC has lived through what I would call an &#8220;interesting architectural life.&#8221; It was rushed into existence to handle one specific workload. But that&#8217;s not why we remember ENIAC today. The ENIAC architecture is widely regarded as the first modern computing architecture. It was one of the first computers capable of running a program. ENIAC went on to effectively run weather models, nuclear simulations, and scientific computations. These workloads fell well outside the scope of military applications that it was designed for. At one point, the demand for ENIAC was so high, that renting ENIAC for two days cost as much as buying a new car.</p><p>This period of immense success also came with financial and political pressures on ENIAC to live up to the tag of a &#8220;general purpose computer.&#8221; That&#8217;s when the wheels started to come off, and the architectural deficiencies started to become evident. Eventually, it became clear that the ENIAC architecture could not be repurposed anymore to handle emerging workloads, and it had to be retired. The computing industry is less than 100 years old. It sounds like a lot of time, but it takes a long time for a new architecture to get adopted, and even longer for it to completely be abandoned. The ENIAC story is one of the few stories that has come full-circle, and has also been well documented. This presents a rare opportunity to analyze decisions that worked, and more importantly, decisions that failed.</p><p>There is another reason why ENIAC matters. Fundamentally, ENIAC looks nothing like modern computers. Many aspects of ENIAC are no longer directly relevant today, starting from the fact that ENIAC&#8217;s fundamental building block is a vacuum tube, not a transistor. However, since ENIAC essentially gave birth to modern computing, the ENIAC computer is simple enough (by today&#8217;s standards) that we can try to understand all aspects of the design. This includes the hardware architecture, software decisions, infrastructure challenges, supply chain issues, and interpersonal dynamics that were involved in the design. These details, in addition to making for a great story, are important to explain both the good and bad decisions that shaped ENIAC. In my opinion, attempting the same exercise with a modern computer, while more relevant, is almost impossible due to the sheer complexity involved.</p><p>This is why ENIAC is worth your time. But why now?</p><div><hr></div><h1><strong>The New Infrastructure Buildout</strong></h1><p>Studying ENIAC is not just an academic exercise. Today, we are racing to build advanced computers that fill warehouses. They consume gigawatts of power, cost tens of billions of dollars to build, and are optimized for a single dominant workload: large-scale LLM training. This is not very different from how ENIAC began.</p><p>There are a lot of debates happening around the world about whether this investment is justified. I don&#8217;t see a lot of value in these debates because I think we are well past that point - today this infrastructure buildout is now inevitable. But if there is one thing that the ENIAC story tells us, it is this: the workload won&#8217;t remain the same. When projects attracts large investment, especially from traditionally &#8220;non-tech&#8221; sources like sovereign funds, it is expected to outlive its first workload. Cities do not build large bridges merely to connect two houses on opposite sides of a river; these projects are funded to enable large-scale economic growth in multiple different ways.</p><p>Language models are the first dominant workload of today&#8217;s compute infrastructure, and they are expected to keep this it fully utilized in the near term. But I am certain we will see new workloads soon. It could be as simple as a different approach to advance AI. Or it could be something well beyond AI - astrophysics, quantum algorithms, genomics. Regardless of which buzzword you choose to believe in, two important questions emerge:</p><ol><li><p>Which compute infrastructure can last the longest before we need a clean reset?</p></li><li><p>How effectively can we map future workloads onto the infrastructure we are building today?</p></li></ol><p>By studying ENIAC, I hope to build a mental model to help answer these questions. <a href="https://www.youtube.com/watch?v=rsbT8MDHKFA">As Nvidia CEO Jensen Huang put it</a>, even if you are not the first one to catch the metaphorical apple that falls from the tree, this mental model can help you become the first person to pick up the apple from the ground.</p><div><hr></div><p>That concludes Part 1 of this series. If you like what I just said, follow along for upcoming posts in this series, starting with a deep dive on the ENIAC architecture.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h3><strong>Sources:</strong></h3><p>My primary reference for this study is the book &#8220;ENIAC in Action&#8221; which goes into an impressive level of detail about many aspects of this computer.</p><p>If you know any other resources to help with this project, leave a comment!</p>]]></content:encoded></item><item><title><![CDATA[Mapping algorithms to custom silicon - Part 1]]></title><description><![CDATA[An introduction to the messy middle between software and microarchitecture]]></description><link>https://chipinsights.net/p/mapping-algorithms-to-custom-silicon</link><guid isPermaLink="false">https://chipinsights.net/p/mapping-algorithms-to-custom-silicon</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 09 Feb 2026 00:15:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8f063e77-8634-49db-83c3-bab1a1dff047_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>This is part of a series of posts on custom accelerators. Here&#8217;s a link to all parts:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;63e6dc50-4d42-4370-b56c-d906dfda1578&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Mapping algorithms to custom silicon - Part 1&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-02-09T00:15:44.482Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f063e77-8634-49db-83c3-bab1a1dff047_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/mapping-algorithms-to-custom-silicon&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:187337389,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:30,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5297f738-bd24-4084-b85c-07c58309f0ae&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Mapping Algorithms to Custom Silicon - Part 2&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-03-15T18:42:10.275Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6954c585-f006-40f3-a68b-78a4b1a7e52d_1536x948.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/mapping-algorithms-to-custom-silicon-efd&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:191037416,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:13,&quot;comment_count&quot;:2,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;13230e35-4598-42d2-ac76-2bdac5ce82cc&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Art of Architectural Analysis: Utilization, Throughput, Latency&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-03-30T00:48:09.476Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ab5082a-13dd-4059-b346-316fd31def8f_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/the-art-of-architectural-analysis&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:192536198,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:12,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p></p><p>Unless you have been living under a large silicon wafer, you would have heard some version of &#8220;custom silicon is the future.&#8221;<a href="https://chipinsights.net/p/the-alphabet-soup-of-processors"> In an earlier post</a>, I attempted the classification of this exploding set of XPUs. While classification would help someone understand how to best match today&#8217;s chip with today&#8217;s algorithms, the real billion dollar question (literally) is: <strong>how can we ensure that tomorrow&#8217;s chips are best suited to run tomorrow&#8217;s algorithms.</strong></p><p>One of the biggest problems in hardware-software co-design is that hardware and software have always existed on separate islands. So, the right way to answer this question is by bringing the two a little closer. In that spirit, this post (and hopefully many more to come) is the result of my collaboration with<a href="https://www.avikde.me/"> Avik De</a>. Together in this post, we explore the &#8220;messy middle&#8221; between algorithms and silicon.</p><div><hr></div><h1>The push and the pull</h1><p>To make custom silicon work, it needs both a &#8220;push&#8221; and a &#8220;pull&#8221;. There is a &#8220;push&#8221; from the side of the hardware designer (who we will call Harry) to get more developers to use their chip, and a &#8220;pull&#8221; from the algorithm writer (who we will call Alice) to find the best platform on which to run their software.</p><p>The algorithm writer (Alice) wants to be able to frame their algorithm in a high-level language. This algorithm could be anything, ranging from the numerous advancements in<a href="https://vbml.substack.com/p/a-personal-map-of-ml-hardware-trade?r=5vzx85&amp;triedRedirect=true"> machine learning</a>, to algorithms from emerging domains like<a href="https://www.avikde.me/p/the-architecture-behind-end-to-end"> robotics</a>. Although Alice is confident about the value of her algorithm, she is unaware of the best hardware architecture to run it on. This is the &#8220;pull&#8221; - Alice needs to be able to find hardware to run her algorithm while staying within her software ecosystem of comfort.</p><p>Harry, on the other hand, has a great idea for a power-efficient way to compute matrix products by optimizing the operations, the instruction overhead, or the memory movement. He develops the design and synthesizes it on an FPGA. He knows it&#8217;s better than any other hardware architecture out there, but he has no idea how to get people to try it. This is the &#8220;push&#8221; - Harry wants to get his ideas out there, but needs to bridge it to Alice&#8217;s &#8220;pull.&#8221;</p><p>In theory, this looks like a match made in heaven - can&#8217;t Alice just take her algorithm and &#8220;run it&#8221; on Harry&#8217;s chip? Well, not quite, because of an idea that has been around as long as computing, but continues to be challenging.</p><div><hr></div><h1>An old analogy</h1><p>The idea that Alice should be able to &#8220;just run&#8221; her code on Harry&#8217;s hardware is not new. In fact, it is the idea that made general-purpose computing work. A CPU solves this problem using the idea of Code Abstraction.</p><p>Say Alice was mapping an algorithm to run on a general purpose CPU - she would simply write the language using a high-level language like C++ or Python, &#8220;compile&#8221; this code, and run it on an x86 or ARM CPU. The reason why this process is so simple is the emergence of the idea of an Instruction Set Architecture (ISA) - which in simple words is a contract to map high-level languages to certain general purpose hardware. (This post skips the details of ISA and compilers, but if you are interested, check-out<a href="https://chipinsights.net/p/the-isa-debate"> this older Chip Insights post</a>.)</p><p>The mapping between Alice&#8217;s algorithm and Harry&#8217;s hardware using a standard ISA can be understood using this diagram:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dixk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dixk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 424w, https://substackcdn.com/image/fetch/$s_!Dixk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 848w, https://substackcdn.com/image/fetch/$s_!Dixk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 1272w, https://substackcdn.com/image/fetch/$s_!Dixk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dixk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png" width="1048" height="1445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1445,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:185671,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/187337389?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.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_!Dixk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 424w, https://substackcdn.com/image/fetch/$s_!Dixk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 848w, https://substackcdn.com/image/fetch/$s_!Dixk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 1272w, https://substackcdn.com/image/fetch/$s_!Dixk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc292b170-a60e-4727-a1f1-4c2c71d6a5a9_1048x1445.png 1456w" sizes="100vw" loading="lazy"></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>One of the key advantages of specifying an ISA is that it allows software developers to write code that can run on evolving hardware without needing to know the specifics. Say Alice compiled her algorithm using an x86 compiler like<a href="https://gcc.gnu.org/install/index.html"> GCC</a>, when the next generation of x86 CPU is released, she will have to do one of the following:</p><ul><li><p>In majority of the cases, as the hardware microarchitecture improves, the same binary can benefit from improvements without needing to be rebuilt.</p></li><li><p>Even if a major hardware improvements need to be accompanied by changes to instruction encoding or order (for example, <a href="https://en.wikipedia.org/wiki/Advanced_Vector_Extensions">Advanced Vector Extensions (AVX)</a>), it is managed by &#8220;the compiler&#8221; - Alice simply needs to recompile the same high-level language code with the latest version of the compiler in order to enjoy the benefits of the new and improved hardware.</p></li></ul><p>This separation worked spectacularly well, because:</p><ul><li><p>Hardware designers like Harry innovated on pipelines, caches, branch predictors, and out-of-order execution.</p></li><li><p>Software designers like Alice largely ignored those details and built software that lived for decades.</p></li><li><p>Compilers absorbed the complexity at the boundary.</p></li></ul><p>However, custom accelerators break this assumption.</p><div><hr></div><h1><strong>Why isn&#8217;t there a standard ISA for custom silicon?</strong></h1><p>In the early days of CPUs, every CPU provider had their own custom ISA, largely because hardware constraints and software ecosystems were still tightly coupled. Over time, a few winners emerged, leaving us with just 3-4 significant ISAs, each supported by mature compilers and software ecosystems. This convergence was possible because general-purpose programs share a common structure: scalar control flow, pointer-based memory access, and relatively uniform performance characteristics across workloads.</p><p>There is a common misconception that custom accelerators would evolve in the same way - that over time, a standard ISA would emerge, and every accelerator would support it. But this idea is fundamentally flawed. To truly understand why a standard ISA cannot exist for custom accelerators, let&#8217;s consider a thought experiment. Assume that Harry defines a standard ISA for his accelerators. Let&#8217;s try to think about how that ISA would look for an operation like matrix multiplication.</p><p>If Alice is using<a href="https://docs.pytorch.org/docs/stable/generated/torch.matmul.html"> PyTorch</a>, the operation would look something like this:</p><p><strong>result = torch.matmul(A, B)</strong></p><p>There are certain aspects of matrix A and matrix B that inform Harry how to execute this operation efficiently on his specific hardware. Crucially, these aspects influence not what computation is performed, but how it is scheduled and mapped onto hardware resources. For example, the shapes of A and B can be used to decide:</p><ul><li><p>Tiling strategy: How many chunks should the matrix multiplication be split into based on the available hardware resources</p></li><li><p>Buffering techniques: what data can be stored in the fast, on-chip SRAM, and what should be moved to DRAM.</p></li><li><p>Data layout: For the specific size of A and B, is column major better, or does a tiled layout reduce memory accesses?</p></li></ul><p>This is a short list that only considers the matrix shape - several other factors, like the data types, sparsity, etc. can be exploited to map this operation efficiently in hardware.</p><p>However, Harry needs to define a standard ISA that encompasses all these possibilities - the same ISA must work for a large square matrix with significant sparsity, as well as for matrices with just a single row or column. The compiler alone is of limited help here, because many of the most performance-critical decisions like tiling, buffering, and layout are instance-specific and cannot be encoded directly into an instruction set contract.</p><p>If Harry tries to account for all these possibilities within an ISA, he must either:</p><ul><li><p>Over-specify behavior, resulting in an unoptimized, CPU-style ISA and microarchitecture</p></li><li><p>Stick to a very low-level abstraction (resulting in bloated hardware - like one large matrix multiplier with huge amounts of memory.)</p></li></ul><p>In either case, a standard ISA would strip away the very benefits that customization is meant to provide. So where does that leave Harry and Alice?</p><div><hr></div><h1>The two bridges</h1><p>Since Harry can&#8217;t simply expose a standard AI ISA and call it a day, the question becomes: how does his hardware connect to Alice&#8217;s world at all?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9HXg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9HXg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 424w, https://substackcdn.com/image/fetch/$s_!9HXg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 848w, https://substackcdn.com/image/fetch/$s_!9HXg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 1272w, https://substackcdn.com/image/fetch/$s_!9HXg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9HXg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png" width="955" height="1176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1176,&quot;width&quot;:955,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128835,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/187337389?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.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_!9HXg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 424w, https://substackcdn.com/image/fetch/$s_!9HXg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 848w, https://substackcdn.com/image/fetch/$s_!9HXg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 1272w, https://substackcdn.com/image/fetch/$s_!9HXg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55a2dde5-f726-4588-84da-9c8f8ccd400b_955x1176.png 1456w" sizes="100vw" loading="lazy"></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>Today, there are two practical bridges between them.</p><h2><strong>1. Runtime-level integration</strong></h2><p>In the first approach, Alice expresses her model in a standardized, framework-agnostic format. A shared runtime is responsible for executing that model and deciding which parts run on which device. From Alice&#8217;s perspective, almost nothing changes. She writes PyTorch or TensorFlow code and exports a model. From Harry&#8217;s perspective, the integration surface is narrow and predefined: he implements support for a fixed menu of operations, and the runtime takes care of everything else.</p><p>A useful analogy here is a <strong>food court appliance</strong>. Alice places an order by pointing to items on a menu: &#8220;grill this,&#8221; &#8220;blend that,&#8221; &#8220;heat this up.&#8221; The food court manager (the runtime) decides which appliance handles which step. Harry builds a specialized appliance that performs certain actions very efficiently. If the order matches the appliance&#8217;s menu, the runtime sends the work to Harry&#8217;s hardware and it shines. If not, the runtime quietly routes those steps to a different device that knows how to handle them. (which is typically a CPU or a GPU.)</p><p>This is exactly how runtime-level integration works:</p><ul><li><p>The model is a graph of predefined operations</p></li><li><p>Each operation is stateless and self-contained</p></li><li><p>Control flow and orchestration live outside the accelerator</p></li></ul><p>A concrete example of this approach is ONNX Runtime Execution Providers, where hardware vendors accelerate supported operators while delegating unsupported parts of the model to a fallback device. This diagram explains how Alice&#8217;s software and Harry&#8217;s hardware can talk to each other using ONNX.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r7gO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r7gO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 424w, https://substackcdn.com/image/fetch/$s_!r7gO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 848w, https://substackcdn.com/image/fetch/$s_!r7gO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 1272w, https://substackcdn.com/image/fetch/$s_!r7gO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r7gO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png" width="1456" height="1068" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1068,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:215405,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/187337389?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.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_!r7gO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 424w, https://substackcdn.com/image/fetch/$s_!r7gO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 848w, https://substackcdn.com/image/fetch/$s_!r7gO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 1272w, https://substackcdn.com/image/fetch/$s_!r7gO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe16248-8b84-48c2-8d63-f2588269504c_1920x1409.png 1456w" sizes="100vw" loading="lazy"></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>This model works well for inference workloads, where computation is a fixed graph of tensor operations. However, because execution and control flow remain outside the accelerator, it limits how much of the hardware structure (custom memory hierarchies, interconnect flow) can be exposed.</p><div><hr></div><h2><strong>2. Compiler-level integration</strong></h2><p>In the second approach, the bridge moves deeper into the stack. Instead of plugging into a runtime API, Harry integrates at the compiler level, where programs are transformed before execution. Alice still writes high-level code, but now the compiler is responsible for mapping that computation onto the hardware - deciding how loops are formed, how memory is reused, and how execution flows on the device.</p><p>The analogy here is a custom-built kitchen.</p><p>Instead of ordering from a menu, Alice hands over a recipe. Harry designs the kitchen itself: where ingredients are stored, how cooks move, which steps happen in parallel, and how decisions are made mid-cooking. The recipe is compiled into a precise plan tailored to that kitchen.</p><p>This may sound similar to targeting a standard ISA, but the distinction is critical. A standard ISA fixes the instruction set and execution model that all software must target, forcing hardware innovation to happen below that boundary. Compiler-level integration, in contrast, fixes only the meaning of the program. The compiler is free to reshape loops, memory usage, and control flow to match the hardware, without exposing a stable instruction set to the programmer. This allows each accelerator to express its architectural strengths without being constrained by a one-size-fits-all ISA.</p><p>This approach requires much more effort from Harry, because he must:</p><ul><li><p>define how programs are lowered,</p></li><li><p>expose memory and synchronization primitives,</p></li><li><p>and implement a runtime that can execute compiled programs.</p></li></ul><p>But in return, Harry can support:</p><ul><li><p>data-dependent control flow,</p></li><li><p>irregular or sparse computation,</p></li><li><p>custom memory layouts,</p></li><li><p>and long-lived, stateful programs.</p></li></ul><p>A representative example of this model is IREE, which provides a compiler, optimizer, and runtime along with a hardware abstraction layer. Instead of mapping individual operators, Harry defines how programs execute on his device. This turns the accelerator from a co-processor that executes individual operations into a programmable compute target that runs complete programs independently, as shown in this diagram.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cF7G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cF7G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 424w, https://substackcdn.com/image/fetch/$s_!cF7G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 848w, https://substackcdn.com/image/fetch/$s_!cF7G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 1272w, https://substackcdn.com/image/fetch/$s_!cF7G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cF7G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png" width="1456" height="1667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1667,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:263545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.net/i/187337389?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.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_!cF7G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 424w, https://substackcdn.com/image/fetch/$s_!cF7G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 848w, https://substackcdn.com/image/fetch/$s_!cF7G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 1272w, https://substackcdn.com/image/fetch/$s_!cF7G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121c7be0-c7d0-4aab-9834-00f602c19aac_1489x1705.png 1456w" sizes="100vw" loading="lazy"></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>It&#8217;s worth emphasizing that IREE can ingest programs from multiple frontends, including ONNX, before lowering them through its compiler stack. The distinction between runtime-level and compiler-level integration is therefore not about which framework Alice starts from, but where hardware-specific decisions are made.</p><h1><strong>Conclusion</strong></h1><p>We&#8217;re entering a phase where meaningful gains in AI performance and efficiency are increasingly coming from custom silicon. But the success of that silicon depends less on raw compute and more on where it connects into the software stack.</p><p>This post was intentionally a high-level overview of that connection point. The space is complex, fast-moving, and still evolving, but at a distance, two broad patterns are already visible. Runtime-level integration offers a fast path to deployment by fitting new hardware into an existing execution model, while compiler-level integration demands more effort but unlocks far greater control over how computation actually runs. Neither approach is &#8220;better&#8221; in the abstract - each reflects a different tradeoff between ease of integration and expressive power.</p><p>In the next parts of this series, we&#8217;ll make these ideas concrete. On <a href="https://chipinsights.net/">Chip Insights</a>, we&#8217;ll walk through building a simple runtime-level backend, starting with a CPU implementation and then extending it toward custom hardware on an FPGA. In parallel, on <a href="https://www.avikde.me/">min{power}</a>, we&#8217;ll look at the problem from Alice&#8217;s side: how different classes of AI and robotics workloads place fundamentally different demands on hardware, and why those differences increasingly matter.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p>You can find the next part of this series here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;24b1f30d-739a-4e74-b672-974586df1643&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Mapping Algorithms to Custom Silicon - Part 2&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null},{&quot;id&quot;:356074997,&quot;name&quot;:&quot;Avik De&quot;,&quot;bio&quot;:&quot;Safe, efficient robotics &amp; AI -- Robotics Ph.D. and founder&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E5et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30589b07-e0a0-4de5-8997-78db1ed3f65b_1290x1290.png&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://www.avikde.me/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://www.avikde.me&quot;,&quot;primaryPublicationName&quot;:&quot;min{power}&quot;,&quot;primaryPublicationId&quot;:7287367}],&quot;post_date&quot;:&quot;2026-03-15T18:42:10.275Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6954c585-f006-40f3-a68b-78a4b1a7e52d_1536x948.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.net/p/mapping-algorithms-to-custom-silicon-efd&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:191037416,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div>]]></content:encoded></item><item><title><![CDATA[The Accidental Comeback of Verilog]]></title><description><![CDATA[How Generative AI is ending the HDL vs HLS debate]]></description><link>https://chipinsights.net/p/the-accidental-comeback-of-verilog</link><guid isPermaLink="false">https://chipinsights.net/p/the-accidental-comeback-of-verilog</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sat, 17 Jan 2026 05:00:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5ccf855a-c7b5-4efd-97be-7de3af76c146_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>In 2022, a graduate-level chip design course at UCLA gave me a glimpse of what felt like the future. Instead of writing RTL in Verilog, we were required to use a Python framework that generated synthesizable Verilog under the hood. I had already been using Verilog for a few years by this point, so this new workflow felt strange at first. But after a few weeks, something clicked. I started to enjoy it. So much so that I made my final project a head-to-head comparison: plain Verilog versus this Python-based approach across several types of RTL IP. The results seemed clear. Yes, the Verilog implementations had slightly better power, performance, and area (PPA) metrics. But the Python framework won on almost everything else that mattered to an RTL designer: it scaled better, made reuse trivial, and produced RTL that was far easier to read and reason about.</p><p>I walked away convinced that this was the direction chip design was headed. Higher-level frameworks would replace handwritten Verilog. That&#8217;s where I was ready to place my bets.</p><p>Lucky for me, I didn&#8217;t have the money to bet - because I was completely wrong.</p><div><hr></div><h2><strong>Verilog Is Fine. What Next?</strong></h2><p>If you have been reading Chip Insights long enough, you&#8217;ll know about <a href="https://chipinsights.net/p/evolution-of-hdls-part-1-the-birth">my two-part HDL saga</a> documenting the story of how Verilog became what it is today. I ended this story in the mid-2000s, when EDA companies started to push for the widespread adoption of SystemVerilog. From this point forward, the Verilog family (plain Verilog and SystemVerilog) emerged as clear winners in the HDL wars. However, there was a parallel storyline which I did not cover in that post.</p><p>The story of HDLs was closely related to the emergence of a new simulation technique called behavioral simulation - as designs got bigger, gate-level simulations became slow and unusable for routine functional checks. Cadence enabled behavioral simulation in Verilog through Verilog Compiled Simulation (VCS) - Verilog was first compiled into C, and this C program was then used to run simulations. Great story. The bedrock of modern logic simulation. But that&#8217;s not the point here. If you can convert an HDL like Verilog into a high-level language like C, why can&#8217;t we start with a high-level language directly?</p><p>In 1998, Forte Design Systems came up with a tool called Cynthesizer (a pretty clever name, I must add), which allowed a designer to build synthesizable logic using SystemC. In 2001, Sony became the first company to tape out a chip using this approach, which would later be known as High-Level Synthesis (HLS). As transistor scaling continued in the 2000s, design cost and complexity grew rapidly. Even the most modern HDL of the time, SystemVerilog, was inadequate for human productivity to catch up with Moore&#8217;s law. This made HLS a compelling candidate.</p><p>There are two primary reasons why HLS was so attractive. The first is obvious: high-level languages provide constructs that HDLs lack which would boost the productivity of chip designers. The second reason was even more compelling. HLS represented a fundamental &#8220;shift left&#8221; strategy to move hardware design earlier in the development cycle and closer to software design. In other words, anyone who can code should be able to design the hardware to run their code. Believers of HLS shared the same optimism that I did when I used Python for RTL design. In fact, in the mid 2000s, Professor Jason Cong built the xPilot HLS system in the same UCLA building. xPilot pioneered a lot of algorithmic innovations that made HLS more than just a convenience - the PPA metrics started to improve as well. xPilot became AutoESL Design Technologies, was acquired by Xilinx (now AMD) in 2011.</p><p>So far, this sounds more like a success story of HLS than what my title suggests. So what happened? HLS definitely proved to be useful in certain cases - like rapid prototyping and deployment on FPGAs. (The core technology of xPilot powers Vivado HLS, which is still used widely today.) However, HLS could never fully replace Verilog, because the promise of HLS was too good to be true. Even today, HLS-generated designs often consume more hardware resources and achieve significantly worse clock frequencies compared to handwritten RTL. More importantly, HLS never truly became what it promised. The fundamental mismatch between software-oriented C/C++ languages and hardware structures meant that HLS tools still can&#8217;t reliably produce synthesizable designs that integrate well with existing EDA tools which remain overwhelmingly Verilog-centric.</p><p>As a compromise, the idea of a Hardware Construction Language (HCL) was born. While HLS tools were intended to automatically infer the best microarchitecture from high-level algorithms, HCLs are high-level language extensions that allow designers to express hardware structure, while simultaneously leveraging powerful software constructs. Chisel, an extension of Scala, was developed at UC Berkeley in 2012 and is one of the most successful examples of an HCL. By the way, the Python framework I mentioned at the start of this post was also an HCL.</p><p>While HLS and HCLs were not perfect, they seemed like early versions of what the future of chip design would look like. HLS algorithmic innovations continue to improve PPA metrics, and a lot of new processor designs are built using frameworks like Chisel. All this while, the Verilog family has not made any major strides. If I had written this post a few years ago, this would be the end of the HDL story. But almost overnight, a new playbook has emerged.</p><div><hr></div><h2><strong>You Can Have Your Cake and Eat It Too</strong></h2><p>The original promise of HLS and HCLs was never about replacing Verilog for the sake of it. It was about building chips faster: by increasing designer productivity, reuse, and scalability. These benefits came with tradeoffs like worse PPA and painful EDA integration. As they say, there are no free lunches.</p><p>Generative AI changes this equation in a fundamental way.</p><p>With GenAI-assisted Verilog, you get many of the same benefits that HLS and HCLs aimed to provide, without abandoning the Verilog ecosystem. The productivity gains are the most obvious. Writing boilerplate RTL, parameterizing modules, refactoring interfaces, or instantiating complex microarchitectural patterns are all tasks that LLMs handle remarkably well. What once justified a higher-level language now often collapses into a single prompt. You still end up with Verilog, but you get there faster, with fewer errors, and with much less cognitive overhead.</p><p>More interestingly, GenAI quietly revives one of the most compelling arguments for HLS: the &#8220;shift left.&#8221; While this shift was long promised, HLS never reliably delivered on it. PPA was difficult to estimate accurately at the HLS abstraction, and those estimation errors were often more costly than starting from RTL in the first place.</p><p>Generative AI flips this dynamic entirely. Instead of postponing RTL, it accelerates its creation. High-level specifications, performance targets, and even informal design intent can now be translated directly into functional RTL models early in the design cycle. Hardware and software can evolve in parallel, not because RTL is avoided, but because it is cheap to generate, modify, and discard. In other words, GenAI enables a shift left, without a shift away from Verilog.</p><div><hr></div><h2><strong>Why Verilog Was Ready for This Moment</strong></h2><p>Verilog didn&#8217;t reinvent itself for the GenAI era. The GenAI era quietly reinvented itself around Verilog.</p><p>First, Verilog sits at the center of the EDA ecosystem. Decades of tool development have gone into taking Verilog as input and squeezing out the best possible PPA. Synthesis, place-and-route, timing closure, power analysis: these flows are deeply optimized for RTL written in Verilog and SystemVerilog. The switching costs are enormous.</p><p>Second, in the already limited chip design data available to train large language models, Verilog dominates. This creates a powerful flywheel effect. Verilog is used to train LLMs, which then generate more Verilog, further reinforcing its position as the language of digital design.</p><p>Today, we are seeing a combination of these two factors, in the form of closed-loop RTL design agents. Verilog code is both a cycle-accurate, and formally checkable artifact, which can be used to generate accurate reward signals to improve the AI. (I&#8217;m not going into details of these systems here, but all signs are pointing towards such RL environments becoming the future.) The implication of this is that GenAI won&#8217;t just lead to more Verilog, it will lead to better Verilog. Over time, this creates a compounding effect - Verilog will become the most optimized way to design chips, even if that Verilog is generated by an AI agent.</p><p>In the world I just described, HCLs and HLS tools seem irrelevant. If Verilog is cheap to generate, easy to iterate on, and continuously optimized by feedback, the incentive to move away from it fades. Verilog survived long enough to see the light at the end of the tunnel. Now, the future looks brighter than ever.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Computer Architecture Calendar]]></title><description><![CDATA[An annual ritual of hype, validation, and existential dread]]></description><link>https://chipinsights.net/p/the-computer-architecture-calendar</link><guid isPermaLink="false">https://chipinsights.net/p/the-computer-architecture-calendar</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sun, 04 Jan 2026 00:59:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a3d71bde-a121-4394-9098-668919bae0d9_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p><strong>Another disclaimer: The characters and events in this post are fictitious (but the conferences are real). Any resemblance to real people is purely coincidental (though statistically inevitable in my audience). For the record, I have not faithfully followed all of these conferences in the past. This post exists mainly because I&#8217;d like to start doing so this year and thought I might as well share ten conferences I think are useful. Unfortunately, I couldn&#8217;t resist making the whole thing a little funny, so here we go&#8230;</strong></p><div><hr></div><p></p><p>The protagonist of this story is someone I&#8217;m sure you have crossed paths with. They forget birthdays, miss tax deadlines, and couldn&#8217;t name a single band on tour - but they know exactly when and where every major computer architecture conference is held.</p><p>Their calendar isn&#8217;t divided into months. It&#8217;s divided into trade shows.</p><p>This is how a year in that person&#8217;s life looks.</p><div><hr></div><p></p><h2><strong>CES: Between hope and hype</strong></h2><p>Our protagonist loves speculation. Branch prediction, speculative execution, prefetching: all the performance gains they deliver are built on confidently guessing what will happen next. So there is no better way to start the year than CES in January. While CES isn&#8217;t always about chips, the recent AI accelerator mania has turned it into the perfect launchpad for the year. Bold claims, ambitious roadmaps, and just enough technical detail provide our protagonist with exactly the right mix of signals and buzzwords to carry them through the months ahead.</p><p><strong>Why it matters</strong></p><p>CES tells you what&#8217;s being productized and will therefore shape algorithms and architectures of the future.</p><p><strong>How to follow it efficiently</strong></p><p>Watch the keynotes. Skim the announcements. Pay attention to products that actually exist, not just the slides describing them.</p><p><strong>One thing to watch in 2026</strong></p><p>Has anyone built a useful, physical product where AI is solving a genuine problem.</p><div><hr></div><p></p><h2><strong>ISSCC: Let&#8217;s get real</strong></h2><p>By February, our protagonist&#8217;s speculation bubble goes through a silicon trial by fire. ISSCC is where we stop guessing and start measuring. Statements and projections from CES slides are replaced by die photos, power numbers, and phrases that begin with &#8220;fabricated in&#8230;&#8221;. Each one either validates past optimism or quietly resets expectations.</p><p><strong>Why it matters</strong></p><p>ISSCC is a good way to understand how performance and power scale between architectural simulations and real silicon.</p><p><strong>How to follow it efficiently</strong></p><p>Skim broadly to identify the most relevant designs. Then read one or two papers deeply to understand the true state of the art. Watch out for assumptions.</p><p><strong>One thing to watch in 2026</strong></p><p>How is Moore&#8217;s Law really progressing? Are improvements coming from architecture, process nodes, or both?</p><div><hr></div><p></p><h2><strong>GTC: Crowning the Starboy</strong></h2><p>March belongs to the Taylor Swift concert of today&#8217;s tech world. Our protagonist once followed GTC for innovations in parallel computing architectures. Now, it&#8217;s a coronation ceremony for Nvidia&#8217;s platform and its developers. Everyone listens to Jensen Huang carefully, because this is where the industry&#8217;s vocabulary for the next twelve months is minted.</p><p><strong>Why it matters</strong></p><p>GTC now defines the AI narrative and vocabulary that everyone else ends up adopting.</p><p><strong>How to follow it efficiently</strong></p><p>Watch the keynote. Then pick a handful of genuinely technical sessions. Ignore the excessive press coverage and stock-price astrology.</p><p><strong>One thing to watch in 2026</strong></p><p>What does Nvidia&#8217;s platform roadmap look like for inference&#8212;especially in a post Groq license world?</p><div><hr></div><p></p><h2><strong>Computex: Board yet?</strong></h2><p>Computex reminds our protagonist that chips do not exist in isolation. This is where architecture turns into motherboards, racks, cooling solutions, and deeply uncomfortable power budgets. It&#8217;s less about novelty and more about integration. More recently, it has also become the place where vendors launch their latest SoCs for, you guessed it, AI.</p><p><strong>Why it matters</strong></p><p>Computex shows what it actually takes to turn a good architecture into a usable product. It&#8217;s important to be aware of what&#8217;s happening outside the cores.</p><p><strong>How to follow it efficiently</strong></p><p>Get a high-level view of system architectures for the latest SoCs. Pay attention to reference designs and power, thermal, and memory numbers when they&#8217;re provided.</p><p><strong>One thing to watch in 2026</strong></p><p>Whether the industry finally agrees on what an &#8220;AI PC&#8221; is, and if any new players enter that space.</p><div><hr></div><p></p><h2><strong>ISCA: Sheer elegance</strong></h2><p>ISCA is where our protagonist feels intellectually nourished. The best ideas in computer architecture are here in their purest form. Some are brilliant. Some are fictional. A few will quietly influence designs a decade later. No product timelines, no market requirements. Just elegant computer architecture.</p><p><strong>Why it matters</strong></p><p>ISCA sharpens your architectural intuition by offering new ways to think about familiar problems.</p><p><strong>How to follow it efficiently</strong></p><p>Skim all abstracts. Then invest real time in a few papers that genuinely intrigue you. Ask whether ideas from one domain could transfer to another.</p><p><strong>One thing to watch in 2026</strong></p><p>How are CPU architectures evolving in the era of accelerated computing?</p><div><hr></div><p></p><h2><strong>DAC: Ship faster</strong></h2><p>All the old-school, hype-free academic computer architecture study leads our protagonist to wonder if AI is just a bubble. DAC arrives at exactly the right time, reassuring them with claims that AI-powered tools can reduce the time to ship a new chip from years to seconds. It also serves as a reminder of the less glamorous innards of chip design, like verification and physical design.</p><p><strong>Why it matters</strong></p><p>An architecture is only as good as its ability to be built, and more importantly, built on time. DAC shows how semiconductor tooling is evolving to close the gap between ideas and tape-out.</p><p><strong>How to follow it efficiently</strong></p><p>Skim panels to understand what&#8217;s new in tooling. Before getting excited, always check whether these tools actually work on industry-scale designs.</p><p><strong>One thing to watch in 2026</strong></p><p>If, and how AI-assisted design flows are being deployed in the industry.</p><div><hr></div><p></p><h2><strong>Hot Chips: Industry, minus the hype</strong></h2><p>As summer draws to a close, our protagonist finds themselves desperately searching for the truth. This leads them to Hot Chips, where architects speak slowly, precisely, and with slides that took their companies months to approve. Tradeoffs are admitted. Constraints are acknowledged. Reality is explained. Our protagonist trusts this conference more than almost any other.</p><p><strong>Why it matters</strong></p><p>Hot Chips is an industry conference that is unusually light on marketing. The goal is to simply explain what was shipped and why.</p><p><strong>How to follow it efficiently</strong></p><p>This is worth spending time on. Watch the talks. Read the slides carefully. Take notes.</p><p><strong>One thing to watch in 2026</strong></p><p>How many meaningfully different AI architectures do we really have?</p><div><hr></div><p></p><h2><strong>SEMICON Taiwan: Supply chain magic</strong></h2><p>By September, the story shifts to the heartland of semiconductor manufacturing. Here, our protagonist listens to conversations about yield, packaging, and process limits. The names of many exhibitors sound unfamiliar, but a closer look reveals them to be critical players in the semiconductor supply chain. It&#8217;s a reminder that architecture is important, but only a small part of a vastly more complex world.</p><p><strong>Why it matters</strong></p><p>Manufacturing constraints increasingly shape architectural decisions. They can&#8217;t be ignored.</p><p><strong>How to follow it efficiently</strong></p><p>Use this as a chance to understand the supply chain better. Process roadmap and packaging sessions are the most valuable.</p><p><strong>One thing to watch in 2026</strong></p><p>What&#8217;s new in the world of advanced packaging and 3D ICs that are actually ready for volume production.</p><div><hr></div><p></p><h2><strong>MICRO: Grounding ideas to reality</strong></h2><p>If ISCA feeds our protagonist&#8217;s love for elegant ideas, MICRO satisfies their need to see those ideas survive contact with reality. This is where high-level architectural concepts are dragged into the microarchitecture and explained cycle by cycle. MICRO isn&#8217;t for the casual computer architecture enthusiast. The diagrams are denser, the assumptions sharper, and the discussions expect real chip-design experience.</p><p><strong>Why it matters</strong></p><p>MICRO bridges the gap between architectural ideas and real implementations, exposing the costs, tradeoffs, and complexity that abstractions tend to hide.</p><p><strong>How to follow it efficiently</strong></p><p>Focus on papers that include detailed evaluations and realistic assumptions. Pay attention to how architectural ideas translate into microarchitectural blocks.</p><p><strong>One thing to watch in 2026</strong></p><p>Are there credible examples of AI influencing microarchitectural decisions better than a human designer can?</p><div><hr></div><p></p><h2><strong>IEDM: A glimpse of the future</strong></h2><p>The busy computer architecture calendar comes to a close at IEDM. Our protagonist listens to talks about devices, confidently thinking they won&#8217;t matter for years. Soon, a quiet fear sets in that, when these devices finally do matter, they might change everything. The thought sends a chill down their spine, and pushes them to search for notes from the one device physics class they took in undergrad.</p><p><strong>Why it matters</strong></p><p>IEDM defines what architectures may even be possible a decade from now. Following it is a form of long-term career insurance.</p><p><strong>How to follow it efficiently</strong></p><p>Don&#8217;t get stuck on the physics. Assume the devices work, then ask how they would reshape memory hierarchies, compute models, and system architectures.</p><p><strong>One thing to watch</strong></p><p>Which emerging technologies, like quantum, neuromorphic, and novel memories, are close to being deployed in real chip</p><div><hr></div><p></p><p>By the end of the year, our protagonist is carrying a heavy mental load: half-remembered acronyms, conflicting roadmaps, benchmark caveats, packaging buzzwords, and just enough existential dread to stay alert. They&#8217;ve learned when to believe, when to squint, and when to politely wait for silicon. And just as they start to feel like they&#8217;ve finally made sense of it all, the year resets. New nodes. New models. New claims. Same conferences. So, they clear their calendar, open a fresh notebook, and show up again, because <strong>as stressful and confusing as it sounds, somehow, it&#8217;s still fun.</strong></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h3><strong>Want to follow this year&#8217;s conferences with me?</strong></h3><p>I&#8217;ve created a shareable Google Calendar with all of these conference dates pre-filled, for anyone who wants their existential dread to be neatly scheduled. <strong>Subscribers will receive a link to this calendar - consider this a gentle nudge to subscribe if you haven&#8217;t already.</strong></p><p>If there are other conferences that every computer architect should mentally budget for, let me know in the comments. The calendar, like the study of computer architecture, is never truly complete.</p><div><hr></div>]]></content:encoded></item><item><title><![CDATA[The Alphabet Soup of Processors]]></title><description><![CDATA[Not sure which will end first: Moore&#8217;s Law, or alphabets used to describe processors?]]></description><link>https://chipinsights.net/p/the-alphabet-soup-of-processors</link><guid isPermaLink="false">https://chipinsights.net/p/the-alphabet-soup-of-processors</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 15 Dec 2025 02:00:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!846s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!846s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!846s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!846s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!846s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!846s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!846s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2876327,&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://chipinsights.substack.com/i/181619479?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.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_!846s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!846s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!846s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!846s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79c457f-cd01-46c5-afe3-9e0559195b76_1536x1024.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>CPU. GPU. TPU. NPU. DPU. IPU. LPU.</p><p>Every year, the alphabet soup gets richer. But I wonder if it&#8217;s adding any value? Over the last two years, GPUs were the unquestioned champions of the AI boom. Right now, TPUs are having a moment as the new architecture that is supposedly better for AI than GPUs. NPUs reliably show up during some product keynotes, often accompanied by &#8220;inference&#8221; or &#8220;low power.&#8221; Meanwhile, CPUs still have their audience of PC and smartphone enthusiasts.</p><p>At this point, the industry&#8217;s obsession with new &#8220;PUs&#8221; is starting to look uncomfortably familiar. <a href="https://chipinsights.substack.com/p/demystifying-the-semiconductor-process">We&#8217;ve seen this movie before - with process nodes</a>. Once upon a time, node names conveyed real, comparable information. Then they became branding. &#8220;7nm&#8221; stopped meaning 7nm. &#8220;3nm&#8221; stopped being smaller than someone else&#8217;s &#8220;5nm.&#8221; The label survived; the meaning didn&#8217;t. I think processor acronyms are heading down the same path. Pick a new letter. Add &#8220;accelerator,&#8221; &#8220;custom,&#8221; or &#8220;ASIC.&#8221; Publish a carefully chosen benchmark. Congrats, you have a new processing unit.</p><p>The problem isn&#8217;t that TPUs, NPUs, or GPUs aren&#8217;t important or innovative. The problem is that the acronym leaves out the essence of the architecture: what it&#8217;s actually optimized for, what tradeoffs it makes, and where its real value comes from. If you squint hard enough, almost anything can be called an accelerator. If you zoom out far enough, almost everything looks like a CPU. This does not sit well with me.</p><p>Continuing with <a href="https://chipinsights.substack.com/p/what-should-i-write-if-ai-can-write">the theme of my last post</a>, I don&#8217;t think the right question is &#8220;Is this a GPU or an NPU?&#8221; It&#8217;s whether we&#8217;re even using the right vocabulary to evaluate compute architectures at all. Instead of arguing over letters, we should be asking sharper questions - questions that force clarity instead of reinforcing branding. I think the following four questions are a far more informative way to classify chips.</p><div><hr></div><p></p><h2>Question 1. Host relationship: Is your product the boss, a helper, or just another block on the die?</h2><p><strong>Categories:</strong></p><ul><li><p><strong>Standalone:</strong> Boots an OS and owns the system.</p></li><li><p><strong>Co-processor:</strong> Lives behind PCIe or a fabric. Needs a host to schedule work, manage memory, and keep the lights on.</p></li><li><p><strong>Integrated IP:</strong> One of many blocks inside an SoC, visible to software only through drivers or libraries.</p></li></ul><p><strong>Why it matters:</strong></p><p>Host relationship determines who controls the system. Standalone processors shape the entire software stack and system architecture. Co-processors live and die by host integration and software orchestration. Integrated IP blocks rarely escape the platform they&#8217;re embedded in, no matter how impressive the pure-silicon performance is. Two chips with identical compute units can have wildly different impact depending on whether they&#8217;re in charge, or waiting for instructions.</p><div><hr></div><p></p><h2>Question 2. Domain coverage: How many different major software domains (at least a million developers) can this architecture serve effectively?</h2><p>To clarify, I consider the following as major software domains of today.</p><ul><li><p><strong>System software:</strong> OS kernels, language runtimes, compilers, CLI tools</p></li><li><p><strong>User Interfaces:</strong> desktop/mobile apps, browsers, light graphics</p></li><li><p><strong>Data processing:</strong> SQL databases, analytics, streaming</p></li><li><p><strong>Media &amp; graphics:</strong> Video encoding/decoding, 2D/3D graphics pipelines</p></li><li><p><strong>High Performance Computing:</strong> simulation, scientific computing, linear algebra</p></li><li><p><strong>ML/AI workloads:</strong> training and inference across model families</p></li></ul><p><strong>Categories:</strong></p><ul><li><p><strong>General purpose:</strong> The chip is competitive or better than the incumbent across 3 or more domains</p></li><li><p><strong>Domain specific:</strong> The chip excels only in 1-2 domains</p></li></ul><p><strong>Why it matters:</strong></p><p>Domain coverage is the difference between <em>platforms</em> and <em>point solutions</em>. General-purpose architectures benefit from massive software ecosystems, long lifetimes, and constant reuse. Domain-specific chips can deliver spectacular gains, but only as long as the workload stays stable. When you are looking at a domain-specific chip, the domain matters as much, if not more, that the silicon innovation. (<a href="https://chipinsights.substack.com/i/157692695/pick-the-right-domain">As Jensen Huang puts it, pick &#8220;Zero Billion Dollar&#8221; markets.&#8221;</a>)</p><div><hr></div><p></p><h2>Question 3. Execution paradigm: What architectural feature delivers throughput?</h2><p><strong>Categories:</strong></p><ul><li><p><strong>MIMD (Multiple Instruction, Multiple Data):</strong> Many independent cores, each running its own control flow. Classic multicore and many-core CPUs live here.</p></li><li><p><strong>SIMT (Single Instruction, Multiple Threads):</strong> Groups of lanes share an instruction stream with per-lane masking. This is the beating heart of modern GPUs.</p></li><li><p><strong>Custom:</strong> Fixed or semi-fixed dataflow architectures designed around specific computation patterns (e.g., systolic arrays, spatial fabrics).</p></li></ul><p><strong>Why it matters:</strong></p><p>Execution paradigm reveals what kind of parallelism the architecture is betting on. MIMD favors flexibility and irregular control flow. SIMT thrives on massive data parallelism. Custom paradigms trade generality for efficiency. Once you understand this axis, performance claims stop sounding magical and start looking like predictable outcomes of design choices.</p><div><hr></div><p></p><h2>Question 4. Programmability model: How does a programmer get work done from your chip?</h2><p><strong>Categories:</strong></p><ul><li><p><strong>Native ISA:</strong> General-purpose compilers (C/C++) target it directly.</p></li><li><p><strong>Kernel-compiled:</strong> You write kernels in a language extension like CUDA, OpenCL, HIP, or a domain-specific language.</p></li><li><p><strong>Graph-compiled:</strong> You describe computation as a graph (often via an ML framework like PyTorch or TensorFlow), and a compiler maps it to the hardware. In graph-compiled systems, the graph is the primary abstraction for the programmer, not the kernel. (Graph-compiled systems still use kernels underneath.)</p></li><li><p><strong>Bitstream configured:</strong> You configure the hardware fabric itself. For example, FPGA bitstreams or CGRA configurations.</p></li></ul><p><strong>Why it matters:</strong></p><p>Programmability determines who can use the hardware and how fast ecosystems form. Native ISAs scale with developer count. Kernel models reward specialists and expert programmers. Graph-based systems trade flexibility for convenience: they work extremely well when your problem fits the graph, and poorly when it doesn&#8217;t. Bitstream-based approaches offer ultimate hardware control, but at the cost of accessibility. Many promising architectures fail not because of silicon, but because the programming model never escapes a niche audience.</p><div><hr></div><p></p><p>Taken together, these questions offer a better way to think about modern compute architectures. Once you look at chips through these lenses, debates like GPU vs TPU vs NPU start to feel oddly shallow. Architectures stop being mysterious, and performance claims start to look like the predictable outcomes of very specific tradeoffs. For instance, below is a classification of several chips that are often loosely grouped under the label &#8220;accelerators.&#8221; This classification forces each architecture to reveal its position along concrete design axes: who controls the system, how broad the user base is, where throughput actually comes from, and how programmers interact with the hardware. Chips that are often lumped together as &#8220;accelerators&#8221; end up in very different places once you apply these questions, and those differences explain far more about real-world impact, adoption, and longevity than any three-letter acronym ever could.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_wyD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_wyD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 424w, https://substackcdn.com/image/fetch/$s_!_wyD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 848w, https://substackcdn.com/image/fetch/$s_!_wyD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 1272w, https://substackcdn.com/image/fetch/$s_!_wyD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_wyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png" width="1456" height="291" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:291,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99797,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/181619479?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.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_!_wyD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 424w, https://substackcdn.com/image/fetch/$s_!_wyD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 848w, https://substackcdn.com/image/fetch/$s_!_wyD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 1272w, https://substackcdn.com/image/fetch/$s_!_wyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3391fb-b979-41fa-87c4-a66355fbbda8_2037x407.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>If you haven&#8217;t subscribed yet, here&#8217;s a reason to: when you subscribe, you&#8217;ll receive the link to the full list with other categories and explanations.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p>If you have read so far, I&#8217;m curious - what other questions would add value to chip architecture classification?</p><p></p>]]></content:encoded></item><item><title><![CDATA[What should I write if AI can write everything?]]></title><description><![CDATA[What next for Chip Insights]]></description><link>https://chipinsights.net/p/what-should-i-write-if-ai-can-write</link><guid isPermaLink="false">https://chipinsights.net/p/what-should-i-write-if-ai-can-write</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sun, 07 Dec 2025 07:17:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>It&#8217;s been more than two months since I wrote my last post. One of the reasons I took a pause was to deliberate over a question that just wasn&#8217;t leaving me: <strong>Does a technical newsletter like Chip Insights matter in a world where GenAI keeps getting better?</strong> To answer this, I need to first define what &#8220;matters&#8221; means. The reality is, this newsletter will only ever reach a small fraction of people who are interested in a very niche topic - so traditional content metrics like views or subscribers make no sense. The only true feedback for my work comes from this question: <strong>&#8220;Would I read this post if it was written by someone else.&#8221;</strong> With today&#8217;s AI tools, that question really becomes: <strong>&#8220;Is it easier to generate this post on an AI chatbot, that write it?&#8221;</strong></p><div><hr></div><h2><strong>Things we tell ourselves to feel better</strong></h2><p>One of the most common arguments in defense of humans is that &#8220;AI makes mistakes.&#8221; I don&#8217;t think this is a strong argument to hide behind. Sure, chatbots hallucinate and make mistakes, but so do humans - even the most decorated content creators. Like a lot of technologies we have seen in the past, I&#8217;m sure the errors will reduce over time, and AI answers could become a reliable source of information. In my opinion, content creators saying their content is better because it&#8217;s more accurate, are willing to challenge an ever-improving machine backed by trillions of research dollars. Personally, I think that&#8217;s a losing battle.</p><p>There is another defense of traditional content which never sat well with me. I&#8217;ve seen a lot of arguments about how consuming difficult technical content is &#8220;inherently noble&#8221;, and AI provides processed answers which are &#8220;cheats&#8221; and will shrink your brain. In my opinion, difficulty, by itself, should never be a virtue to strive for. Before humans discovered fire, digestion was hard, consuming a lot of energy. Cooking made food easier to process, freeing energy for other activities like thinking, building, and evolving. I&#8217;m quite sure AI-generated educational content will have a very similar positive effect.</p><p>So before dismissing AI, we should acknowledge the aspects that AI excels at.</p><div><hr></div><h2><strong>Is AI is coming for my posts?</strong></h2><p>Today&#8217;s AI is extraordinary at compressing information. It can digest long, messy documents and explain them in simpler terms. Interestingly, this is what most traditional content creation has centered around. (Including some of my posts, I&#8217;ll admit.) I think we are getting very close to the point where the returns from such content won&#8217;t justify the investment - it will be so much easier to generate such content on demand.</p><p>AI is also a fantastic tool to explore content related to a specific topic you are interested in. This has been my favorite use of AI: I can easily get a list of 5-10 sources I want to explore for my research on a topic, bypassing the SEO-engineered, often irrelevant links. In my experience of doing this, I have found that a few in-depth engaging sources, along with the AI summary on the topic, are sufficient for my research - I don&#8217;t want to jump multiple links where parts of the information are spread out.</p><p>Essentially, if the purpose of a piece of writing is simply to transfer information from one form to another, or one place to another, AI will inevitably outperform humans on speed, breadth, and efficiency.</p><div><hr></div><h2><strong>So where does that leave me?</strong></h2><p>The point of this exercise was not to say that AI will replace content creation entirely. The concept of generative AI fundamentally cannot displace certain types of content - which is specifically what I want to focus on.</p><p>My north star for content creation has been the Acquired podcast. For those who don&#8217;t know, the idea behind Acquired is to tell the story of a company, with all of its gory details, in episodes that sometimes last 4 hours. Today&#8217;s AI struggles with such analysis, and there are fundamental reasons why it might be this way for a long time. An LLM lacks a &#8220;mental model&#8221; - understanding of concepts like time, hierarchies and abstractions. Models also gravitate towards a median of possibilities. While this makes AI excellent at flattening complexity, maintaining engagement sometimes requires expanding complexity into a narrative form. The failure to do this is what makes AI sound &#8220;robotic.&#8221; While you can get away with a robotic tone if you have &#8220;explain the differences between a CPU and a GPU,&#8221; it&#8217;s important to keep the audience engaged if you want to &#8220;share a deep dive on the evolution of GPU architectures&#8221;.</p><p>Another problem with AI content is that it is user driven - the value of the answer depends on the question you are asking. AI might have all the answers, but AI isn&#8217;t curious. Good content, therefore, should prompt the audience to ask more questions - questions about bottlenecks, architectural shifts, industry narratives, or places where assumptions are beginning to bend. Questions like these generally emerge from judgment, from noticing patterns, and from wondering what others might be missing - something that AI cannot replicate.</p><p>This is what I&#8217;ve been thinking about during my break: <strong>that the real value of technical content isn&#8217;t in being a source of information, but in being a source of interpretation.</strong> I&#8217;m looking forward to returning to writing with these ideas in mind.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[Letter to the subscribers - Year 1]]></title><description><![CDATA[Thoughts on a year writing Chip Insights]]></description><link>https://chipinsights.net/p/letter-to-the-subscribers-year-1</link><guid isPermaLink="false">https://chipinsights.net/p/letter-to-the-subscribers-year-1</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sat, 20 Sep 2025 14:49:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>This post is not about chips. It&#8217;s not even about AI like <a href="https://chipinsights.substack.com/p/2025-yc-ai-startup-school-round-up">that one post</a> was. This is about me.</p><p>As I&#8217;m writing this, it&#8217;s been a year since I wrote my first post on Chip Insights. So, I thought I&#8217;ll reflect a little and open up about my plans for the future.</p><div><hr></div><h1><strong>Why did I start Chip Insights?</strong></h1><p>Ideally, this should have been a part of my first post. But I did not have a good answer. Instead, I chose to write about Moore&#8217;s law:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;33a5703e-a188-453a-9b51-f3776c503a6c&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Moore&#8217;s Law and the Performance Promise&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-09-16T01:58:55.098Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/moores-law-and-the-performance-promise&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:148941455,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:5,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Turns out, Moore&#8217;s law was actually the perfect way to start, because, like the number of transistors in a chip, <strong>ideas compound exponentially</strong>. Every new post I have written here has made me an exponentially better thinker. So more than anything, Chip Insights is my training ground; the place where I take half-baked ideas and make them concrete. <strong>I learn more from Chip Insights than any of my readers.</strong></p><p>Well if that&#8217;s my reason, one could ask (and a lot of people have asked) why I post this content publicly. I have found that there is a huge difference in the way I think in private, versus when I need to present my ideas. The vulnerability associated with public content has pushed me to think more deeply than I would have in a private brainstorming session. For instance, I always thought I knew what CPU bitness was, but when I decided to write a post about it, I realized how complex that number truly is.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f98f3ca9-fc80-4734-aff9-42e80716f506&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;What does CPU bitness mean?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-12-21T17:29:37.606Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/what-does-cpu-bitness-mean&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:153459070,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:5,&quot;comment_count&quot;:2,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h1><strong>What do I offer?</strong></h1><p>I&#8217;m aware that in a post addressing my subscribers, the right way to answer the &#8220;why&#8221; question is to say something altruistic, something like &#8220;I want to pass on my learnings to students.&#8221; It&#8217;s nice when that happens, but I would be lying to myself if I said everything I do is towards that goal. However, I have two ways of thinking that one might consider altruistic.</p><p>First, I am convinced that the positioning of computer engineering as a career needs some work. There are a few attributes that computer engineering has acquired over time which does not sit well with me: slow-moving, hard, and risk-averse come to mind. A lot of very talented students are put-off by these attributes. The emergence of AI has made semiconductors cool again, and I want to use this opportunity to reframe how the industry is perceived. For example, not a lot of people know how fast-paced the EDA world was - a story I covered here.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3d3aeff8-5e0a-4680-bbbf-e8b8f7dcb1c7&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;EDA Deep Dive - Part 1: The History&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-11-16T18:31:42.506Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/eda-deep-dive-part-1-the-history&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:151751360,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:5,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>There&#8217;s another issue. Even if you like this industry and want to pursue your career here, there are too many roadblocks, which eventually kills potential talent. I am not in a position to bring about structural changes to the industry, but one thing I can do is to reduce some anxiety in the process of making it, which is what led to posts like this.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;01aefb57-a869-4601-82d3-c8cef313bba3&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Computer Engineering Game&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-03-22T03:59:31.903Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/the-computer-engineering-game&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:159596495,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:38,&quot;comment_count&quot;:3,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h1><strong>How is Chip Insights different?</strong></h1><p>I have done some technical writing before Chip Insights - in school, at work, and also authoring research papers. But the advantage of a medium like this is the freedom it provides. I have used this freedom in three ways.</p><p>First, I was able to bypass the need to explain concepts from the ground up - as you would do in a typical college program. For example, the right way to understand power consumption in chip design is to first understand exactly how a transistor works. But I have always found this to be a bit restrictive - in the case of chip power, only engineers with visibility to the transistor level contribute ideas, and they are often quite similar. If a software engineer wants to understand what makes a chip power efficient, they would be scared off by all the complex transistor-level terminology and would make no progress. My post on power optimization was an attempt to see how much I could abstract out without being inaccurate - turns out, quite a lot.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;dde6bdcd-1088-4d96-98b4-3a1af9e1c2db&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Power essentials for a chip architect&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-07T02:37:32.387Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/power-essentials-for-a-chip-architect&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:165388326,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:31,&quot;comment_count&quot;:3,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Another theme in most of my technical post is the idea of analogies - comparing chip design concepts to something relatable - to make them stick in your mind a little longer. I know some people, especially the &#8220;academic&#8221; types, find analogies to be juvenile. But I have actually found that thinking in terms of analogies, and stretching them out as much as possible really strengthens your understanding of something. For example, I tried that with on-chip networks by comparing them to airline routes in this post.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;9c116894-d32e-4590-ba8a-5765ecd9bd15&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Understanding on-chip networks&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-08-25T04:30:46.059Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!5OF0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/understanding-on-chip-networks&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:171857530,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:14,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Finally, there is world building. I think this is the hardest to crack, because building interesting worlds isn&#8217;t easy - if it were, The Walt Disney Company wouldn&#8217;t be worth $200 billion. But if you can build a world that is compelling enough, then even reading about a pedestrian topic like Static Timing Analysis can be made fun, which is what I tried here.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;62675c5c-5f67-4809-86a5-18135fcfc0c0&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Confessions of a static timing analysis tool&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-21T15:11:11.670Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/confessions-of-a-static-timing-analysis&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:168864393,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:15,&quot;comment_count&quot;:3,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h1><strong>How has my writing evolved?</strong></h1><p>I never realized this, but a lot of my early posts were based on topics which had very little scope for subjectivity - for example, this post about pipelining, which walks through how a traditional CPU pipeline has always looked like.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;1429b67e-cf10-4e93-b106-7e6c96ee8d40&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;In-Order Instruction Pipelining in Processors&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-09-29T23:24:51.011Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/computer-architecture-101-series&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:149584645,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>I think a part of me was unsure about how new ideas would be perceived - especially from someone who lacks authority. But as I went forward on this journey, I think my writing has become more assertive. I wrote a post on how AI will influence EDA, which was away from my comfort zone, because, well, nobody still knows the answer.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0b74d26e-9c47-47f2-8451-dc6dc4147e48&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;EDA Deep Dive - Part 3: The AI Era&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-01-11T17:29:32.777Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/eda-deep-dive-part-3-the-ai-era&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:154626822,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:5,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>A bolder version of this was my more recent post about full-stack chip design, and idea that <a href="https://news.ycombinator.com/item?id=44486541">irked a lot of readers on Hacker News</a>, but something that I believe is a well thought out analysis.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;54448de2-155e-4943-9e75-679b4652c485&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The era of full-stack chip designers&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-06T22:08:24.120Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/the-era-of-full-stack-chip-designers&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:167679014,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:14,&quot;comment_count&quot;:4,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>I also expanded to cover aspects beyond technical knowledge, because I think the kind of person you are strongly influences the kind of engineer you would be, and we engineers are very bad at understanding this. I aim to do more of this, but one place where I see this mattering a lot is technical interviews, which prompted me to write this post.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8a4164e2-9f8e-43c8-bfc2-9d707f14be55&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The psychology of a technical interview&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-08-04T06:02:37.496Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/the-psychology-of-a-technical-interview&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:170059945,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:9,&quot;comment_count&quot;:1,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h1><strong>How to predict the future?</strong></h1><p>With the great power of assertiveness comes a great responsibility - the responsibility of being right. (More often than not, at least.) So how can someone get better at that? The best way I know to predict the future is to learn from the past - that&#8217;s the only formula that seems to work. (When AI takes over, I&#8217;m pretty sure they&#8217;ll tell us the same thing.) Exploring semiconductor history has been one of the most rewarding experiences of this journey, and posts like this will continue to be a big part of Chip Insights.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;07d272d0-18ea-453e-9448-5664f44342ec&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Evolution of HDLs - Part 1: The birth of VHDL and Verilog&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-03-08T15:35:42.317Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:158652416,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:14,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>The other way to predict the future is to learn about great companies and their strategies. Patterns in business repeat themselves - success is about finding the right pattern. I captured my learnings from one of the most successful companies of our time in this post.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;53669d4e-024f-4534-8a53-054ed5ef8ab7&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to build a new chip architecture, ft. Nvidia&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-13T18:06:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/how-to-build-a-new-chip-architecture&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:157692695,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:0,&quot;publication_id&quot;:2850528,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h1><strong>So, what&#8217;s the future of Chip Insights?</strong></h1><p>Posting an article (almost) every week for the last year has been a great experience - I learn a lot each time I do it, and hopefully could pass on some of my learnings in the process. But something that I have enjoyed even more than that has been the feeling that writing unlocks in me - every time I plan to write a new article, I want to reinvent myself and try something different. This feeling is powerful, and I have seen that it spreads across all aspects of my life - not just writing. But I am realizing that the best way to reinvent is not always to do it more often&#8230;</p><p>In chip design companies, a common practice used to innovate better is called the &#8220;tick-tock&#8221; model. Here, a &#8220;tick&#8221; project involves incremental improvements that can be completed quickly. But after a few ticks, companies pursue a &#8220;tock&#8221; project - a big structural change, usually dubbed as the next chip generation. In the last year, Chip Insights has seen a lot of ticks that I&#8217;ve highlighted in this post, but it&#8217;s time for a tock. There are few new ideas that I would like to pursue, which needs me to take a <strong>break from writing.</strong></p><div><hr></div><p>Whether this is the first post of mine you are reading, or you are that one subscriber who subscribed even before I wrote my first ever post, (that really happened, still don&#8217;t know why, but I&#8217;ll take it.) or maybe you came in somewhere along the way, <strong>thank you so much for showing that you care.</strong></p><p>I urge you to stay subscribed, because the love for writing hasn&#8217;t left me. (And it never will.) I&#8217;ll be back soon with Chip Insights 2.0, and it will be worth your wait. Until then, I bid adieu.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Understanding on-chip networks]]></title><description><![CDATA[How different components of your chip talk to each other]]></description><link>https://chipinsights.net/p/understanding-on-chip-networks</link><guid isPermaLink="false">https://chipinsights.net/p/understanding-on-chip-networks</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 25 Aug 2025 04:30:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5OF0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>Most content in computer architecture courses, and also my newsletter, focus on how a computing chip &#8220;computes&#8221; - by exploring how the processor core, memory, I/O, and other parts of the chip work in isolation. But in reality, a large portion of time and energy consumed by computing chips is a result of the interactions between the different components of the chip. (called &#8220;nodes.&#8221;) For instance, moving data from memory and I/O to and from the processor core, or moving data between processor cores. For a long time, these have been assumed to be trivial. (and in reality, they were.) But with increasing number of cores and deeper memory hierarchies, efficiently moving data across a chip can make a huge difference to the overall chip performance. This post intends to introduce the concept to absolute beginners. (If you have been reading my newsletter long enough, you should sense an analogy coming&#8230;)</p><div><hr></div><h1>Welcome to your new venture - an airline company</h1><p>The logistics of airlines has always fascinated me - so that&#8217;s the vehicle (pun intended) we are going to use to understand on-chip networks. Imagine this: you read all my posts, became a semiconductor legend, made a lot of money, and have now purchased two Airbus A320 planes, and started a new airline company. Your first task is to decide which routes your airline should operate between, and the logistics behind making this happen. Turns out, designing an on-chip network is surprisingly similar&#8230;</p><p>Going forward in this post, you can consider the following terms to be analogous:</p><ul><li><p>An airport is similar to a node in the chip (could be a processor core, memory, or I/O component)</p></li><li><p>An airline route can be treated like a chip bus (bus here is not the transport kind, you can think of it as a collection of wires that can transfer high/low voltage.)</p></li></ul><div><hr></div><h2>Model 1: Point to point connection</h2><p>If you have two planes, what&#8217;s the simplest thing you can do? You can have two exclusive routes that can operate independently, and in parallel - say one route between Los Angeles (LAX) and San Francisco (SFO), and the other between LAX and New York. (JFK.)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PmJW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PmJW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 424w, https://substackcdn.com/image/fetch/$s_!PmJW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 848w, https://substackcdn.com/image/fetch/$s_!PmJW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 1272w, https://substackcdn.com/image/fetch/$s_!PmJW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PmJW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png" width="636" height="588" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:588,&quot;width&quot;:636,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35013,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.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_!PmJW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 424w, https://substackcdn.com/image/fetch/$s_!PmJW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 848w, https://substackcdn.com/image/fetch/$s_!PmJW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 1272w, https://substackcdn.com/image/fetch/$s_!PmJW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213ca0a0-cc64-4d54-9bb1-7167aa9e8b63_636x588.png 1456w" sizes="100vw" loading="lazy"></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>Different nodes in a chip can also be connected in the same way - just have a bus connecting different components with each other, and transfer data through these buses. This is called a &#8220;bus-based architecture&#8221; and although it seems simple, it is one of the most commonly used networking architecture. (Remember, most airlines continue to operate all-year daily flights between two fixed locations - the logistics can&#8217;t be simpler than this.) However, this approach comes with it&#8217;s limitations, like:</p><p><strong>1. Poor scalability</strong></p><p>If you want to increase the number of nodes, you need to increase the number of buses. This makes placement and routing very challenging in the chip. (Do you really want to buy a new plane for each new destination you want to serve?)</p><p><strong>2. Limited Flexibility</strong></p><p>Having one bus assigned for each connection makes the design very inflexible: Say during execution, two nodes in your chip need to transfer more data than two other nodes, they both still have similar buses with the same bandwidth. It&#8217;s like operating an empty flight from LAX to JFK, even though the LAX-SFO route is overbooked!</p><p>As you might imagine, the flexibility problem isn&#8217;t too hard to solve - you own the airline, so you can be flexible with the routes. That&#8217;s the idea of arbitration.</p><div><hr></div><h2>Model 2: Arbitration</h2><p>Let&#8217;s say you want to add a new destination for your Airline to serve - Miami. (MIA.) However, unlike SFO and JFK, travel to Miami is seasonal, peaking during the holidays. In this case, instead of buying a new plane to serve this route, wouldn&#8217;t it make more sense to redirect your flights based on the demand? You can &#8220;arbitrate&#8221; by:</p><ul><li><p>Operating flights from LAX to SFO and JFK during the week</p></li><li><p>Changing one, or both of the routes to LAX-MIA during the weekends or major holidays</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2_DX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2_DX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 424w, https://substackcdn.com/image/fetch/$s_!2_DX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 848w, https://substackcdn.com/image/fetch/$s_!2_DX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 1272w, https://substackcdn.com/image/fetch/$s_!2_DX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2_DX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png" width="695" height="491" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:491,&quot;width&quot;:695,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24534,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.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_!2_DX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 424w, https://substackcdn.com/image/fetch/$s_!2_DX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 848w, https://substackcdn.com/image/fetch/$s_!2_DX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 1272w, https://substackcdn.com/image/fetch/$s_!2_DX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01ecce4e-0d7a-4684-b93c-577c339ed489_695x491.png 1456w" sizes="100vw" loading="lazy"></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>This idea of arbitration can also be used in chips to connect more nodes without adding new buses - by sharing existing buses. Arbitration can be done in many different ways (called arbitration policies) each with it&#8217;s pros and cons. While I&#8217;m not going to cover all of them in detail, here are some examples:</p><ul><li><p><strong>Round robin arbitration:</strong> Every node gets a turn to use the bus, and then waits for all other nodes to be done before using the bus again.</p></li><li><p><strong>Daisy chain arbitration:</strong> All nodes can access the bus simultaneously, but there is a predefined priority order. (Something like this: If both SFO and MIA are in demand, always pick SFO)</p></li><li><p>Collision-based arbitration: These are more advanced, and rely on real time chip behavior. (For example: If there are no bookings for next week&#8217;s flights to JFX, cancel them and open bookings to MIA.)</p></li></ul><p>As you can guess, arbitration adds complexity to your chip. (In case of your airline company, you can think of this like hiring someone to manage the routes.) But in some cases, arbitration is a great way to reduce the number of buses in the chip - Say you have two cores connected to a memory, but your chip mostly runs tasks on one of the cores - then the bus between the two cores and the memory can be shared.) However, as your chip becomes complex, the shortcomings of arbitration become evident:</p><p><strong>1. Bandwidth is limited</strong></p><p>Remember, although we are able to serve three destinations now by arbitrating between two planes, we can still only serve two destinations at a time. Let&#8217;s say each flight can hold 150 passengers, the maximum number of unique passengers you can transport each day is 300 each way - which is the same as it would be if you operated as a point-to-point connection. In chip language, the maximum amount of data that can be moved from one node to another at a given time is called the bandwidth. Although arbitration will help manage multiple nodes, the bandwidth is still limited by the number of buses in a bus-based architecture.</p><p><strong>2. Single point of failure</strong></p><p>Arbitration has another issue. Say you have decided to fly one of your planes from LAX to SFO and back on a Friday, but from LAX to MIA on Saturday. (And the other plane is going to JFK both days.) However, thunderstorms hit SFO on Friday, grounding all flights. This means the flight won&#8217;t be back to LAX in time for the trip to MIA. So this flight becomes a single point of failure for two of your routes. While the weather does not affect electrons in your chip, failures of other types are possible - say you are using a round-robin arbiter, but one of your core runs into an infinite loop - that core does not release the bus and stops the entire chip from executing. That&#8217;s the risk with arbitration-based approaches.</p><div><hr></div><h2>Model 3: The crossbar, a.k.a hub and spoke model</h2><p>If you have ever flown in one of the major international airlines like Emirates or Qatar airways, you would have experienced a layover at one of their &#8220;hubs&#8221; like Dubai or Doha. These airlines operate based on a very popular airline routing model called the hub and spoke model. (Inspired from it&#8217;s resemblance to your bicycle wheel.) Now that you are a seasoned manager of an airline, let&#8217;s take inspiration from this model and add a fourth destination to our airline - Seattle. (SEA.) However this time, the flight schedules are adjusted in such a way that LAX becomes the hub:</p><ul><li><p>Two flights leave each morning from SFO and SEA, respectively, and land in LAX at 11 AM</p></li><li><p>The same two flights depart from LAX at 3 PM - one to JFK, and the other to MIA</p></li></ul><p>With this model, the airline can sell tickets for the following routes:</p><ul><li><p>SFO-LAX, SEA-LAX, LAX-JFX, LAX-MIA with no layover</p></li><li><p>SFO-JFK, SEA-JFK, SFO-MIA, SEA-MIA with a layover at LAX</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_iB-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_iB-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 424w, https://substackcdn.com/image/fetch/$s_!_iB-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 848w, https://substackcdn.com/image/fetch/$s_!_iB-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 1272w, https://substackcdn.com/image/fetch/$s_!_iB-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_iB-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png" width="611" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:611,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38392,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.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_!_iB-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 424w, https://substackcdn.com/image/fetch/$s_!_iB-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 848w, https://substackcdn.com/image/fetch/$s_!_iB-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 1272w, https://substackcdn.com/image/fetch/$s_!_iB-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bdee037-ee4e-4dc4-b495-e093ebf01990_611x452.png 1456w" sizes="100vw" loading="lazy"></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>As you can see, LAX is the key to making this happen - it&#8217;s where the &#8220;crossover&#8221; of incoming and outgoing passengers happens. In chip networking, we use a similar arrangement called a crossbar. A crossbar is a collection of programmable switches which can decide which inputs need to be routed to which outputs. (Your airline&#8217;s staff in LAX will do this check at the boarding gate.) This allows multiple different nodes in the chip to communicate with each other without the need for direct connections between all the nodes.</p><p>Crossbars effectively address both the shortcomings that we saw with arbitration. First, they are able to ensure that all nodes can communicate with each other simultaneously. (The crossbar is assumed to have an ability to monitor these transactions and handle them correctly.) In our airplane example with a hub, we are theoretically able to transport 600 unique passengers in a day. (300 in the morning from SEA/SFO to LAX, and 300 later to JFK/MIA.) Also, the presence of a crossbar means that each failure is restricted to it&#8217;s own node - if one of the cores in the chip hit&#8217;s an infinite loop, the other cores can still talk to the other nodes through the crossbar.</p><p>At first glance, you might think that a crossbar arrangement is very similar to a point to point connection since both cases ensure all nodes can be connected simultaneously. But there&#8217;s a subtle difference here - using a crossbar, we are able to achieve the same bandwidth as point-to-point connection, but with fewer bus connections. If a chip has N nodes, (N &gt; 2.) then:</p><ul><li><p>Point-to-point connection would need (N-1)*(N-2) buses</p></li><li><p>Crossbar connection needs N buses</p></li></ul><p>This is the main advantage of a crossbar. However, in order to maintain the full bandwidth, crossbars usually need to store transactions and have complex control mechanisms, which makes the crossbar an additional piece of silicon taking up area and consuming power. Also, crossbars cannot scale indefinitely - each additional node adds some wire latency, and a very large number of nodes could make this intolerable. Remember, if you have 10 nodes in a crossbar, they all contribute to the wire latency - even if you only use a few nodes repeatedly. Transistor scaling also cannot be relied on - reduction in wire latency has not kept up with Moore&#8217;s law, which makes the future of crossbars very uncertain. Basically, as your airline business scales to multiple destinations, you need to hire a lot of staff, and reserve many boarding gates - even on days with low occupancy on your flights. Not ideal&#8230;</p><div><hr></div><p>All of the approaches discussed so far were sufficient for the pre-SoC era: with a small core count, and few memory and I/O nodes that needed networking. But as we entered the era of parallel compute with SoCs having more than a thousand cores, interconnects needed to get more sophisticated. A &#8220;Southwest Airlines&#8221; moment was needed&#8230;</p><div><hr></div><h2><strong>Model 4: The &#8220;Network&#8221;</strong></h2><p>In 1971, Southwest airlines launched their first flights in Texas - changing the aviation business model forever. Let&#8217;s learn from their approach and make our airlines more efficient.</p><p>Despite everything we discussed so far, the truth is, point-to-point non-stop flights are the most desirable options. So let&#8217;s go back to our <a href="https://chipinsights.substack.com/i/171857530/model-point-to-point-connection">first model</a>, and see if we can take it in a different &#8220;direction&#8221;. (Pun intended.) I mentioned that one of the issues with point to point connections is the flexibility - how can you best manage different bandwidth requirements on each route? We looked at <a href="https://chipinsights.substack.com/i/171857530/model-arbitration">arbitration in model 2</a>, but there is a more efficient approach - operate smaller flights. Smaller flights are cheaper to fly, and easier to sell-out, hence giving you more bang for buck on each route without the need to arbitrate.</p><p>The other limitation was the &#8220;buy a new flight for each new route&#8221; requirement that point-to-point connections require. Smaller flights will also partially address this issue, because you can afford to buy more flights. (and hence operate more routes simultaneously.) But as you expand your destinations, this might still become impractical - so we will remove this requirement from the model, making it pseudo-point-to-point. (i.e. not all connections can be point-to-point, as you will see.)</p><p>Let&#8217;s incorporate all this flexibility and build a network for our 5 destinations that looks like a ring. Much like the crossbar model, this topology connects all our destinations. (using as few as one flight!)</p><ul><li><p>Point-to-point connections: SEA-SFO, SFO-LAX, LAX-MIA, MIA-JFK, JFK-SEA</p></li><li><p>Pseudo point-to-point connections (with 1 stop): SEA-LAX, SFO-MIA, LAX-JFK, MIA-SEA, JFK-SFO</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yaej!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yaej!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 424w, https://substackcdn.com/image/fetch/$s_!yaej!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 848w, https://substackcdn.com/image/fetch/$s_!yaej!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 1272w, https://substackcdn.com/image/fetch/$s_!yaej!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yaej!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png" width="735" height="511" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:511,&quot;width&quot;:735,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133312,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.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_!yaej!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 424w, https://substackcdn.com/image/fetch/$s_!yaej!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 848w, https://substackcdn.com/image/fetch/$s_!yaej!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 1272w, https://substackcdn.com/image/fetch/$s_!yaej!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbe146aa-f0a2-4722-87ab-16ea10107802_735x511.png 1456w" sizes="100vw" loading="lazy"></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>Adding a destination to this model is trivial. Say you want to add a new destination, Dallas (DFW), in the same topology, you can add the node like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AKPr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AKPr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 424w, https://substackcdn.com/image/fetch/$s_!AKPr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 848w, https://substackcdn.com/image/fetch/$s_!AKPr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 1272w, https://substackcdn.com/image/fetch/$s_!AKPr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AKPr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png" width="735" height="508" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c76b2e02-d737-4873-b186-e2bea74fa577_735x508.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:508,&quot;width&quot;:735,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147349,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.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_!AKPr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 424w, https://substackcdn.com/image/fetch/$s_!AKPr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 848w, https://substackcdn.com/image/fetch/$s_!AKPr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 1272w, https://substackcdn.com/image/fetch/$s_!AKPr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc76b2e02-d737-4873-b186-e2bea74fa577_735x508.png 1456w" sizes="100vw" loading="lazy"></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>Unlike the crossbar architecture, which adds a strain (more staff, larger number of boarding gates, and so on.) on your &#8220;hub&#8221; for each new destination, this ring-style approach does not stress any single node. (Remember, in chip terms, this &#8220;stress&#8221; means wire latency.) However, you might already see a problem here - we have introduced connections with 2 stops which would never exist in a crossbar model. (For example, SFO-MIA.) If such 2-stop routes are undesirable, then a simple connection above can fix that - add a direct route between SFO and MIA.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MQHQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MQHQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 424w, https://substackcdn.com/image/fetch/$s_!MQHQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 848w, https://substackcdn.com/image/fetch/$s_!MQHQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 1272w, https://substackcdn.com/image/fetch/$s_!MQHQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MQHQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png" width="723" height="516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:723,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.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_!MQHQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 424w, https://substackcdn.com/image/fetch/$s_!MQHQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 848w, https://substackcdn.com/image/fetch/$s_!MQHQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 1272w, https://substackcdn.com/image/fetch/$s_!MQHQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3372318c-8806-455d-8859-d7ad3a03f7a2_723x516.png 1456w" sizes="100vw" loading="lazy"></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>With just one new route, we are able to maintain access all our destinations with one stop or lower. Also, you can pick between one large flight, or multiple small flights - the network can be adjusted accordingly. This is the biggest advantage of the network model - it allows the flexibility to modify the topology based on your resources and latency requirements. Such networks exist in all modern chips, and they are called, simply, a Network on Chip, or NoC. We will look at them more formally in the next section.</p><div><hr></div><h1><strong>An overview of Network on Chip (NoC) architectures</strong></h1><p>In the previous section, I (hopefully) convinced you that an NoC architecture allows you to move data efficiently and provide maximum flexibility on chips with a large number of nodes. With great flexibility, comes great challenge - and in this section, I want to walk you through three architecture decisions that need to be made, and the trade-offs involved.</p><div><hr></div><h2><strong>1. What should my network look like?</strong></h2><p>As you saw from the airline analogy, changing which nodes are connected to each other makes a huge difference to the path that needs to be taken to go from one node to the other. In NoC language, each such connection is called a <strong>&#8220;Link.&#8221;</strong> By changing the number of links, and the nodes they connect, we get different <strong>&#8220;Topologies.&#8221;</strong> We use two key metrics to understand how good a topology is:</p><ul><li><p><strong>Path diversity:</strong> How many unique paths can you find between two nodes in your network (formally called &#8220;Bisectional Bandwidth,&#8221; which I think raises more questions than provides answers, so I won&#8217;t use that term.)</p></li><li><p><strong>Path distance:</strong> The maximum distance between any two nodes in the network. (Again, the formal term is &#8220;Diameter&#8221;; I&#8217;m not going to use that.)</p></li></ul><p>As you might expect, adding additional links would increase path diversity, and reduce the path distance. But each link adds hardware complexity. (More wires, and as we will see later, complex routers.) Here&#8217;s an example with three simple topologies that highlights this trade-off.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5OF0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5OF0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 424w, https://substackcdn.com/image/fetch/$s_!5OF0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 848w, https://substackcdn.com/image/fetch/$s_!5OF0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 1272w, https://substackcdn.com/image/fetch/$s_!5OF0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5OF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png" width="1046" height="751" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:751,&quot;width&quot;:1046,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:193696,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.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_!5OF0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 424w, https://substackcdn.com/image/fetch/$s_!5OF0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 848w, https://substackcdn.com/image/fetch/$s_!5OF0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 1272w, https://substackcdn.com/image/fetch/$s_!5OF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1c9b0a9-88e1-4a1a-a08c-144fc6b6dc39_1046x751.png 1456w" sizes="100vw" loading="lazy"></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>There are more nuances in designing the best topology, but for now, all you need to take away from this section is: <strong>Pick a topology that provides sufficient path diversity with the smallest number of links, while also ensuring that your path distance isn&#8217;t too much.</strong></p><div><hr></div><h2><strong>2. How do I split up my data?</strong></h2><p>It might seem like ages ago, but if you remember from the start of this post, the purpose of on-chip networks is to move data from one point in a chip to another. Due to the complexity of NoC architectures, we have a dedicated unit in each node to manage the sending and receiving of this data - called a <strong>Router</strong>. So far in this post, we assumed that all the data that we need to send out is sent together. (As a single transaction.) But in reality, it&#8217;s not practical to do this - for instance, if you want to move 1 GB worth of data as a single transaction, you would need 8,589,934,592 wires (i.e. one for each bit.) in each link. Instead, it is broken down into multiple pieces. Here&#8217;s what they are called:</p><ul><li><p><strong>Message:</strong> The is the full data that you want to send from one node to another</p></li><li><p><strong>Packet:</strong> Each message is broken down into multiple packets. All bits in a packet must follow the same path (or route) to reach the destination node.</p></li><li><p><strong>Flit (Flow Control Digit):</strong> Each packet has multiple flits. A router always stores all bits in a flit together.</p></li><li><p><strong>Phit (Physical Digit):</strong> Although a router stores a Flit together, it does not have to be sent out as a single transaction. Each flit can be broken down into multiple Phits, and each Phit must be sent out in a single cycle.</p></li></ul><p>This figure highlights how a message is broken down and transmitted from a sender to a receiver node.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wDFD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wDFD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 424w, https://substackcdn.com/image/fetch/$s_!wDFD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 848w, https://substackcdn.com/image/fetch/$s_!wDFD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 1272w, https://substackcdn.com/image/fetch/$s_!wDFD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wDFD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png" width="1240" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:1240,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209292,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171857530?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.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_!wDFD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 424w, https://substackcdn.com/image/fetch/$s_!wDFD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 848w, https://substackcdn.com/image/fetch/$s_!wDFD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 1272w, https://substackcdn.com/image/fetch/$s_!wDFD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbdcd74a-8be3-499d-92bb-ed9b7c5485aa_1240x467.png 1456w" sizes="100vw" loading="lazy"></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>At this point, it might seem like we took a simple idea of moving data and added a lot of complexity to it. But each of these terms has an impact on the network performance.</p><ul><li><p>The size of the phit decides the number of bits transferred in each link. So the phit size decides the maximum bandwidth of our network. A higher phit size is desirable, but comes with challenges to place and route the large number of wires. (Remember our discussion about large vs small flights from earlier?)</p></li><li><p>Flit size is the hardest to optimize. Since the router must store all bits of a flit together, a very large flit size could increase the latency. (Since all phits of a flit must be sent out before the next flit can be routed.) However, if your flit size is too small, then you may have too many flits to send - which could worsen the network congestion. So this needs careful consideration.</p><ul><li><p>Think of it this way: To reach your a physical destination, would you rather take a train, which is infrequent, but fast, or drive your car, which you can do anytime, but carries with it a risk that you would be stuck in traffic?</p></li></ul></li><li><p>And finally, the packet size. A smaller packet size means more packets, which means more potential routes to take from the sender node to the receiver node. However, only a topology with sufficient path diversity can really benefit from this - if not, you are just adding to the congestion by having more packets.</p></li></ul><p>I know I&#8217;m doing injustice to this topic with my &#8220;hand-wavy&#8221; analysis, but the point I really wanted to convey is that the way you split your message has a big role in the eventual performance of your network.</p><div><hr></div><h2><strong>3. What path should I take to reach my destination?</strong></h2><p>Now that you know what your network looks like, and how your data is split, life&#8217;s great - you just need to send the data, right? Well, not quite. You also need to decide which route your packet will take to reach your destination. I&#8217;m not going to go into the details here, as this is an introductory post, but I&#8217;ll leave you with a few questions to think about:</p><ul><li><p>Do I need to know the full route to reach the receiver node even before my packet leaves the sender node? Or is it sufficient for me to just decide what&#8217;s the next best node?</p></li><li><p>The agreement was that each packet must follow the same path. But does that mean I should wait for all flits in my packet to arrive at each intermediate node? Or can I send out each flit independently on the same path?</p></li><li><p>What happens if two packets want to go to the same node? Which one should I prioritize?</p></li></ul><p>This topic deserves its own post. (Maybe someday, if your airline business fails, we could explore a job as a traffic controller - a great analogy to understand routing algorithms.)</p><div><hr></div><p>This is as far as we&#8217;ll go in this introduction to on-chip networks. In an era of parallel computing, moving data efficiently is as important, if not more important than the computation itself. My biggest learning from doing this research was that to build the best on-chip network architecture, the two extremes of the computing stack must come together:</p><ul><li><p>Algorithms will decide how your data is arranged</p></li><li><p>The state of semiconductor physics will decide how many wires is too many wires</p></li></ul><p>Irrespective of which side of the stack you are on, I hope this post inspires you to explore this topic further and build the best on-chip networks for the next generation of computers.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h1>References:</h1><ul><li><p><a href="https://liacs.leidenuniv.nl/~stefanovtp/courses/ES/papers/Ch15_NoC_Design.pdf">https://liacs.leidenuniv.nl/~stefanovtp/courses/ES/papers/Ch15_NoC_Design.pdf</a></p></li><li><p><a href="http://cva.stanford.edu/publications/2001/onchip_dac01.pdf">http://cva.stanford.edu/publications/2001/onchip_dac01.pdf</a></p></li><li><p><a href="https://srsarangi.github.io/files/advbook/Chapter_8-noc.pptx">https://srsarangi.github.io/files/advbook/Chapter_8-noc.pptx</a></p></li></ul><div><hr></div><p></p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The bad old days of debugging]]></title><description><![CDATA[The computer engineering version of &#8220;kids, back in our time&#8230;&#8221;]]></description><link>https://chipinsights.net/p/the-bad-old-days-of-debugging</link><guid isPermaLink="false">https://chipinsights.net/p/the-bad-old-days-of-debugging</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 18 Aug 2025 03:06:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TpLp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s) and are not investment advice.</strong></p><div><hr></div><p>I recently read &#8220;The soul of a new machine&#8221; by Tracy Kidder, a book about the design of a new computer called Eagle, undertaken during the 1970s by a small team within the company Data General. I have always liked this genre of books - it&#8217;s nice to read about people working together to build something special. I usually leave at the end feeling inspired. But at the end of this book, I felt something else: <strong>I felt grateful.</strong></p><p>If you have been an engineer long enough, you would relate to this set of events: You find a bug during testing. You spend hours (maybe days) staring at the screen trying to figure out what is causing that bug - a period of intense frustration for you. (and sometimes, the people around you.) You finally find the root cause for the bug, experience a (short-lived) feeling of pride, before the next bug hits you. That&#8217;s the debugging emotional rollercoaster in a nutshell: And computer engineers go through it on a regular basis.</p><p>Like a lot of others, when I&#8217;m stuck debugging the same bug for a very long time, I feel like I have the worst job in the world. But looking back at chip design in the 1970s gave me a sense of how much better we all have it today&#8230;</p><div><hr></div><h1><strong>Getting your hands dirty</strong></h1><p>In the era before HDLs and EDA tools, hardware engineering meant working on real hardware. The Eagle computer was not a monolithic piece of silicon like modern SoCs - it was a collection of integrated circuits, spread across 7 different &#8220;wire-wrapped boards&#8221; with wires in the back connecting different pins. As the author Tracy Kidder puts it, the boards looked like &#8220;<strong>thin plates, each with one side covered by a profusion of tiny wires. Small cables, flat like tapeworms, ran among the boards. Oh my, there were a lot of wires.&#8221;</strong> If those words don&#8217;t speak to you, here is a picture of one such board. (Source: <a href="https://commons.wikimedia.org/wiki/File:Vector_Slit-N-Wrap_system.jpg">Wikimedia Commons</a>)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TpLp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TpLp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 424w, https://substackcdn.com/image/fetch/$s_!TpLp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 848w, https://substackcdn.com/image/fetch/$s_!TpLp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!TpLp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TpLp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png" width="1456" height="974" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3522449,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/171238164?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.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_!TpLp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 424w, https://substackcdn.com/image/fetch/$s_!TpLp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 848w, https://substackcdn.com/image/fetch/$s_!TpLp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!TpLp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee77a33a-4cc4-4614-af1c-4b520a603f0c_1567x1048.png 1456w" sizes="100vw" loading="lazy"></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>While in modern debugging, finding the root cause for a bug is the harder problem, a setup like this made fixing the bug equally challenging. When a change was needed, existing wires had to be carefully unwrapped using hollow-tipped tools, and if you were successfully able to do that, you then had to wrap new wires with the same precision. In this process, no other wires should be disturbed - but it does happen often, and results in new bugs. As the hardware lead Ed Rasala puts it, this process feels like one is performing an open-heart surgery.</p><p>This need to add or remove connections is not always a one-time thing: sometimes, in order to isolate where the bug originates from, different blocks in the design need to be disconnected, and later connected back. The book talks about an example involving the Instruction Processor and its associated I-cache - the engineers needed to run multiple experiments, each with one of the two blocks disconnected. (needing them to perform the &#8220;open-heart surgery&#8221; multiple times.) In modern debugging, isolating two such blocks would be as simple as modifying a few lines of RTL code.</p><div><hr></div><h1><strong>Keeping the paper business alive</strong></h1><p>Today, when engineers say paperwork, we never actually work with paper. But in the world where Eagle was being designed, paper still had it&#8217;s place.</p><p>Part of the debugging process involved understanding how different blocks in the computer worked. This information was compiled into a two-hundred page physical document that was written by the architect Steve Wallach. This document was like the Eagle team&#8217;s Bible - in fact, it was divided into multiple chapters, and each chapter started with a famous quote. This all sounds great, until engineers had to search through them for a specific piece of information to help with their debug.</p><p>But this was not the worst part of paper. Debugging a wire-wrapped board is vastly different from the way we add signals to a waveform today - a device called Logic Analyzer was used to probe different pins, and a snapshot of the signal had to be noted down on paper. This was improved by automatically capturing some signals in the system console - but this still needed to be printed before the values could be analyzed. Remember, signals change many times each second - so a large number of values need to be printed. In describing the console prints for one of the debugs, the author writes: &#8220;<strong>Stretched out, the sheet would run across the room and back again several times. You could fit a fairly detailed description of American history from the Civil War to the present on it.&#8221;</strong> Analyzing this large data dump with no ability to search must have been a nightmare&#8230;</p><p>Once a fix for a bug has been found, all the console log papers can be cleared out - but the paperwork does not end there. In order to correctly make this fix in all the prototypes, the exact changes in connections had to be marked on a large diagram with the schematic of the computer. This was called an Engineering Change Order, or ECO. By looking at this ECO diagram, engineers working on different prototype had to modify the wiring in their prototype each morning before they started debugging other issues. Today, a change is only called ECO very late in the project, and is done on a software abstraction of wires called Netlist. Such ECOs are rare - not an everyday occurrence like in the Eagle project.</p><div><hr></div><h1><strong>You can&#8217;t spell &#8220;Hardware&#8221; without &#8220;Hard&#8221;</strong></h1><p>Once the Eagle project was finalized, new engineers had to be hired to the team. When I read the hiring philosophy in the team, I couldn&#8217;t help but think that the challenges of debugging highlighted earlier had a lot to do with it.</p><p>During the interviews, Carl Alsing, the microcode lead, always presented the project as a tough one that involved long hours - at times even calling it a &#8220;suicide mission.&#8221; Those long hours were a direct result of the debugging challenges of the time. The team also screened for &#8220;a lack of family life&#8221; - they believed that someone with a family could not deliver on the intense commitment of the debugging schedule. Higher grades were valued, but it was not because it signified superior skills or smartness - it was merely seen as another indicator of hard work. In fact, the Eagle team even had a rite of initiation for their new hires, where they made a commitment to <strong>"do whatever was necessary for success, including forsaking, if needed, family, hobbies, and friends.&#8221;</strong></p><p>While good old hard work still has it&#8217;s place in debugging today, the best engineers I have worked with rely more on a methodical approach that makes the most of tools available at their disposal. Today&#8217;s designers have the tools to prepare in advance for a majority of the debugs they might face - with faster and more accurate simulations, better logging capabilities, and approaches like formal verification. While Alsing and co. lacked these tools and had to push engineers to work 60-80 hour debugging workweeks, it is not a requirement to be successful at debugging anymore.</p><div><hr></div><h1><strong>So, I get my turn to debug at 4 AM?</strong></h1><p>Let&#8217;s say you had all the smarts and energy it takes to debug any issue that your chip throws. If you walked into the Westborough building to debug Eagle, chances are, you will be asked to come back later. That&#8217;s because, unlike today&#8217;s world of simulation, directly debugging a real chip means, well, you need a real chip. But there were only a limited number of these prototypes, which meant not everyone could debug the Eagle computer at the same time.</p><p>The Eagle team were on a tight timeline. In order to maximize debugging time, they had a debugging schedule that had to be strictly followed, which assigned each engineer specific times throughout the day (and night) for debugging. So, if inspiration strikes you while having dinner, you would still need to wait for your shift to test your theory.</p><p>Although shifts were never more than 8 hours, the nature of debugging meant that most engineers stayed longer. Since debugging is a very personal activity, it is often easier to push yourself to work longer hours, than explaining your finding to the next engineer. (Which btw, was also &#8220;paperwork.&#8221;) The book talks about many such stories - Jim Guyer, for instance, spent many nights alone in the lab to debug issues in the Instruction Processor. Ken Holberger noted that it was often dark when he got in, and dark when he left work - leading him to lose track of the day and time when he was home.</p><p>Remember, adding more prototypes is not a sustainable solution - if you had 100 different prototypes of the computer, then each ECO would need to be implemented on each of these 100 prototypes. There were diminishing returns to scale in 1970s debugging.</p><div><hr></div><h1><strong>Flakey and Bogeyman: The supervillains of the debugging world</strong></h1><p>In the story, "flakey" and "bogeyman" were terms used by the engineers working on Eagle to describe specific types of problems or fears encountered during the debugging of the Eagle computer. A flakey refers to a <strong>failure that occurs erratically and is often hard to diagnose</strong>. Some example of this include loose connections, stray voltages, or worst of all, an IC from another vendor is buggy. The main issue with a flakey is that it is hard to reproduce consistently. The first step in fixing something is getting it to break - and with a flakey, engineers needed to spend additional time reproducing the bug, before finding a way to fix it.</p><p>The experienced engineers in the Eagle team had seen a lot of flakeys in their life, and not all of them were caught before their computer was sold. This led to a fear that there will always be one bug that would go unnoticed, but cause their machine to stop working - they called this a bogeyman. The Eagle project lead Tom West defines it as <strong>"the infinite page fault you didn&#8217;t anticipate. The bogeyman is the space your mind can&#8217;t comprehend."</strong> The fear of the bogeyman was real - Ed Rasala talks about some nights where he would wake up worrying about a bug they are yet to find, feeling like <strong>&#8220;the bogeyman was in his bedroom.&#8221;</strong> Like I mentioned in <a href="https://chipinsights.substack.com/p/the-most-important-law-every-chip">another post</a>, bugs continue to be seen in chips even today. However, verification has been largely left-shifted now - by starting verification very early, and at different levels of abstraction, the chances of encountering such bugs reduces greatly.</p><div><hr></div><h1><strong>Long-term tiredness</strong></h1><p>Nobody likes to make mistakes. But the likelihood of not detecting a bug was much higher in the 1970s than it is today. This took it&#8217;s toll on the engineers involved.</p><p>Jim Veres, who helped design the Instruction Processor and its I-cache, felt annoyed by the fact that his component was blamed for a lot of bugs. Although he would often prove that the problem was elsewhere, he said that the constant blame placed a lot of pressure on him. He felt like the block he designed was a "part of him now," and he didn't like to see it picked on unfairly.</p><p>Jon Blau experienced <strong>"difficulty forming sentences,"</strong> his <strong>"mind&#8217;ll go blank,"</strong> and felt <strong>"pieces of your life get dribbled away"</strong> due to the internal pressure to hurry and finish his code. When he took over debugging the ALU, he was <strong>"terribly excited by it, then very frightened,"</strong> leading him to take a week off. Ed Rasala summed this up nicely, by calling it a &#8220;long-term tiredness.&#8221; He said that engineers on the debug schedule felt tired, but not in a traditional way that going home to their loved ones could fix. They were always thinking about the current issue they are debugging, while being concerned about the next bug they might hit. That&#8217;s what it was like to debug a computer in the 1970s.</p><div><hr></div><p>While debugging is still a challenge today, and tools can be better, reading &#8220;The soul of a new machine&#8221; gave me a new perspective on what we have today. It&#8217;s been about 50 years since this saga unfolded. Who knows, 50 years later, someone might write a sorry tale about the way we debug chips today&#8230;</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p>By the way, this post only talks about a small part of this book that resonated with me. For a fuller analysis, I highly recommend this post by the Chip Letter.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:157192680,&quot;url&quot;:&quot;https://thechipletter.substack.com/p/the-soul-of-an-old-machine&quot;,&quot;publication_id&quot;:1063960,&quot;publication_name&quot;:&quot;The Chip Letter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!vwjY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe682d7-ab93-463b-b714-8f98c0c072d2_1280x1280.png&quot;,&quot;title&quot;:&quot;The Soul of an Old Machine&quot;,&quot;truncated_body_text&quot;:&quot;\&quot;That fellow West is a good man in a storm.\&quot; &#8230; \&quot;He didn't sleep for four nights! Four whole nights.\&quot; And if that trip had been his idea of a vacation, where, the psychologist wanted to know, did he work?&quot;,&quot;date&quot;:&quot;2025-04-01T00:01:39.312Z&quot;,&quot;like_count&quot;:56,&quot;comment_count&quot;:36,&quot;bylines&quot;:[{&quot;id&quot;:102722254,&quot;name&quot;:&quot;Babbage&quot;,&quot;handle&quot;:&quot;thechipletter&quot;,&quot;previous_name&quot;:&quot;The Chip Letter&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82525b9c-ee3c-4996-916c-54267a4d354b_416x416.png&quot;,&quot;bio&quot;:&quot;Computer history and architecture&quot;,&quot;profile_set_up_at&quot;:&quot;2022-08-28T13:07:25.701Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-10-20T11:45:48.505Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1012118,&quot;user_id&quot;:102722254,&quot;publication_id&quot;:1063960,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1063960,&quot;name&quot;:&quot;The Chip Letter&quot;,&quot;subdomain&quot;:&quot;thechipletter&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Computer history and architecture&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffe682d7-ab93-463b-b714-8f98c0c072d2_1280x1280.png&quot;,&quot;author_id&quot;:102722254,&quot;primary_user_id&quot;:102722254,&quot;theme_var_background_pop&quot;:&quot;#FF6B00&quot;,&quot;created_at&quot;:&quot;2022-08-28T13:07:52.880Z&quot;,&quot;email_from_name&quot;:&quot;The Chip Letter&quot;,&quot;copyright&quot;:&quot;The Chip Letter&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:100}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://thechipletter.substack.com/p/the-soul-of-an-old-machine?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!vwjY!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe682d7-ab93-463b-b714-8f98c0c072d2_1280x1280.png" loading="lazy"><span class="embedded-post-publication-name">The Chip Letter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Soul of an Old Machine</div></div><div class="embedded-post-body">"That fellow West is a good man in a storm." &#8230; "He didn't sleep for four nights! Four whole nights." And if that trip had been his idea of a vacation, where, the psychologist wanted to know, did he work&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 56 likes &#183; 36 comments &#183; Babbage</div></a></div>]]></content:encoded></item><item><title><![CDATA[The psychology of a technical interview]]></title><description><![CDATA[The non-technical aspects that no one talks about]]></description><link>https://chipinsights.net/p/the-psychology-of-a-technical-interview</link><guid isPermaLink="false">https://chipinsights.net/p/the-psychology-of-a-technical-interview</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 04 Aug 2025 06:02:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.</strong></p><div><hr></div><p>This post is a little different from what I usually write. I want to preface by saying that I&#8217;m not going to talk about the knowledge and skills needed to crack technical interviews - they are very important, but are also specific to the job role you are applying to, and the stage of your career. I compiled some resources for a few such roles in computer engineering in this post, if that&#8217;s what you are looking for:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;47dd83ec-ae43-42cd-bd0b-b8c799dbfca2&quot;,&quot;caption&quot;:&quot;Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Hardware Engineering Interview Resources&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-02-25T16:20:05.886Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/hardware-engineering-interview-resources&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:157896671,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:17,&quot;comment_count&quot;:1,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>When I had finalized my plans to move to the US for graduate school, I started to proactively apply for internships. Even before I landed here, a recruiter from what was at that time my &#8220;dream company&#8221; reached out to me, and set up interviews pretty soon. It was perfect - I had the skills and experience for the role, and I had prepared quite well. At least I thought so&#8230;</p><p>It&#8217;s been about 3 years since that interview, but I still remember that day very clearly. I completely froze during the interview. It wasn&#8217;t the hardest interview I have given. It wasn&#8217;t even the least prepared I was. And yet, it was my worst interview. Looking back, it hasn&#8217;t made too much of a difference, I&#8217;m happy that things panned out the way they did for me. But I&#8217;ve always wondered what happened on that day. Was it me? Was it a poorly conducted interview?</p><p>Recently, I conducted a few mock interviews for my alma mater. In preparation, I spoke to some experienced interviewers, and also reviewed some accounts of good and bad interviews. Being on the other side gave me more perspective on what makes an interview good - both for the interviewer and interviewee. Surprisingly, it&#8217;s less about how knowledgeable each side is - certain behavioral aspects play a key role. This post is centered around these aspects of a technical interview.</p><div><hr></div><p></p><h1><strong>Who should read this?</strong></h1><p>I know that a lot of people reading this would be interviewees, not interviewers. As interviewees, we are conditioned to believe that the fate of an interview lies solely in our hands. I don&#8217;t think this is true - it&#8217;s just that interviewers aren&#8217;t evaluated to the same degree.</p><p>A lot of interviewers brag about the fact that most interviewees fail their round. I&#8217;ve found this to be quite amusing. Interviewers assume that their interviews are technically advanced and the quality of candidates is low, but that&#8217;s hardly ever the truth. If a lot of interviewees struggle to answer your questions, there is something wrong with your interviewing style.</p><p><strong>I know this post would reach a lot of interviewees, but I&#8217;m writing this in the hope that it also reaches some interviewers.</strong></p><div><hr></div><p></p><h1><strong>The six ingredients that make a good interview</strong></h1><h2><strong>1. Perfect your pitch</strong></h2><p>Very often, interviewees start their interview by introducing themselves. When I was interviewing, I think I handled this question quite poorly - I had a good number of projects on my resume, and I thought the best idea is to make them the stars. I went into the technicalities of my projects very quickly - after all, it was a technical interview. But from my experiences being on the other side, I realize how pointless this is. As an interviewee, you need to remember that no one cares as much about your projects as you do - so the minor technical details that you find fascinating are not going to impress anyone.</p><p>Some of the best candidates I interviewed approached this question very differently - they had a simple, but impressive pitch that spoke about themselves. Say you are someone with projects in computer architecture, and interned in a government funded lab, here&#8217;s one example each for a bad, and good pitch:</p><ul><li><p><strong>Bad pitch:</strong> Talk about the technical details in each of the projects (basically reading out your resume)</p></li><li><p><strong>Good pitch:</strong> Talk about the importance of computer architecture for the future of your country, and the role you want to play in that</p></li></ul><p>It doesn&#8217;t matter if you think your experiences are ordinary - every story is unique, and crafting a good story can completely change the tone of the rest of the interview.</p><p>Interviewees usually figure this out over time, but a lot of interviewers forget that they need to pitch too. I can&#8217;t tell you the number of times this does not happen. I don&#8217;t think it is enough for interviewers to ask an open ended question like &#8220;do you have anything you want to ask me.&#8221; Interviewers should start the interview by setting expectations - about the interview, the job, and the company. I would go one step further to carefully review the candidate&#8217;s resume and mention what aspects would be a great fit for the team.</p><p>I have given so many interviews where I have no clue what is expected of me if I join the team, and whether they even care if I join. A short pitch can make a candidate feel special. Taking a few minutes to do this can make the difference between good candidates joining your team, or passing up your offer. Remember that good candidates will always have options, and their decision won&#8217;t always be driven by the money offered. Hiring is the most important aspect of a team, and as an interviewer you have an opportunity to attract the best talent.</p><div><hr></div><p></p><h2><strong>2. Don&#8217;t experiment too much</strong></h2><p>When I was taking mock interviews, I experimented with the way I framed questions. (Part of me was already thinking about writing a post like this.) I realized that too much experimentation as an interviewer is not a good thing - it will result in an unfair evaluation. Me, and a lot of others I talk to, discuss how boring the interview format is, and how we would design a very interesting interview when we get the opportunity. But it&#8217;s important to understand why some interviews are the way they are: standardization is the best way to ensure fairness across candidates.</p><p>If I ask candidate A a standard textbook question, but I reframe the question to mimic a real life scenario when I interview candidate B - candidate B may have the more interesting interview experience, but the vagueness of the format will also make it unfair if they cannot answer the question correctly. So my suggestion is to avoid experimenting too much, unless you are sure you can replicate it across multiple candidates. It is important to remember this as an interviewee too. Answering technical questions is very different from the pitch I mentioned previously - here, uniqueness isn&#8217;t rewarded. Sometimes, I have tried to be too cheeky in interviews - using clever analogies, or out of the box terminology to answer basic questions. It has never ended well - in the worst case, I ended up confusing myself and the interviewer. In the best case, I answered one question right. (I don't think creativity gets any brownie points in technical interviews.)</p><p><strong>Whether you are an interviewer or an interviewee, follow the advice that Michael Scott gave to Dwight Schrute in &#8220;The Office&#8221;: Keep It Simple, Stupid.</strong></p><div><hr></div><p></p><h2><strong>3. The curse of &#8220;the know it all&#8221;</strong></h2><p>This is a problem I noticed while interviewing a lot of smart, knowledgeable, well-prepared candidates. When I asked a question, they made a lot of assumptions about what I might be asking, and went on multiple different tangents. Everything they said was technically correct - the only issue was, it was not what I asked. If I have to evaluate the candidate for the question, I would still have to say that the question wasn&#8217;t answered correctly. Therein lies the problem.</p><p>Sometimes, interview questions are vague - could be by design, or could be accidental. Even if you know what the answer might be, asking a couple of clarifying questions before jumping in with an answer is a good idea. This could even earn you brownie points - if you actually remind the interviewer of a point they forgot to mention, it is a great sign.</p><p>I think the problem of oversharing exists with interviewers too (unfortunately, it goes unchecked.) Some interviewers get into the habit of explaining why the interviewee is wrong (and why they are right.) I know a lot of interviewers who justify this, by saying they want to help the candidate do better in other interviews. I don&#8217;t buy this argument; as someone that has been explained to multiple times, I can confidently say that none of it has gone into my head in that moment. Interviews are too short and stressful to be conducive for learning. All you are doing as an interviewer is wasting valuable time that could be spent evaluating other skills of the candidate. If you really care about the candidate learning something, offer to help the candidate on a call or email after the interviews. (I would gladly take up this opportunity to learn, but no one has made that offer - some companies have a policy against this - but let&#8217;s not get into this.)</p><div><hr></div><p></p><h2><strong>4. Sweat the small stuff</strong></h2><p>Like a lot of interviews today, the mock interviews I took were remote too. Remote interviews introduce non-uniformity that is often ignored. This includes:</p><ul><li><p>A reliable Internet connection</p></li><li><p>Clear audio and video</p></li><li><p>The ability to write and draw something, and share it (preferably on the computer)</p></li></ul><p>I know not everyone has the privilege to invest in the best equipment, but even those who do, sometimes don&#8217;t pay enough attention to it. I had a lot of such &#8220;tech issues&#8221; happen that completely disrupt the flow of the interview. Even if they aren&#8217;t completely disruptive, your interviewer cannot evaluate you if they cannot hear you correctly, or cannot understand what you write or draw. You might think these are minor things that don&#8217;t affect the eventual interview outcome, but when I asked experienced interviewers, they told me about some interviews where the lack of audio and video clarity resulted in candidates being passed on.</p><p>Those who have watched the 2013 movie &#8220;The Internship&#8221; can relate to what I am saying - don&#8217;t take an interview in a loud public setting like Nick and Billy:</p><div id="youtube2-XYG6tAMWFIo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;XYG6tAMWFIo&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/XYG6tAMWFIo?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Interviewers are guilty of this too - more often than you think. I remember interviews where after a point, I had no choice but to ask the interviewer to change their headphone because their audio kept breaking. If you are using visuals or text to ask questions, ensure that they are clearly visible. And finally, my biggest pet peeve - please, please, please turn on your video during interviews. There&#8217;s nothing worse than answering technical questions from an icon on the screen with scratchy audio.</p><div><hr></div><p></p><h2><strong>5. Play the player, not the cards</strong></h2><p>There&#8217;s a saying about the best poker players - their strategy depends not on the cards they hold; it depends on the players they are up against. I think it would really help if interviewers and especially interviewees develop the ability to read the person they are talking to.</p><p>In my experience, there are three main types of technical interviewers:</p><ul><li><p><strong>The no-nonsense type:</strong> is only focused on your technical knowledge</p></li><li><p><strong>The curious type:</strong> like to hear about new and interesting projects and ideas</p></li><li><p><strong>The manager type:</strong> is concerned about whether you are a good fit for the teams needs</p></li></ul><p>If you can make an assessment of the type of interviewer you are talking to, you can shift the tone of the interview to match their expectations - give short but precise answers to the no-nonsense type; talk about interesting projects with the curious type; and show that you have the right skillset to the manager type. This isn&#8217;t the easiest skill to master, but will definitely help you leave a better impression.</p><p>This skill adds value for an interviewer too - especially if you want to lure a high quality candidate to join your team. Matching the energy of the person you are interviewing will definitely improve the quality of the interview, and provide better insights to make your decision.</p><div><hr></div><p></p><h2><strong>6. Don&#8217;t be a jerk</strong></h2><p>I&#8217;ve saved the most important point for last. Interviewers and interviewees think of the technical interview as some kind of battle of intellect. In the process, one, or both parties can be jerks.</p><p>Interviewers are more notorious for this. I have seen that some interviewers have a tendency to demonstrate their intellectual superiority - in the form of snarky comments, exasperation, and concerning expressions. It could even be something simpler - asking questions like &#8220;Are you sure this is right?&#8221; when the answer is actually right. (In a vulnerable, emotional state, most interviewees will say &#8220;no&#8221; to a question like this.) Actions like these in no way contribute to the evaluation of the technical skills of a candidate - they are merely shows of dominance. Since most interviews span multiple rounds, it is possible that a candidate had a bad interview with you, but is still offered the job, and is going to be your future teammate. Do you really want your first interaction to be like this?</p><p>If you are an interviewer, always remember that you are the support cast in the interview - it is not your stage to demonstrate anything. Your role is merely to conduct a fair evaluation to help your team hire the right candidate.</p><p>In defense of the interviewers, I must say that interviewees can be jerks too. I have heard cases where the interviewer being wrong (which can happen) triggers unpleasant disagreements in the midst of an interview. Even if you are sure you are right, I don&#8217;t think having a full blown argument is the right thing to do. Often, candidates are evaluated by the number of questions they answer correctly, so the time you spend arguing is time lost from another question. The better approach would be to table the conversation - you can say that there might be a misunderstanding, and that you would like to visit this question again at the end if time permits. I would not even mind a polite email after the interview with the clarification. (But &#8220;polite&#8221; is very important here - otherwise it could backfire.)</p><p>It&#8217;s important to remember that both interviewers and interviewees have the same end goal - to contribute towards the progress of technology. If you stay with this goal long enough, you will cross paths once again. And humans have a tendency to remember negative emotional experiences - a simple technical interview should not be one of those.</p><p><strong>So please smile, and have a pleasant technical interview experience.</strong></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Confessions of a static timing analysis tool]]></title><description><![CDATA[All about STA, from the horse's mouth]]></description><link>https://chipinsights.net/p/confessions-of-a-static-timing-analysis</link><guid isPermaLink="false">https://chipinsights.net/p/confessions-of-a-static-timing-analysis</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 21 Jul 2025 15:11:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.</strong></p><div><hr></div><p>Hello there. If you are reading this, we have probably already interacted in the past. I was created a long time ago, inspired by a project management tool called Program Evaluation and Review Technique (PERT), that was used to identify the critical path and slack time in projects. I still carry some of these terms with me - from 1966 all the way till today. You may know me today by different names like Synopsys PrimeTime, or Cadence Tempus - does that ring a bell? No? It&#8217;s okay, I know I am not as popular as those pretentious synthesis tools that bully me around. But I play an important role in your life, and I&#8217;m here to tell you why&#8230;</p><div><hr></div><h1><strong>The harsh truth your synthesis tool didn&#8217;t tell you</strong></h1><p>As you may have guessed, what I do is called &#8220;Static Timing Analysis&#8221;. The cool kids call it STA, so let&#8217;s stick to that. You know how you use a modern hardware description language like Verilog to describe your digital design? Well those languages might make your life easy, but tools like me can&#8217;t comprehend all the fancy slang you use there. Am I supposed to know what &#8220;always @ posedge&#8221; means? No thank you. All I understand are the basics:</p><ul><li><p>What are the inputs and outputs (Called &#8220;<strong>IO&#8221;</strong>)</p></li><li><p>Simple logic components, like gates (AND, OR, etc.) and MUXes (Called <strong>&#8220;Cells&#8221;</strong>)</p></li><li><p>Storage elements like Flip-Flops, Latches (Called <strong>&#8220;Registers&#8221;</strong>) and SRAMs (Called <strong>&#8220;Memories&#8221;</strong>)</p></li><li><p>Connections between them (called <strong>&#8220;Nets&#8221;</strong>)</p></li></ul><p>So before you come asking for my help, you need to convert your fancy HDL design into something I understand called a &#8220;<strong>Netlist&#8221;</strong>. (A list of nets, get it?) That&#8217;s where the synthesis tools come in - they are just fancy translators who understand your HDL design, and break it down into the simple netlist that I understand. They don&#8217;t check whether it is even possible to have the connections you have described - they just want to please you by saying yes to everything you say. No wonder you like them so much.</p><p>But let me tell you the harsh truth - not everything you describe is realistic. You might think you are the god of chip design, but in my world, you must bow down to our god - Physics. What you are designing is not software - a chip is a physical entity that works by moving electrons. They&#8217;re much faster than anything you&#8217;ve ever seen, but they still take time to move from one place to another in the chip. Due to this fact, any logic you add in the chip will also add a delay. Your favorite synthesis tool conveniently left all this out.</p><p>Finding out exactly what this delay would be is challenging - remember, at this stage, I am doing this with no knowledge about how the chip is going to look at the very end. But even at this stage, I have something valuable that no one else has - estimated delays of different cells for the technology that the chip would be manufactured in. (In other words, a direct line to Dr. Morris Chang - ever heard of him?) I write down this information in a place called the <strong>&#8220;Cell Library&#8221;</strong> - I&#8217;m going to need to refer to this often once I get started with my work. But I still haven&#8217;t told you what my work is, have I? Before I do that, I will tell you why my job exists in the first place.</p><div><hr></div><h1><strong>Welcome to my synchronized world</strong></h1><p>Now that you know delays are a thing in the real world, let me introduce you to the idea of synchronization in digital design. Consider this design I once worked on, where there were 5 inputs - <strong>A</strong>, <strong>B</strong>, <strong>C</strong>, <strong>D</strong>, and <strong>E</strong>, used to get the final output <strong>O</strong>. When I saw the netlist, I noticed that this design includes an <strong>AND</strong> gate, two <strong>OR</strong> gates, and a <strong>MUX</strong>, connected like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ty4O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ty4O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 424w, https://substackcdn.com/image/fetch/$s_!ty4O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 848w, https://substackcdn.com/image/fetch/$s_!ty4O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 1272w, https://substackcdn.com/image/fetch/$s_!ty4O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ty4O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png" width="837" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:837,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35733,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/168864393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.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_!ty4O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 424w, https://substackcdn.com/image/fetch/$s_!ty4O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 848w, https://substackcdn.com/image/fetch/$s_!ty4O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 1272w, https://substackcdn.com/image/fetch/$s_!ty4O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fd98dcd-9d7e-45cd-852c-9d57e12aa1a7_837x431.png 1456w" sizes="100vw" loading="lazy"></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>As you can see, I have also added the delays of each cell by checking the cell library. (You&#8217;re welcome.) Assuming no input delays, the time taken to observe the correct output <strong>O</strong> can be obtained by adding all the delays in the path between an input and the output. However, there are multiple different paths from the input and output, each with a different delay:</p><ul><li><p>Path 1: Input <strong>A</strong>/<strong>B</strong> &#8594; <strong>U0</strong> &#8594; <strong>U1</strong> &#8594; <strong>U3</strong> &#8594; Output <strong>O</strong> (Delay = 6 ns)</p></li><li><p>Path 2: Input <strong>C</strong> &#8594; <strong>U1</strong> &#8594; <strong>U3</strong> &#8594; Output <strong>O</strong> (Delay = 4 ns)</p></li><li><p>Path 3: Input <strong>C/D</strong> &#8594; <strong>U2</strong> &#8594; <strong>U3</strong> &#8594; Output <strong>O</strong> (Delay = 4 ns)</p></li><li><p>Path 4: Input <strong>E</strong> &#8594; <strong>U3</strong> &#8594; Output <strong>O</strong> (Delay = 3 ns)</p></li></ul><p>The purpose of any digital design, is to find the output when the input changes. Since the delays are different, you don&#8217;t exactly know when the output is ready - it could be 3 ns, or 6 ns after the inputs are applied. This makes the design pretty much useless. How do we deal with this problem? In the above example, let&#8217;s say that the input can only change once every 10 ns, and the output is also sampled with the same frequency - then, irrespective of the path between input and output, we are guaranteed to get the correct output value. In other words, by restricting when inputs to a design can change, and outputs from a design are sampled, we can ensure correct execution across many different paths - an idea called synchronization.</p><p>In order to maintain synchronization, we need to ensure that the input remains unchanged. But we have no idea where these inputs are coming from, so each input may have it&#8217;s own delays. This means we need to have a way to store the values of the inputs periodically, and use these stored values to calculate the output. This is done using a storage element like a latch or flip-flop - the general term for this is a <strong>Register</strong>. Let&#8217;s add registers <strong>R0</strong> and <strong>R1</strong> at the input and output of our design, respectively.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!51TF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!51TF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 424w, https://substackcdn.com/image/fetch/$s_!51TF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 848w, https://substackcdn.com/image/fetch/$s_!51TF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 1272w, https://substackcdn.com/image/fetch/$s_!51TF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!51TF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png" width="886" height="521" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d61985bb-6352-4469-a41f-5ba596350bd6_886x521.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:521,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38901,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/168864393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.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_!51TF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 424w, https://substackcdn.com/image/fetch/$s_!51TF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 848w, https://substackcdn.com/image/fetch/$s_!51TF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 1272w, https://substackcdn.com/image/fetch/$s_!51TF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd61985bb-6352-4469-a41f-5ba596350bd6_886x521.png 1456w" sizes="100vw" loading="lazy"></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>Each register also needs to know when to store the next input. (every 10 ns in our example.) To achieve this, we introduce a new input, and an STA tool&#8217;s best friend, the clock signal. (also known by the nickname <strong>clk</strong>.) The clock signal periodically changes from 0 to 1, and then back to 0 - each such transition is called a clock cycle. The time taken for the signal to complete this transition is called the <strong>Clock Period</strong>. In a typical register, the input to the register gets stored in the register when the clock signal goes from 0 to 1, called the positive clock edge. This allows us to store the inputs in the register <strong>R0</strong> during a positive clock edge, then complete the evaluation of the logic, and store the final output in register <strong>R1</strong> during the next positive clock edge.</p><p>Here&#8217;s a timing diagram to show how in the above example, input <strong>E</strong> and the intermediate output <strong>O&#8217;</strong> are only sampled at the positive clock edge, ensuring that the correct inputs and outputs are seen after every 10 ns. (Inputs <strong>A</strong>, <strong>B</strong>, <strong>C</strong> and <strong>D</strong> are not changing in this case.)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r8Ns!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r8Ns!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 424w, https://substackcdn.com/image/fetch/$s_!r8Ns!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 848w, https://substackcdn.com/image/fetch/$s_!r8Ns!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 1272w, https://substackcdn.com/image/fetch/$s_!r8Ns!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r8Ns!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png" width="882" height="826" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:826,&quot;width&quot;:882,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30653,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/168864393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.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_!r8Ns!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 424w, https://substackcdn.com/image/fetch/$s_!r8Ns!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 848w, https://substackcdn.com/image/fetch/$s_!r8Ns!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 1272w, https://substackcdn.com/image/fetch/$s_!r8Ns!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa575638e-3bfa-4c43-80d6-11fb2f993dec_882x826.png 1456w" sizes="100vw" loading="lazy"></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>As you can see, <strong>E&#8217;</strong> (output of register <strong>R0</strong>) and <strong>O</strong> (Output of register <strong>R1</strong>) do not change between clock cycles - this is important, because each of these signals can be used as part of other logic with the assumption that the data won&#8217;t change during the clock cycle - this is very important to make your designs larger without increasing the delays indefinitely. But this synchronization comes with strings attached, and my job is to ensure you abide by certain rules.</p><div><hr></div><h1><strong>We have needs too, feat. Registers</strong></h1><p>When I spoke about the role of registers in maintaining synchronization <a href="https://chipinsights.substack.com/i/168864393/welcome-to-my-synchronized-world">earlier</a>, I might have given you the impression that registers are a gift from the heavens to save all digital designs. Maybe you think registers should be the ones doing the talking here. Let me tell you something, these registers aren&#8217;t as generous as you think. While registers help solve the synchronization problem, they introduce new problems in the process.</p><p>Remember how I said a register stores data when it sees the positive clock edge - I left out some of the nuances here. There are some registers out there that decide to store data at the negative clock edge instead, but everything that I talk about applies to those registers too - so let&#8217;s generalize by calling it a <strong>clock event</strong>. For the input data to be stored correctly at a clock event, the register enforces some strict rules. (Thanks again to the physics gods.) In my world, we use specific terms to express these &#8220;needs.&#8221;</p><p>The first term is <strong>Setup Time</strong>, which is the minimum time for which the input data to a register must be stable <strong>before</strong> a clock event. I&#8217;m not going to tell you the complete origin story of setup time here, but just know this - if you change the input to a register too close to a clock event, the registers cannot guarantee that they checked the correct value. Think of it like this - you are supposed to turn in your assignment by 10 AM, but you decide to make some last minute updates at 11 AM - a register is like that strict professor who says: &#8220;Sorry, I cannot promise that your updates would be graded.&#8221; Ah, if only registers were a good sport&#8230;</p><p>Their needs don&#8217;t end here - in addition to setup time, registers also have something called <strong>Hold Time</strong> - the minimum time for which the input data should be held stable <strong>after</strong> the clock event. This might seem excessive to you - this sounds like a professor who not only wants the assignment submitted by 10 AM, but also wants you to show up to their office, wait for 30 minutes while they review your assignment, and leave only after that. Seems unfair? I get it, but registers rule my world, and they are pretty high maintenance. You have no choice but to abide by their rules.</p><p>If you think our nightmare ends there, I&#8217;m sorry to burst your bubble. Remember that these registers, like everything else in a chip, work by moving electrons around. That means just like the cells we discussed earlier, they have propagation delays too. Typically, there are two different delays, since the path taken by the clock signal and input data are different. Here&#8217;s what we call them:</p><ul><li><p><strong>Clk&#8594;Q Delay</strong>: The delay in output resulting from the clock input</p></li><li><p><strong>D &#8594; Q Delay</strong>: The delay in output resulting from the data input</p></li></ul><p>Lot of information, huh? Looks like somebody needs help tracking all this. That&#8217;s where I come in. My job is to ensure that all the delays are accounted for, and the registers can guarantee that your design works as expected. The first thing I do, is call up my dear friend Dr. Morris Chang (or one of his friends that is going to manufacture this chip.) and get the setup time, hold time, and propagation delays of the registers. Remember, I already know the propagation delays of the other cells. With all this information, I&#8217;m like a fortune teller that can predict the future of your chip - except that unlike your fortune teller, I&#8217;m always right.</p><div><hr></div><h1><strong>Show me the slack!</strong></h1><p>For me to check if your chip will work correctly, I need to ensure that your design meets all of the register&#8217;s needs. Let&#8217;s start by looking at setup time. Use the diagram below to follow along. To start with, I select a register, say <strong>R0</strong> from the design, and pick one of it&#8217;s inputs - let&#8217;s call it <strong>In</strong>. At a positive clock edge, <strong>R0</strong> stores the data from In. (When I do this analysis, I assume the input register, <strong>R0</strong> in this case, does not violate Setup Time. This analysis is done for all registers, so trust me, it will all work out in the end.) Due to the propagation delay in <strong>R0</strong>, the stored data <strong>In&#8217;</strong> is only seen after some delay. As I mentioned, a register can have two kinds of delays - but when I&#8217;m checking if setup time is met, I pick the larger of the two - because I want your chip to work under all circumstances. Once we get past <strong>R0</strong>, we see a familiar foe - the combinational delay which I <a href="https://chipinsights.substack.com/i/168864393/welcome-to-my-synchronized-world">spoke about in an earlier section</a>. Adding both these delays gives us the time it takes to get the correct data for <strong>Out&#8217;</strong> - the input to register <strong>R1</strong>. The register <strong>R1</strong> expects to store this data at the next positive clock edge - it&#8217;s schedule is decided by the clock period. But as I mentioned earlier, the register does not like last minute changes to it&#8217;s input - so our real deadline is actually a little earlier than the next positive edge - to ensure that the data is held stable longer than the setup time of R1. This requirement can be expressed using fancy math operators, and this is called the <strong>Setup Time Constraint</strong>. My job is to check whether this constraint is met:</p><ul><li><p>If YES, that means this path between In and Out &#8220;<strong>meets setup time</strong>&#8221;. The extra time you have before the setup time deadline is called P<strong>ositive Slack</strong>.</p></li><li><p>If NO, the path &#8220;<strong>violates setup time.</strong>&#8221; The amount by which your delays exceed the deadline is called N<strong>egative Slack</strong>.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QjXR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QjXR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 424w, https://substackcdn.com/image/fetch/$s_!QjXR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 848w, https://substackcdn.com/image/fetch/$s_!QjXR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 1272w, https://substackcdn.com/image/fetch/$s_!QjXR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QjXR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png" width="1456" height="1664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1664,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209853,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/168864393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.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_!QjXR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 424w, https://substackcdn.com/image/fetch/$s_!QjXR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 848w, https://substackcdn.com/image/fetch/$s_!QjXR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 1272w, https://substackcdn.com/image/fetch/$s_!QjXR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61043c5-d2c7-40d9-9c21-e89979844db6_1680x1920.png 1456w" sizes="100vw" loading="lazy"></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><div><hr></div><h1><strong>Not so fast&#8230;</strong></h1><p>As I said earlier, registers also need data to be held for some time (called hold time) before it is safe for the input value to change. In the same scenario I described earlier for setup time, when the data from <strong>Out&#8217;</strong> is being stored in register <strong>R1</strong>, a new value of In is being stored in <strong>R0</strong>, and then passing through the combinational logic to replace the current value at <strong>Out&#8217;</strong>. If this happens too fast, then the value of <strong>Out&#8217;</strong> changes before the hold time of register <strong>R1</strong> has passed - which would result in a <strong>Hold Time Violation</strong>. This gives me another constraint to check for - called the <strong>Hold Time Constraint</strong>. (You can think of it like a speeding ticket.) Similar to the setup time check, my goal is to ensure that the chip works at all circumstances - so when I am looking for a hold time violation, I take the smaller of the two propagation delays of register <strong>R0</strong>. Remember, smaller delays are bad when it comes to hold time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9p5T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9p5T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 424w, https://substackcdn.com/image/fetch/$s_!9p5T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 848w, https://substackcdn.com/image/fetch/$s_!9p5T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 1272w, https://substackcdn.com/image/fetch/$s_!9p5T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9p5T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187931,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/168864393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.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_!9p5T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 424w, https://substackcdn.com/image/fetch/$s_!9p5T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 848w, https://substackcdn.com/image/fetch/$s_!9p5T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 1272w, https://substackcdn.com/image/fetch/$s_!9p5T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f438a4-9c80-44d8-8b55-5855a9a35ab9_1920x1920.png 1456w" sizes="100vw" loading="lazy"></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><div><hr></div><h1><strong>Showing (off) my work</strong></h1><p>Now that you know what I do, let me show you how I would actually do it, using <a href="https://chipinsights.substack.com/i/168864393/welcome-to-my-synchronized-world">the example design I described earlier</a>. In this design, although there are just two registers, there are six different paths between inputs and outputs. (Four of them have unique combinational delays.) For each of these paths, I need to ensure that the setup and hold time constraints are met. Dr. Morris Chang was busy, so I made up some numbers for the register&#8217;s setup time , hold time , and propagation delays. With these numbers:</p><ul><li><p>Path 2 and 3 meet both setup and hold time conditions - they are good to go</p></li><li><p>Path 1 fails setup time - it takes 8 ns for data to reach <strong>O&#8217;</strong>, but <strong>R1</strong> expects it at 7 ns</p></li><li><p>Path 4 fails hold time - The path from <strong>E</strong> to <strong>O&#8217;</strong> is just 4 ns long, giving <strong>R1</strong> insufficient time to store the previous input</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T6_C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T6_C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 424w, https://substackcdn.com/image/fetch/$s_!T6_C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 848w, https://substackcdn.com/image/fetch/$s_!T6_C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 1272w, https://substackcdn.com/image/fetch/$s_!T6_C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T6_C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png" width="767" height="731" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:731,&quot;width&quot;:767,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60628,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/168864393?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.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_!T6_C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 424w, https://substackcdn.com/image/fetch/$s_!T6_C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 848w, https://substackcdn.com/image/fetch/$s_!T6_C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 1272w, https://substackcdn.com/image/fetch/$s_!T6_C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a52fd0-d3d3-41d8-82c3-f6e0edfe8ae2_767x731.png 1456w" sizes="100vw" loading="lazy"></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>This analysis (i.e. Static Timing Analysis) clearly shows that this design does not pass timing. It also tells you exactly which paths are causing violations, and by how much. I have to repeat this analysis for every combination of input and output registers, and every possible path between the inputs and outputs. Even if one out of a million such paths has a setup or hold violation, I will find that for you, and prevent you from making a billion dollar mistake. That&#8217;s what makes me special&#8230;</p><div><hr></div><p>Still not convinced of my value in your life? That&#8217;s okay, I have some more experiences to share from the real world that might just convince you. So share this story, and stay tuned for future installments of this series.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div>]]></content:encoded></item><item><title><![CDATA[The most important law every chip designer should know about]]></title><description><![CDATA[It's not Moore's Law. It's not Huang's Law.]]></description><link>https://chipinsights.net/p/the-most-important-law-every-chip</link><guid isPermaLink="false">https://chipinsights.net/p/the-most-important-law-every-chip</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Mon, 14 Jul 2025 02:01:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.</strong></p><div><hr></div><h1><strong>Story time</strong></h1><p>In 1989, a chip design team started work on one of the most ambitious PC processors of the time - one with a superscalar architecture, branch prediction, and a much faster floating point unit. Over the next two years, hundreds of engineers were involved in the design, simulation, and extensive verification, which culminated in a test chip. The testing continued - by running major operating systems with the most popular applications of the time - for an estimated 100 million clock cycles. After all the bugs were resolved in 1993, the final chip was shipped to all the biggest computer OEMs of the time - with a new brand name called &#8220;Pentium&#8221;. The chip was an instant hit - the reviews were positive, and as a result, Intel&#8217;s microprocessor sales doubled in 1993. The new floating point unit impressed - with a 10x improvement over the previous generation of Intel chips. It was another feather in Intel&#8217;s cap - extending their dominance in the PC processor market. It seemed like they had done everything right, and nothing could go wrong&#8230;</p><p>The Pentium chip had millions of users over the years, but one of them has a special place in history. Dr. Thomas Nicely and Intel couldn&#8217;t be further apart - he was a Mathematics professor at Lynchburg College in Virginia, away from the hustle and loud marketing that Silicon Valley was known for. About 18 months after the release of the Pentium processor, Dr. Nicely noticed something - the results from his research on twin prime numbers were slightly off. Like a typical academic would, instead of ignoring it as a &#8220;random error&#8221;, he started to dig deeper - which led him to the conclusion that the Pentium processor was making mistakes when running some floating point division operations. He posted his findings online, and this opened up a can of worms that would cost Intel dearly.</p><div><hr></div><h1><strong>Triaging the bug</strong></h1><p>Remember the long division method from high school? Microprocessors in the 1990s used a similar method to divide floating point numbers. Although it worked, this method was quite slow - making floating point division one of the slowest arithmetic operations in a microprocessor. To make this operation execute faster, Intel implemented a different approach called &#8220;Sweeney-Robertson-Tocher (SRT) method&#8221;. I&#8217;ll skip the details here, but for the purposes of this post, all you need to know is that in order to implement SRT in hardware, a lookup table was needed to provide the quotient digit based on different input combinations. It was in this lookup table that the now famous Pentium FDIV bug originated.</p><p>In order to implement this lookup table, the Pentium team used a Programmable Logic Array, or PLA. A PLA is a type of Read-Only Memory (ROM), but can be used to store structured data more efficiently in a smaller area - by representing the data as a logic function. In the 1990s, memory was still very expensive, which made PLAs an attractive alternative. The word &#8220;programmable&#8221; in PLA could be misleading in today&#8217;s context - programming a PLA means &#8220;fusing&#8221;, or allowing current to flow through certain transistors to get the desired logic. This was done permanently, before shipping the chip out to the customer. This transistor fuse mapping (i.e. which connections exist) is very important in deciding what the final output would be. For example, the figure below shows a 3 input, 2 row, 2 output PLA, where different programming (Blue and Green dots) result in different output logic.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CXmv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CXmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 424w, https://substackcdn.com/image/fetch/$s_!CXmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 848w, https://substackcdn.com/image/fetch/$s_!CXmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 1272w, https://substackcdn.com/image/fetch/$s_!CXmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CXmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png" width="1342" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c734101e-7404-4026-b58a-64ce32957391_1342x645.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1342,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70401,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/168256756?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.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_!CXmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 424w, https://substackcdn.com/image/fetch/$s_!CXmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 848w, https://substackcdn.com/image/fetch/$s_!CXmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 1272w, https://substackcdn.com/image/fetch/$s_!CXmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc734101e-7404-4026-b58a-64ce32957391_1342x645.png 1456w" sizes="100vw" loading="lazy"></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>To implement the SRT division method, the Pentium team used a 22 input, 120 row, 2 output PLA - which means there are 2880 potential transistors to fuse. (Of these, only 2048 values were used.) Unfortunately for Intel, 5 of these were programmed incorrectly. Whenever these incorrect values were picked up from the lookup table, the result of the floating point division was incorrect. This was the cause for the FDIV bug in Pentium.</p><div><hr></div><h1><strong>How did this bug go unnoticed?</strong></h1><p>Looking back, this sounds like a trivial issue that should have been caught much earlier in the testing process. But remember, we are talking about the best microprocessor company of the time - which begs the question - how did they miss this bug? There are a few theories floating around:</p><ul><li><p>Intel&#8217;s whitepaper claims this was a clerical error - the C script written by an engineer to load the final transistor mapping into the PLA had an error, which resulted in 5 entries not being loaded in the PLA. The values were tested before loading to the PLA, but the values in the PLA were not checked.</p></li><li><p>Robert Colwell, architect of the Pentium Pro, mentions in his book "The Pentium Chronicles&#8221; that this error was caused by a last minute request (actually, order) from management to shrink the size of the PLA, which made the engineers pursue an optimization that was not properly verified.</p></li><li><p>Some postmortem studies claim that the engineers misunderstood the SRT method, and applied the wrong rule for lowering thresholds - which means this was not an error in any step in the chip design process - the table was mathematically wrong in the first place</p></li><li><p><strong>Aliens manipulated the final chip layout in order to scale back human progress (I&#8217;m not kidding. Intel made a movie about this, called &#8220;<a href="https://www.youtube.com/watch?v=eI4HxFQROJE">Intel: The Journey Inside</a>&#8221; with this plot.)</strong></p></li></ul><p>Irrespective of the reason, it&#8217;s interesting that the bug went unnoticed for close to 2 years after the chip was released. (Although Intel claims they were aware of the problem in the summer of 1994, months before Dr. Nicely made it public.) This is because, the odds of hitting this bug were extremely low:</p><ul><li><p>The division must access the 5 incorrect values out of the 2048 in the PLA, a 0.24% chance</p></li><li><p>Intel claimed a typical user would encounter this problem once every 27,000 years. Another way of putting this was that an error would take place once for every 9 billion random divisions.</p></li><li><p>The error typically shows up in the 9th or 10th decimal digit (at worst, the 4th decimal digit.) There are very few applications that require such high precisions</p></li></ul><p>Although a lot of people claimed to have been impacted by this, Dr. Nicely was the only person who noticed the bug in regular use. (All other scenarios seem to be artificially designed to hit the bug.) When it comes to bugs, Intel won the lottery. (if winning the lottery means creating a bug that is being talked about 30 years later.)</p><div><hr></div><h1><strong>Consequences</strong></h1><p>Although the bug was clearly not great news for Intel. But in a way, they got lucky - the odds of this bug having any real impact was ridiculously low. (If we go by Intel&#8217;s numbers, the odds are lower than that of plane crashes.) Yet, Intel did not get away with this.</p><p>Intel&#8217;s early response was to shrug it off as an unlikely scenario, which led to a lot of flak. News about Dr. Nicely&#8217;s findings spread like wildfire, and even CNN ran a segment on the issue. IBM, who were simultaneously Intel&#8217;s biggest customer and competitor (with the Power PC) claimed that the issue was more common than Intel estimated. AMD ran <a href="https://bsky.app/profile/trevorkevorson.bsky.social/post/3lcnv6h65hc26">an advertisement</a> that said their chips &#8220;Can actually handle the rigors of complex calculations like division.&#8221; - a clear dig at Intel&#8217;s bug.</p><p>Ultimately, Intel had to <a href="https://static.righto.com/images/pentium-fdiv/apology.jpg">issue a public apology</a> and offered a free replacement to anyone with a Pentium processor that reached out to them. This was estimated to have costed Intel about $500 million - and a lot of damage to their reputation.</p><p>This is the impact that even a seemingly harmless chip design bug can have.</p><div><hr></div><h1><strong>The most important law in chip design&#8230;</strong></h1><p>This brings me to the title of this post, and the reason why I narrated the story of Intel&#8217;s famous FDIV bug. This is not just a story about Intel&#8217;s mistakes. Every major chip company in existence has had a similar story to this, and I&#8217;m sure every chip company in the future will. There is a lesson to learn from stories like this.</p><p>It is in the nature of chip design and computing that even the unlikeliest outcomes can occur, and should therefore be accounted for. Over the years, architectures have changed, workloads have changed, but this fact continues to remain true. <strong>Hence, the most important law in chip design is actually Murphy&#8217;s law: If something can go wrong, it will go wrong.</strong></p><p>We talk a lot about transistor nodes and chip performance, but it is important to remember that the first priority will always be: <strong>build a chip without bugs.</strong> Maintaining such a high standards at the scale of trillions of transistors, each a few nanometers wide, and switching more than a billion times per second, is what makes the chip design industry truly unique.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h1><strong>References</strong></h1><ul><li><p>Few facts about the Pentium processor</p><ul><li><p><a href="https://en.wikipedia.org/wiki/Pentium_(original)">https://en.wikipedia.org/wiki/Pentium_(original)</a></p></li><li><p><a href="https://www.tomshardware.com/picturestory/710-history-of-intel-cpus.html">https://www.tomshardware.com/picturestory/710-history-of-intel-cpus.html</a></p></li></ul></li><li><p>Dr. Thomas Nicely notes on his FDIV bug discovery</p><ul><li><p><a href="https://faculty.lynchburg.edu/~nicely/pentbug/pentbug.html">https://faculty.lynchburg.edu/~nicely/pentbug/pentbug.html</a></p></li></ul></li><li><p>About the SRT division method</p><ul><li><p><a href="https://www.osti.gov/biblio/4157138">https://www.osti.gov/biblio/4157138</a></p></li></ul></li><li><p>A great deep dive into the bug</p><ul><li><p><a href="https://www.righto.com/2024/12/this-die-photo-of-pentium-shows.html">https://www.righto.com/2024/12/this-die-photo-of-pentium-shows.html</a></p></li></ul></li><li><p>Explanations for the bug</p><ul><li><p><a href="https://web.archive.org/web/20060209005434/http://www.byte.com/art/9503/sec13/art1.htm">https://web.archive.org/web/20060209005434/http://www.byte.com/art/9503/sec13/art1.htm</a></p></li><li><p><a href="https://link.springer.com/chapter/10.1007/3-540-59293-8_189">https://link.springer.com/chapter/10.1007/3-540-59293-8_189</a></p></li><li><p><a href="https://ieeexplore.ieee.org/book/5989703">https://ieeexplore.ieee.org/book/5989703</a></p></li><li><p><a href="https://oldbytes.space/@kenshirriff/113606898880486330">https://oldbytes.space/@kenshirriff/113606898880486330</a></p></li></ul></li><li><p>Media coverage after the bug became mainstream</p><ul><li><p><a href="https://bsky.app/profile/did:plc:s23o544nudvw6hxeib2fjqse/post/3lcnv6h65hc26?ref_src=embed">AMD&#8217;s 1994 advertisement</a></p></li><li><p><a href="https://static.righto.com/images/pentium-fdiv/apology.jpg">https://static.righto.com/images/pentium-fdiv/apology.jpg</a></p></li></ul></li></ul><div><hr></div>]]></content:encoded></item><item><title><![CDATA[How to build a new chip architecture, ft. Nvidia]]></title><description><![CDATA[A case study in computer architecture]]></description><link>https://chipinsights.net/p/how-to-build-a-new-chip-architecture</link><guid isPermaLink="false">https://chipinsights.net/p/how-to-build-a-new-chip-architecture</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sun, 13 Jul 2025 18:06:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice. </strong></p><div><hr></div><p>Over the last year, I have spent many hours following stories about Nvidia and their meteoric rise. This post is an attempt to consolidate all those learnings. My goal is to look back at Nvidia&#8217;s history to try and generalize the principles behind making a new computing architecture succeed.</p><p>A few caveats before I get into the post:</p><ul><li><p>This is not a post about business strategy. There are many good resources covering that already. I have tried to stay away from generic advice like &#8220;to be successful, build the picks and shovels in a gold rush&#8221;.</p></li><li><p>This post is not forward looking - I&#8217;m not claiming that Nvidia has won and everyone should invest in their stock. It is simply a case study in computer architecture. In fact, a lot of my learnings come from the early days of Nvidia</p></li></ul><p>With that out of the way, let me share what I think is key to successfully build a new architecture.</p><div><hr></div><h1><strong>Pick the right domain</strong></h1><p>Architectural changes cannot happen overnight. So its very important to pick the right target domain. There are a few ideal characteristics:</p><ul><li><p><strong>It&#8217;s barely possible to execute applications with current architectures.</strong></p><p>This means at least one the following factors:</p><ul><li><p>It takes too long to run</p></li><li><p>It needs very expensive compute resources</p></li><li><p>It needs advanced programming skills that only few possess</p></li></ul><p>When Nvidia was founded in 1993, they picked computer graphics. For graphics to be realistic, it needs fast compute. In the 1990s, 3D graphics was only possible using either:</p><ul><li><p>Expensive workstations from companies like SGI</p></li><li><p>Advanced software rendering techniques in games like Doom</p></li></ul><p>These were both not accessible to the average consumer and developer. In addition, 1992 had two key developments that could enable graphics cards:</p><ul><li><p>The PCI bus protocol was adopted as a standard by all computer manufacturer. This means anyone could make a new chip, and attach it with any computer, and it could work</p></li><li><p>Microsoft released Windows 3.1, which was a big jump in operating systems graphics</p></li></ul><p>All this made computer graphics a great domain for Nvidia to try and disrupt.</p></li><li><p><strong>There are general patterns in the workloads that can be exploited</strong></p><p>I think the word &#8220;general&#8221; is key. Let me explain with the example of graphics.</p><p>Nvidia recognized, over time, that the key pattern in computer graphics is this: <strong>Computations on each pixel is independent of the other</strong>. No other pattern is as important. This led them towards a massively parallel architecture that is still programmable.</p><p>There were architectures inspired by other approaches too. For example, early graphics chips focused heavily on fixed-function accelerators. Here, the idea was to pick a specific part of the graphics pipeline (like Tessellation, Rasterization, Shading), and make your architecture optimal for these steps. In fact, Nvidia also had a fixed function approach for a long time.</p><p>There are two problem with going narrow with architecture decisions</p><ul><li><p>Algorithms in your domain can change. Your architecture may not optimally support those changes</p></li><li><p>Your architecture can never scale to other similar domains.</p></li></ul><p>If you cannot find a general pattern in your domain, it is a bad idea to build an architecture around this domain. Often, such niche domains get commoditized as part of a bigger architecture - this is what Intel did for audio cards, and even 3D graphics to an extent over the years. But Nvidia survived this because of their architecture was sufficiently general by that point.</p></li><li><p><strong>Solving for this domain should provide big opportunities</strong></p><p>This is what Nvidia calls a &#8220;zero billion dollar&#8221; market. Its hard to specify exactly which domains would fall in this category, but a good approach I suggest is to ask this question: <strong>&#8220;If you build it, and they come, what can they do?&#8221;</strong></p><p>When Nvidia first bet the company on computer graphics, their vision was: If graphics could be made accessible to everyone, it would be the greatest storytelling medium. This was around the time when Jurassic Park was released, and power of computer graphics was becoming evident.</p><p>I also found something else that was interesting in my research - <a href="https://www.nvidia.com/content/PDF/GTC/GTC2010_Catalog_Machine_Learning_&amp;_Artificial_Intelligence_2010_09_01.pdf">Nvidia had AI applications added to their GTC lineup as early as 2010</a>. Although AI was still in its nascent stages, they were thinking about potential applications like computer vision, speech recognition, and robotics - the promise of a world powered by AI was massive, prompting Nvidia to pursue that domain aggressively.</p><p>Establishing an architecture needs huge time investment - so it is very important that your target domain has huge potential.</p></li></ul><div><hr></div><h1><strong>Your architecture should fit your target workloads - not the other way around</strong></h1><p>If you want to build a standardized architecture, that means that other developers will be building software for your architecture. This presents a major challenge to architecture companies. Usually, when there is an change in algorithms or APIs that your architecture support, architecture companies are presented with two options:</p><ol><li><p>Build an translation layer through your drivers, or compiler, to support the new workloads on the same architecture</p></li><li><p>Modify your architecture to better suit the new workloads</p></li></ol><p>The first approach is often easier, and can be done on-the-fly (in the same chip generation). So this is the preferred method. However, a lot of chip companies ignore the second approach completely - if it works, why fix it? There are two stories from Nvidia about this which are interesting to study.</p><p>In 2003, Nvidia had established itself as the leader in computer graphics, and was preparing to launch its next chip, NV30. Around the same time, Microsoft had just released the new Direct3D 9 API. NV30 did not fully support Direct3D 9 - so they created software workarounds to support the new software features. This turned out to be a disaster - the NV30 received bad reviews, had heating problems. This was a major learning for Nvidia.</p><p>Over the next few years, as Nvidia&#8217;s programmable shaders started to gain popularity, many researchers started using them for scientific computing. During the early days, the same GeForce cards used for graphics were being repurposed for scientific computing through some cumbersome programming. Although this was better than anything available at the time, it was still not optimal - much of the GPU architecture was still optimized towards graphics applications.</p><p>This time though, Nvidia saw the trend early - instead of keeping the same chip architecture for graphics and scientific computing, they started to build chips that were specifically meant for non-graphics applications, by maximizing the number of parallel floating points computations supported. In 2016, they also introduced FP16 support on their GPUs - because most Deep Learning workloads used FP16. These factors went on to play a massive role in their dominance in the data-center - which is mostly comprised of AI workloads.</p><div><hr></div><h1><strong>Have a unified and backward compatible architecture.</strong></h1><p>Two basic rules of life are: 1) Change is inevitable. 2) Everybody resists change.</p><p>To build a standardized architecture, making it backward compatible is key. Having a unified architecture naturally creates a flywheel:</p><ul><li><p><strong>All the libraries developed over the years work on your architecture</strong></p></li><li><p><strong>Developers are incentivized to write more libraries for your architecture</strong></p></li></ul><p>Getting developers into a new architecture is key - that&#8217;s what Intel was able to do in PCs, ARM in mobile (PowerPC and DEC Alpha are examples where this did not happen). A unified architecture is very &#8220;developer friendly&#8221; - a community (ideally, open-source) starts to build around your architecture. This is exactly what Nvidia achieved with CUDA - since 2006, all Nvidia GPUs are CUDA compatible, giving CUDA developers an install base of about 500 million devices, with about 300 libraries and 600 AI models.</p><p>CUDA is Nvidia&#8217;s moat, and a lot had been said about this already. For the purposes on this post, I want to talk specifically about some of the challenges with maintaining backward compatibility:</p><ul><li><p><strong>Clunky hardware:</strong> To support legacy architecture features, often, additional hardware complexity needs to be maintained. This will result in poorer Power, Performance, Area (PPA) metrics over time</p></li><li><p><strong>Restricting Innovation:</strong> Very often, something new and better cannot be implemented in your architecture because it breaks some legacy constraints.</p></li><li><p><strong>Expensive Development:</strong> As the number of architectural features increases, it needs a bigger workforce, and more knowledge transfer - which costs time and money.</p></li></ul><p>I think over time, every architecture company gets hamstrung by their legacy architectural features - A case in point is Intel, and the x86 architecture (<a href="https://chipinsights.substack.com/p/the-isa-debate">I have a earlier post on ISAs with more details</a>). This makes maintaining backward compatibility one of the most challenging aspects of computer architecture.</p><p>So far, Nvidia has managed this well, primarily owing to these factors:</p><ul><li><p>Nvidia&#8217;s developers operate at a very high level of abstraction. CUDA by itself is a fairly high-level language (like C). Also, most developers build using CUDA libraries like CuBLAS and CuDNN, which are optimized for Nvidia&#8217;s architectures. This gives Nvidia more opportunities to improve their architecture while maintaining backward compatibility. In other words, they can maintain backward compatibility at the developer level, but break compatibility at the microarchitectural level - bridged using their driver and compiler. This differentiates them from Intel, who for the most part were dependent on Windows developers doing a good job at using their architecture.</p></li><li><p>Their architecture is still fairly general and simple - it is centered around parallel programming, and floating point computations. A lot of issues in Intel&#8217;s architecture stemmed from complexities added over the years - like variable length instructions and complex arithmetic.</p></li></ul><p>So far, Nvidia has navigated the backward compatibility challenge well - but their workloads are fairly new, so it will be interesting to see how this continues in the long run.</p><div><hr></div><h1><strong>Build infrastructure to move faster</strong></h1><p>The nature of workloads keep changing all the time. One of the most impressive aspects of Nvidia is their ability to pivot when an opportunity present itself. They started as a graphics card, pivoted to programmable graphics, and then expanded into high performance computing. Nvidia was able to grab opportunities better than anyone else, because they were able to make big architectural changes quickly.</p><p>From early days, Nvidia was a strong believer in simulation and automation. I think it stems from Jensen&#8217;s early days at LSI logic, the company that pioneered many EDA innovations. (<a href="https://chipinsights.substack.com/p/eda-deep-dive-part-1-the-history">I have covered many such stories in my EDA series</a>). During his time at LSI, Jensen worked on a new chip architecture called &#8220;sea-of-gates&#8221; - which was a very early version of an FPGA emulator. Emulation would go on to play a big role in the development of RIVA128 - widely regarded as the chip that saved Nvidia.</p><p>Traditionally, once the chip was designed, it was sent out to the fab, and a test chip was sent back. This test chip was used to run software, find bugs, and resolve them. There are multiple iterations of this, until all bugs are resolved. Then, a final, large order of chips gets &#8220;taped out&#8221;. This whole process usually took 2 years.</p><p>Nvidia first two chips - NV1 and NV2, were poorly received. Nvidia needed to make major architectural changes in a very short time - which forced them to adopt emulation. Using emulation, once the design is ready, it is loaded on to an &#8220;Emulator&#8221;, which is then used to test software on the chip prototype even before it was manufactured. To do this, Nvidia went to a failing company called Ikos, invested heavily in their emulators (each one cost $1 million!), and essentially bet the company on emulation. It was a cumbersome process, but it worked - RIVA128 made one of biggest leap in computer graphics, and made Nvidia the leaders in computer graphics.</p><p>Although the RIVA128 story was born out of desperation, moving fast then became a part of Nvidia&#8217;s culture. Nvidia continues to invest heavily on infrastructure to help them innovate faster than the competition. Nvidia also incorporated a feature called &#8220;virtualized objects&#8221; into their architecture. In simple words, this was a mini-OS baked into the hardware (called &#8220;Resource Manager&#8221;) that could be used to emulate certain late hardware features that could not make it in time for the chip production. Although it incurred a minor performance cost, Nvidia adopted this because they greatly valued the ability to move quickly.</p><p>Generally at Nvidia, this obsession with efficiency is referred to as the &#8220;speed of light&#8221; approach, which says: <strong>every project must be executed at the fastest possible rate, and all obstacles in the process should be removed.</strong> This is an underrated aspect of chip design that a lot of companies neglect, making them slower, and less receptive to new opportunities.</p><div><hr></div><h1><strong>Understand bottlenecks outside your core architecture</strong></h1><p>If building a computing platform is like building a car - the architecture is like the engine. Even if you have built the fastest engine, your car can&#8217;t go fast if you have weak tires, or there is bumper-to-bumper traffic on the road. Although your architecture is just one part of the computing stack, all the end user cares about is: <strong>how fast is my workload running</strong>. So its very important to analyze where the bottlenecks are, and work on managing them better.</p><p>One fundamental bottleneck every architect must think about is transistor scaling - i.e. how is Moore&#8217;s law progressing at the time your are building your architecture. (<a href="https://chipinsights.substack.com/p/moores-law-and-the-performance-promise">I covered Moore&#8217;s law in more detail in an earlier post</a>). Nvidia learnt this the hard way.</p><p>Nvidia&#8217;s first graphics card, the NV1, was designed to render 3D surfaces in 2D using quadrilaterals (4 vertices) instead of triangles (3 vertices). Nvidia&#8217;s had a good reason to do this - memory costs were very high, and using quadrilaterals would allow them to build their chip with a smaller memory, allowing them to price their graphics card competitively. However, what they didn&#8217;t see was that Moore&#8217;s law started to accelerate around the same time, making memory much cheaper. The software ecosystem at the time standardized on triangles, and their competitors were able to support this using larger memory at comparable prices. Despite having one of the best architecture, Nvidia could not remain competitive because they had a small memory.</p><p>Many years later, in the datacenter business, Nvidia knew that their architecture alone cannot push them to the top. Not a lot of people know this, but Nvidia was in the cloud business very early - in 2013, they released Nvidia Grid, an early version of their cloud gaming platform, known today as GeForce Now. There is another fact that is not well known - Nvidia had an LLM of their own, much before ChatGPT became popular. In 2019, they built an open-source LLM called Megatron.</p><p>Both these experiences taught Nvidia about all the components needed to make the best datacenter servers. As a result, Nvidia has expanded well beyond their GPU architecture in datacenters, to offer:</p><ul><li><p>Very high bandwidth memory using CoWoS 2.5D stacking (very important for LLMs)</p></li><li><p>Faster networking between cards through NVLink, enabled by their acquisition of Mellanox</p></li><li><p>A very efficient ARM-based CPU for the datacenter (in fact, they tried to acquire ARM)</p></li></ul><p>This gave them control of a bigger portion of the computing stack, and allowed them to optimize it further. Vertical integration as an architecture company also buys you time - even if Nvidia GPU architecture is not the best for a generation, the full solution they provide might still be better than anything on offer. Finally, a full solution is much easier for enterprises to deploy.</p><p>Although most architecture companies cannot start here, it&#8217;s very important to move towards that direction as your company evolves. This is how you can move from a <strong>great technology to a great product.</strong></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p><strong>References:</strong></p><ul><li><p>The Nvidia Way, a book about Nvidia&#8217;s story by Tae Kim</p></li></ul><ul><li><p>Nvidia episodes from Acquired</p><ul><li><p><a href="https://open.spotify.com/episode/6G85ReuFsSkqIuwwwEhJeG?si=5bb4da30ad614f88">Nvidia Part 1: The GPU Company (1993-2006)</a></p></li><li><p><a href="https://open.spotify.com/episode/75VXqCGAV1igZViPFO8LIE?si=dac01128910b4a0c">Nvidia Part 2: The Machine Learning Company (2006-2022)</a></p></li><li><p><a href="https://open.spotify.com/episode/0ax1sBKJ1ombOYGwWl0hEq?si=2b39d59a07214b4a">Nvidia Part 3: The Dawn of the AI Era (2022-2023)</a></p></li><li><p><a href="https://open.spotify.com/episode/6MmkzOxBUeA2Ur1fLDmQRk?si=86db2b72c33b4f3b">Nvidia CEO Jensen Huang</a></p></li></ul></li><li><p><a href="https://open.spotify.com/episode/47oFfRhzqQK2dgObjZsf4D?si=0dcbfa011cf24f6e">NVIDIA's Jensen Huang on AI Chip Design, Scaling Data Centers, and his 10-Year Bets</a></p></li><li><p><a href="https://open.spotify.com/episode/0pt8FAP3UKdZhgKHfAWPdC?si=84ca54dc24694a86">Ep17. Welcome Jensen Huang | BG2 w/ Bill Gurley &amp; Brad Gerstner</a></p></li><li><p><a href="https://www.youtube.com/watch?v=7ARBJQn6QkM&amp;t=2732s">NVIDIA CEO Jensen Huang's Vision for the Future</a></p></li></ul><div><hr></div>]]></content:encoded></item><item><title><![CDATA[The era of full-stack chip designers]]></title><description><![CDATA[What are chip design teams going to look like in the future?]]></description><link>https://chipinsights.net/p/the-era-of-full-stack-chip-designers</link><guid isPermaLink="false">https://chipinsights.net/p/the-era-of-full-stack-chip-designers</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sun, 06 Jul 2025 22:08:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.</strong></p><div><hr></div><p>A few years back, when I was talking to a student that was interested in both the front-end and back-end stages in chip design, I made a cheeky remark that they should become a &#8220;Full Stack Chip Designer&#8221;. (I can&#8217;t remember who I was talking to, but if you are reading this, this post is dedicated to you!) It was a term I took from software engineering - a full stack engineer is someone that has the skillsets to work on both the front-end and back-end aspects of a software application. When I said &#8220;full-stack&#8221; in the chip design context, I just meant it as a joke - there are very few people that actively work on all the steps in the RTL-to-GDS chip design flow, especially when designing complex, real-world chips. I must admit I have never done full stack software engineering, but from what I gather, the skills are more transferrable between front-end and back-end software design, compared to chip design. But with AI in the picture, something tells me we might be heading towards the era of full-stack chip designers.</p><div><hr></div><h2><strong>What I mean by &#8220;Full-Stack Chip Designer&#8221;</strong></h2><p>I briefly introduced the idea earlier, but let me be more specific here. The typical digital chip design process can be divided into two broad categories:</p><ul><li><p><strong>Front-End</strong>, which involves designing microarchitecture specifications and describing the logic using Hardware Description Languages (HDLs) like Verilog. (the resulting &#8220;code&#8221; is called Register Transfer Language, or RTL.)</p></li><li><p><strong>Back-End</strong>, which involves taking the RTL, and converting it into a layout (called GDS) that a foundry can use to manufacture the chip. This is a multi-step process that uses EDA tools from companies like Cadence and Synopsys.</p></li></ul><p>Typically, teams managing these two aspects work in isolation to each other - the front-end team finalizes the RTL, then hands it off to the back-end team to generate the GDS. There are a few &#8220;leads&#8221; involved in the back-and-forth between the teams, but their role is to pass feedback to each other&#8217;s teams. The leads have a good understanding of both front-end and back-ends, but typically do not directly work on implementing in either. On the contrary, when I refer to a full-stack chip designer, I mean an individual (or a small team) that can take a design idea through from front-end to back-end - fully implementing all the steps in the process.</p><div><hr></div><h2><strong>Why is Full-Stack Chip Design hard?</strong></h2><p>There are a lot of smart people in chip design - so if I could think of this idea, you can be sure that a lot of people have thought of it. In fact, a lot of early chip designers were truly full-stack - they worked on all the steps themselves. I can even say that if you have ever taped-out a chip for a project at your university, you are technically a full stack chip designer too. So it&#8217;s clearly not an impossible problem to solve - it is just very hard to solve at the scale of today&#8217;s commercial chips with billions of transistors. There are two main reasons for this:</p><h3><strong>1. Back-end tools aren&#8217;t intuitive; Neither are HDLs</strong></h3><p>I think this is a well documented problem. (I have also talked about it in <a href="https://chipinsights.substack.com/p/eda-deep-dive-part-1-the-history">one of my earlier posts</a>.) Due to a large design space, EDA tools are complex to use, and produce reports filled with convoluted terminology. As a result, it is not straightforward for a front-end designer to dive into back-end tools. To make matters worse, bugs in the back-end design process are very hard to spot, and if left unattended, could result in a chip that does not function (a chip re-spin is a billion dollar affair, so no one wants that.)</p><p>I also think writing good RTL is an art that takes time to master - unlike high level languages, HDLs are less intuitive, which makes it harder for back-end experts to pick up. All this has meant that back-end designers spend all their time training to be experts in the tools they are working with, while front-end engineers prefer to do what they do best.</p><h3><strong>2. Front-end and Back-end design happens at different granularities</strong></h3><p>This aspect is more nuanced and is not seen in small chips or university projects. When working on industry-scale chips, front-end and back-end designers have different priorities. Front-end designers start by becoming experts on a small part of the design. In order to make this happen, all other parts of the design need to be treated like black-boxes. However, for back-end design to be effective, it needs to happen at a bigger granularity - if a chip has two blocks, but the back-end is handled for each block separately, the interactions between the blocks (signals routed across, how often they access hard macros, and so on) would not be captured well - which would result in a low-quality layout. Hence, the goals of a back-end designer are quite different - it is to gain a basic understanding of all parts of the design, by sacrificing depth in a single part.</p><p>Essentially, when it comes to understand the chip, a front-end designer should be a specialist, while a back-end designer should be a generalist. Getting an individual (or team) to do both is a challenge.</p><div><hr></div><h2><strong>What do you gain by being a Full-Stack Chip Designer?</strong></h2><p>Short answer: Time. </p><p>Although front-end and back-end work in isolation, they are working towards the same goal - to build a better chip. However, there is a long feedback loop between the two stages: Typically, once the RTL is delivered by the front-end teams, back-end teams find ways to optimize the layout which need changes in the front-end. The front-end team now needs to distil out the feedback, figure out if the request is even feasible, and if so, implement the change. This takes weeks, or sometimes even months. Projects have multiple iterations like this, which either massively increases chip design timelines, or results in a sub-par chip getting shipped.</p><p>Bringing both front-end and back-end into the same umbrella can massively shrink this timeline, by:</p><ul><li><p>Making the iteration time faster (&#8221;I know exactly what needs to change for a better layout, and whether that&#8217;s possible to do in the RTL&#8221;)</p></li><li><p>Reducing the number of iterations (&#8221;When I write RTL, I also know how it is going to impact the layout&#8221;)</p></li></ul><p>This time saving is crucial - since the semiconductor industry is highly cyclical, when the chip you build is hot, quickly coming up with better versions is key to dominate your industry.</p><div><hr></div><h2><strong>How can AI help to make this possible?</strong></h2><p>I spoke about the potential of AI in chip design EDA in an earlier post - I think reading this would add value to this discussion:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;4a9ece92-16af-4220-a91b-9bded73eedf0&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;EDA Deep Dive - Part 3: The AI Era&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23b7c14a-5bd1-4a78-9ac8-c5d6eda62bfc_2048x2048.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-01-11T17:29:32.777Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://chipinsights.substack.com/p/eda-deep-dive-part-3-the-ai-era&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:154626822,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Chip Insights&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Z-fT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>In addition to the points mentioned there, I want to specifically talk about the two ways I feel AI can make full-stack chip design a reality:</p><h3><strong>1. Using AI for Knowledge Transfer</strong></h3><p>If you look at both the reasons why full-stack is hard in chip design, they boil down to the same thing - knowledge transfer is hard. I think AI, even in it&#8217;s current form, can solve this problem to a good extent.</p><p>For instance, it is possible to develop and maintain a database with all the scripts, best practices, and terminologies associated with back-end tools - effectively allowing an expert in front-end design to move ahead with back-end flows. Similarly, if LLM based RTL generation can be solved effectively, that allows a back-end designer to also manage front-end changes.</p><p>I also think LLMs are going to play a big role in documentation and teaching - if basic questions about all parts of a design could be answered immediately, then you can have a specialist in one part of the design expand into being a generalist when needed.</p><h3><strong>2. Automation is coming</strong></h3><p>Although I didn&#8217;t mention it so far, having different front-end and back-end teams is also important to maintain realistic working hours - from the conversations I have had, chip designers work more hours than software engineers, especially close to deadlines. So in the current state, even if an individual can manage both front-end and back-end, it&#8217;s not practical to have them work on both. This is where I feel AI&#8217;s big productivity promise is going to play a role.</p><p>I think an agentic RTL-to-GDS flow is coming soon, which would automate a lot of mundane tasks that chip designers must do today. I think this would greatly help with the workload problem, and make the idea of a full stack chip designer practical.</p><div><hr></div><h2><strong>Why economic incentives might make this inevitable?</strong></h2><p>So far, I talked about going &#8220;full-stack&#8221; like an opportunity - if someone wants to do both front-end and back-end, they might be able to do it in the near future and build better chips. This is actually how it works in software engineering today - some developers become full-stack, but others choose to stay with one. But can chip design afford to offer this flexibility?</p><p>I can imagine a future where becoming a full-stack chip designer may not just be an option - it could become the norm. To understand why I feel this way, let&#8217;s look at the economics of chip design. At a high level, chip design companies spend money on the following:</p><ul><li><p>Payroll for chip designers</p></li><li><p>Cost to manufacture wafers</p></li><li><p>EDA tool licenses</p></li></ul><p>With the way things are headed today, manufacturing costs are increasing sharply - each new node is becoming more challenging to implement, and as a result, more expensive. So this is going to start eating into the profit margins of most chip design companies.</p><p>The next factor is EDA licenses. There are many AI-first EDA startups coming up today, but they still don&#8217;t have access to the Process Design Kit (PDK) from chip manufacturers. (If you don&#8217;t know what a PDK is, think of it as a secret recipe that a manufacturer like TSMC provides to EDA vendors like Cadence and Synopsys in order to correctly map chip designs to a layout that can be manufactured.) As long as PDKs remain under tight control, the legacy EDA vendors cannot be replaced. This leaves two possible outcomes:</p><ul><li><p>AI EDA tools add a new agentic layer in chip design</p></li><li><p>Legacy EDA vendors do all the AI themselves and become more dominant</p></li></ul><p>Either way, I see the cost related to EDA going up. (Not to mention, a lot of chip design companies also need to upgrade compute to handle the new AI workflow.) So to maintain their profit margins, chip design companies might raise their prices - but that may not be sustainable unless they have a very strong moat.</p><p>This leads us to the point I&#8217;m trying to make - companies need to innovate, and improve productivity with smaller teams. <strong>What better way to do this, than with full stack chip designers?</strong> (By the way, when I say smaller teams, I don&#8217;t necessarily think jobs are going away - on the contrary, I expect shorter design timelines, and a large variety of chips customized for different use cases.)</p><div><hr></div><h2><strong>Some other definitions of full-stack</strong></h2><p>I took front-end and back-end design as an example here since the analogy fits nicely with the software engineering world. But chip design actually has many more steps, and could see consolidation at other levels too. Here are a few I could think of:</p><ul><li><p>RTL Design and Functional Verification (software engineering has largely consolidated Programming and Verification)</p></li><li><p>Different aspects of Verification (like Functional, Power, Performance, and so on)</p></li><li><p>Architecture Simulation and RTL Design (through High-Level-Synthesis)</p></li></ul><p>If you can think of some other aspects in chip design that can be consolidated, I&#8217;d love to hear as a comment below :)</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div>]]></content:encoded></item><item><title><![CDATA[2025 YC AI Startup School - Round up]]></title><description><![CDATA[Hear from the most influential figures in AI]]></description><link>https://chipinsights.net/p/2025-yc-ai-startup-school-round-up</link><guid isPermaLink="false">https://chipinsights.net/p/2025-yc-ai-startup-school-round-up</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Tue, 17 Jun 2025 07:10:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W0lg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you have been reading this substack, you&#8217;ll know that this post is different from the others here:</p><ul><li><p>It&#8217;s not specifically about chips</p></li><li><p>It&#8217;s from the present (Not the 1960s like <a href="https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth">one of my posts</a>)</p></li></ul><p>But AI is at the center of tech today, and plays a big role in the semiconductor industry too. I got an opportunity to attend YC&#8217;s AI startup school, and here are some learnings from the speakers.</p><div><hr></div><p>Here&#8217;s the list for you to quickly navigate through:</p><ul><li><p><a href="https://chipinsights.substack.com/i/166131675/opening-remarks-from-gary-tan-president-and-ceo-at-y-combinator">Garry Tan</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/sam-altman-ceo-at-openai">Sam Altman</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/elon-musk-who-needs-no-introduction">Elon Musk</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/satya-nadella-ceo-at-microsoft">Satya Nadella</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/aravind-srinivas-ceo-and-co-founder-of-perplexity-ai">Aravind Srinivas</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/fei-fei-li-stanford-researcher-the-godmother-of-ai-created-imagenet">Fei Fei Li</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/andrej-karpathy-former-director-of-ai-tesla">Andrej Karpathy</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/andrew-ng-one-of-the-greatest-ai-educators">Andrew Ng</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/john-jumper-distinguished-scientist-at-google-deepmind-and-nobel-prize-winner">John Jumper</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/chelsea-finn-assistant-professor-at-stanford-co-founder-of-physical-intelligence">Chelsea Finn</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/jared-kaplan-co-founder-and-cso-at-anthropic">Jared Kaplan</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/varun-mohan-ceo-and-co-founder-of-windsurf">Varun Mohan</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/francois-chollet-ceo-and-co-founder-of-ndea-also-the-creator-of-keras">Francois Chollet</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/suhail-doshi-serial-entrepreneur-mixpanel-mighty-computing-and-playground-ai">Suhail Doshi</a></p></li><li><p><a href="https://chipinsights.substack.com/i/166131675/jordan-fisher-ceo-at-standard-ai">Jordan Fisher</a></p></li></ul><div><hr></div><p></p><h4><strong>Opening remarks from Garry Tan, President and CEO at Y Combinator</strong></h4><ul><li><p>This is a great time for the technology industry: Intelligence can be accessed using an API</p></li><li><p>It is also a time for great agency: every industry is changing</p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W0lg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W0lg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W0lg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W0lg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W0lg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W0lg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:328437,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.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_!W0lg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W0lg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W0lg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W0lg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe161f284-2423-410f-87c7-1943ccea809d_2048x1536.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Sam Altman, CEO at OpenAI</strong></h4><ul><li><p>OpenAI wasn&#8217;t built to be big - things that become big usually don&#8217;t start that way</p></li><li><p>Today, there is a product overhang in AI: which means models are progressing faster than applications using them</p></li><li><p>Vision for GPT-5 and beyond: Multimodal (image, code, video) input and output + much better memory functions</p></li><li><p>In knowledge work, there is a pattern: Work few hours, wait for feedback, and repeat. This kind of work is perfect for AI agents</p></li><li><p>Open AI&#8217;s hardware product vision: A better interface than the smartphone to interact in the real world</p><ul><li><p>We have only had 2 big computer interface revolutions so far: Mouse, and Touch. The 3rd will come with AI</p></li></ul></li><li><p>If the current trend continues, the creation of GPT will be seen by future generations like the invention of the transistor</p></li><li><p>His hiring philosophy is simple: Hire smart, driven people with track record of getting things done</p><ul><li><p>In the next 10 years, small teams with big agency will be the most successful</p></li></ul></li><li><p>His two personal interests in the 2010s were AI and Energy. Today, they are interlinked - we are converting energy to intelligence.</p></li><li><p>Favorite startup advice: Be contrarian, but right (from Peter Theil)</p><ul><li><p>It&#8217;s very hard to do - When GPT1 came out, Elon Musk said it had 0% chance of success.</p></li><li><p>You just got to keep going, it&#8217;s going to be tough</p></li></ul></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wwx9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wwx9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Wwx9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Wwx9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Wwx9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wwx9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:413013,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Wwx9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Wwx9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Wwx9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Wwx9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2954f5d2-662a-47ff-8585-81242afe8b5a_1600x1200.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Elon Musk, who needs no introduction</strong></h4><ul><li><p>He never sets out to build something great - just wants to build something useful</p><ul><li><p>When the internet was happening, he just wanted to be a part of it. Applied to get a job at Netscape, but couldn&#8217;t get it. So he started something on his own.</p></li></ul></li><li><p>2008 was his toughest year - Spacex&#8217;s 3rd launch failed, and Tesla was running out of money. At that time, everyone said Elon was an internet guy who shouldn&#8217;t try real engineering</p></li><li><p>It&#8217;s important to build truth seeking environments in companies - you cannot fool math and physics</p></li><li><p>&#8220;Don&#8217;t inspire to glory, inspire to work&#8221;</p></li><li><p>To build a new AI model, you just need access to three things:</p><ul><li><p>Compute</p></li><li><p>Unique data</p></li><li><p>Talented people</p></li></ul></li><li><p>Intelligence is very rare - it is possible that we are the only species to possess intelligence. That makes it even more important that we are multi-planetary.</p></li><li><p>He predicts that in the next 100 years, there will be more humanoid robots than the human population</p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2hfb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2hfb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 424w, https://substackcdn.com/image/fetch/$s_!2hfb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 848w, https://substackcdn.com/image/fetch/$s_!2hfb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 1272w, https://substackcdn.com/image/fetch/$s_!2hfb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2hfb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png" width="703" height="1002" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1002,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:932550,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.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_!2hfb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 424w, https://substackcdn.com/image/fetch/$s_!2hfb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 848w, https://substackcdn.com/image/fetch/$s_!2hfb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 1272w, https://substackcdn.com/image/fetch/$s_!2hfb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ea7403-c923-4787-9c1f-a13ccb7d1cb2_703x1002.png 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Satya Nadella, CEO at Microsoft</strong></h4><ul><li><p>The ultimate measure of AI shouldn&#8217;t be intelligence or AGI - it should be the amount of economic growth that AI can drive</p><ul><li><p>He doesn&#8217;t believe in anthropomorphizing AI (i.e. giving it human traits) - AI is just a tool</p></li></ul></li><li><p>Be open minded that the last big algorithm breakthrough in AI is not done - LLMs are not the end, fundamental AI research still matters</p></li><li><p>AI isn&#8217;t going to take away software engineering jobs - instead, the traditional SWE role would change to something like <a href="https://blog.palantir.com/a-day-in-the-life-of-a-palantir-forward-deployed-software-engineer-45ef2de257b1">&#8220;Forward Deployed Software Engineer&#8221; (FDSE)</a>, a role pioneered by Palantir</p><ul><li><p>In the past, typist (someone that uses the typewriter) was a job - now everyone does it. Software engineering will become like that too</p></li></ul></li><li><p>The most important factors in AI deployment are going to be: Privacy (for individuals), Security (for organizations), and Sovereignty (for countries)</p></li><li><p>Microsoft&#8217;s breakthrough in Quantum computing is massive - they have finally solved for a stable Q-bit</p><ul><li><p>Today, AI is helping make Quantum computing better. In the future, Quantum computing will enable better AI</p></li></ul></li><li><p>Access to copilot has been the best intervention ever in the field of education, making it the one domain that Satya is watching out for</p></li><li><p>One lesson he learnt in his career: Do every job like it&#8217;s the greatest job you ever had - don&#8217;t wait for your next promotion</p></li><li><p>His favorite question while hiring: Describe how you managed a project that was going nowhere - a good answer would highlight three key skills:</p><ul><li><p>Can you solve a problem you are faced with</p></li><li><p>Can you bring clarity to an uncertain situation</p></li><li><p>Can you enable a team to work together</p></li></ul></li><li><p>Advice to anyone building products: Build something that makes you feel empowered</p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZH7V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZH7V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZH7V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZH7V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZH7V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZH7V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg" width="1456" height="1202" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1202,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:398649,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.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_!ZH7V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZH7V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZH7V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZH7V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e34ceaf-cb7b-481a-a4b3-fd557bbd1ed2_1536x1268.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Aravind Srinivas, CEO and Co-Founder of Perplexity AI</strong></h4><ul><li><p>Perplexity&#8217;s next big bet is the browser - agents are going to be like the different open tabs you have right now</p><ul><li><p>They have partnerships with a lot of websites to make this work</p></li></ul></li><li><p>Triaging and fixing bugs is an important skill, even as a CEO</p></li><li><p>You can&#8217;t strategize your way to success - any smart idea will get copied. You just have to work incredibly hard</p></li><li><p>Competition is a great thing, because it tells you that something is worth doing</p></li><li><p>He started perplexity without a clear idea of what to do - founders are advised against this, but it is important to just start something</p></li><li><p>Competing with ChatGPT is hard; competing with Google is easy</p></li><li><p>AI apps have not figured out how to have network effects yet</p></li><li><p>Perplexity&#8217;s profit margins will never be as high as Google - no company will have such profit margins anymore</p></li><li><p>Whenever he feels like failing, he goes to <a href="https://www.youtube.com/watch?v=8P8UKBAOfGo">Elon Musk&#8217;s video about failure</a></p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U81M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U81M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U81M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U81M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U81M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U81M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg" width="1456" height="1244" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1244,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:354515,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.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_!U81M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U81M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U81M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U81M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d1758c-5535-49c8-8438-1414232a0a9f_1536x1312.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Fei Fei Li, Stanford Researcher, the godmother of AI (created Imagenet)</strong></h4><ul><li><p>She started with a simple goal: How to make machines see. The lack of data to solve this led to the Imagenet dataset.</p></li><li><p>Alexnet was a big AI breakthrough, but it was also a big hardware breakthrough - it was the first time two GPUs were put together to run a workload</p></li><li><p>A lot of her research draws inspiration from the evolution of the human brain - her new venture World Labs aims to solve the problem of Spatial Intelligence</p><ul><li><p>Language is purely generative - it does not come from nature. So language alone cannot approximate the world, and get us to AGI</p></li></ul></li><li><p>She pursued her early research with newer professors in the field - taking such risks matters</p></li><li><p>Graduate school is a place where you can be purely driven by curiosity. But if you are running a startup, you won&#8217;t have that freedom</p></li><li><p>She was an immigrant at spent her 20s running a laundromat. Her advice to anyone feeling like a minority: <strong>Develop an ability not to over-index on it. Gradient-Descent your way to success.</strong></p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a36O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a36O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 424w, https://substackcdn.com/image/fetch/$s_!a36O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 848w, https://substackcdn.com/image/fetch/$s_!a36O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 1272w, https://substackcdn.com/image/fetch/$s_!a36O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a36O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png" width="703" height="843" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:843,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:796793,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.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_!a36O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 424w, https://substackcdn.com/image/fetch/$s_!a36O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 848w, https://substackcdn.com/image/fetch/$s_!a36O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 1272w, https://substackcdn.com/image/fetch/$s_!a36O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb9b392-ccc0-4207-9881-319ca2c29196_703x843.png 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Andrej Karpathy, Former Director of AI, Tesla</strong></h4><ul><li><p>This is the third big shift in software - today&#8217;s engineer should be fluent in all three</p><ul><li><p>SW 1.0: Code (to program computers)</p></li><li><p>SW 2.0: Weights (to program neural networks)</p></li><li><p>SW 3.0: Prompts (to program LLMs)</p></li></ul></li><li><p>LLM Analogy 1: It is like a utility (ex. electricity)</p><ul><li><p>Building the grid is like training, but instead of serving electricity, it serves intelligence</p></li><li><p>Your access is metered (cost per token)</p></li><li><p>There are few big providers to switch between</p></li><li><p>When an LLM goes down, it feels like a power outage</p></li></ul></li><li><p>LLM Analogy 2: It is like a fab</p><ul><li><p>The capex to train is huge</p></li><li><p>Each model has it&#8217;s own secret recipe (like TSMC/Intel do)</p></li><li><p>Some users go fabless (use general purpose Nvidia GPUs); others manufacture in-house (like Google TPUs)</p></li></ul></li><li><p>LLM Analogy 3: It is like an OS</p><ul><li><p>There are closed and open ecosystems (like Windows vs Linux)</p></li><li><p>Different applications can be built on top of them</p></li><li><p>Easy to pirate (Once trained, cloning an LLM models is like stealing a CD for Windows)</p></li></ul></li><li><p>LLM Analogy 4: They mimic human psychology</p><ul><li><p>Hallucinations</p></li><li><p>Jagged intelligence</p></li><li><p>Anterograde amnesia</p></li></ul></li><li><p>Unlike most breakthroughs in computing, which started with defense or government contracts, (HDLs too, as <a href="https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth">I covered in one of my posts</a>.) LLMs started with consumers - which is something very new for the computing industry</p></li><li><p>AI will support different levels of autonomy</p><ul><li><p>Augmentation (like code/image generators)</p></li><li><p>Partial autonomy apps - like Github copilot/Cursor (coding), Perplexity (search)</p></li><li><p>Full autonomy - we are not there yet</p></li></ul></li><li><p>All software is going to at least be partially autonomous: So build interfaces for LLMs, not humans</p><ul><li><p>For example, product documentation should have markdown in addition to plain text/images - LLMs can access them more easily</p></li><li><p>Operator is a great way to control a computer - but it is too expensive to use for everything - so in the near future, we need better LLM interfaces</p></li></ul></li><li><p>Karpathy first rode a fully autonomous car in 2013. Yet, we still don&#8217;t have full self driving. That&#8217;s because there is always a big gap between demo and product</p><ul><li><p>Don&#8217;t think of it as the year of Agents, think of it as the decade of Agents</p></li></ul></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FJx-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FJx-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FJx-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FJx-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FJx-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FJx-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg" width="1326" height="1045" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1045,&quot;width&quot;:1326,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:188321,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166495196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!FJx-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FJx-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FJx-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FJx-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3468ce7-289c-486f-9f9c-373547bc86cb_1326x1045.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Andrew Ng, one of the greatest AI educators</strong></h4><ul><li><p>Execution speed is one of the strongest predictor of a startup&#8217;s success</p></li><li><p>Today, the biggest opportunity in AI is at the application level - not at the model, cloud or chip level</p><ul><li><p>Specifically, a new agentic orchestration layer is forming - every application would need this</p></li></ul></li><li><p>Vague ideas are always seen as right, but are always wrong. With concrete ideas, you get clear feedback about right or wrong.</p></li><li><p>The ratio of product managers to engineers will change in the near future</p><ul><li><p>Today, on average, we have 4 engineers per product manager</p></li><li><p>In the future, there would be 2 product managers for each engineer</p></li><li><p>So as an engineer today, it is important to have better product instinct</p></li></ul></li><li><p>Think of building AI products like building a structure with Legos</p><ul><li><p>The more blocks (i.e. underlying libraries, models, and so on) that you have, the better your outcome would be</p></li></ul></li><li><p>AI will push the speed of building products by 10x, so moats will not exist anymore. Brands will be more defensible in the future.</p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SbzI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SbzI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SbzI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SbzI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SbzI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SbzI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg" width="1456" height="1453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1453,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:436968,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!SbzI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SbzI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SbzI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SbzI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F083b4cea-d105-46c9-ab5f-3216f25505b9_1536x1533.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>John Jumper, Distinguished Scientist at Google DeepMind, and Nobel Prize winner</strong></h4><ul><li><p>Why AlphaGo won?</p><ul><li><p>They had the same public data as everyone</p></li><li><p>They used a 128 core TPU to run experiments (which is underwhelming compared to today&#8217;s LLMs)</p></li><li><p>It was all about ideas from the team - that made the difference</p></li></ul></li><li><p>Trust is built through word of mouth - put your work out there and get feedback</p></li><li><p>To publish papers in academia, you need ideas that work and are also beautiful. In industry, you just need a working idea</p></li><li><p>To build a low cost AI product: think about how you can reduce the cost of failed ideas</p></li><li><p>Narrow AI systems will win out eventually (this is different from what Jared Kaplan said)</p></li><li><p>It&#8217;s easy to come up with dogma - instead, be ruthless and empirical</p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KpNK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KpNK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KpNK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KpNK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KpNK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KpNK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg" width="1456" height="1011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1011,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89916,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166495196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!KpNK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KpNK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KpNK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KpNK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a2a52-c155-4358-a046-6af29d2b56be_1536x1067.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Chelsea Finn, Assistant Professor at Stanford, Co-Founder of Physical Intelligence</strong></h4><ul><li><p>In traditional robotics, a robot is trained to function in very specific environments. But the goal of her new company is different - Build a robot to do anything</p></li><li><p>For LLMs, scale is the most important - more data + GPUs usually means better models. But to build robots, we need the right kind of data - with sufficient diversity</p></li><li><p>In her talk, she walked us through the steps they followed to train a laundry folding robot</p><ul><li><p>But none of the steps followed were specific to laundry folding - they just involved a gradual increase in difficulty level - this can apply to any task</p></li></ul></li><li><p>The foundational models used to train such general robots is called a Vision Language Model (VLM). It works like this:</p><ul><li><p>The robot processes user input along with vision input from cameras</p></li><li><p>The VLM uses this data to generate language commands describing how the robot should respond</p></li><li><p>These language commands are used to control the robot</p></li></ul></li><li><p>To make their robots more robust and handle open ended prompts - the same VLMs were used to generate synthetic prompts, and these prompts were used to train the VLM</p></li><li><p>She believes general purpose robotics will be more successful than purpose built robots, since the foundational VLMs will keep getting better</p><ul><li><p>This was a lot like what Jared Kaplan from Anthropic mentioned in Day 1 about LLMs</p></li></ul></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!570e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!570e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 424w, https://substackcdn.com/image/fetch/$s_!570e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 848w, https://substackcdn.com/image/fetch/$s_!570e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!570e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!570e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg" width="1456" height="1236" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1236,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:190058,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.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_!570e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 424w, https://substackcdn.com/image/fetch/$s_!570e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 848w, https://substackcdn.com/image/fetch/$s_!570e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!570e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee897158-450a-4e32-b828-d06535f38183_1536x1304.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Jared Kaplan, Co-Founder and CSO at Anthropic</strong></h4><ul><li><p>The time taken for a human to do the same task and AI can do is doubling every 7 months - this is like Moore&#8217;s law.</p></li><li><p>Scaling laws will continue to grow - if teams find that scaling laws are failing, it means their training methodology is flawed.</p></li><li><p>To prepare for an AI future:</p><ul><li><p>Start building technology that doesn&#8217;t work now - by the time you are done, AI would have caught up (similar to chip designers using Moore&#8217;s law)</p></li><li><p>Use AI to integrate AI - this is the only way to keep up</p></li></ul></li><li><p>There are two types of tasks</p><ul><li><p>Tasks that can be done with 70-80% accuracy - AI already excels at these</p></li><li><p>Tasks that need 100% accuracy - this will be solved by future AI</p></li></ul></li><li><p>The real value of AI will come in knowledge tasks that needs us to put information from different sources together - like Biology</p></li><li><p>When integrating AI into existing businesses, one needs to think carefully about the bigger picture - for example, when the electric motor was invented, it was not used to make the steam engine better - instead, an electric engine was redesigned.</p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8bEy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8bEy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8bEy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8bEy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8bEy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8bEy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg" width="1456" height="1516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1516,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:364291,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166495196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!8bEy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8bEy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8bEy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8bEy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2339402e-e64e-447f-b0c5-6c67fd0a05cd_1536x1599.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Varun Mohan, CEO and Co-Founder of Windsurf</strong></h4><p>Personally, I loved this talk - Varun walked in with no slides, and simply had a candid conversation with the audience.</p><ul><li><p>His first company was Exafunction - which build GPU virtualization software</p><ul><li><p>It was quite successful and was used by a lot of autonomous vehicle companies</p></li><li><p>Their USP was to abstract away underlying hardware architectures - but with Nvidia gaining dominance, they felt this application wasn&#8217;t valuable. So they pivoted</p></li></ul></li><li><p>They came up with Codium, a Github co-pilot alternative. Later, this became Windsurf, an agentic IDE.</p></li><li><p>His advice to founders: Be irrationally optimistic, but uncompromisingly realistic</p></li><li><p>To stay ahead of the curve, build products where 50% of the ideas don&#8217;t work today - by the time you finish, AI would have caught up and everything will work</p></li><li><p>The reason startups win over big companies is: startups are desperate, if they fail, the company dies</p></li><li><p>Strategic moats and switching costs are dying - don&#8217;t go by traditional VC advice</p></li><li><p>There are a lot of companies in the world that are still technology starved - this is your opportunity</p></li><li><p>When asked how he manages the stresses of being a founder, he said: &#8220;I don&#8217;t manage it. There is no way to escape it. If you fail, just get up and keep going.&#8221;</p></li></ul><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y1WY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y1WY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y1WY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y1WY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y1WY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y1WY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg" width="766" height="624" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:624,&quot;width&quot;:766,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:186144,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/166131675?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.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_!Y1WY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y1WY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y1WY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y1WY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f9f404-df06-4b2f-81d1-6e526be6eea4_766x624.jpeg 1456w" sizes="100vw" loading="lazy"></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><h4><strong>Francois Chollet, CEO and Co-Founder of Ndea (also the creator of Keras)</strong></h4><ul><li><p>If we have tasks that humans do that AI cannot - that means we do not have AGI</p></li><li><p>Scaling laws will not get us to AGI (Contrary to what to Sam Altman and Jared Kaplan said, actually)</p></li><li><p>There are two types of data abstraction</p><ul><li><p>1. Value centric - abstraction in the continuous domain</p></li><li><p>2. Program centric - abstraction in the discrete domain</p></li><li><p>Today&#8217;s AI like transformers work well in the continuous domain. But for AGI, we need AI that can handle both domains</p></li></ul></li></ul><div><hr></div><p></p><h4><strong>Suhail Doshi, serial entrepreneur (Mixpanel, Mighty Computing, and Playground AI)</strong></h4><ul><li><p>AI will have a second movers advantage - be confident if you want to build consumer AI applications even today</p></li><li><p>The world will soon enter mass amateurization: what an expert can do today, will be done by AI soon. With agents, these tasks can be done continuously for years</p></li><li><p>Don&#8217;t just focus on AI applications that give immediate feedback - like Chatbots. Consumers are ready to wait for hours if they get value out of AI</p></li><li><p>To identify opportunities, think about &#8220;what-ifs&#8221; in the future. For example:</p><ul><li><p>What if nobody drives a car</p></li><li><p>What if everyone has a personal robot</p></li><li><p>What if we can never say what&#8217;s real</p></li></ul></li><li><p>Recommended reading: <a href="https://andrewchen.com/the-next-feature-fallacy-the-fallacy-that-the-next-new-feature-will-suddenly-make-people-use-your-product/">https://andrewchen.com/the-next-feature-fallacy-the-fallacy-that-the-next-new-feature-will-suddenly-make-people-use-your-product/</a></p></li></ul><div><hr></div><p></p><h4><strong>Jordan Fisher, CEO at Standard AI</strong></h4><ul><li><p>Everyone says focus is important. But if you are running your own company, you need to focus on a lot of different things. It&#8217;s not easy.</p></li><li><p>If you are building something today, build it assuming AGI is coming in 2 years</p></li><li><p>There will be a big difference between products built as &#8220;AI first&#8221;, vs existing products that retrofit AI</p></li><li><p>There are many open questions about the AI-centric world we are entering</p><ul><li><p>Will software become a commodity? Do you only need product managers?</p></li><li><p>What&#8217;s the point of downloading an app if you can generate an app on demand?</p></li><li><p>How can users ensure an AI agent is right if everything happens under the hood?</p></li></ul></li><li><p>Some companies will have an advantage in the AI era</p><ul><li><p>Companies with data and data creation opportunities (Meta, Reddit)</p></li><li><p>Companies with secret recipes (like TSMC, ASML)</p></li></ul></li></ul><div><hr></div><p>I hope you found my notes to be useful, especially if you were not able to make it to the event. Many of these talks were also recorded, and I urge readers to check them out here: <a href="https://events.ycombinator.com/ai-sus">https://events.ycombinator.com/ai-sus</a></p><p>As usual, please share this post with someone that it might benefit. And subscribe to stay tuned for upcoming posts.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Power essentials for a chip architect]]></title><description><![CDATA[All you need to know about power as a chip designer]]></description><link>https://chipinsights.net/p/power-essentials-for-a-chip-architect</link><guid isPermaLink="false">https://chipinsights.net/p/power-essentials-for-a-chip-architect</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sat, 07 Jun 2025 02:37:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.</strong></p><div><hr></div><p>Before going ahead, let me define what I mean by some terms from the title of this post:</p><ul><li><p><strong>Chip:</strong> I&#8217;m talking specifically about computing chips like a CPU or GPU</p></li><li><p><strong>Chip Architect:</strong> Someone who works on architecture or microarchitecture of a chip</p></li><li><p><strong>Power:</strong> Energy consumed by a chip from a battery or a electrical socket per unit time.</p></li><li><p><strong>Essentials:</strong> Only what an architect needs to know - everything else will be abstracted out</p></li></ul><p>When a CPU or GPU is designed, there are three key metrics: Performance, Power and Area. (commonly combined in the acronym &#8220;PPA&#8221;.) Of the three, I have always found power to be the least intuitive. In most textbooks and college courses, power consumption is explained through the physics of the transistor. (i.e. movement of electrons.) While it&#8217;s good to know these details, I have always felt that not knowing them shouldn&#8217;t stop you from thinking about power. (In the same way that a web designer needn&#8217;t know all the details of the cloud in which their website is hosted.)</p><p>So, that&#8217;s the goal of this post: <strong>to go over essential concepts needed to design a low power chip if you are someone who knows a good amount about chip architecture, but very little about power.</strong></p><p>Let&#8217;s get started.</p><div><hr></div><h1><strong>Part 1: Fundamental ideas in power</strong></h1><h2><strong>When does a chip consume power: The rental car analogy</strong></h2><p>Before looking at the impact of design decisions on power, it&#8217;s important to understand the two ways in which power is consumed in a chip. To make this simple, consider this analogy: <strong>Chip power is like the money you spend on a rental car each day.</strong></p><p>Let me explain further. Imagine that you are on a trip and have rented a car. The amount of money you would spend on this car daily can be divided into two components:</p><ol><li><p>Daily rental charges (depends on the type of car, rental company, and so on)</p></li><li><p>Fuel expenses per day (depends on your usage of the car)</p></li></ol><p>Chip power also has two similar components:</p><ol><li><p>Static power: Power that is consumed anytime the chip is on</p></li><li><p>Dynamic power: Power that is consumed to perform some logic in the chip</p></li></ol><p>As you may have figured, static power is like the daily rental charges you pay: As long as the chip is turned on, even if there is no new task to be run, power is still consumed. On the other hand, dynamic power, like the fuel cost, depends on the number, and type of logic operations that a chip executes.</p><div><hr></div><h2><strong>Why do these two types of power matter?</strong></h2><p>Usually, when you rent a car, all you care about is the total amount of money you spend. So you might be wondering why we want to split up the power consumption into two different types. The reason why we do this, is because power alone is not a useful metric. There are two metrics that derived from static and dynamic power which are actually important:</p><h3><strong>Energy consumed</strong></h3><p>As you know, power is energy per unit time. So the energy consumed by a chip would depend on the amount of time for which static or dynamic power is consumed, in addition to the values themselves. In our rental car analogy, you can think of energy consumed as the total money spent on the rental car during your trip - which includes rental charges for each day of the trip, and fuel expenses incurred every time you drive the car. At a very high level, this is what you need to know:</p><ul><li><p>Static power is consumed for the full duration when the chip is connected to a power source</p></li><li><p>Dynamic power is consumed only when the chip is actively executing a task</p></li></ul><p>Energy consumed by a chip is an important metric, because:</p><ul><li><p>In battery operated devices, lower energy consumption means a longer battery life without needing to recharge</p></li><li><p>In plugged devices (connected to an external power source), lower energy consumption means a smaller amount on your electricity bill</p></li></ul><p>If the goal is to reduce the amount of energy consumed, one type of power could be more important than the other. There are two scenarios you may experience:</p><h4><strong>Scenario 1: When static power is more important</strong></h4><p>To understand this, let&#8217;s take the rental car analogy further. Imagine that your trip is designed in a way that for most of the days of the rental, you will not be driving the car. In this scenario, the daily rental charge is going to be more significant compared to your fuel expense. Like your rental car, a lot of chips today are designed for use-cases with high idle time.</p><p>A real-life example of this use case is a personal assistant device like Google Nest or Amazon Echo. Although these devices are plugged into a power source all the time, they spend majority of this time in an idle state. However, static power is still consumed in this idle state, making it the main contributor towards the energy consumption. Ideally, a chip designed for this use case should prioritize reducing its static power.</p><h4><strong>Scenario 2: When dynamic power is more important</strong></h4><p>This is the classic case of a road trip - where you spend most days actually driving your rental car, and in the process spending a lot on the fuel. In real circuits, dynamic power tends to be higher than static power - so although static power is still consumed here, reducing dynamic power becomes the priority. (Ideally, you would reduce both, but as you will see later in the post, there are tradeoffs involved in these design decisions.)</p><p>Many datacenters today are designed to maximize utilization of all the available compute all the time - at a chip level, a new task continually needs to be executed. In power terms, this means that dynamic power is being consumed (along with static power) during most of the time when the power supply is connected. Designing a chip that reduces dynamic power consumption becomes valuable in this scenario.</p><h3><strong>Peak Power</strong></h3><p>While power is usually correlated with energy consumption, (sometimes, the two are incorrectly interchanged) there is another metric that is actually more important - Peak Power, which is the maximum power consumed at any point during which the chip is on. In other words, it is the power when the sum of static and dynamic power is the highest. Imagine being told that you have a daily allowance for the money you spend on your rental car (including fuel expenses) that you are not allowed to exceed - that&#8217;s what Peak Power is.</p><p>There is a reason why I said Peak Power is more important than energy consumed - while higher energy consumption would result in smaller battery life or a bigger electricity bill (which are bad, but don&#8217;t make the device unusable.), Peak Power directly impacts the operation of the chip. If the peak power is high, a few things can go wrong:</p><ul><li><p>Too much heat is produced</p></li><li><p>Unexpected voltage drops occur</p></li><li><p>Complex power distribution network are needed</p></li></ul><p>Each of this could be catastrophic, as Nvidia once learnt the hard way. During the design on their NV30 chip in 2002, Nvidia were forced to increase the clock frequency of their chips in order to be competitive with ATI&#8217;s Radeon 9700 PRO. But without realizing it, this exceeded their Peak Power budget, and resulted in excessive heating. In what was a last minute move, they added a huge dual-slot fan to ensure that the chip was still usable. But this fan was very loud, and as a result, NV30 became the butt of many &#8220;hot chip&#8221; jokes. (In fact, <a href="https://www.youtube.com/watch?v=H-BUvTomA7M">Nvidia posted a spoof video themselves</a>.)</p><p>Peak power is a very interesting topic in itself, with challenges in both estimation, and management techniques. But for the purposes of this post, the main takeaway is this: <strong>while there could be many design decisions that are effective at reducing energy consumption, they are only valid if they are under the peak power budget.</strong></p><div><hr></div><p>So far, we&#8217;ve understood that there are two types of power consumed in a chip - static and dynamic power. Changes in these two types have power has consequences on two important metric in chip design - Energy consumed and Peak power. Trust me, this is all you need to know about power as a chip architect. Once you are equipped with this knowledge, the next step is to look at some techniques that architects follow to reduce power consumption.</p><div><hr></div><h1><strong>Part 2: Power optimization</strong></h1><p>If you have read this post so far, you know the basic concepts in chip power, and are ready to put your &#8220;low-power chip architect hat&#8221; on. When I was reviewing this topic, I found a lot of solutions proposed were either constrained to a very specific design, or were slightly different versions of the same idea. (often wrapped around fancy terminology.) In order to keep this section simple and clear, I&#8217;m proposing a new hierarchy for ideas. For both static and dynamic timing, we will classify ideas as:</p><ul><li><p><strong>Principles:</strong> the fundamental ideas that can apply to any design</p></li><li><p><strong>Techniques:</strong> a specific implementation of a principle</p></li></ul><p>Techniques are huge in number, and can be implemented at both the architecture, and microarchitecture levels. I&#8217;ll share few example techniques of each type for each principle, but I urge the reader to focus more on the principles. Note that whether a technique is good or bad depends on how it impacts other key metrics in the chip - which includes area, performance, peak power, and energy consumption. Since these requirements vary based on the end-application for the chip - <strong>there is no one good technique.</strong></p><p>With these logistics out of the way, let&#8217;s start with static power.</p><h2><strong>Static Power Optimization</strong></h2><p>As we saw earlier, static power is always consumed when a chip is kept on. A nuance that I want to add here is: each transistor consumes static power independently. This leads us to the two principles to reduce static power consumption.</p><h3><strong>Principle 1: Reduce Transistor Count</strong></h3><p>If we go back to our rental car analogy, and consider each transistor as a rental car - then it becomes clear that your daily rental charge increases for each additional rental car you have. So the most obvious way to reduce static power is to reduce the number of transistors in your chip. Since this post is meant for a chip architect, transistor count reduction is same as area reduction by removing or simplifying big logic blocks in the chip. Here are some such techniques:</p><h4><strong>Technique 1: Remove Redundancy</strong></h4><p>Let me use an example to explain the idea of redundancy. Consider executing a CPU instruction to do the following:</p><ul><li><p>Read data from register 1</p></li><li><p>Read data from register 2</p></li><li><p>Add them</p></li><li><p>Store the result in register 3</p></li></ul><p>We read/write register data using a block called register file. The number of parallel reads that can be executed by the register file is decided by the number of register ports. This means:</p><ul><li><p>If we have 2 read ports, data from register 0 and 1 can be read in the same cycle</p></li><li><p>If we have 1 read port, we read data from register 0 in the first cycle, and data from register 1 in the next cycle.</p></li></ul><p>It should be clear that 2 read ports result in better performance than 1 read port. But an additional read port costs additional area, which means more transistors, and higher static power.</p><p>In theory, you only need one instance of each type of block in a chip - one adder, one register/memory port, and so on. But redundancy is a common attribute in most chips that is used to improve performance. If reducing static power is your main goal, removing such redundancy can help. Typically, this also reduces the peak power of the chip. However, energy consumption could vary from case to case - it is possible that reducing redundancy results in a huge performance penalty, and as a result, you need to run the chip for longer and consume more energy to do that. Hence, a good understanding of the application is key before making a decision to reduce redundancy.</p><h4><strong>Technique 2: Eliminate Pipelines</strong></h4><p>If you are unaware of what a pipeline is, I recommend one of <a href="https://chipinsights.substack.com/p/computer-architecture-101-series">my earlier posts on CPU pipelines.</a> Each pipeline stage added comes with an area cost - which means additional transistors consuming static power. So by combining different pipeline stage together and reducing the number of pipeline stages, static power can be reduced. (This also reduces dynamic power, but we will look at that later.)</p><p>However, pipelining is a common technique to increase the frequency, and hence throughput of the chip. So by removing pipelines, you may save on area, peak power, and even energy consumption in most cases - but it comes at the cost of a significant performance drop.</p><h4><strong>Technique 3: Simplify Prediction</strong></h4><p>If you look into any modern computing chip, you will find different &#8220;hacks&#8221; that are meant to improve execution performance. I&#8217;ve put them under a bucket called &#8220;prediction&#8221; - as these methods build on knowing something about the data or instruction patterns. Two common methods in this bucket are:</p><ul><li><p>Branch/Value prediction</p></li><li><p>Caching</p></li></ul><p>Although these result in a performance bump, to get better prediction results, you would need more complex hardware blocks. (As an example, you can check the <a href="https://chipinsights.substack.com/p/caches-deep-dive-part-1-the-basics">different cache mapping schemes I discussed in an earlier post</a>.) Complex blocks means more transistors, and more static power. By simplifying these techniques (For example, using a direct mapped cache instead of a set associative cache) we can reduce static power consumption.</p><p>Much like reducing redundancy, estimating how this technique would reduce energy is tricky: Recovering from cache misses may result in additional energy consumption - and this may overshadow the reduction from static power savings.</p><div><hr></div><h3><strong>Principle 2: Reduce Transistor Voltage</strong></h3><p>If you have a large group and cannot reduce the number of cars you are renting, the next best option would be to find a rental company that gives you the best deal. In circuit land, this &#8220;deal&#8221; actually comes from the voltage applied on the transistor. In layman terms: the transistor is like a resistance - when you apply a higher voltage, more current flows, and this increases the static power. To reduce static power through reduced voltage, apply these coupon codes at your rental car checkout:</p><h4><strong>Technique 1: Power Gating</strong></h4><p>What's the best way to reduce the voltage applied to transistors in a chip? How about not applying any voltage? Well, you can&#8217;t do that for the whole chip, because that would just make it a block of silicon. That's where power gating comes in - instead of turning off the entire chip, only the unused parts of a chip can be turned off. Since static power is only consumed by the transistors that are connected to a voltage source, power gating effectively reduces the number of active transistors - which reduces the static power consumed.</p><p>Power gating is done in real time - which means, as a chip architect, designing the chip in a way that would allow larger blocks to remain off for a longer time, while still maintaining the similar performance, becomes the key. It is also important that there is some way to detect if, and when a certain block would be unused. The complex logic needed to handle power gating introduces some area overhead - still, power gating is one of the most commonly used techniques to reduce static power.</p><h4><strong>Technique 2: Multi-Voltage Islands</strong></h4><p>This is another similar idea to power gating - but instead of turning off the voltage for some blocks in real time, a lower voltage is used. Low voltage is different from no voltage, because with low voltage, the logic is still functioning - it is just slower. (I'm skipping the details, but transistors running on lower voltages can only support lower frequencies - this is what makes the chip slower.) So as an architect, you could divide the entire chip into different voltage domains (i.e. logic blocks sharing a voltage source) based on the expected usage, and reduce the voltage for the domains that can run slower. Another way to use the same idea is to use the same chip design to support different applications by changing the voltage applied to each domain.</p><p>Irrespective of the implementation, using multiple voltage domains (or islands) is an effective way to lower static power for some parts of the chip (and hence lower the total static power.) If done correctly, this may also not have a major performance impact, although it would increase the chip area.</p><h4><strong>Technique 3: Dynamic Voltage Scaling</strong></h4><p>As I mentioned in the previous technique, reducing transistor voltage is possible if the frequency is also reduced. This is the idea that Dynamic Voltage Scaling (DVS) exploits. With DVS, the circuit has the ability to lower the voltage applied (and simultaneously reduce frequency) when slower execution is acceptable - imagine an application that has a burst of heavy processing that happens at once, followed by periods of light processing. The static power can be reduced by lowering the voltage when heavy processing is not needed.</p><p>As an architect, identifying opportunities for DVS, and building in the capability to detect DVS is key - and often comes with an associated area cost. In most cases, it would also lead to lower performance. But it is commonly used in battery operated devices - when you are running low on battery and hit the &#8220;power saving mode&#8221; on your smartphone - it&#8217;s DVS at work. DVS also impacts dynamic power, which I will cover in the next section.</p><div><hr></div><h2><strong>Dynamic Power Optimization</strong></h2><p>If you remember our rental car analogy, I mentioned that dynamic power is like the fuel expense incurred each day on your car. When I was first learning to drive a car, I came across many different theories on how to reduce your fuel consumption - from simple concepts like &#8220;accelerate/brake gradually&#8221;, and &#8220;use cruise control on freeways&#8221;, to more obscure ideas like &#8220;For this car model, maintain tire pressure to be X, drive at speed Y, and have a candid conversation with your engine every Sunday&#8221; (I&#8217;m kidding of course&#8230; or am I?)</p><p>My point is, dynamic power is also similar - there are a lot of ideas proposed, with most being too specific to certain microarchitectural implementation or workload - which ultimately results in a lot of confusion. To avoid this, I&#8217;m going to try to use <a href="https://chipinsights.substack.com/i/165388326/part-power-optimization">the same two tier hierarchy I proposed for static power</a>, and hopefully rid you of some of the confusion.</p><div><hr></div><h3><strong>Principle 1: Reduce active clock cycles</strong></h3><p>After driving for a few years, here&#8217;s what I learnt - if you want to reduce fuel consumption, just turn the engine off. In chip language, this means turning off the clock. (If you want to know about clocks and pipelines, <a href="https://chipinsights.substack.com/i/149584645/why-pipelining">check this post</a> before reading further.) Here are some techniques to reduce active clock cycles.</p><div><hr></div><h4><strong>Technique 1: Clock Gating</strong></h4><p>This is one of the most popular techniques to reduce chip power. Much like <a href="https://chipinsights.substack.com/i/165388326/technique-power-gating">power gating</a>, the goal is to identify blocks that are unused for some period of time, and turn their clocks off. Clock gating inserts logic (called the "gate") into the clock path going to a some related logic - this gate can be selectively turned on or off in real time. (typically based on some other logic in the chip.)</p><p>There are many nuances involved in implementing clock gating that I&#8217;m skipping in this post. But as a chip architect, identifying opportunities for clock gating is invaluable. A block is ideally suited for clock gating if:</p><ul><li><p>It can remain off (the technical term is &#8220;idle&#8221;) for a significant time while the chip is still running</p></li><li><p>There is a way (ideally an easy way) to identify when the clock for this block needs to be active</p></li></ul><p>Clock gating is a great way to save a lot of energy. (i.e. provide better battery life for your devices) In fact, in most cases, clock gating can be implemented with minimal impact on performance. (There are some cases, especially high frequency designs, where meeting timing with clock gating could be challenging, so take this with a grain of salt.) However, there would be some additional area cost - for both the control, and gating logic.</p><p>I want to end this section by talking about the interdependence between power gating and clock gating. It should be obvious that if power gating is implemented, then clock gating becomes redundant. However, power gating is usually more complicated, and incurs a bigger performance penalty - so in many cases, a hierarchical approach is followed:</p><ol><li><p>If a block is idle, turn off the clock first (i.e. clock gating) - save dynamic power</p></li><li><p>If the block remains idle for very long, pull the plug (literally, i.e. power gating) - save both static and dynamic power</p></li></ol><div><hr></div><h4><strong>Technique 2: Dynamic Frequency Scaling (DFS)</strong></h4><p>When I talked about <a href="https://chipinsights.substack.com/i/165388326/technique-dynamic-voltage-scaling">Dynamic Voltage Scaling (DVS) under static power optimization</a>, I mentioned that it comes at the cost of reduced clock frequency. Taken independently, this frequency reduction comes under a technique known as Dynamic Frequency Scaling (DFS). Reducing the frequency means fewer clock cycles are completed in a second, which translates to lower dynamic power. However, when you are reducing the frequency, you are reducing the performance of the chip. But a clever usage of DFS can hide the performance drop from the user of the chip - for example, if your computer is turned on, but you aren&#8217;t actively doing something, (like playing a game, or watching a movie) there is no need for the highest performance. Detecting such opportunities is the challenge, and can be done broadly in two ways:</p><ul><li><p>Through the operating system (this is called CPU throttling)</p></li><li><p>Through some hardware signals (for example, architects can add counters to indicate low usage)</p></li></ul><p>Both methods would cost more transistors to implement, but the energy savings are worth the investment. Although you can lower the frequency without lowering the voltage, DFS and DVS are typically used together to get maximum power savings. This is called Dynamic Voltage and Frequency Scaling, or DVFS.</p><div><hr></div><h4><strong>Technique 3: Efficiency Cores</strong></h4><p>When I first heard about a multi-core CPU, I expected multiple copies of the same core used to execute more than one task simultaneously. But power optimization was built into multi-core when in 2011, ARM introduced their &#8220;big.LITTLE&#8221; architecture. The idea was to pair high performance (&#8221;big&#8221;) cores with power-efficient (&#8221;LITTLE&#8221;) cores to get the best of both worlds. A dynamic task scheduler assigns the appropriate tasks to each type of core, ideally without any slowness that a user can perceive.</p><p>This idea has now been adopted by most multi-core CPUs, and is known generally as Performance-Efficiency (PE) architecture. While the Efficiency cores (E-cores) can use any of the power optimization techniques discussed in this post, I have placed this technique here, as the biggest power savings come from the lower clock frequency used by the E-cores.</p><p>Although in general, a Performance core has better performance than an Efficiency core, the smaller size of efficiency cores can allow more cores to be packed in the same area - so it is hard to convincingly talk about the performance impact of the multi-core system. Overall, the PE architecture has been quite revolutionary, and can be expected to remain a mainstay for the foreseeable future.</p><div><hr></div><h3><strong>Principle 2: Reduce switching</strong></h3><p>I hope you aren&#8217;t tired of the rental car analogy already, but here I go, one last time. You can think of each switching event like a stop you are making while driving. A stop-start car ride is not going to be fuel efficient - similarly, more switching activity in a chip means more dynamic power. Unlike the previous principle, switching is heavily dependent on the workload and the microarchitecture. To make things easier, I have classified the sources of switching into two categories:</p><ol><li><p>Switching in combinational logic (Think: Stops caused by vehicle traffic)</p></li><li><p>Switching in sequential logic (Think: Traffic lights, Stop signs, and so on)</p></li></ol><p>I will provide some example techniques for each category, but you will see these are quite &#8220;hacky&#8221; and won&#8217;t be applicable more generally. Let&#8217;s start with combinational logic.</p><div><hr></div><h3><strong>Principle 2.1: Reduce switching in combinational logic</strong></h3><p>This part of my post assumes some digital design knowledge, but if you don&#8217;t know what combinational logic is, here&#8217;s a layman definition: Any logic that does not use a clock is combinational logic. Some examples are Binary logic gates (like AND, OR, NOT), adders, comparators, and so on. Each time the voltage triggers combinational logic, dynamic power is consumed. Here are some techniques to reduce the triggers.</p><div><hr></div><h4><strong>Technique 1: Remove Redundancy</strong></h4><p>I also <a href="https://chipinsights.substack.com/i/165388326/technique-remove-redundancy">mentioned this under static power optimization</a>. In the context of dynamic power, if you have fewer blocks of a type, (say one multiplier instead of two) it also means that fewer blocks end up consuming dynamic power. An effective way to use this technique in a chip is by identifying logic that can be shared: For example, if you are using two different multipliers to multiply values from the same signal in different parts of the design, why not share the logic? But even an ideal candidate like this may result in routing issues. (what if the two parts of the design are very far away from each other in the final chip layout?) Hence, although peak power and area would be lower, this typically comes with a performance drop, and potentially consume more energy overall to recover from the lost performance.</p><div><hr></div><h4><strong>Technique 2: Moving Logic Downstream</strong></h4><p>This title could be vague - so let me jump directly to an example.</p><p>Consider three values - A, B and C. Your chip needs to do this:</p><ul><li><p>If A is greater than B, multiply A and C.</p></li><li><p>Else, multiply B and C</p></li></ul><p>There are two ways to do this:</p><ul><li><p>Option 1</p><ul><li><p>Multiply A and C</p></li><li><p>Multiply B and C</p></li><li><p>Then compare the two products - the greater one is your final result</p></li></ul></li><li><p>Option 2</p><ul><li><p>Compare A and B - the greater one is your initial result</p></li><li><p>Multiply the result from the previous step with C</p></li></ul></li></ul><p>It&#8217;s obvious that Option 2 is better than Option 1 when it comes to dynamic power. In Option 2, we are doing multiplication in the last stage - as a result, we only need to do the multiplication once. In other words, to reduce dynamic power, move complex logic downstream, so you can limit the number of triggers to this logic.</p><p>This was a very simplistic example to demonstrate this technique - you might wonder why anyone would even implement Option 1 - because even the performance would be better in Option 2. While it is obvious in simple designs, but in large designs, such minor details often get missed - imagine the values A, B and C coming from completely different modules, passing through different pipe stages, or maybe even being handled by different teams! That&#8217;s what makes even simple techniques like this challenging to implement.</p><div><hr></div><h4><strong>Technique 3: Digital Logic Tricks</strong></h4><p>If you have been working on digital logic long enough, some tricks become evident to you. For example, when I first started writing RTL logic, I used multiplications everywhere - just like you would in a software programming language like Python. But there are a lot of scenarios, where true multiplication is not necessary.</p><p>For example, Let&#8217;s say you want to multiply the values A and B - but you know B is always a power of 2. (i.e. 1, 2, 4, 8 and so on.) Then, instead of multiplication, this logic can be implemented using bit shifts. For example, If A = 5, B = 4, then A*B is same as 5 &lt;&lt; 2. (i.e. shift the binary value of A to the left by 2 places.) In hardware, a shift logic is just wires, which means zero dynamic power - a far more power efficient implementation than using multipliers.</p><p>Another common trick related to multiplication is to bypass multiplication when you can detect one of the operands to be 0 or 1. We can skip multiplication here too, but remember that detecting 0s or 1s comes with an area overhead. (and may also increase the peak power slightly, to implement the extra logic.) But if the energy saved is significant, it is still worth doing.</p><p>There are many other tricks like this which a good designer has at their disposal to reduce combinational logic (and consequently the resulting dynamic power)</p><div><hr></div><h3><strong>Principle 2.2: Reduce switching in sequential logic</strong></h3><p>Sequential logic refers to the structures that use clock and can maintain their state between clock cycles - the fundamental components are usually a flip-flop or a latch, which can be combined together to create bigger structures like registers, and finite state machines. (FSMs) Dynamic power is consumed by sequential logic during a clock event. (this typically happens when the clock signal moves from low voltage to high - called the positive clock edge.) This means that all the techniques under principle 1 will also reduce dynamic power consumed by sequential logic. However, this principle focuses on how to reduce switching by keeping the same clock frequency - in other words, how to switch fewer sequential logic elements in a chip.</p><div><hr></div><h4><strong>Technique 1: Eliminate Pipelines</strong></h4><p>This was <a href="https://chipinsights.substack.com/i/165388326/technique-eliminate-pipelines">already covered under static power</a>, and the same text applies here. Fewer pipeline stages means fewer flop stages, and as a result, lower dynamic power is dissipated.</p><div><hr></div><h4><strong>Technique 2: Replace Registers with SRAMs</strong></h4><p>I mentioned that sequential logic is used to maintain state - this means they can be used as memory elements to store some data (bits) during the chip execution. The most common way to store data is using registers - which is a collection of 1-bit storage elements like flip-flops or latches. Each time a bit needs to be modified, these elements consume dynamic power - hence, large registers become a hotspot (pun intended) for power consumption in a chip.</p><p>Registers are not the only storage - Static Random Access Memories (SRAMs) are an alternative structure that can be used to store data. While the fundamental unit of an SRAM is similar to a register, they are packed together to serve as dense memories. (read as: area reduction.) But SRAM design has gone beyond just area density today. SRAMs are now designed with techniques like sleep modes, voltage scaling, and read/write gating to make them highly power efficient. (Also, in terms of logistics in chip teams, chip architects typically don&#8217;t design SRAMs - so as an architect, if you have a low power SRAM solution available from a different team or vendor, this becomes a plug-and-play power optimization technique for you.)</p><p>It&#8217;s important to note that simply replacing any register with an SRAM will not work - typically, the power benefits of SRAM are significant only for large memories. Also, if you are storing data once, but reading it often, then registers are actually better. (since they only consume dynamic power during the storage phase.) Also, SRAM access is slower than registers, which is likely to have an impact on overall performance. So use this technique cautiously.</p><div><hr></div><h4><strong>Technique 3: Using pointers to avoid toggling</strong></h4><p>This is a very specific implementation, but I find it to be elegant, so it has earned it&#8217;s place here. (Good interview question too, by the way.) Let&#8217;s say you want to implement a First-In-First-Out (FIFO) structure, that can hold 4 elements. Here&#8217;s a simple way to implement this structure (called a shift register):</p><ul><li><p>Place 4 registers (R1, R2, R3, R4) back-to-back, with the output of R1 connected to the input of R2, and so on</p></li><li><p>When a new entry should be added, send it as input to R1, and shift all existing elements one place (So the data held between R1 and R2, now moves between R2 and R3)</p></li><li><p>Once full, if you want to read the first (oldest) data, simply read the output of R4</p></li></ul><p>However, the problem with this implementation is that each time a new entry is added, all 4 registers switch. Now imagine the same structure for 1000 entries, with each entry being 1024 bit wide - that&#8217;s a lot of dynamic power for each new entry.</p><p>A better (power optimal) way to implement the same design, is to have independent registers, along with pointers for each register. In the above example, if we had 4 independent registers, we could track the start, end and next pointer each time a new entry get added:</p><ul><li><p>First entry - add it to R1, then set:</p><ul><li><p>start pointer = R1</p></li><li><p>end pointer = R1</p></li></ul></li><li><p>New entry added - add it to any available register (let&#8217;s say R3). Then set</p><ul><li><p>start pointer = R1</p></li><li><p>end pointer = R3</p></li><li><p>R1&#8217;s next pointer = R3</p></li></ul></li><li><p>Similarly, store new entries in any registers, and update start, end and next pointers accordingly.</p></li></ul><p>If you notice, in this implementation, each time a new entry gets added, only one register needs to be updated. (ignoring pointer management, which would have a small area, power, and performance overhead.) This design could easily scale to large FIFOs without a big dynamic power increase.</p><div><hr></div><p>If you have read so far, here&#8217;s something to leave with: a table summarizing the principles and techniques discussed above, and their impacts on metrics. Remember that some metrics depend strongly on the workload being accessed - the results in the table only provides the general trend.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5gqN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5gqN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 424w, https://substackcdn.com/image/fetch/$s_!5gqN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 848w, https://substackcdn.com/image/fetch/$s_!5gqN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!5gqN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5gqN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png" width="1080" height="1200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:354806,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://chipinsights.substack.com/i/165388326?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.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_!5gqN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 424w, https://substackcdn.com/image/fetch/$s_!5gqN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 848w, https://substackcdn.com/image/fetch/$s_!5gqN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!5gqN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622f5f7e-503d-427d-8013-28087398cf49_1080x1200.png 1456w" sizes="100vw" loading="lazy"></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>I want to reiterate something I mentioned earlier - this list of techniques in this post (and I&#8217;d argue any post) is not exhaustive - they are merely examples to understand the principles better. I hope you can take some of these ideas to build some incredibly power efficient chips in the future. Or at the very least, pass along your learnings - one way to do that is to share this post with someone you know :)</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Evolution of HDLs - Part 2: Keeping up with Moore's Law]]></title><description><![CDATA[How VHDL and Verilog evolved into to their current form]]></description><link>https://chipinsights.net/p/evolution-of-hdls-part-2-keeping</link><guid isPermaLink="false">https://chipinsights.net/p/evolution-of-hdls-part-2-keeping</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sat, 31 May 2025 01:09:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.</strong></p><div><hr></div><p><a href="https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth">In the first part of my HDL series, we went through the first 30 years in the evolution of HDLs</a>, leading to two standardized HDLs in the 1990s - VHDL and Verilog. This era was dominated by academic research giving rise to completely novel ways to describe chips. (I recommend checking it out first to fully appreciate this story.)</p><p>In this part, we&#8217;ll continue our journey over the next 20 years - which saw fewer, but very important evolutions that allowed chip designers to keep up with the increasing complexity resulting from <a href="https://chipinsights.substack.com/p/moores-law-and-the-performance-promise">Moore&#8217;s law</a>.</p><div><hr></div><h2><strong>Chapter 1: Was Verilog losing momentum?</strong></h2><p>Although Verilog became an open standard in 1995 and was gaining popularity, chip designers found some shortcomings:</p><h3>1. &#8220;What you see may not be what you get&#8221;</h3><p>If you remember, <a href="https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth#:~:text=1985%20%2D%201990%3A%20Standardization%3A">in part 1</a>, I introduced the idea of &#8220;Behavioral Simulation&#8221; - where the logic expressed by your HDL code is simulated using a different language like C. The advantage of behavioral simulation is the speed - the alternative (gate level simulation) is significantly slower.</p><p>Despite the speed advantage, behavioral simulation had a problem: what you see in simulation could be completely different from the logic that gets synthesized. This was never seen as a problem initially for two reasons:</p><ul><li><p>Verilog code was mainly written by experts (who also understood how the simulator worked)</p></li><li><p>Designs were smaller, so manual reviews could still catch most bugs</p></li></ul><p>In the late 1990s, this non-determinism started to become a real issue. The Verilog-95 standard (which was the first IEEE standard for Verilog) lacked clear specification in some cases, like:</p><ul><li><p>Defining a sensitivity list in an always block</p></li><li><p>Implementing signed arithmetic</p></li><li><p>Blocking/Non-blocking assignments</p></li></ul><p>This was quite a big deal in the chip design industry: detecting such bugs was extremely hard, and when they were found, re-spinning the chip would cost millions of dollars. This made Verilog a risky option, especially considering that the alternative, VHDL, had a more precise syntax with fewer such ambiguities. As a result, VHDL became the preferred option for a lot of industries at that time - especially in safety-critical industries like defense and aerospace. (We can see the remnants of this even today - chip design teams that started around this time continue to use VHDL)</p><h3>2. Verilog couldn&#8217;t scale</h3><p>When Verilog were created, designs were simpler - so more focus was given to precise description of hardware structures. Other aspects like readability and scalability of the code were ignored.</p><p>For instance, Verilog was created assuming designs with few (less than 10) input/output ports in each module. But over time, modules started to need a large number of ports (more than hundreds), and the existing Verilog syntax made port declaration painful.</p><p>Another critical aspect missing in Verilog was the idea of replication and conditional logic definition - known today as generate statements. As designs got complex, the ability to replicate certain lines of HDL, was needed to ensure that the code size was manageable. The ability to turn on/off certain lines was also helpful to run different experiments without modifying the code each time. VHDL was ahead of the curve - they supported generate statements to replicate logic.</p><div><hr></div><p>At this point in the story, if I had to bet on one of these two HDLs, I would have picked VHDL - A department of defense initiative and an IEEE standard, with better language constructs, and fewer chances of errors. In fact, Synopsys, the company that promoted Verilog as the primary HDL for their synthesis tool, decided to launch a VHDL simulator (called Scirocco) in the year 2000, and strongly advocated for the language. The conventional wisdom was that VHDL was going to monopolize the HDL world. Things were not looking great for Verilog.</p><div><hr></div><h2><strong>Chapter 2: Good Artists Copy</strong></h2><p>Despite clear evidence from experts that VHDL was a better designed language, Verilog did show a few glimpses of its usefulness. Back in 1995, at the Synopsys Users Group (SNUG) meeting, <strong>John Cooley</strong> hosted an interesting competition. He invited a set of HDL practitioners to create a gate netlist for a synchronous parity generator - with highest clock frequency being the winning metric. But there was a catch - the participants only had 90 minutes. The result of this competition was interesting: <strong>Almost all the Verilog designers were able to produce functioning HDL within the given time; while none of the VHDL designers could!</strong> (Fun fact: This competition was won by Larry Fiedler, who was a designer at Nvidia)</p><p>This competition showed that despite lacking some constructs, describing hardware with Verilog was easier (and hence quicker) than using VHDL. Sensing that both languages had their merits, a joint group called Accellera was formed in the year 2000, as a merger between VHDL International and Open Verilog International. While this merger was meant to take both HDLs forward, it was Verilog that benefited greatly.</p><p>I already mentioned the two types of issues with Verilog: non-determinism and a deficiency of language constructs. With the formation of Accellera, the latter could be resolved easily: just copy the missing constructs from VHDL and add them to Verilog. And that&#8217;s exactly what happened - A new Verilog standard was published in 2001 (called Verilog-2001) with several new constructs like:</p><ul><li><p>ANSI C inspired port and datatype declarations</p></li><li><p>Wildcard sensitivity list</p></li><li><p>Generate statements</p></li><li><p>Multi-dimensional arrays</p></li></ul><p>Ultimately, few other inconsistencies were fixed in another minor update in 2005. The release of Verilog-2001 and Verilog-2005 was a big statement from the language designers to its practitioners: Verilog was designed with the user in mind, and feedback from the user would be incorporated to improve the language. This started to swing the HDL wars in favor of Verilog.</p><p>The non-determinism problem was more interesting: While some ambiguities were clarified with the release of the two standards, HDL experts still believed (and some still continue to believe today) that VHDL was a more precise language. But as it turns out, this factor was not as significant as the productivity gains that using Verilog provided - especially to the huge number of chip design startups that started to emerge during this time. (Qualcomm: 1985, Broadcom: 1991, Nvidia: 1993, and so on)</p><p>Instead of picking the best HDL to avoid non-determinism, many of these design houses decided that they would rather pick the best HDL, and worry about non-determinism later. To manage the non-determinism, Linting tools were introduced: A Linting tool can detect user intent, and warn against potential cases where the simulation and synthesis result may not match. A lint check could eliminate most of the non-deterministic scenarios, and make Verilog a safe HDL.</p><p>So, through collaboration with Accellera, and improved linting tools, Verilog was able to rise from a tough spot. It must be said that during this phase, VHDL stopped growing. (between 1993 and 2008, there was no major update to the VHDL standard.) It is not clear whether this was a decision by Accellera, or classic incumbent arrogance. Either way, once Verilog caught up, VHDL users started to decline. This was the first sign of danger for VHDL. But while all this was happening in the US, a bigger storm was brewing far, far away.</p><div><hr></div><h2><strong>Chapter 3: A New Beginning</strong></h2><p>In the 1995 Open Verilog International conference, <strong>John Costello</strong>, the then CEO of Cadence, famously called VHDL a &#8220;$400 million mistake&#8221;, and mentioned that the money could have instead been spent developing a better HDL. While he was likely pandering to the audience, (I mean, it was a Verilog conference) and likely promoting Verilog simulators from Cadence, a few people took his words seriously.</p><p>Remember Brunel University from <a href="https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth">part 1</a>? That was where <strong>Phil Moorby</strong> and the HILO HDL came out of. As you know, Phil Moorby went on to join Gateway Design Systems in the U.S., which ultimately gave us Verilog. There were two other key personalities at Brunel along with Moorby that I did not mention earlier - <strong>Peter Flake</strong>, the project lead for HILO, and <strong>Simon Davidmann</strong> who helped in its development. Davidmann would go on to work at Gateway Design Systems in the 1980s, but he always had his eyes set on something bigger.</p><p>As chip designs got complex, verifying them became a challenge - a problem that inspired many verification languages to emerge. But building a simulator that supported these different verification languages was difficult. Recognizing this problem, in 1997, Davidmann founded Co-Design Automation, with Flake as it&#8217;s CTO. Their goal was to come up with a single language that could be used for logic design, verification and system design, and worked on building a simulator for this language. While their initial plan was to build a completely new language, they ultimately decided that it was better to build on top of an existing HDL. While it is unclear why they picked Verilog over VHDL, I assume their previous experience at Brunel and Gateway Design Systems must have played a role. (Again, funny how small moments in this story have a big impact.) In 1999, they introduced the Superlog language, which took Verilog and extended its capabilities for verification and system design.</p><p>Although Accellera, which was formed soon after, was intended to take Verilog and VHDL forward, they were also looking outward, at alternatives like Superlog. Co-Design Automation was happy to have them onboard - they could sell more simulator licenses if Superlog was backed by Accellera. In May 2002, Accellera approved Superlog as an official extension of Verilog - but apparently weren&#8217;t big fans of the name. So they decided to call this new extension &#8220;Verilog for System Design&#8221; - i.e. SystemVerilog.</p><p>All the EDA companies started to take notice of this: Maintaining different languages for design and verification was a pain for both the users and the tool vendors, so this Accellera backed common language for design and verification was like Christmas in June! (By the way, it was actually around June when all this was happening) Synopsys acted quickly, and acquired Co-Design Automation for $36 million just a few months after the Accellera announcement. With this acquisition, Synopsys started to strongly advocate for SystemVerilog as the HDL of the future. Accelera continued to improve the language, and ultimately, SystemVerilog was recognized as an IEEE standard in 2005. Although verification features were the key selling point for SystemVerilog, it was also the most complete HDL of this era, with features like:</p><ul><li><p>Constructs to specify intent to allow simulators/synthesis tools to model the RTL accurately</p></li><li><p>Packages, which are key in managing large projects</p></li><li><p>Datatypes like int and byte, similar to high level languages like C++</p></li><li><p>Interfaces/Modports - this allowed one interface to be shared by RTL and Verification teams</p></li><li><p>Assertions, that helped designers add checks along with the HDL and save future debugging time</p></li></ul><p>It was actually an easy decision at this point to position SystemVerilog as it&#8217;s own HDL, and making it a competitor to VHDL and Verilog. But by this point, I think the industry had matured beyond these petty fights. Since SystemVerilog was built as an extension of Verilog, it was easy to maintain compatibility. So the designers of the language, and EDA providers, made a key decision to embrace Verilog and its users: All Verilog constructs were supported by default in SystemVerilog (including existing Verilog files, which could be used along with SystemVerilog files in projects)</p><p>Essentially, for any chip design team starting at this time, it was hard to look away from SystemVerilog - it was a modern language that was backed by EDA vendors, could support legacy Verilog designs, and could be shared with the Verification teams. As a result, the Verilog ecosystem (SystemVerilog and Verilog) took a strong lead in this era, and this lead is evident even today.</p><div><hr></div><h2><strong>Learnings from this era</strong></h2><p>In the <a href="https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth">1960s-1980s</a>, HDLs were like Tom Hanks in the movie Saving Private Ryan - there were wars, chaos, and a lot of action happening. But the story of HDLs in the 1990s-2000s reminded me of Tom Hanks in Cast Away - life slowed down and got lonely, but in the process, HDLs matured. I have identified two key trends that emerged during this period:</p><h3>1. HDL code started looking like software</h3><p>In 1986, the EDA giant Synopsys was born, with a tool that converted HDL code into a netlist, that could then be used to create the physical layout. This step, which is called &#8220;synthesis&#8221;, had a major impact on how a Hardware Description Language was perceived. If you look back at early HDLs like the <a href="https://chipinsights.substack.com/p/evolution-of-hdls-part-1-the-birth#:~:text=1965%20%2D%201970%3A%20Foundational%20HDLs">Computer Description Language</a>, a HDL was simply a language to describe the design of a chip to someone else. But after synthesis tools were created, a clear analogy with software design started to emerge.</p><ul><li><p>HDLs were seen as High Level Languages (Like C/C++)</p></li><li><p>The netlist was like assembly code</p></li><li><p>The synthesis tool was the compiler</p></li></ul><p>This meant that the purpose of a HDL was no longer to describe hardware accurately. Instead, a HDL became the language that a human designer uses to talk to the synthesis tool. As synthesis tools get smarter, the language can get more human friendly without losing precision. Hence, the verbosity and precise constructs that seemed like VHDL&#8217;s strength stopped being valuable once synthesis tools improved - making Verilog/SystemVerilog the preferred choice during this era.</p><h3>2. &#8220;More transistors, more lines, more problems&#8221;</h3><p>Chip design, especially in the 1990s, was driven by <a href="https://chipinsights.substack.com/p/moores-law-and-the-performance-promise">two rules: Moore&#8217;s Law and Dennard Scaling</a>. With every new chip generation, more transistors could be packed in a similar sized chip, without consuming extra power. Chip designers took a liking to this idea - Intel went from 275,000 transistors in their 386 processor (in 1985), to 3.1 million transistors in the first Pentium (early 1990s), and a mammoth 42 million transistors in the Pentium 4 (in the early 2000s)</p><p>As the transistor density exploded, so did the number of lines of HDL code that needed to be maintained. In a team, this usually means more designers start modifying the HDL code, each with their own styles, preferences and levels of expertise. It was not enough for an HDL to describe hardware well - the value of an HDL also came from syntax that allows:</p><ul><li><p>Better abstraction and scalability</p></li><li><p>Different modelling granularities</p></li><li><p>Easy training and readability</p></li></ul><p>SystemVerilog was certainly ahead of VHDL in this respect during this era - but I think major problems in HDL code maintenance are ahead of us. (The amount of chip design happening today is massive, but the ecosystem still hasn&#8217;t caught up as I mentioned in <a href="https://chipinsights.substack.com/p/eda-deep-dive-part-1-the-history">my EDA Deep Dive series</a>.)</p><p>If you have any programming experience, you know that SystemVerilog is certainly not as human friendly and easy to maintain as high level languages like Python. As a result HDLs continued to evolve, and will always continue to do so. Subscribe and stay tuned for upcoming posts where I will explore this further.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p>References:</p><ul><li><p><a href="https://www.cs.columbia.edu/~sedwards/papers/edwards2004design.pdf">https://www.cs.columbia.edu/~sedwards/papers/edwards2004design.pdf</a> (Comparing HDLs in early 2000s)</p></li><li><p><a href="https://ieeexplore.ieee.org/document/597119">https://ieeexplore.ieee.org/document/597119</a> (Birth of SystemC)</p></li><li><p><a href="https://ieeexplore.ieee.org/document/835166">https://ieeexplore.ieee.org/document/835166</a> (Why SystemC)</p></li><li><p><a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=545676">https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=545676</a> (VHDL vs Verilog)</p></li><li><p><a href="https://dvcon-proceedings.org/wp-content/uploads/a-tale-of-two-languages-systemverilog-and-systemc.pdf">https://dvcon-proceedings.org/wp-content/uploads/a-tale-of-two-languages-systemverilog-and-systemc.pdf</a> (SystemC vs SystemVerilog)</p></li><li><p><a href="https://www.sigasi.com/opinion/jan/verilogs-major-flaw/">https://www.sigasi.com/opinion/jan/verilogs-major-flaw/</a> (about early verilog issues)</p></li><li><p><a href="https://trilobyte.com/pdf/golson_clark_snug16.pdf">https://trilobyte.com/pdf/golson_clark_snug16.pdf</a> (How Verilog, VHDL and SystemVerilog evolved)</p></li><li><p><a href="https://danluu.com/verilog-vs-vhdl/">https://danluu.com/verilog-vs-vhdl/</a> (About the SNUG Verilog vs VHDL competition)</p></li></ul><div><hr></div>]]></content:encoded></item><item><title><![CDATA[The Computer Engineering Game]]></title><description><![CDATA[Navigating life as a computer engineering student]]></description><link>https://chipinsights.net/p/the-computer-engineering-game</link><guid isPermaLink="false">https://chipinsights.net/p/the-computer-engineering-game</guid><dc:creator><![CDATA[Bharath Suresh]]></dc:creator><pubDate>Sat, 22 Mar 2025 03:59:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><p><strong>Disclaimer: Opinions shared in this, and all my posts are mine, and mine alone. They do not reflect the views of my employer(s), and are not investment advice.</strong></p><div><hr></div><p>This is a long post, so here&#8217;s the list of sub-topics to help you navigate:</p><ul><li><p><a href="https://chipinsights.substack.com/i/159596495/introduction">Introduction</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/level-the-branch-prediction-conundrum">Level 1: The branch prediction conundrum</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/level-the-compilation-grind">Level 2: The compilation grind</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/level-from-simulation-to-emulation">Level 3: From simulation to emulation</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/level-finalizing-the-floorplan">Level 4: Finalizing the floorplan</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/level-making-the-state-transition">Level 5: Making the state transition</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/bonus-level-positive-slack-optimization">Bonus Level: Positive Slack Optimization</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/difficulty-settings">Difficulty Settings</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/my-walkthrough-of-the-game">My Walkthrough of the Game</a></p></li><li><p><a href="https://chipinsights.substack.com/i/159596495/final-thoughts">Final Thoughts</a></p></li></ul><div><hr></div><h2>Introduction</h2><p>As I&#8217;m writing this, it&#8217;s been about 5 years since I graduated with an undergraduate degree in electrical engineering. Whenever I talk to current students, a part of me goes back to my time in undergrad - I think about the things I did right, things I did wrong, and how everything played out in the end. This post is an attempt to consolidate my reflections, and answer a broad question many students ask: <strong>How do I navigate my undergraduate degree to successfully pursue a career in computer engineering?</strong></p><p>A few caveats:</p><ul><li><p>When I say &#8220;Computer Engineering&#8221;, I&#8217;m specifically talking about the typical skillsets needed to design a digital computing processor.</p></li><li><p>Your time in college plays an important role in transitioning you to adult life. This post talks only about one aspect of that transition - your career. This is not a &#8220;how to live your life&#8221; guide.</p></li><li><p>This post makes most sense if you are about to start a typical 4 year undergraduate program. If you are in a different situation, you can still use some of these ideas, but modify them according to your situation.</p></li></ul><p>My initial plan was to list out a set of tips, but to make it more fun for me to write (and hopefully more fun for you to read), I have framed your progression as a game, called &#8220;The Computer Engineering Game&#8221;. Our game has 5 <strong>levels</strong>. Each level has:</p><ul><li><p><strong>Objectives:</strong> What you should achieve at the end of the level</p></li><li><p><strong>Gameplay:</strong> Different ways to achieve your objective</p></li><li><p><strong>Cheat Codes:</strong> Something you can use, if you have the option, to make the level easier (not everyone can use cheat codes, and that&#8217;s fine!)</p></li><li><p><strong>Traps:</strong> Things to watch out for as you navigate each level</p></li></ul><p>If you have understood the rules, scroll down to start your journey in the computer engineering game.</p><div><hr></div><h2><strong>Level 1: The branch prediction conundrum</strong></h2><p>Like every good processor, you need to make a key early decision as you are decoding your career.</p><p><strong>Objectives:</strong></p><p>This level has a very simple objective - at the end of this level, you need to decide whether you would like to pursue a career in computer engineering, or not. At this stage, you don&#8217;t need to know the specifics about what sub-domain within computer engineering you are interested in - it&#8217;s a simple &#8216;Yes&#8217; or &#8216;No&#8217; to computer engineering.</p><p><strong>Gameplay:</strong></p><p>I think if you are reading this, you already have some inclination towards computer engineering. I can write a whole post about what makes computer engineering great, but here, I&#8217;d like to focus on questions that highlight the realities of working as a computer engineer. These questions may sound grim, but that does not mean computer engineering is a bad career - semiconductors continue to be the vehicle on which all technological progress is built, and computer engineers make this progress happen. So treat these questions as a reality check, instead of something that drives you away from the field.</p><p>To decide if computer engineering is right for you, I suggest answering the following questions:</p><ul><li><p>At a high level, do you understand how a processor works?</p><ul><li><p>If not, that&#8217;s totally fine. You are a short video away from saying &#8216;yes&#8217; to this question. I recommend something like this: <a href="https://www.youtube.com/watch?v=cNN_tTXABUA">How a CPU Works</a>.</p></li><li><p>If you have the time, the extended version of this video is a book called <strong>But How Do It Know</strong> by J Clark Scott.</p></li></ul></li><li><p>Does the idea of designing a computing chip (like a processor) excite you?</p><ul><li><p>If the answer is No, computer engineering is likely not the best choice for you.</p></li></ul></li><li><p>Do you like problem solving and debugging?</p><ul><li><p>Your daily job would involve thinking very deeply about problems. It sounds cool on paper, but advancing in this career needs you to continue to be an excellent problem solver over many decades. There are other careers (and I mean no disrespect to them while saying this), which are primarily based on different skills - like communication, planning, and so on. Computer engineering isn&#8217;t like that.</p></li></ul></li><li><p>A career in computer engineering is slow moving - you need to spend many years at what you do to feel (and be recognized) as an important contributor. Does that sit well with you?</p><ul><li><p>I think doing great things takes time in any field, but some others like software engineering have quicker feedback and progress (like quicker promotions, and more opportunities to change jobs). It&#8217;s important to understand, and accept this reality about computer engineering jobs today.</p></li></ul></li><li><p>Can you tolerate longer project cycles?</p><ul><li><p>This is a nuanced extension of the previous point. But depending on your role, the product you are working on could take anywhere from 6 months to 5 years to be fully realized. A lot of people are motivated by seeing their work out in the world quickly. I get that, but the complexity of modern semiconductor manufacturing does not allow for this. There is a good chance you may not be in the same role when the product you worked on is actually released.</p></li></ul></li><li><p>You might make lesser money than some of your peers as you are starting your career. Is that an acceptable tradeoff?</p><ul><li><p>As much as I hate saying this, the honest truth is that if you are a smart, driven individual looking to make the most money, there are better options than computer engineering (fields like software engineering and quantitative finance come to mind). There is a fundamental reason why this might never change - computer engineering companies produce physical products (or sell to others who produce physical products), and it costs money to make these physical products. Having said that, computer engineering salaries have been increasing recently, and continue to be on the higher end of the overall salary distribution among all careers.</p></li><li><p>Despite what I said, you also need to ask yourself a different question here: can I be one of the best computer engineers? I think the best computer engineer would make more money than the average in other fields, so if you think you can be one of the best, then money shouldn&#8217;t be a problem.</p></li></ul></li></ul><p>It&#8217;s important to take time, gather more information, and answer these questions carefully. If you can say YES to all these questions, computer engineering is a great career choice for you and you can move forward to level 2. If there are some clear NOs, I think you should look at other careers.</p><p><strong>Cheat Codes:</strong></p><ul><li><p>Do you have a friend or family member that works as a computer engineer? If yes, ask them questions to understand what you might be getting into. Go to their workplace, see what they do on a daily basis.</p></li><li><p>Can you get some part time work in computer engineering? College clubs are one way. Other options could be to get some (likely unpaid) internship, or work in a research lab at your university.</p></li></ul><p><strong>Traps:</strong></p><ul><li><p>While making this decision, separate the &#8220;product&#8221; from the &#8220;job role&#8221;. I did say you need to be excited by processors to take up this career, but that&#8217;s the least significant question in my list. Unfortunately, we do not have one man computer engineering teams today - maybe AI can change that, but until then, you only play a role in making a product (especially early in your career). This is different from a solopreneur who can design an app by themselves - here, the line between &#8220;product&#8221; and &#8220;job role&#8221; starts to blur)</p></li><li><p>Don&#8217;t take up computer engineering for a specific company, or the money. Companies become irrelevant quickly, and the money comes at the cost of a challenging job. These external factor should be treated as a nice to have, not the basis for your decision.</p></li><li><p>I mentioned college clubs. While they are an effective way to get hands on experience, they sometimes present a rose tainted picture. Your experience will be seriously impacted by how you feel about the people in the club. It is unlikely that you will work with the same set, or even same type of people in the future. Take only the work aspect of your college club experience while making a career decision.</p></li><li><p>It&#8217;s understandable if you change your mind later, but don&#8217;t rush through this level - it is more optimal to spend more time in Level 1, make the right decision, that to regret your decision in a few years.</p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h2><strong>Level 2: The compilation grind</strong></h2><p>Assemble information from different sources and create a binary representation in your head.</p><p><strong>Objectives:</strong></p><p>Welcome to level 2. Your goal in this level is to understand the fundamental ideas in computer engineering. Broadly, I have defined three main categories which are important:</p><ul><li><p>Electrical Engineering 101</p></li><li><p>Computer Engineering 101</p></li><li><p>Computer Science 101</p></li></ul><p><strong>Gameplay:</strong></p><p>Let&#8217;s look at each category from above in more detail. I&#8217;ll provide a &#8220;bare-minimum&#8221; list of topics to be covered, along with a free, publicly available course as a template for each topic.</p><p><strong>Electrical Engineering 101</strong></p><p>This includes fundamental topics in electrical engineering - usually these are required courses for any student pursuing an electrical engineering degree. There are two fundamental categories of courses I recommend here:</p><ul><li><p>Circuits 101</p><ul><li><p>Topics:</p><ul><li><p>Basic circuit analysis methods</p></li><li><p>Analog vs Digital circuits</p></li><li><p>How do fundamental circuit components work - Capacitors, Diodes, MOSFETs, Operational Amplifiers, Memory elements, and Filters</p></li></ul></li><li><p>An Example Course: <a href="https://ocw.mit.edu/courses/6-002-circuits-and-electronics-spring-2007/pages/lecture-notes/">https://ocw.mit.edu/courses/6-002-circuits-and-electronics-spring-2007/pages/lecture-notes/</a></p></li></ul></li><li><p>Signals 101</p><ul><li><p>Topics:</p><ul><li><p>Continuous vs Discrete signals and how to mathematically represent them</p></li><li><p>Manipulating signals - why, and how?</p><ul><li><p>Useful operations - Convolution, Filtering, Modulation, Sampling, and Interpolation</p></li><li><p>Transforms to change signal representations (Fourier, Laplace, Z transforms)</p></li></ul></li><li><p>Systems with feedback</p></li></ul></li><li><p>An Example Course: <a href="https://ocw.mit.edu/courses/res-6-007-signals-and-systems-spring-2011/pages/lecture-notes/">https://ocw.mit.edu/courses/res-6-007-signals-and-systems-spring-2011/pages/lecture-notes/</a></p></li></ul></li></ul><p><strong>Computer Engineering 101</strong></p><p>I have defined this category to include the basic courses that will tell you more about the building blocks of a modern computer. I&#8217;m sharing two reference courses here:</p><ul><li><p>Digital Logic Design</p><ul><li><p>Topics:</p><ul><li><p>Combinational logic blocks</p></li><li><p>Arithmetic blocks</p></li><li><p>Sequential logic blocks</p></li><li><p>State Machines</p></li><li><p>Memory</p></li></ul></li><li><p>An Example Course: <a href="https://ocw.mit.edu/courses/6-111-introductory-digital-systems-laboratory-spring-2006/pages/lecture-notes/">https://ocw.mit.edu/courses/6-111-introductory-digital-systems-laboratory-spring-2006/pages/lecture-notes/</a></p></li></ul></li><li><p>Computer Organization</p><ul><li><p>Topics:</p><ul><li><p>How instructions/data move in a computer</p></li><li><p>Data representation in computers - binary/hexadecimal, floating point representations</p></li><li><p>Things computers can do - arithmetic/logic, data movement, conditional execution</p></li><li><p>Computer architecture concepts at a high level - Pipelining, Caching, Memory hierarchy</p></li></ul></li><li><p>An Example Course: <a href="https://www.youtube.com/playlist?list=PL-Mfq5QS-s8iUJpNzCOtQKRfpswCrPbiW">https://www.youtube.com/playlist?list=PL-Mfq5QS-s8iUJpNzCOtQKRfpswCrPbiW</a></p></li></ul></li></ul><p><strong>Computer Science 101</strong></p><p>This is an important category, and the one that is most often neglected. (Most universities do not enforce these as mandatory requirements for an electrical engineering degree.) However, a good computer engineer should at least know as much computer science as a CS sophomore. Any CS 101 course would do. (Harvard CS 50 is a popular choice - <a href="https://www.youtube.com/playlist?list=PLhQjrBD2T381WAHyx1pq-sBfykqMBI7V4">https://www.youtube.com/playlist?list=PLhQjrBD2T381WAHyx1pq-sBfykqMBI7V4</a>).</p><p>The topics covered by such a course would be:</p><ul><li><p>Types of programming languages, and compilation flow</p></li><li><p>Basic programming constructs (pick any one language here)</p></li><li><p>Fundamental data structures (Arrays, Stack, Queue, Linked Lists)</p></li><li><p>Simple algorithms (Search, Sort, Recursion)</p></li><li><p>Memory allocation (pointers, dynamic memory, segmentation fault)</p></li></ul><p>At the end of this level, you should be able to answer the following questions:</p><ul><li><p>What are the fundamental components in electronic circuits, and how do they work?</p></li><li><p>How do we represent physical values in digital form? (this is why you need the Signals 101 course!)</p></li><li><p>What is digital logic, and what are the building blocks of a digital circuit?</p></li><li><p>How does a processor work? (You might realize I asked this in level 1 as well. In level 2, you should have a much more detailed answer)</p></li><li><p>Given a problem, and I know a solution to the problem, can I write a program to solve the problem for me?</p></li></ul><p><strong>Cheat Codes:</strong></p><ul><li><p>The name of the game in level 2 is: &#8220;Cover maximum number of topics, with minimum overlap&#8221;. So depending on the university you are in, or the material you are using, you could optimize this level - for example, you may find a course that combines Digital Logic Design with Computer Organization.</p></li><li><p>Programming coursework has become a lot more accessible, so you can try to finish your CS 101 topics before you start level 2. (Don&#8217;t worry, even if you choose not to pursue computer engineering after level 1, programming is a valuable skill that you will end up using at some point in your career)</p></li><li><p>Prefer courses that have a lab or project component. Often, these courses involve more work, but as you will see, they will save you time in level 3.</p></li></ul><p><strong>Traps:</strong></p><ul><li><p>What you learn in level 2 is the foundation for everything that comes next in your computer engineering career. Resist the temptation to skip topics or breeze through this level. Any additional time spent here, will speed up your upcoming levels.</p></li><li><p>If you are in a university, following their curriculum is good enough for level 2. You don&#8217;t need to do anything fancy here. Introductory courses at universities are usually well designed - there is no need to game the system.</p></li><li><p>There is a tendency for students pursuing computer engineering to assume that programming is optional, or that they only need conceptual understanding of programming. If you feel this way, please get this thought out of your head. Being a good programmer is now a prerequisite for most computer engineering careers. The earlier you start programming, the more you will do it, and the better you will become. I can&#8217;t stress this enough - programming is just as important as anything else you do in this level!</p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h2><strong>Level 3: From simulation to emulation</strong></h2><p>Time to load up some real hardware</p><p><strong>Objectives:</strong></p><p>In Level 3, you are going to put the theoretical knowledge from level 2 into practice. The goal is to identify the type of work you like, while simultaneously earning some CV points. At the end of this level, you should be able to answer the following question: <strong>What kind of computer engineering job would I like in the future?</strong></p><p><strong>Gameplay:</strong></p><p>Remember how I said level 2 is straightforward if you are enrolled at a university? Level 3 is on the other extreme - it is mostly self-driven. There are many types of &#8220;real-world&#8221; jobs that you can do to achieve the objective of this level. I&#8217;ll talk about three common approaches that I have experienced:</p><p><strong>Corporate Internships:</strong></p><p>In my experience, these are the most sought after, and as a consequence, the hardest to get at this level. However, at major tech companies, especially in the US, I see a lot of students interning very early in their academic career (even right after their first year!). If your goal is to work at one of these companies in the future, this is a perfect opportunity to see what your life would look like (FYI - interns get much better treatment than employees to lure them to join, but you can still assume you would get 80% of what you see.) I don&#8217;t have too much to say about this category, except that hiring at this level is fairly random (there isn&#8217;t too much to differentiate candidates). So everyone should try for one of these, but it&#8217;s not the end of the world if you don&#8217;t land one at this level.</p><p><strong>Working with a professor:</strong></p><p>This is what I would classify as the &#8220;sweet spot&#8221; for this level. Good professors encourage students to work with them, and be involved in their research group. I also think academic research is perfect for this level, because it gives you an understanding of what&#8217;s new in the field - so you pick a more future-proof career. I&#8217;ll just throw in a few caveats:</p><ul><li><p>Don&#8217;t expect too much attention from the professor that you are working with. All you need from the professor is to introduce you to the other members in the group, and involve you in their discussions. The rest is on you.</p><ul><li><p>For the goals of this level, you actually don&#8217;t need a hands-on advisor. Reach out to other members who have been in the group longer (like PhD students) to get started.</p></li><li><p>If you really want the professors attention, &#8220;show, don&#8217;t tell&#8221;. Give them something useful, don&#8217;t give them more work to do.</p></li></ul></li><li><p>Do an actual project as part of your research. Reading papers is important, and that&#8217;s how you get started at this level, but you should quickly move on to actually producing some results. The purpose of this level is to get experience working in the field - so don&#8217;t just read.</p></li></ul><p><strong>Personal Projects:</strong></p><p>After reading the first two categories in this section, this might look meek to you. But this was my main intention for this level. A personal project may not look as good on your resume, but it&#8217;s actually more useful than internships for this level, because:</p><ul><li><p>Anyone can do it</p></li><li><p>You can do multiple such projects</p></li><li><p>You can choose exactly what you want to work on</p></li></ul><p>My suggestion before embarking on a personal project is to actually talk to someone who has more experience than you - could be a college senior, or just someone who is at the position you want to be. Ask them what kinds of projects would be useful for your goals. This will ensure that your experience is realistic and actually prepares you towards your future career.</p><p>If you want to make this a bit more formal, I suggest looking into some open source projects/programs in your field of interest. Unfortunately, computer engineering lacks dedicated programs like software engineering, but you can still find some hardware engineering projects in something like Google Summer Of Code (GSoC). Also, open source EDA is on the rise, and <a href="https://chipinsights.substack.com/p/eda-deep-dive-part-2-open-source">I have shared some resources in an earlier post</a> that would also help in getting started.</p><p>I want to end by saying one thing - irrespective of whether you are working on an established open source project or something you just cooked up yourself, document it with all the details. If you have code, have a well maintained repo on Github. I think documenting helps you learn better, but more importantly, it can legitimize your projects - solid documentation seen by the right person could open up a lot of doors in your career.</p><p>I want to end with some questions that you should be able to answer at the end of this level.</p><ul><li><p>Do I like working in a lab, or do I like working in an office?</p></li><li><p>Do I like the slow grind of research, or the fast pace of corporate life?</p></li><li><p>What subdomain do I want to explore in more detail? (Spoiler alert, you will lock this down in level 4.)</p></li></ul><p><strong>Cheat Codes:</strong></p><ul><li><p>One of the best ways to be accepted into a professor&#8217;s research group is to take a course with them, secure a good grade, and reach out to them as the course is about to end. Even if you don&#8217;t have a good grade, give this a try if you liked the course - professors prioritize familiarity over anything else.</p></li><li><p>If you know someone that can get you some unpaid projects at their workplace, you can take that up. But remember that if you are doing unpaid work at this level, you should be compensated with flexibility - in terms of what you want to work on, and for how long. Use that flexibility to your advantage.</p></li><li><p>If you had a project in one of your courses in level 2, the easiest way to play level 3 is to just take that project to the next level. But try to expand your knowledge while doing this so that it takes you closer to the objective of this level.</p></li></ul><p><strong>Traps:</strong></p><ul><li><p>A lot of students assume this is an optional level - it is not! I understand that not everyone might get an internship at Google, or be accepted into a professors research group, but you can certainly do a project on your own - there are great resources available for free. (Even if you have no ideas, today, you can ask ChatGPT to come up with an idea for you, and tell you exactly how to implement the idea!)</p></li><li><p>When looking for work opportunities at this level, a lot of students optimize for the wrong things - money, or reputation. Don&#8217;t do that. I&#8217;m not giving generic advice like &#8220;follow your passion&#8221;. The reality is that at this level, you don&#8217;t have enough leverage to demand either - so it is better for you to focus on the type of work, and bet on the long term.</p></li><li><p>If you were able to score a corporate internship, that&#8217;s fantastic. But remember that it could be a double edged sword - you might be doing dull, redundant work that does not push you towards the objectives of this level. I would still suggest taking up corporate internships if they are available, but if you have more than one option, choose wisely.</p></li><li><p>It&#8217;s okay if you want to work on group projects. But it is very important that you get your hands dirty and make significant individual contributions to the project - otherwise, you won&#8217;t really know if you like the work, or you just like the end result of your group project.</p></li><li><p>Don&#8217;t undersell yourself - successful applications at this level are mostly a result of confidence. If you have done level 2 right, you have the skillset needed to manage most tasks you would be working on. The bar is very low for positions at this level.</p></li></ul><div><hr></div><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h2><strong>Level 4: Finalizing the floorplan</strong></h2><p>Place all your blocks at the right place, and start to connect them. The quality of chip you end up with depends on this!</p><p><strong>Objectives:</strong></p><p>This level has two missions</p><ul><li><p>You need to decide what sub domain in hardware engineering you want to pursue</p></li><li><p>You need to get proficient with the coursework for those sub-domains.</p></li></ul><p>At the end of this level, you will have the skillsets needed to move forward to a career in your desired sub-domain.</p><p><strong>Gameplay:</strong></p><p>Level 4 is the longest level in this game. Here, you will be taking up advanced, but niche coursework (If you remember, level 2 had fundamental, but broad courses). At the university level, these courses are usually &#8220;electives&#8221;, or optional - which means you need to put together the best combination of courses for your needs. Along the way, you also need to decide on the sub-domain you want to start your career in.</p><p><strong>What are the different sub-domains?</strong></p><p>I have classified all the traditionally useful skills in computer engineering into three broad categories, each with three sub-categories:</p><ul><li><p><strong>Building the chip:</strong> This includes roles that are needed to create a semiconductor chip from a concept. I would say this is roughly what is called <strong>Digital VLSI Design</strong>. It covers the following areas:</p><ul><li><p><strong>Microarchitecture design:</strong> Here, you take some functionality, and come up with the most efficient arrangement of digital logic blocks to implement that functionality. Traditionally, this involves RTL (Register Transfer Level) design using a HDL (Hardware Description Language) like Verilog.</p></li><li><p><strong>Physical design:</strong> This is where you actually decide where each transistor should be placed, and how they should be connected. Today, this is achieved using EDA (Electronic Design Automation) tools - so the role of a physical design engineer is to understand how to use these EDA tools to get the best possible chip.</p></li><li><p><strong>Verification:</strong> When you build a chip, it is crucial that you build something that works as expected. This is where verification comes in. Verification happens at many levels in the chip design process - functional verification (called DV (design verification)), performance verification, verification after the chip is manufactured (post-silicon), and so on.</p></li></ul></li><li><p><strong>Making the chip usable:</strong> When you design a chip, all you have is a fancy looking solid made of silicon and other materials. A chip becomes useful when it comes with some supporting software that makes it capable of running existing applications (like booting an operating system, or running a game). This is where skills in this category come into the picture. I am mentioning three sub-topics to better explain this role:</p><ul><li><p><strong>Compiler design:</strong> If you finished the Computer Science 101 course in level 2, you know what a compiler is. Depending on the type of chip you have designed, you will either need to modify existing compilers to fit your needs, or build a new compiler from scratch.</p></li><li><p><strong>Driver design:</strong> A driver is a piece of software that ensures that your chip can communicate with the operating system you are building for. This is another key component that most computing chips need.</p></li><li><p><strong>Firmware design:</strong> Not everything the chip does is governed by the user application (through the compiler) or the operating system (through the driver). There are some tasks that need to be run automatically - for example, when a chip is first booted up, some tasks needs to be executed to make sure it works correctly. This is done through a special type of software called firmware.</p></li></ul></li><li><p><strong>Analyzing the chip:</strong> This includes what we commonly refer to as &#8220;Architecture roles&#8221; (Not the house building kind :) ). Computer architecture is simultaneously the first and last step in chip design - you analyze how your current chip has done, and what your next chip should do. I have divided architecture roles into three categories:</p><ul><li><p><strong>Modelling:</strong> Come up with a software version of the chip, so that new features can first be experimented there (before you ask someone to &#8220;Build the chip&#8221;)</p></li><li><p><strong>Workload analysis:</strong> A workload is a standard piece of software that is meant to demonstrate the operations needed for a particular application. A workload analysis role is needed to ensure that workloads execute efficiently on the current chips, and also identify bottlenecks for future chips to address.</p></li><li><p><strong>PPA/Competitive analysis:</strong> This is closely related to workload analysis, but here, you focus on Performance, Power, Area (PPA) on your current chip, and try to compare it with what your competitors are doing, to plan for future generations of the chip.</p></li></ul></li></ul><p>There may be other roles that don&#8217;t fit exactly into one of these categories, but broadly, this covers the typical skills you would find in a chip design team.</p><p><strong>Suggested Coursework:</strong></p><p>I&#8217;ll start with courses that I think you should do, irrespective of the sub-domain you are interested in. I&#8217;ll use the same format as level 2.</p><ul><li><p><strong>Computer Architecture:</strong></p><ul><li><p>Topics:</p><ul><li><p>Instruction Set Architectures (ISA)</p></li><li><p>Pipelined processors</p></li><li><p>Handling Hazards</p></li><li><p>Out of Order execution</p></li><li><p>Memory hierarchy and caching</p></li></ul></li><li><p>An Example Course: Onur Mutlu&#8217;s Computer Architecture lectures - <a href="https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq">https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq</a></p></li></ul></li><li><p><strong>VLSI Design Flow:</strong></p><ul><li><p>Topics:</p><ul><li><p>Cover the different steps from RTL to GDS</p><ul><li><p>RTL design and simulation</p></li><li><p>Logic synthesis and static timing analysis</p></li><li><p>Floorplanning, placement, routing</p></li><li><p>Clocks and clock distribution networks</p></li><li><p>Verification and testing</p></li></ul></li><li><p>A simple project covering all these steps would be a nice add-on</p></li></ul></li><li><p>An Example Course: NPTEL VLSI Design Flow: RTL to GDS - <a href="https://nptel.ac.in/courses/108106191">https://nptel.ac.in/courses/108106191</a></p></li></ul></li><li><p><strong>Operating Systems:</strong></p><ul><li><p>Topics:</p><ul><li><p>Processes and Threads</p></li><li><p>Synchronization</p></li><li><p>Scheduling</p></li><li><p>File handling</p></li><li><p>Interrupt/Exception handling</p></li><li><p>Virtualization</p></li></ul></li><li><p>An Example Course: CSE 421 by Geoffrey Challen - https://ops-class.org/</p></li></ul></li></ul><p><strong>Coursework specific to your sub-domain:</strong></p><ul><li><p><strong>Building the chip</strong></p><ul><li><p>CMOS Digital VLSI Design</p><ul><li><p>Topics:</p><ul><li><p>What is CMOS design</p></li><li><p>Building combinational CMOS logic circuits</p></li><li><p>Building sequential CMOS logic circuits</p></li><li><p>Designing memory circuits</p></li><li><p>Metrics to analyze different circuits - logical effort, fanout, parasitics, etc</p></li></ul></li><li><p>An Example Course: IIT Roorkee CMOS VLSI Design - <a href="https://www.youtube.com/playlist?list=PLLy_2iUCG87Bdulp9brz9AcvW_TnFCUmM">https://www.youtube.com/playlist?list=PLLy_2iUCG87Bdulp9brz9AcvW_TnFCUmM</a></p></li></ul></li><li><p>VLSI Design Automation (how EDA tools work)</p><ul><li><p>Topics:</p><ul><li><p>Algorithms to implement different steps in the RTL to GDS flow</p><ul><li><p>Synthesis</p></li><li><p>Floorplanning</p></li><li><p>Placement</p></li><li><p>Routing</p></li><li><p>Clock Tree Synthesis</p></li></ul></li></ul></li><li><p>An Example Course: IIT Kharagpur VLSI Physical Design - <a href="https://www.youtube.com/playlist?list=PLU8VFS-HdvKtKswbcvvA8yVhzleTV7OE8">https://www.youtube.com/playlist?list=PLU8VFS-HdvKtKswbcvvA8yVhzleTV7OE8</a></p></li></ul></li><li><p>Some bonus courses</p><ul><li><p>A dedicated RTL design course - <a href="https://www.youtube.com/playlist?list=PLwdnzlV3ogoVlY7iVqr-FhWUQEX7JDdiP">https://www.youtube.com/playlist?list=PLwdnzlV3ogoVlY7iVqr-FhWUQEX7JDdiP</a></p></li><li><p>A course on verification methodologies (UVM/OVM) - <a href="https://www.youtube.com/playlist?list=PLBIILfL2t1lnvzw7vF0arlvu36Wj4--D7">https://www.youtube.com/playlist?list=PLBIILfL2t1lnvzw7vF0arlvu36Wj4--D7</a></p></li><li><p>FPGA and High Level Synthesis - <a href="https://www.youtube.com/playlist?list=PLf4U4tpbjjz7x_bsG3sBEuXgVQPZfWJgW">https://www.youtube.com/playlist?list=PLf4U4tpbjjz7x_bsG3sBEuXgVQPZfWJgW</a></p></li></ul></li></ul></li><li><p><strong>Making the chip usable</strong></p><ul><li><p>Compilers</p><ul><li><p>Topics:</p><ul><li><p>Lexical analysis</p></li><li><p>Parsing and Abstract syntax trees</p></li><li><p>Semantics</p></li><li><p>Register allocation</p></li><li><p>Code generation</p></li></ul></li><li><p>An Example Course: Stanford Compilers - <a href="https://www.youtube.com/playlist?list=PLTsf9UeqkRebOYdw4uqSN0ugRShSmHrzH">https://www.youtube.com/playlist?list=PLTsf9UeqkRebOYdw4uqSN0ugRShSmHrzH</a></p></li></ul></li><li><p>Data Structures and Algorithms</p><ul><li><p>Topics:</p><ul><li><p>Standard DSA topics like different data structures, and their use in algorithms like sorting, searching, etc</p></li></ul></li><li><p>An Example Course: MIT OCW DSA course - <a href="https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/">https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/</a></p></li></ul></li><li><p>Some bonus courses</p><ul><li><p>Programming Language Design - <a href="https://ocw.mit.edu/courses/6-821-programming-languages-fall-2002/">https://ocw.mit.edu/courses/6-821-programming-languages-fall-2002/</a></p></li><li><p>Something related to LLVM/GCC internals - <a href="https://www.youtube.com/playlist?list=PLlONLmJCfHTo9WYfsoQvwjsa5ZB6hjOG5">https://www.youtube.com/playlist?list=PLlONLmJCfHTo9WYfsoQvwjsa5ZB6hjOG5</a></p></li></ul></li></ul></li><li><p><strong>Analyzing the chip</strong></p><ul><li><p>Parallel computer architecture</p><ul><li><p>Topics</p><ul><li><p>Multicore</p></li><li><p>Multithreading</p></li><li><p>Caching in multicore</p></li><li><p>Interconnects and Dataflow between cores</p></li></ul></li><li><p>An Example Course: CMU 742 - <a href="https://www.youtube.com/playlist?list=PL5PHm2jkkXmh4cDkC3s1VBB7-njlgiG5d">https://www.youtube.com/playlist?list=PL5PHm2jkkXmh4cDkC3s1VBB7-njlgiG5d</a></p></li></ul></li><li><p>Computer Networks</p><ul><li><p>Topics</p><ul><li><p>Packet Switching basics</p></li><li><p>TCP/IP</p></li><li><p>Router design</p></li><li><p>Multicast networks</p></li><li><p>Security and scalability considerations</p></li></ul></li><li><p>An Example Course: MIT OCW Computer Networks course - <a href="https://ocw.mit.edu/courses/6-829-computer-networks-fall-2002/">https://ocw.mit.edu/courses/6-829-computer-networks-fall-2002/</a></p></li></ul></li><li><p>Some bonus courses</p><ul><li><p>A course on GPUs, or Domain specific (like AI) accelerators - <a href="https://www.youtube.com/playlist?list=PLbRMhDVUMngfj_NXI7jqMYLnhcRhRKAGq">https://www.youtube.com/playlist?list=PLbRMhDVUMngfj_NXI7jqMYLnhcRhRKAGq</a></p></li><li><p>A course dedicated to memory systems - <a href="https://safari.ethz.ch/memory_systems/ACACES2024/doku.php?id=start">https://safari.ethz.ch/memory_systems/ACACES2024/doku.php?id=start</a></p></li></ul></li></ul></li></ul><p><strong>How to navigate this level:</strong></p><p>So far, I have listed the different sub-domains in computer engineering, and the different courses in each sub-domain. Ideally, if you already know what sub-domain you want to pursue, all you need to do is to take up the coursework for that sub-domain. But often, you are still discovering your interests. I recommend an iterative process like this:</p><ul><li><p>Ask yourself if you know what sub-domain you want to pursue</p><ul><li><p>If Yes, great, focus on courses in that domain</p></li><li><p>If No, take a broad course (or one of the mandatory ones I mentioned), and try to find your interest</p></li></ul></li><li><p>Repeat this until you converge at one sub-domain.</p></li></ul><p><strong>Cheat Codes:</strong></p><ul><li><p>All courses you do here should ideally be accompanied with a project. If it is not, make a pseudo project on your own - it could be as simple as a review of state of the art research in the field. This will help in your decision making process, and also make your life easier in level 5.</p></li><li><p>Similar to level 2, if your university offers courses that cover maximum number of topics in minimum number of courses, that would help you reach your goal more easily.</p></li><li><p>Use your learnings from level 3 here:</p><ul><li><p>If you liked, and were successful at the projects you took up in level 3, that&#8217;s a good indicator towards the sub-domain you should pursue.</p></li><li><p>If you really disliked a project you did, use that signal to eliminate sub-domains</p></li></ul></li></ul><p><strong>Traps:</strong></p><ul><li><p>I understand if I get some pushback for recommending a VLSI course to someone interested in compilers/firmware, or an OS course to a VLSI engineer - but I think there is value, especially in the long run.</p><ul><li><p>As someone working in the software side, understanding the VLSI flow will help you make better decisions about hardware vs software tradeoffs (Basically, you can answer the question: why is something implemented at compiler/driver/firmware level, when it can be implemented directly in hardware?)</p></li><li><p>As a VLSI engineer, understanding how the operating system works can help you extrapolate how a change in hardware propagates to the application, and can push you to do more impactful work for your organization</p></li></ul></li><li><p>This level could become extremely long if you go into &#8220;analysis paralysis&#8221; mode and cannot decide on the sub-domain you want to take up. Take your time, but remember that they are all equally important aspects in hardware engineering and your goal is largely the same - to build the best computing chip. Think about the type of job you would like doing, and give yourself a hard deadline to take a decision. The sooner you decide, the more time you will have to become more specialized in your sub-domain.</p></li><li><p>Some of you reading this might actually be high performers that feel they can cover all sub-domains. That&#8217;s a great attitude, but I still recommend going deep in one sub-domain at this level. I will talk more about how you can maximize your skills in an upcoming &#8220;bonus level&#8221;.</p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h2><strong>Level 5: Making the state transition</strong></h2><p>As the clock hits &#8220;posedge&#8221; (I.e. &#8220;positive clock edge&#8221; in Verilog), its time to take the leap.</p><p><strong>Objectives:</strong></p><p>This level is meant to successfully transition you from a student of hardware engineering, to a practitioner. At the end of this level, you should:</p><ul><li><p>Know what you are going to do next</p></li><li><p>Have the means to get there</p></li></ul><p><strong>Gameplay:</strong></p><p>Most of us don&#8217;t play the hardware engineering game for fun - there are typically two outcomes:</p><ol><li><p>Join the hardware engineering industry</p></li><li><p>Pursue advanced training (like graduate school)</p></li></ol><p>Each of these topics deserve their own post (which I want to compile at some point.) Here, I&#8217;ll just talk about reasons to pick one over the other, and briefly mention few ways to be better placed for these opportunities.</p><p><strong>What should you do in level 5</strong></p><ul><li><p><strong>Draft a strong CV that is ready to be shared</strong></p><ul><li><p>I&#8217;m not talking about specifics here like 1 page only, action points, etc. The key is &#8220;maximum impact in minimum space&#8221; - whatever that means to you</p></li><li><p>Make sure to link to documentation of the projects you pursued (this is why I mentioned documentation as a key in level 3)</p></li></ul></li><li><p>Decide which path you want to pursue in the future</p><ul><li><p><strong>Reasons why you should take up a job</strong></p><ul><li><p>You need financial stability in your life</p></li><li><p>You want to gain some work experience to move to something different (like an MBA, or management roles)</p></li><li><p>You want to see how things are working in the real world</p></li><li><p>You want a break from the academic life</p></li></ul></li><li><p><strong>Reasons why you should go to grad school</strong></p><ul><li><p>You feel you want to gain expertise in some niche topic (this should lead you to a PhD)</p></li><li><p>Either the role, or the location is inaccessible without graduate school (this is a common reason why students pursue a Masters in the US)</p></li><li><p>You have some fellowship or funding opportunity that makes grad school financially attractive</p></li><li><p>You want to pursue a career in academia</p></li><li><p>You want to change sub-domains</p></li></ul></li></ul></li></ul><p><strong>What should you do in level 5, specifically if you want to take up a job</strong></p><ul><li><p><strong>Prepare for job interviews</strong></p><p>It&#8217;s not ideal, but there are some aspects of interview preparation that are not covered well through your coursework - so I recommend taking interview preparation as an independent task, and giving it sufficient time and effort.</p><p>I have a post that talks more about how to prepare for interviews for some roles here: <a href="https://chipinsights.substack.com/p/hardware-engineering-interview-resources">https://chipinsights.substack.com/p/hardware-engineering-interview-resources</a></p></li><li><p><strong>Actively reach out for jobs in your desired sub-domain</strong></p><p>Here are some ways:</p><ul><li><p>Apply directly on job sites of your target company (if you have the right profile, you&#8217;ll be surprised how often this works)</p></li><li><p>Through your university (see Cheat Codes below)</p></li><li><p>Through contacts you made in earlier levels (Internships, Projects, etc)</p></li><li><p>Through social media like LinkedIn</p><ul><li><p>Recruiters are active here - you can directly reach out to them</p></li><li><p>Some managers post when they have openings</p></li><li><p>Just message strangers (even if people can&#8217;t directly hire you, most people would offer you a referral at their companies)</p></li></ul></li><li><p>Attend industry conferences or networking events (this is a bit of a lucky draw, but you may stumble upon the right person)</p></li></ul></li></ul><p><strong>What should you do in level 5, specifically if you want to go to grad school</strong></p><ul><li><p><strong>Start connecting the dots from level 1 to 4</strong></p><p>A key component of any graduate school application is a &#8220;Statement of Purpose&#8221; - something that explains why you want to pursue graduate school in the first place. In level 5, you need to start thinking about the story - and the way you make it stand out is by combining all the aspects of your journey.</p></li><li><p><strong>Focus on academic research</strong></p><p>Even if you have no experience working with research group or publishing papers in levels 1 through 4, if you want to go to graduate school, I highly recommend doing that now. Typically, this means working with a research group at a university, and producing at least one of the following artifact:</p><ul><li><p>A research paper</p></li><li><p>A thesis/dissertation</p></li><li><p>A strong letter of recommendation from your supervisor</p></li></ul></li><li><p><strong>Maximize your grades</strong></p><ul><li><p>I have not really spoken about the value of grades in this post - I think it&#8217;s a convoluted debate for another day. But grades actually play a very important role in your graduate school application. Ideally, your grades would stay healthy from the start; but even if you are at the end of your program, pushing for some good grades is still useful.</p></li></ul></li><li><p><strong>Come up with a list of universities you want to apply to for graduate school</strong></p><ul><li><p>This depends a lot on what your goals out of grad school are. In summary, it depends on the following factors</p><ul><li><p>Matching your interests/background with that of professors at the university</p></li><li><p>Prospects after grad school (job? academia?)</p></li><li><p>Location/Expenses</p></li></ul></li></ul></li><li><p><strong>Prepare all the pre-requisites for graduate school applications</strong></p><ul><li><p>Do I need to take some aptitude tests like the GRE</p></li><li><p>What all do I need to apply (like recommendation letters, documents from your undergraduate university)</p></li></ul></li></ul><p><strong>Cheat Codes:</strong></p><ul><li><p>If you are studying in a reputed university, you can use that to your advantage when looking for jobs, through:</p><ul><li><p>career fairs or campus placements</p></li><li><p>if you have worked closely with a professor who has industry ties, they may also be able to get your profile at the right hands</p></li><li><p>Reach out to alumni who are now working at your target companies</p></li></ul></li><li><p>If you are still at university while doing this level, apply for an internship first instead of a full-time job: companies are more likely to convert their interns to full-time than to hire from outside.</p></li><li><p>I think in today&#8217;s world, it really helps if you have some kind of &#8220;influence&#8221; on social media that comes from your projects - so post about your projects, experiences, learnings on places like LinkedIn or Twitter. Level 1 to 4 is about grinding when no one is watching, but level 5 is about grabbing eyeballs, so use social media to your advantage.</p></li><li><p>It is usually easy to transition from an undergraduate to graduate degree at the same university. You may also be able to pursue a accelerated BS+MS program. This is a good hack to do grad school, but ensure that doing this is actually helping you end up where you wanted to after grad school.</p></li><li><p>I believe that if you have done level 1 to 4 right, and you have some financial flexibility, both these options should be realistic for you. In that case, there is nothing wrong in trying for both, and deciding which one to choose based on your options - for example, you might want to take up graduate school only if you are admitted at a specific university, or you might want to take up a job only if it is at a certain company. In cases like this, pursue both paths together and buy yourself more time to decide.</p></li></ul><p><strong>Traps:</strong></p><ul><li><p>Resist the temptation of short term gains. I see a lot of students going through level 1 to 4 perfectly, but ending up with a job in software engineering or finance because it has a 10% higher salary. I completely understand that money is important, but if you like computer engineering and can afford a minor short term financial hit, stay with it - with strong fundamentals, you will have a richer (literally) career in the future.</p></li><li><p>Be very careful before you take up graduate school - it usually comes with a financial strain, and immigration laws in countries like the US puts additional pressure on you. Take up graduate school only when you feel you are truly ready.</p><ul><li><p>This point is more important if you are also using grad school as an opportunity to change sub-domains (for example, from RTL design to compiler design) - avoid this if there is already a lot of uncertainty in your life.</p></li></ul></li><li><p>Remember that applications for a job, or for grad school, usually take place many months before you graduate - so if you want no breaks in your career, you need to act fast on level 5</p></li></ul><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h2><strong>Bonus Level: Positive slack optimization</strong></h2><p>If you &#8220;meet timing&#8221;, you have the luxury to optimize for power, area and other aspects of your chip</p><p><strong>Objectives:</strong></p><p>If you actually made it so far (both as a reader, and in your career), give yourself a pat on the back. Going through level 1 through 5 already prepares you well for a career in computer engineering. I have included this level for the ambitious-types who want to push themselves even more.</p><p>This level is all about combining time, knowledge, and flexibility, and exploring what you can do with it. In this level, you goal should be to expand your skillsets and build a stronger profile to differentiate yourself from your peers.</p><p><strong>Gameplay:</strong></p><p>While this level is meant to be flexible, here are a few ways to achieve the objectives of your goal:</p><ol><li><p><strong>Explore coursework in the sub-domain that you did not pick</strong></p></li></ol><p>While in level 4, I insisted that you should pick a sub-domain and go deep, this is a chance to explore some other domains in detail as well. For example, if you would like to specialize in workload analysis, and have already secured a job in that domain, this might be a good time to explore RTL design, or compilers. Although this won&#8217;t help you immediately in your job, you will need skills in multiple areas if you want to move to an expanded role at an organization, or maybe even build a product of your own someday.</p><ol start="2"><li><p><strong>Complete a major project</strong></p></li></ol><p>While you have been doing projects consistently from level 3, it&#8217;s very likely that they were small projects targeting a specific skillset. In this level, you have the freedom to take up something bigger. Of the top of my head, these are some ideas</p><ul><li><p>Work with a professor at your university on a thesis</p></li><li><p>Build a real chip using Open Source tools (Basically go through all the steps from scratch)</p></li><li><p>Combine the different projects from your past to build a useful product (this could potentially lead you to starting your own company someday)</p></li></ul><ol start="3"><li><p><strong>Get some (more) work experience</strong></p></li></ol><p>If you have the opportunity, pursue an internship at a company or with a research group. I would recommend to go somewhere different from where level 5 is taking you - for example, if you have a job lined up at a company, try to intern at a different company. This is a good way for you to gain different perspectives that could be valuable in the future. (For example, if you want to change jobs at some point.) Plus, you can make decent money while doing internships at this level.</p><ol start="4"><li><p><strong>Take a bet on a new technology</strong></p></li></ol><p>By this point, you will have a good idea about the way computing technology is evolving. As you are going through these levels, you would have come across a lot of buzzwords - &#8220;Artificial Intelligence&#8221;, &#8220;Quantum Computing&#8221;, or whatever else that looks promising when you are reading this. In the bonus level, spend some time to pick one area that you think will be &#8220;the next big thing&#8221;, and gain some knowledge about the field. This will certainly help you in the future - if you were right, you have a first-movers advantage; if you were wrong, understand why you were wrong, and how to choose better. If you aspire to be at leadership positions in the future, having &#8220;good taste&#8221; is important. I wrote a piece on taste in my other blog if you would like to know more about this:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:152369828,&quot;url&quot;:&quot;https://bharathw.substack.com/p/why-taste-matters&quot;,&quot;publication_id&quot;:3023929,&quot;publication_name&quot;:&quot;Bharath&#8217;s Musings&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa88b37-7ced-4dd5-bdcb-580f7442001d_608x608.png&quot;,&quot;title&quot;:&quot;Why taste matters&quot;,&quot;truncated_body_text&quot;:&quot;\&quot;Taste\&quot; is something I always thought was subjective - everyone has their own interpretation of what is considered \&quot;good taste\&quot;. My views on this topic have started to change recently, and this is a collection of my thoughts on why I think taste matters?&quot;,&quot;date&quot;:&quot;2024-11-30T18:05:53.751Z&quot;,&quot;like_count&quot;:3,&quot;comment_count&quot;:3,&quot;bylines&quot;:[{&quot;id&quot;:178190448,&quot;name&quot;:&quot;Bharath Suresh&quot;,&quot;handle&quot;:&quot;bharathw&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d047c0b-57a1-42b7-ae78-2dfd352ef74c_488x488.jpeg&quot;,&quot;bio&quot;:&quot;Engineer and Writer&quot;,&quot;profile_set_up_at&quot;:&quot;2024-08-04T01:39:48.025Z&quot;,&quot;reader_installed_at&quot;:&quot;2024-09-23T00:13:37.585Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:2896802,&quot;user_id&quot;:178190448,&quot;publication_id&quot;:2850528,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:2850528,&quot;name&quot;:&quot;Chip Insights&quot;,&quot;subdomain&quot;:&quot;chipinsights&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Semiconductor Industry Deep Dives&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74222e4c-9d04-46aa-82ba-7d82759b48b9_512x512.png&quot;,&quot;author_id&quot;:178190448,&quot;primary_user_id&quot;:178190448,&quot;theme_var_background_pop&quot;:&quot;#9A6600&quot;,&quot;created_at&quot;:&quot;2024-08-04T01:42:57.274Z&quot;,&quot;email_from_name&quot;:&quot;Chip Insights&quot;,&quot;copyright&quot;:&quot;Bharath Suresh&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}},{&quot;id&quot;:3076811,&quot;user_id&quot;:178190448,&quot;publication_id&quot;:3023929,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:3023929,&quot;name&quot;:&quot;Bharath&#8217;s Musings&quot;,&quot;subdomain&quot;:&quot;bharathw&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;A place for my thoughts&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afa88b37-7ced-4dd5-bdcb-580f7442001d_608x608.png&quot;,&quot;author_id&quot;:178190448,&quot;primary_user_id&quot;:null,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2024-09-16T02:30:59.184Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Bharath Suresh&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bharathw.substack.com/p/why-taste-matters?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!wqwV!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa88b37-7ced-4dd5-bdcb-580f7442001d_608x608.png" loading="lazy"><span class="embedded-post-publication-name">Bharath&#8217;s Musings</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Why taste matters</div></div><div class="embedded-post-body">"Taste" is something I always thought was subjective - everyone has their own interpretation of what is considered "good taste". My views on this topic have started to change recently, and this is a collection of my thoughts on why I think taste matters&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 3 likes &#183; 3 comments &#183; Bharath Suresh</div></a></div><ol start="5"><li><p><strong>Develop a voice</strong></p></li></ol><p>As I mentioned in level 5, having influence can open a lot of doors. This level is a good opportunity to start thinking about that. Ask yourself: Is there something that I like doing that offers value to others? This could be anything, like starting a research paper reading group, mentoring students at your university, or producing content online. All of these will start off very small, but if you do it consistently, you could become a very influential voice in the field.</p><p><strong>Cheat Codes:</strong></p><ul><li><p>If you have the luxury to take some time off before you transition to the next stage of your career, you can fit in the bonus level there. That way, you can move at a more natural pace and still get ahead of your peers before you make your career transition.</p></li><li><p>Although I have mentioned this as a level, you can (and should) do the things listed here at different points later in your life. Even if you are in your 40s, and want to take up something listed here, you will still see benefits in your career.</p></li></ul><p><strong>Traps:</strong></p><ul><li><p>Make sure that you have completed level 5 before starting this level. It is possible that this level would change your decision from level 5 (say you built a product and want to start your own company instead going to graduate school), but that&#8217;s not a reason to do this level first. In my experience, time in this level is used most effectively when uncertainty is minimal - and completing level 5 greatly reduces your uncertainty.</p></li><li><p>Along the same lines, don&#8217;t burn out. This level is a luxury. The objectives of this level can be achieved at other points in your career. I have included this for those who are comfortably through the other levels, and are wondering what&#8217;s next.</p></li><li><p>Given flexibility, we all have a tendency to optimize for the short term. Resist that feeling, especially in this level. If you are playing this level, you are already ahead of many others in the short term (1-2 years) - the goal of this level is to be ahead in the long term. (10-15 years) Keep that in mind as you plan for this level.</p></li></ul><div><hr></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/p/the-computer-engineering-game?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Chip Insights! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/p/the-computer-engineering-game?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://chipinsights.net/p/the-computer-engineering-game?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h2><strong>Difficulty Settings</strong></h2><p>You can play the computer engineering game at different difficulties - you just have to change the time you spend in each level. From my personal experience, and having spoken to other students, here&#8217;s a template for three different difficulty levels, assuming a 4 year undergraduate program.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jw7Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 424w, https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 848w, https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 1272w, https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png" width="731" height="323" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:323,&quot;width&quot;:731,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 424w, https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 848w, https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 1272w, https://substackcdn.com/image/fetch/$s_!Jw7Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2be62ef5-fe92-4ac3-a9cc-ce73a09ba36f_731x323.png 1456w" sizes="100vw" loading="lazy"></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><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><h2><strong>My Walkthrough of the Game</strong></h2><p>I usually don&#8217;t talk about myself on this substack, but for a post like this, I thought it would be unfair not to put myself in the scanner. Remember, a lot of points in this post comes from things I did not do - so my path isn&#8217;t meant to be a perfect example.</p><p><strong>Level 1: The decision to pursue computer engineering</strong></p><p>I don&#8217;t think I used a structured framework like I recommend in this post. If I&#8217;m being completely honest, for a long time I was just following people around me with no clear idea of what I wanted to do.</p><p><strong>Things I did right:</strong></p><ul><li><p>I liked electronics, so I knew I wanted to pursue a career in that domain (this is not as specific as I recommend)</p></li><li><p>I enjoyed fixing (usually the things I broke in the first place) issues on a computer we had at home - as it turns out, that was dress rehearsal for the debugging I do in my current job roles.</p></li></ul><p><strong>Things I did wrong:</strong></p><ul><li><p>For the longest time, I had no idea what a job in computer engineering would look like - in hindsight, I should have spoken to someone about it.</p></li><li><p>I did not put myself in situations that would have helped me make this decision quicker - I was not involved in any technical clubs at my university, and was not really expanding my knowledge beyond university coursework.</p></li></ul><p><strong>Level 2: Completing basic coursework</strong></p><p>I think I went through this phase even before I decided I want to pursue computer engineering - this is because all the basic courses were mandatory at my university. (I still recommend completing level 1 before level 2 to get the best results.)</p><p><strong>Things I did right:</strong></p><ul><li><p>I kept things simple - I followed the course curriculum without too much experimentation (this usually works for basic coursework)</p></li></ul><p><strong>Things I did wrong:</strong></p><ul><li><p>If I&#8217;m being very critical, I would have liked to put more effort into programming during this phase</p></li></ul><p><strong>Level 3: Getting some internship/work experience</strong></p><p>Of all the levels, I would say this was my best, and it set me up nicely for what I wanted to do. First, I pursued a summer internship at a research lab (Central Electronics Engineering Research Institute in India), and soon after, I got involved as a student researcher with a professor at my university. Both of these proved to be pivotal.</p><p><strong>Things I did right:</strong></p><ul><li><p>My first internship was not in the computer engineering domain - but I was able to talk to others about their projects, and I figured out two things:</p><ul><li><p>I wanted to pursue computer engineering</p></li><li><p>I don&#8217;t want to work in a lab setting (I prefer working on my computer)</p></li></ul></li><li><p>I was very productive as a student researcher - I started producing results early, which got everyone in the group more involved, and it led to 3 journal publications in a year. I think it led to two very important outcomes:</p><ul><li><p>Working in research gave me a better sense of where computing is headed</p></li><li><p>My CV got a big boost, which helped with future opportunities</p></li></ul></li></ul><p><strong>Things I did wrong:</strong></p><ul><li><p>Hindsight is 20/20, but if I had to do it again, my summer internship would have been a corporate internship - that way, I could have covered more aspects of level 3.</p></li></ul><p><strong>Level 4: Going deeper into a sub-domain</strong></p><p>If I could do one level from scratch, it would be this one. I don&#8217;t think I was very precise about a sub-domain, which resulted in a lack of depth in any one sub-domain.</p><p><strong>Things I did right:</strong></p><ul><li><p>I put a lot of effort in the one VLSI and one Computer Architecture course I took up, which went on the save me in the future</p></li></ul><p><strong>Things I did wrong:</strong></p><ul><li><p>I was not prepared for the vastness of computer engineering - I was jumping between various different sub-domains, and could never really pick one.</p></li><li><p>I also think I rushed through this level, especially considering that I was still unsure about the sub-domain I wanted to pursue.</p></li></ul><p><strong>Level 5: Applying to graduate school</strong></p><p>I came to the decision to apply to graduate school very early in this level. This gave me enough time to build a profile that maximized my chances.</p><p><strong>Things I did right:</strong></p><ul><li><p>I applied and got accepted for the prestigious DAAD Working Internships in Science and Engineering (WISE) to pursue a summer internship at Center for Cognitive Interaction Technology in Germany. I published a conference paper based on my research.</p></li><li><p>Soon after, I completed an undergraduate thesis at one of the best research universities in India (The Indian Institute of Science, Bengaluru). This rounded up a strong research-focused CV which is what graduate schools prefer.</p></li><li><p>I managed the rest of the application prerequisites, applied, and got accepted into some of the top graduate programs in Computer Engineering in the US.</p></li></ul><p><strong>Things I did wrong:</strong></p><ul><li><p>I think the areas of interests I spoke about in my statement of purpose were still quite general (This is a direct consequence of not doing level 4 right)</p></li><li><p>Knowing what I know now about graduate schools in the US, my university choices and application strategy would have been quite different (I&#8217;ll save this for another post someday)</p></li></ul><p><strong>Bonus level: That elusive corporate internship</strong></p><p>I had some time between level 5 and starting my graduate school, and I really wanted to use this time to intern at a company. As it turned out, this was a very important decision.</p><p>My research experience led me to an opportunity at Intel Labs, and I got to work on AI accelerator architectures. (this was in early 2020, long before the chatGPT/Nvidia moment.) I still consider this one of my best internship experiences, and I gained a lot from it.</p><ul><li><p>I got work experience at a company, which matters a lot when applying for other jobs (Spoiler alert, I needed it immediately)</p></li><li><p>The good thing about corporate roles, even in research, is that they help you understand what the different sub-domains are. This experience at Intel gave me a clearer idea that I wanted to pursue microarchitecture design.</p></li><li><p>I ended up with 3 patents in AI architecture, which I&#8217;m very proud of.</p></li></ul><p><strong>My Conclusion</strong></p><p>As it turns out, when I completed my undergrad (in the year 2020), the world was going through something much bigger that my little computer engineering game. COVID-19 travel restrictions meant that I had to defer my Masters at UCLA. I was lucky to land a job at Xilinx (now AMD), despite no efforts made in this direction in level 5. (the fact that I pushed for the bonus level when I didn&#8217;t have to is what made the difference.) I eventually went to graduate school a year later, interned in the summer at Google, and a landed a job in GPU microarchitecture at Qualcomm.</p><div><hr></div><h2>Final Thoughts</h2><p>If you have actually read through this long post and reached here, I want to end by saying this: </p><p><strong>You&#8217;ll be fine. </strong>You might mess up different levels (like I did), or life will throw you an unexpected curveball. In the end, successfully navigating your career boils down to one thing - <strong>managing anxiety</strong>. The only difference between a successful student and a failed one, is that the former either never had to face anxiety (through some form of privilege), or dealt better with anxiety. In my experience, you can handle your anxiety better if:</p><ol><li><p>You know where you are going; </p></li><li><p>And you are prepared for everything you will face on that path.</p></li></ol><p>I hope this post can help you with both, and make you a successful computer engineer.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://chipinsights.net/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 Chip Insights! 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><div><hr></div><p>This post took a lot of effort to compile. My goal is to keep this post relevant over time through regular update. So if you are reading this and find this post to be useful, please share this with someone you know.</p><div><hr></div>]]></content:encoded></item></channel></rss>