<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: TAKE HooJoo</title>
    <description>The latest articles on DEV Community by TAKE HooJoo (@take_hoojoo).</description>
    <link>https://dev.to/take_hoojoo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3754170%2F0d634eb9-b22f-44d9-9007-4620a082bca1.jpg</url>
      <title>DEV Community: TAKE HooJoo</title>
      <link>https://dev.to/take_hoojoo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/take_hoojoo"/>
    <language>en</language>
    <item>
      <title>PDK</title>
      <dc:creator>TAKE HooJoo</dc:creator>
      <pubDate>Sat, 07 Feb 2026 22:01:42 +0000</pubDate>
      <link>https://dev.to/take_hoojoo/pdk-3ekd</link>
      <guid>https://dev.to/take_hoojoo/pdk-3ekd</guid>
      <description></description>
    </item>
    <item>
      <title>Pdk</title>
      <dc:creator>TAKE HooJoo</dc:creator>
      <pubDate>Thu, 05 Feb 2026 16:02:06 +0000</pubDate>
      <link>https://dev.to/take_hoojoo/pdk-31ia</link>
      <guid>https://dev.to/take_hoojoo/pdk-31ia</guid>
      <description></description>
    </item>
    <item>
      <title>Learning Open-Source PDKs by Playing With Them</title>
      <dc:creator>TAKE HooJoo</dc:creator>
      <pubDate>Thu, 05 Feb 2026 12:35:07 +0000</pubDate>
      <link>https://dev.to/take_hoojoo/learning-open-source-pdks-by-playing-with-them-5cf6</link>
      <guid>https://dev.to/take_hoojoo/learning-open-source-pdks-by-playing-with-them-5cf6</guid>
      <description>&lt;p&gt;&lt;em&gt;From Standard Cell Layouts to SPICE, SRAM, and P&amp;amp;R Flows&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you’ve ever opened a PDK and thought, “Where do I even start?”, you’re not alone.&lt;/p&gt;

&lt;p&gt;This article is for hobbyists, students, and engineers who want to understand PDKs beyond documentation—by actually touching and experimenting with them.&lt;/p&gt;

&lt;p&gt;PDKs (Process Design Kits) often look overwhelming at first—huge directories, dense design rules, endless SPICE parameters. They’re usually introduced as something professional, serious, and not meant to be touched casually.&lt;/p&gt;

&lt;p&gt;But here’s the good news: open-source PDKs don’t have to be scary.&lt;/p&gt;

&lt;p&gt;In this post, I’ll share how I’ve been learning open-source PDKs by playing with them—looking at layouts, drawing my own cells, running SPICE simulations, breaking things, and sometimes fixing them again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No tape-outs.&lt;br&gt;&lt;br&gt;
No deadlines.&lt;br&gt;&lt;br&gt;
Just curiosity and experiments.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Guide to Open-Source PDKs 🚶
&lt;/h2&gt;

&lt;p&gt;In this article, I share a &lt;strong&gt;hands-on, experience-based guide&lt;/strong&gt; to understanding open-source PDKs (Process Design Kits).&lt;/p&gt;

&lt;p&gt;We will cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What a PDK actually is&lt;/li&gt;
&lt;li&gt;How to read and explore an open-source PDK&lt;/li&gt;
&lt;li&gt;Practical examples using standard cells, SPICE, SRAM, and P&amp;amp;R flows&lt;/li&gt;
&lt;li&gt;How to &lt;em&gt;learn PDKs by playing with them&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article is written for people who are interested in semiconductor design but feel unsure about where to start:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What exactly is a PDK?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How should I approach an open-source PDK?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What should I try first to really understand it?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than treating PDKs as something purely professional or intimidating,&lt;br&gt;
this guide focuses on &lt;strong&gt;learning by experimenting and having fun&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is a PDK?
&lt;/h2&gt;

&lt;p&gt;A PDK (Process Design Kit) is a collection of everything required for semiconductor design.&lt;/p&gt;

&lt;p&gt;It typically includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transistor models (SPICE)&lt;/li&gt;
&lt;li&gt;Device parameters&lt;/li&gt;
&lt;li&gt;Design rules&lt;/li&gt;
&lt;li&gt;DRC / LVS / ERC rules&lt;/li&gt;
&lt;li&gt;Parasitic extraction rules (LPE / PEX)&lt;/li&gt;
&lt;li&gt;Standard cell libraries&lt;/li&gt;
&lt;li&gt;Configuration for place-and-route (P&amp;amp;R) flows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the past, IC design could be done with just the so-called &lt;em&gt;“three essentials”&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Device parameters&lt;/li&gt;
&lt;li&gt;Design rules&lt;/li&gt;
&lt;li&gt;SPICE models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, as processes became more advanced and EDA tools more complex, things changed.&lt;/p&gt;

&lt;p&gt;With increasing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verification complexity&lt;/li&gt;
&lt;li&gt;Number of layers and device types&lt;/li&gt;
&lt;li&gt;Mask costs and respin risks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Almost everything related to design and verification became part of the PDK.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Where Should You Start Reading a PDK?
&lt;/h2&gt;

&lt;p&gt;If you want to understand a PDK,&lt;br&gt;
jumping straight into design-rule documents is honestly painful.&lt;/p&gt;

&lt;p&gt;A much better starting point is to &lt;strong&gt;look at standard-cell layouts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From a single standard-cell layout, you can immediately see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Layer stack and structure&lt;/li&gt;
&lt;li&gt;Minimum rules (width, spacing, enclosure)&lt;/li&gt;
&lt;li&gt;Metal pitch and routing directions&lt;/li&gt;
&lt;li&gt;Poly width and pitch&lt;/li&gt;
&lt;li&gt;Well structures and isolation strategies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is an example of a standard-cell layout from SKY130.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50sn4tspyleuuy5h2smo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50sn4tspyleuuy5h2smo.png" alt="Example of a standard cell layout in the SKY130 open-source PDK" width="314" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Standard cells are essentially &lt;strong&gt;compressed collections of minimum rules&lt;/strong&gt;.)&lt;/p&gt;

&lt;p&gt;Rather than &lt;em&gt;reading&lt;/em&gt; rules, you can often &lt;em&gt;understand them visually&lt;/em&gt; just by looking.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding Skyrockets When You Draw Cells Yourself
&lt;/h2&gt;

&lt;p&gt;An even better approach is to &lt;strong&gt;draw standard cells yourself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try shrinking an 8-track cell into a 7-track cell&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3h7fujh2shv2l2ldvbie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3h7fujh2shv2l2ldvbie.png" alt="8-track and 7-track standard cell layouts compared to show cell height reduction" width="800" height="657"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you do this, you quickly discover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which rules actually matter&lt;/li&gt;
&lt;li&gt;The real limits of poly, active, and contacts&lt;/li&gt;
&lt;li&gt;Non-negotiable routing constraints&lt;/li&gt;
&lt;li&gt;The unique “personality” of each PDK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To understand the &lt;em&gt;design philosophy&lt;/em&gt; behind a PDK,&lt;br&gt;
nothing beats drawing layouts while constantly checking the rules.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reading the “Personality” from Device Parameters
&lt;/h2&gt;

&lt;p&gt;Next, look at the device parameters.&lt;/p&gt;

&lt;p&gt;Even just comparing &lt;strong&gt;Ion (on-current)&lt;/strong&gt; and &lt;strong&gt;Ioff (off-current)&lt;/strong&gt; reveals a lot about a process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5b50g0hf3gtr7ft1xfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5b50g0hf3gtr7ft1xfo.png" alt="Ion and Ioff comparison across process corners" width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Typical trends include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FF corner&lt;/strong&gt;: fast but leaky&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SS corner&lt;/strong&gt;: slow but low leakage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From this, you can infer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed vs. leakage trade-offs&lt;/li&gt;
&lt;li&gt;Delay and power tendencies&lt;/li&gt;
&lt;li&gt;Threshold-voltage variation windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If device documentation is limited,&lt;br&gt;
SPICE simulations can help fill the gaps&lt;br&gt;
(though model accuracy should always be considered).&lt;/p&gt;




&lt;h2&gt;
  
  
  Try Running SPICE Simulations
&lt;/h2&gt;

&lt;p&gt;Running SPICE simulations reveals device behavior very clearly.&lt;/p&gt;

&lt;p&gt;You can explore things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I–V characteristics&lt;/li&gt;
&lt;li&gt;Standard-cell delay (Tpd)&lt;/li&gt;
&lt;li&gt;Power vs. speed trade-offs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso68f00i71oz2s1x6ls9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso68f00i71oz2s1x6ls9.png" alt="SPICE schematic for I–V characterization and corresponding simulation results, with notes on manual netlist creation and recommended ISHI-kai hands-on sessions" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even if symbols are not provided,&lt;br&gt;
handwritten netlists are usually enough to experiment.&lt;/p&gt;

&lt;p&gt;Once you establish the flow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read → Draw → Simulate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;your understanding of the PDK reaches a new level.&lt;/p&gt;

&lt;p&gt;🔗 Open-source PDK community&lt;br&gt;
&lt;a href="https://ishi-kai.org/" rel="noopener noreferrer"&gt;https://ishi-kai.org/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  If You Want to Build a PDK Yourself
&lt;/h2&gt;

&lt;p&gt;With the classic three essentials&lt;br&gt;
(device parameters, design rules, and SPICE models),&lt;br&gt;
you can build a minimal PDK.&lt;/p&gt;

&lt;p&gt;The goal is to start &lt;strong&gt;small and functional&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Layer Definitions (Layer Map)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Layer names, numbers, colors, GDS mappings&lt;/li&gt;
&lt;li&gt;Mapping between design and mask layers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsee64jlael6y7zrjben3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsee64jlael6y7zrjben3.png" alt="Examples of layer lists from different PDKs, highlighting vendor-specific implementations and naming conventions" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This step defines the &lt;em&gt;worldview&lt;/em&gt; of the PDK.&lt;/p&gt;

&lt;p&gt;Minimum required layers include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Active&lt;/li&gt;
&lt;li&gt;N-well / P-well&lt;/li&gt;
&lt;li&gt;Poly&lt;/li&gt;
&lt;li&gt;N+/P+ source-drain&lt;/li&gt;
&lt;li&gt;Contact&lt;/li&gt;
&lt;li&gt;Metal / Via&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Minimal DRC
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Width, spacing, enclosure rules&lt;/li&gt;
&lt;li&gt;Enough to draw INV / NAND gates&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. LVS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MOS extraction (W/L)&lt;/li&gt;
&lt;li&gt;Connectivity extraction&lt;/li&gt;
&lt;li&gt;Consistency with SPICE models&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Simple Standard Cells
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;INV / NAND for rule validation&lt;/li&gt;
&lt;li&gt;DFF to confirm practical usability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The initial goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A PDK that design tools can correctly interpret&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Open-Source PDKs Are Meant to Be Played With
&lt;/h2&gt;

&lt;p&gt;Professional PDK development and open-source PDK exploration are completely different.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Professional Work&lt;/th&gt;
&lt;th&gt;Playing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deadlines and precision&lt;/td&gt;
&lt;td&gt;Try ideas freely&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reproducibility&lt;/td&gt;
&lt;td&gt;Breaking things is OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Corporate rules&lt;/td&gt;
&lt;td&gt;Your own rules&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tuning SPICE models,&lt;br&gt;
characterizing cells with Libretto,&lt;br&gt;
designing SRAM bitcells,&lt;br&gt;
running OpenLane with 7-track libraries…&lt;/p&gt;

&lt;p&gt;Through this kind of “play,”&lt;br&gt;
you often gain deeper insight than from formal work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Things I’ve Tried with Open-Source PDKs
&lt;/h2&gt;

&lt;p&gt;Below are some examples of how I’ve been &lt;em&gt;playing&lt;/em&gt; with open-source PDKs—not as work, but as exploration.&lt;/p&gt;




&lt;h3&gt;
  
  
  Building Design Environments with Mini PCs and SSDs
&lt;/h3&gt;

&lt;p&gt;I start from the environment.&lt;/p&gt;

&lt;p&gt;Using low-cost mini PCs and multiple small SSDs, I prepare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mini PC (CHUWI LarkBox X 2023)&lt;/li&gt;
&lt;li&gt;Linux (Linux Mint 21.3 “Virginia”)&lt;/li&gt;
&lt;li&gt;Various EDA tools&lt;/li&gt;
&lt;li&gt;Multiple open-source PDKs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each PDK lives on its own SSD.&lt;/p&gt;

&lt;p&gt;This makes it easy to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Break environments without worry&lt;/li&gt;
&lt;li&gt;Carry setups between machines&lt;/li&gt;
&lt;li&gt;Maintain clean, PDK-specific systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Supported PDKs include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SKY130&lt;/li&gt;
&lt;li&gt;GF180MCU&lt;/li&gt;
&lt;li&gt;TR-1um&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fcvx2oabj25r3fl6ksx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fcvx2oabj25r3fl6ksx.png" alt="Mini PC and mini SSDs used to switch between SKY130, GF180MCU, and TR-1um PDK environments" width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hpf1ng9pw6qbg5mi6xh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hpf1ng9pw6qbg5mi6xh.png" alt="Mini USB SSD used as a portable open-source PDK environment" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Portable PDK environment on a mini SSD&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Playing with SPICE Model Parameters
&lt;/h3&gt;

&lt;p&gt;Next, I tweak SPICE model parameters such as &lt;strong&gt;Vth0&lt;/strong&gt; and &lt;strong&gt;U0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By gradually changing them, I observe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Changes in Id–Vg curves&lt;/li&gt;
&lt;li&gt;Differences from virtual measurement data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6h5hnbsssq3mew5tysd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6h5hnbsssq3mew5tysd.png" alt="Id–Vg curves for a MOSFET with different threshold voltages (VTH0 = 0.5 V, 0.7 V, and 0.9 V), showing the shift in turn-on behavior" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also tried simple fitting to minimize error between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Synthetic measurement data&lt;/li&gt;
&lt;li&gt;SPICE simulation results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not model accuracy, but &lt;strong&gt;intuition&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;How do model parameters affect circuit behavior?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib34v6qmxeylm4k56srn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib34v6qmxeylm4k56srn.png" alt="NMOS I–V curves before and after fitting, comparing simulation results with measured data" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Using Libretto for Cell Characterization
&lt;/h3&gt;

&lt;p&gt;I used &lt;strong&gt;Libretto&lt;/strong&gt;, a characterization tool, with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Original models&lt;/li&gt;
&lt;li&gt;Self-adjusted models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By comparing results, I could clearly see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delay trends&lt;/li&gt;
&lt;li&gt;Slope dependencies&lt;/li&gt;
&lt;li&gt;Where model differences appear&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Seeing characterization results helps bridge&lt;br&gt;
&lt;strong&gt;SPICE models and circuit-level behavior&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjba3yonm7bcyc5udamq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjba3yonm7bcyc5udamq.png" alt="Rise propagation delay comparison between original and MySpice models" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔗 Libretto&lt;br&gt;
&lt;a href="https://github.com/snishizawa/libretto" rel="noopener noreferrer"&gt;https://github.com/snishizawa/libretto&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Drawing SRAM Butterfly Curves
&lt;/h3&gt;

&lt;p&gt;Using a 6T SRAM bitcell,&lt;br&gt;
I plotted butterfly curves to evaluate SNM (Static Noise Margin).&lt;/p&gt;

&lt;p&gt;By varying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SPICE models&lt;/li&gt;
&lt;li&gt;Transistor sizing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I could visually understand SRAM stability much better.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzro0dnk4di4wcofdp6yn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzro0dnk4di4wcofdp6yn.png" alt="SRAM 6T bitcell and corresponding butterfly curve for SNM evaluation" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Laying Out SRAM Bitcells
&lt;/h3&gt;

&lt;p&gt;I also laid out SRAM bitcells:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conventional vertical cells&lt;/li&gt;
&lt;li&gt;Point-symmetric cells&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comparing them reveals differences in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routing efficiency&lt;/li&gt;
&lt;li&gt;Cell area&lt;/li&gt;
&lt;li&gt;Scalability potential&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing &lt;strong&gt;both circuit and layout&lt;/strong&gt; work connects understanding in a powerful way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm71nwrrh9c3pzved84qv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm71nwrrh9c3pzved84qv.png" alt="Vertical versus point-symmetric SRAM bitcell layouts" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Running OpenLane with Custom 7-Track Cells
&lt;/h3&gt;

&lt;p&gt;Finally, I prepared a full digital flow using &lt;strong&gt;custom 7-track standard cells&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GDS&lt;/li&gt;
&lt;li&gt;LEF&lt;/li&gt;
&lt;li&gt;Verilog&lt;/li&gt;
&lt;li&gt;Liberty (.lib)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running the OpenLane flow answers key questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does P&amp;amp;R actually succeed?&lt;/li&gt;
&lt;li&gt;Where are routing density limits?&lt;/li&gt;
&lt;li&gt;How compatible are these cells with existing libraries?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key is not stopping at cell creation,&lt;br&gt;
but &lt;strong&gt;running the full flow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk49kgdzc2wqhs9keqc3c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk49kgdzc2wqhs9keqc3c.png" alt="Custom 7-track standard cell layout" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzok5t4hcizyp0ye2ivp7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzok5t4hcizyp0ye2ivp7.png" alt="Placement and routing result using a custom 7-track standard cell" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Playing Deepens Understanding
&lt;/h2&gt;

&lt;p&gt;None of these experiments are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Required for professional work&lt;/li&gt;
&lt;li&gt;Particularly efficient&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But in an environment where you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Break things&lt;/li&gt;
&lt;li&gt;Try ideas&lt;/li&gt;
&lt;li&gt;Laugh at failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;your understanding of PDKs deepens naturally.&lt;/p&gt;

&lt;p&gt;Open-source PDKs are, in my opinion,&lt;br&gt;
&lt;strong&gt;excellent learning and experimentation platforms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you’re curious about semiconductor design, don’t wait for permission—open a PDK, draw something small, and start playing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Playing with open-source PDKs leads to deeper understanding&lt;/li&gt;
&lt;li&gt;Breaking and fixing things yourself is the best teacher&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open-source PDKs are&lt;br&gt;
&lt;strong&gt;a gateway to making semiconductor design accessible and enjoyable for everyone&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Related Materials
&lt;/h2&gt;

&lt;p&gt;🇯🇵 Japanese version of this article (Qiita):&lt;br&gt;&lt;br&gt;
&lt;a href="https://qiita.com/take_hoojoo/items/8840528d3e26b31d18bb" rel="noopener noreferrer"&gt;https://qiita.com/take_hoojoo/items/8840528d3e26b31d18bb&lt;/a&gt;&lt;/p&gt;




</description>
      <category>pdk</category>
      <category>opensource</category>
      <category>semiconductor</category>
      <category>icdesign</category>
    </item>
  </channel>
</rss>
