<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://uoftasic.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://uoftasic.com/" rel="alternate" type="text/html" /><updated>2026-06-06T23:30:55+00:00</updated><id>https://uoftasic.com/feed.xml</id><title type="html">UofT ASIC Team</title><subtitle>Website of the UofT ASIC Team. Practical IC design opportunities, open-source silicon, and resources for undergraduates at the University of Toronto.</subtitle><author><name>UofT ASIC Team</name></author><entry><title type="html">SimProc: TinyTapeout</title><link href="https://uoftasic.com/blog/simproc-tinytapeout/" rel="alternate" type="text/html" title="SimProc: TinyTapeout" /><published>2025-11-10T00:00:00+00:00</published><updated>2025-11-10T00:00:00+00:00</updated><id>https://uoftasic.com/blog/simproc-tinytapeout</id><content type="html" xml:base="https://uoftasic.com/blog/simproc-tinytapeout/"><![CDATA[<p>This week, the ASIC Team submitted <strong>SimProc (Simple Processor)</strong> as a part of the TinyTapeout TTSKY25b shuttle on 10 November 2025.</p>

<p>TinyTapeout provides a multi-project wafer (MPW) platform where each design occupies a small tile within the final ASIC.</p>

<p>SimProc, along with an integrated UART-based communication interface, was implemented on a 2x2 tile (approximately 320×200 µm), with an on-chip memory size of 64 bytes (reduced from the original 256 bytes due to size limitations).</p>

<p>The RTL for SimProc was written in <strong>SystemVerilog</strong> and first validated on a <strong>DE10-Lite FPGA</strong>. The tapeout flow was then handled by the <strong>OpenLane/LibreLane</strong> toolchain, which automated synthesis, floorplanning, and place-and-route. Aside from adjusting configuration parameters to ensure the design fit within a 2×2 tile and met timing, the end-to-end process from RTL to ASIC was almost entirely automated.</p>

<p>The shuttle is now in fabrication, with chips expected to arrive in <strong>May 2026</strong>.</p>

<h2 id="asic-technical-details">ASIC Technical Details</h2>

<p>After running the design through the OpenLane/LibreLane toolchain, the TinyTapeout GitHub workflow automatically executed synthesis, place-and-route, verification, and GDS generation. The resulting reports summarize resource usage, timing, and physical layout for the final SKY130 implementation of SimProc.</p>

<h3 id="technical-specifications-">Technical Specifications :</h3>
<ul>
  <li><strong>Recommended Clock Frequency:</strong> 30 MHz</li>
  <li><strong>Standard Cell Count:</strong> 9199 cells</li>
  <li><strong>Cell Area Usage:</strong> 59.94% of 2×2 tile</li>
  <li><strong>Total Wire Length:</strong> 158,110 µm</li>
  <li>
    <p><strong>Memory:</strong> 64 bytes (implemented as flip-flops)</p>
  </li>
  <li>
    <p><strong>Standard Cell Breakdown:</strong></p>

    <table>
      <thead>
        <tr>
          <th>Cell Type</th>
          <th>Count</th>
          <th>Percentage</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Combinational</td>
          <td>1598</td>
          <td>17.37%</td>
        </tr>
        <tr>
          <td>Flip Flops</td>
          <td>706</td>
          <td>7.69%</td>
        </tr>
        <tr>
          <td>Buffers</td>
          <td>443</td>
          <td>4.81%</td>
        </tr>
        <tr>
          <td>Inverters</td>
          <td>42</td>
          <td>0.46%</td>
        </tr>
        <tr>
          <td>Fill</td>
          <td>4068</td>
          <td>44.22%</td>
        </tr>
        <tr>
          <td>Tap</td>
          <td>1037</td>
          <td>11.27%</td>
        </tr>
        <tr>
          <td>Misc</td>
          <td>1305</td>
          <td>14.18%</td>
        </tr>
        <tr>
          <td><strong>Total</strong></td>
          <td>9199</td>
          <td>100%</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<h3 id="io-signal-mapping-tinytapeout-pinout">I/O Signal Mapping (TinyTapeout Pinout)</h3>

<p>SimProc uses TinyTapeout’s standard 8-pin I/O structure:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">ui[7:0]</code>: input</li>
  <li><code class="language-plaintext highlighter-rouge">uo[7:0]</code>: output</li>
  <li><code class="language-plaintext highlighter-rouge">uio[7:0]</code>: bidirectional (we use them as inputs)</li>
</ul>

<p>The mapping for our design is:</p>

<table>
  <thead>
    <tr>
      <th>Pin #</th>
      <th>Input</th>
      <th>Output</th>
      <th>Bidirectional</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>0</td>
      <td>uart_rx</td>
      <td>uart_tx</td>
      <td>clk_per_bit[0]</td>
    </tr>
    <tr>
      <td>1</td>
      <td>-</td>
      <td>halt</td>
      <td>clk_per_bit[1]</td>
    </tr>
    <tr>
      <td>2</td>
      <td>-</td>
      <td>done</td>
      <td>clk_per_bit[2]</td>
    </tr>
    <tr>
      <td>3</td>
      <td>-</td>
      <td>-</td>
      <td>clk_per_bit[3]</td>
    </tr>
    <tr>
      <td>4</td>
      <td>-</td>
      <td>-</td>
      <td>clk_per_bit[4]</td>
    </tr>
    <tr>
      <td>5</td>
      <td>-</td>
      <td>-</td>
      <td>clk_per_bit[5]</td>
    </tr>
    <tr>
      <td>6</td>
      <td>-</td>
      <td>-</td>
      <td>clk_per_bit[6]</td>
    </tr>
    <tr>
      <td>7</td>
      <td>-</td>
      <td>-</td>
      <td>clk_per_bit[7]</td>
    </tr>
  </tbody>
</table>

<p>The UART baud rate can be configured using the 8-bit <strong>clk_per_bit</strong> input, given by the equation:</p>

<p><strong>BAUD = f_clk / (4 × clk_per_bit)</strong></p>

<h3 id="io-summary">I/O Summary</h3>

<ul>
  <li><strong>UART:</strong>
    <ul>
      <li>RX on <code class="language-plaintext highlighter-rouge">ui[0]</code></li>
      <li>TX on <code class="language-plaintext highlighter-rouge">uo[0]</code></li>
      <li>Baud rate set using <code class="language-plaintext highlighter-rouge">uio[7:0]</code> (clk_per_bit)</li>
    </ul>
  </li>
  <li><strong>Status Flags:</strong>
    <ul>
      <li><code class="language-plaintext highlighter-rouge">halt</code> flag on <code class="language-plaintext highlighter-rouge">uo[1]</code></li>
      <li><code class="language-plaintext highlighter-rouge">done</code> flag on <code class="language-plaintext highlighter-rouge">uo[2]</code></li>
    </ul>
  </li>
</ul>

<h2 id="simproc-design-overview">SimProc Design Overview</h2>

<p><strong>SimProc</strong> is a compact 8-bit CPU designed entirely from scratch in SystemVerilog.<br />
Its architecture was originally introduced in my <strong>ECE243 (Computer Organization)</strong> course, where our professor designed and explained the fundamentals of SimProc. Inspired by that, I implemented the full processor in SystemVerilog and adapted it for ASIC fabrication through TinyTapeout.</p>

<p>The CPU features a minimalist instruction set of <strong>11 atomic operations</strong>, supported by a <strong>64-byte unified memory</strong> for both data and program storage.</p>

<p>To make the processor more interactive and extensible, I integrated a <strong>UART interface</strong> for serial communication - enabling programming, monitoring, and debugging directly over a terminal connection.<br />
I’m also developing a <strong>C library API</strong> that provides a higher-level interface for communicating with the chip, making it easier to send instructions, read memory, and control execution from a host computer.</p>]]></content><author><name>UofT ASIC Team</name></author><category term="Blog" /><category term="tiny-tapeout" /><summary type="html"><![CDATA[This week, the ASIC Team submitted SimProc (Simple Processor) as a part of the TinyTapeout TTSKY25b shuttle on 10 November 2025. TinyTapeout provides a multi-project wafer (MPW) platform where each design occupies a small tile within the final ASIC. SimProc, along with an integrated UART-based communication interface, was implemented on a 2x2 tile (approximately 320×200 µm), with an on-chip memory size of 64 bytes (reduced from the original 256 bytes due to size limitations).]]></summary></entry><entry><title type="html">Click ~Clock: Rethinking Digital Design Beyond the Clock</title><link href="https://uoftasic.com/blog/async-circuits-workshop/" rel="alternate" type="text/html" title="Click ~Clock: Rethinking Digital Design Beyond the Clock" /><published>2025-10-09T00:00:00+00:00</published><updated>2025-10-09T00:00:00+00:00</updated><id>https://uoftasic.com/blog/async-circuits-workshop</id><content type="html" xml:base="https://uoftasic.com/blog/async-circuits-workshop/"><![CDATA[<p>This week, <a href="https://linkedin.com/in/vis-esh">Vishwa Eswaran</a>, an associate from the ASIC Team hosted a technical workshop which introduced asynchronous circuits to the larger ECE undergrad community here at UofT on behalf of the ASIC Team. The workshop was held in BA1240 from 6-8PM on October 9th, 2025.</p>

<p>The workshop description was:</p>

<p>Conventional digital design relies on a global clock - a bottleneck for speed, power, and scalability. Asynchronous (clock-free) systems replace it with local handshakes, enabling faster, leaner, and more adaptable hardware. This workshop introduces Async fundamentals and their role in AI, edge, and low-power design, showing how “click not clock” thinking is reshaping next-gen computing.</p>

<p>More than 40 students RSVPd to attend the workshop, which included an interactive portion to demonstrate the potential benefits of asynchronous pipelining.</p>

<p>The workshop slides can be found <a href="/assets/async_circuit_workshop_slides.pdf">here</a>, and an open discussion <code class="language-plaintext highlighter-rouge">async-circuits</code> channel can be found on our IEEE UofT Discord (Which you can find the invite for on our <a href="https://linktr.ee/ieee_uoft">linktree</a>).</p>

<p>We attempted to record the workshop session, unfortunately technical difficulties got the better of us and we were unable to retrieve the full recording. The first half of the workshop is on youtube, attached to this post.</p>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://www.youtube-nocookie.com/embed/EYqoRiIMfbA" title="YouTube video player" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>]]></content><author><name>UofT ASIC Team</name></author><category term="Blog" /><category term="workshop" /><summary type="html"><![CDATA[This week, Vishwa Eswaran, an associate from the ASIC Team hosted a technical workshop which introduced asynchronous circuits to the larger ECE undergrad community here at UofT on behalf of the ASIC Team. The workshop was held in BA1240 from 6-8PM on October 9th, 2025.]]></summary></entry></feed>