<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki3.rohmega.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ronald</id>
	<title>Retina Chip Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki3.rohmega.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ronald"/>
	<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/wiki/Special:Contributions/Ronald"/>
	<updated>2026-09-04T12:32:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Method:kTC_noise_budget&amp;diff=53</id>
		<title>Method:kTC noise budget</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Method:kTC_noise_budget&amp;diff=53"/>
		<updated>2026-09-04T09:19:31Z</updated>

		<summary type="html">&lt;p&gt;Ronald: replace math tags with plain text (no Math extension)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Methods|All methods]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== kTC noise budget ==&lt;br /&gt;
Switched-cap kTC noise budgeting procedure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;v_{n,kTC} = \sqrt{\frac{kT}{C}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — flesh out.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC1.9&amp;diff=52</id>
		<title>Block:SC LPF RC1.9</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC1.9&amp;diff=52"/>
		<updated>2026-09-04T09:19:31Z</updated>

		<summary type="html">&lt;p&gt;Ronald: replace math tags with plain text (no Math extension)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← back to [[Block:SC LPF|SC LPF (durable)]] · [[RC1.9|chip: RC1.9]] · [[Blocks|all blocks]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SC LPF — RC1.9 instance ==&lt;br /&gt;
Real component values and measured results for the RC1.9 silicon (TSMC 28nm HPC+).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Value&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;C_1&#039;&#039; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;C_2&#039;&#039; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;f_{clk}&#039;&#039; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;f_c&#039;&#039; (target) || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Supply || 0.9 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Post-PEX / measured ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039; — fill from the weekly slides / bench measurements.&lt;br /&gt;
&lt;br /&gt;
=== Errata ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(This page demonstrates the durable/instance split.)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF&amp;diff=51</id>
		<title>Block:SC LPF</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF&amp;diff=51"/>
		<updated>2026-09-04T09:19:30Z</updated>

		<summary type="html">&lt;p&gt;Ronald: replace math tags with plain text (no Math extension)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Blocks|All blocks]] · durable page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Switched-Capacitor Low-Pass Filter ==&lt;br /&gt;
&lt;br /&gt;
A switched-capacitor low-pass filter follows the Gm-C integrator in the AFE to band-limit the neural/recording signal before digitisation by the [[Block:SAR ADC|SAR ADC]].&lt;br /&gt;
&lt;br /&gt;
=== Design equation ===&lt;br /&gt;
Corner frequency is set by the capacitor ratio and the switch clock:&lt;br /&gt;
&#039;&#039;f_c = \frac{1}{2\pi} \cdot \frac{C_2}{C_1} \cdot f_{clk}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Budgeting procedure ===&lt;br /&gt;
# Choose &#039;&#039;f_c&#039;&#039; from the signal band of interest.&lt;br /&gt;
# Pick &#039;&#039;C_1&#039;&#039; for kTC-noise floor; &#039;&#039;C_2&#039;&#039; follows from the ratio.&lt;br /&gt;
# Verify switch on-resistance gives adequate settling within the clock phase.&lt;br /&gt;
# Run kTC noise budget ([[Method:kTC noise budget|method]]) to confirm.&lt;br /&gt;
&lt;br /&gt;
=== Known failure modes ===&lt;br /&gt;
* Clock feedthrough corrupting the passband.&lt;br /&gt;
* Incomplete settling (too-high switch &#039;&#039;R_{on}&#039;&#039;) causing gain error.&lt;br /&gt;
* kTC noise dominating the front-end floor if &#039;&#039;C_1&#039;&#039; is too small.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
* [[Block:SC LPF RC1.9|RC1.9]] — implemented, post-PEX verified&lt;br /&gt;
* [[Block:SC LPF RC2.0|RC2.0]] — &#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=MediaWiki:Common.css&amp;diff=50</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=MediaWiki:Common.css&amp;diff=50"/>
		<updated>2026-09-04T09:19:08Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add chat widget&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Retina Chip Wiki chat widget styles (wiki3.rohmega.com) */&lt;br /&gt;
&lt;br /&gt;
#rmg-chat-toggle {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    bottom: 20px;&lt;br /&gt;
    right: 20px;&lt;br /&gt;
    width: 56px;&lt;br /&gt;
    height: 56px;&lt;br /&gt;
    border-radius: 50%;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: #3366cc;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-size: 26px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);&lt;br /&gt;
    z-index: 10000;&lt;br /&gt;
    line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
#rmg-chat-toggle:hover {&lt;br /&gt;
    background: #2a55aa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#rmg-chat-panel {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    bottom: 88px;&lt;br /&gt;
    right: 20px;&lt;br /&gt;
    width: 340px;&lt;br /&gt;
    max-width: 90vw;&lt;br /&gt;
    height: 460px;&lt;br /&gt;
    max-height: 70vh;&lt;br /&gt;
    background: #fff;&lt;br /&gt;
    border: 1px solid #ccc;&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    z-index: 10000;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#rmg-chat-head {&lt;br /&gt;
    background: #3366cc;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    padding: 10px 14px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
#rmg-chat-head button {&lt;br /&gt;
    background: none;&lt;br /&gt;
    border: none;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    font-size: 22px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#rmg-chat-msgs {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    overflow-y: auto;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    gap: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.rmg-bubble {&lt;br /&gt;
    max-width: 85%;&lt;br /&gt;
    padding: 8px 12px;&lt;br /&gt;
    border-radius: 14px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    line-height: 1.4;&lt;br /&gt;
    white-space: pre-wrap;&lt;br /&gt;
    word-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
.rmg-bubble.user {&lt;br /&gt;
    align-self: flex-end;&lt;br /&gt;
    background: #3366cc;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    border-bottom-right-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
.rmg-bubble.bot {&lt;br /&gt;
    align-self: flex-start;&lt;br /&gt;
    background: #f0f0f0;&lt;br /&gt;
    color: #222;&lt;br /&gt;
    border-bottom-left-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#rmg-chat-foot {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    border-top: 1px solid #ddd;&lt;br /&gt;
    padding: 8px;&lt;br /&gt;
    gap: 6px;&lt;br /&gt;
}&lt;br /&gt;
#rmg-chat-input {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    border: 1px solid #ccc;&lt;br /&gt;
    border-radius: 18px;&lt;br /&gt;
    padding: 8px 14px;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
#rmg-chat-send {&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: #3366cc;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    border-radius: 18px;&lt;br /&gt;
    padding: 8px 16px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
#rmg-chat-send:disabled {&lt;br /&gt;
    opacity: 0.5;&lt;br /&gt;
    cursor: default;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=MediaWiki:Common.js&amp;diff=49</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=MediaWiki:Common.js&amp;diff=49"/>
		<updated>2026-09-04T09:19:08Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add chat widget&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Retina Chip Wiki chat widget (wiki3.rohmega.com).&lt;br /&gt;
 * Floating chat bubble in the bottom-right. Grounded Q&amp;amp;A over the wiki.&lt;br /&gt;
 * Public wiki -&amp;gt; the backend enforces a daily token budget.&lt;br /&gt;
 *&lt;br /&gt;
 * ES5-safe only: ResourceLoader minifier rejects trailing commas in call args,&lt;br /&gt;
 * arrow functions, template literals.&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Don&#039;t double-inject&lt;br /&gt;
    if (document.getElementById(&#039;rmg-chat-root&#039;)) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var CHAT_ENDPOINT = &#039;/chat/chat&#039;;  // same-origin via Caddy /chat/* -&amp;gt; :8111&lt;br /&gt;
&lt;br /&gt;
    function buildUI() {&lt;br /&gt;
        var root = document.createElement(&#039;div&#039;);&lt;br /&gt;
        root.id = &#039;rmg-chat-root&#039;;&lt;br /&gt;
&lt;br /&gt;
        // --- floating toggle button ---&lt;br /&gt;
        var btn = document.createElement(&#039;button&#039;);&lt;br /&gt;
        btn.id = &#039;rmg-chat-toggle&#039;;&lt;br /&gt;
        btn.setAttribute(&#039;aria-label&#039;, &#039;Ask the wiki&#039;);&lt;br /&gt;
        btn.textContent = &#039;💬&#039;;&lt;br /&gt;
        root.appendChild(btn);&lt;br /&gt;
&lt;br /&gt;
        // --- panel ---&lt;br /&gt;
        var panel = document.createElement(&#039;div&#039;);&lt;br /&gt;
        panel.id = &#039;rmg-chat-panel&#039;;&lt;br /&gt;
        panel.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
        var head = document.createElement(&#039;div&#039;);&lt;br /&gt;
        head.id = &#039;rmg-chat-head&#039;;&lt;br /&gt;
        var title = document.createElement(&#039;span&#039;);&lt;br /&gt;
        title.textContent = &#039;Ask the Retina Chip Wiki&#039;;&lt;br /&gt;
        var close = document.createElement(&#039;button&#039;);&lt;br /&gt;
        close.textContent = &#039;×&#039;;&lt;br /&gt;
        close.setAttribute(&#039;aria-label&#039;, &#039;Close&#039;);&lt;br /&gt;
        head.appendChild(title);&lt;br /&gt;
        head.appendChild(close);&lt;br /&gt;
        panel.appendChild(head);&lt;br /&gt;
&lt;br /&gt;
        var msgs = document.createElement(&#039;div&#039;);&lt;br /&gt;
        msgs.id = &#039;rmg-chat-msgs&#039;;&lt;br /&gt;
        panel.appendChild(msgs);&lt;br /&gt;
&lt;br /&gt;
        var foot = document.createElement(&#039;div&#039;);&lt;br /&gt;
        foot.id = &#039;rmg-chat-foot&#039;;&lt;br /&gt;
        var input = document.createElement(&#039;input&#039;);&lt;br /&gt;
        input.id = &#039;rmg-chat-input&#039;;&lt;br /&gt;
        input.setAttribute(&#039;placeholder&#039;, &#039;Ask about blocks, ADRs, methods…&#039;);&lt;br /&gt;
        var send = document.createElement(&#039;button&#039;);&lt;br /&gt;
        send.id = &#039;rmg-chat-send&#039;;&lt;br /&gt;
        send.textContent = &#039;Send&#039;;&lt;br /&gt;
        foot.appendChild(input);&lt;br /&gt;
        foot.appendChild(send);&lt;br /&gt;
        panel.appendChild(foot);&lt;br /&gt;
&lt;br /&gt;
        root.appendChild(panel);&lt;br /&gt;
        document.body.appendChild(root);&lt;br /&gt;
&lt;br /&gt;
        // wire events&lt;br /&gt;
        btn.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
            var open = panel.style.display !== &#039;none&#039;;&lt;br /&gt;
            panel.style.display = open ? &#039;none&#039; : &#039;block&#039;;&lt;br /&gt;
        });&lt;br /&gt;
        close.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
            panel.style.display = &#039;none&#039;;&lt;br /&gt;
        });&lt;br /&gt;
        send.addEventListener(&#039;click&#039;, ask);&lt;br /&gt;
        input.addEventListener(&#039;keydown&#039;, function (e) {&lt;br /&gt;
            if (e.key === &#039;Enter&#039;) {&lt;br /&gt;
                ask();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function addBubble(text, who) {&lt;br /&gt;
        var msgs = document.getElementById(&#039;rmg-chat-msgs&#039;);&lt;br /&gt;
        var b = document.createElement(&#039;div&#039;);&lt;br /&gt;
        b.className = &#039;rmg-bubble &#039; + who;&lt;br /&gt;
        b.textContent = text;&lt;br /&gt;
        msgs.appendChild(b);&lt;br /&gt;
        msgs.scrollTop = msgs.scrollHeight;&lt;br /&gt;
        return b;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function ask() {&lt;br /&gt;
        var input = document.getElementById(&#039;rmg-chat-input&#039;);&lt;br /&gt;
        var send = document.getElementById(&#039;rmg-chat-send&#039;);&lt;br /&gt;
        var q = input.value.trim();&lt;br /&gt;
        if (!q) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        input.value = &#039;&#039;;&lt;br /&gt;
        addBubble(q, &#039;user&#039;);&lt;br /&gt;
        send.disabled = true;&lt;br /&gt;
&lt;br /&gt;
        var typing = addBubble(&#039;…&#039;, &#039;bot&#039;);&lt;br /&gt;
&lt;br /&gt;
        var xhr = new XMLHttpRequest();&lt;br /&gt;
        xhr.open(&#039;POST&#039;, CHAT_ENDPOINT, true);&lt;br /&gt;
        xhr.setRequestHeader(&#039;Content-Type&#039;, &#039;application/json&#039;);&lt;br /&gt;
        xhr.onreadystatechange = function () {&lt;br /&gt;
            if (xhr.readyState !== 4) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            send.disabled = false;&lt;br /&gt;
            if (xhr.status === 200) {&lt;br /&gt;
                try {&lt;br /&gt;
                    var d = JSON.parse(xhr.responseText);&lt;br /&gt;
                    typing.textContent = d.answer || &#039;(no answer)&#039;;&lt;br /&gt;
                } catch (err) {&lt;br /&gt;
                    typing.textContent = &#039;Error reading response.&#039;;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                try {&lt;br /&gt;
                    var e = JSON.parse(xhr.responseText);&lt;br /&gt;
                    typing.textContent = e.answer || (&#039;Error &#039; + xhr.status);&lt;br /&gt;
                } catch (err) {&lt;br /&gt;
                    typing.textContent = &#039;Error &#039; + xhr.status;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        xhr.send(JSON.stringify({ message: q }));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Run after DOM ready&lt;br /&gt;
    if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
        document.addEventListener(&#039;DOMContentLoaded&#039;, buildUI);&lt;br /&gt;
    } else {&lt;br /&gt;
        buildUI();&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Method:Calibre_setup&amp;diff=48</id>
		<title>Method:Calibre setup</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Method:Calibre_setup&amp;diff=48"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Methods|All methods]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Calibre setup ==&lt;br /&gt;
DRC/LVS/PEX, DSPF/PEX netlist flow in the Cadence/Calibre toolchain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — flesh out.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Method:kTC_noise_budget&amp;diff=47</id>
		<title>Method:kTC noise budget</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Method:kTC_noise_budget&amp;diff=47"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Methods|All methods]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== kTC noise budget ==&lt;br /&gt;
Switched-cap kTC noise budgeting procedure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_{n,kTC} = \sqrt{\frac{kT}{C}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — flesh out.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Method:PEX_pole-shift_triage&amp;diff=46</id>
		<title>Method:PEX pole-shift triage</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Method:PEX_pole-shift_triage&amp;diff=46"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Methods|All methods]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== PEX pole-shift triage ==&lt;br /&gt;
Procedure for diagnosing post-layout pole shifts after PEX netlist extraction.&lt;br /&gt;
&lt;br /&gt;
# Diff pre-layout vs post-PEX AC response.&lt;br /&gt;
# Identify the shifted pole; correlate to added layout parasitics (routing, via resistance).&lt;br /&gt;
# Confirm with a reduced parasitic netlist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — flesh out from Calibre/PEX workflow.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=ADR-0042&amp;diff=45</id>
		<title>ADR-0042</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=ADR-0042&amp;diff=45"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Decisions|All ADRs]] · [[Main Page|Home]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ADR-0042: Ahuja over Miller compensation for the ramp-generator OTA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ID&#039;&#039;&#039; || ADR-0042&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Status&#039;&#039;&#039; || accepted&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Date&#039;&#039;&#039; || 2026-05-20&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chips&#039;&#039;&#039; || RC2.0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Blocks&#039;&#039;&#039; || ramp-generator, OTA&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sources&#039;&#039;&#039; || [[Timeline|timeline/weekly/2026-W20.md]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Context ===&lt;br /&gt;
The ramp-generator OTA needed frequency compensation. Two candidates: classic Miller compensation, and Ahuja (cascode) compensation.&lt;br /&gt;
&lt;br /&gt;
=== Decision ===&lt;br /&gt;
Use &#039;&#039;&#039;Ahuja compensation&#039;&#039;&#039;. It gives better power-supply rejection and removes the feedforward zero that Miller introduces, at the cost of an extra bias branch.&lt;br /&gt;
&lt;br /&gt;
=== Rejected alternatives and why ===&lt;br /&gt;
* &#039;&#039;&#039;Miller compensation&#039;&#039;&#039; — simpler, but the feedforward zero degrades phase margin at the ramp speeds required, and PSRR is worse on the noisy 28nm supply.&lt;br /&gt;
&lt;br /&gt;
=== Consequences ===&lt;br /&gt;
* Extra current in the cascode branch within power budget.&lt;br /&gt;
* PSRR improved enough to sit on the dirty supply without a dedicated LDO for this block.&lt;br /&gt;
&lt;br /&gt;
=== What would make us revisit this ===&lt;br /&gt;
A move to a cleaner supply rail for the ramp generator, or a power budget cut that makes the extra branch unacceptable.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Timeline&amp;diff=44</id>
		<title>Timeline</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Timeline&amp;diff=44"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Main Page|Home]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The timeline is &#039;&#039;&#039;immutable and append-only&#039;&#039;&#039;. Weekly slides and meeting minutes are archived as-is; they are never edited, rewritten, or &amp;quot;converted&amp;quot; into wiki pages.&lt;br /&gt;
&lt;br /&gt;
* Weekly slides — original &amp;lt;code&amp;gt;.pptx&amp;lt;/code&amp;gt; archived alongside a note&lt;br /&gt;
* Meeting minutes — inputs to ADRs, never wiki content itself&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Methods&amp;diff=43</id>
		<title>Methods</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Methods&amp;diff=43"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Main Page|Home]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Cross-cutting, chip-independent procedures.&lt;br /&gt;
&lt;br /&gt;
* [[Method:PEX pole-shift triage|PEX pole-shift triage]] — diagnosing post-layout pole shifts&lt;br /&gt;
* [[Method:kTC noise budget|kTC noise budget]] — switched-cap noise budgeting procedure&lt;br /&gt;
* [[Method:Calibre setup|Calibre setup]] — DRC/LVS/PEX, DSPF/PEX netlist flow&lt;br /&gt;
&lt;br /&gt;
Toolchain: Cadence Virtuoso, Spectre (PSS/PAC/PNOISE), Calibre (DRC/LVS/PEX), Verilog-A testbenches.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Decisions&amp;diff=42</id>
		<title>Decisions</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Decisions&amp;diff=42"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Main Page|Home]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Architecture Decision Records (ADRs) are the highest-leverage layer: what was chosen, what was rejected, why, and what would force a revisit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules:&#039;&#039;&#039; one decision per file; immutable once &#039;&#039;accepted&#039;&#039;; superseded never edited; IDs are NOT chip-scoped (use &amp;lt;code&amp;gt;ADR-0042&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;RC19-ADR-014&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ID !! Title !! Status&lt;br /&gt;
|-&lt;br /&gt;
| [[ADR-0042]] || Ahuja over Miller compensation for the ramp-generator OTA || accepted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Worked example:&#039;&#039;&#039; [[ADR-0042]] below demonstrates the full frontmatter + body structure (Context → Decision → Rejected alternatives → Consequences → What would make us revisit).&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Blocks&amp;diff=41</id>
		<title>Blocks</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Blocks&amp;diff=41"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Main Page|Home]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the durable/instance split in action. Each block has a &#039;&#039;&#039;durable&#039;&#039;&#039; page (theory + procedure) and per-chip &#039;&#039;&#039;instance&#039;&#039;&#039; pages.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Block !! Durable page !! RC1.9 !! RC2.0&lt;br /&gt;
|-&lt;br /&gt;
| Switched-cap LPF || [[Block:SC LPF|SC LPF]] || [[Block:SC LPF RC1.9|RC1.9]] || [[Block:SC LPF RC2.0|RC2.0]] (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| AFE (Gm-C integrator) || [[Block:AFE Gm-C|AFE Gm-C]] || [[Block:AFE Gm-C RC1.9|RC1.9]] || RC2.0 (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| SAR ADC || [[Block:SAR ADC|SAR ADC]] || RC1.9 (TBD) || RC2.0 (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Stimulator || [[Block:Stimulator|Stimulator]] || RC1.9 (TBD) || RC2.0 (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| Bias / bandgap || [[Block:Bias Bandgap|Bias Bandgap]] || RC1.9 (TBD) || RC2.0 (TBD)&lt;br /&gt;
|-&lt;br /&gt;
| EDO attenuator || [[Block:EDO Attenuator|EDO Attenuator]] || RC1.9 (TBD) || RC2.0 (TBD)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Recurring blocks: AC-coupled low-noise front-end (Gm-C integrator + switched-cap LPF), SAR ADC, current-steering stimulator with charge balancing, constant-gm and bandgap biasing, pseudoresistor high-pass networks, switched-cap charge-sharing EDO attenuator.&lt;br /&gt;
&lt;br /&gt;
Default core analog supply is &#039;&#039;&#039;0.9 V&#039;&#039;&#039; for the 28nm parts unless a page says otherwise.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=PMU1&amp;diff=40</id>
		<title>PMU1</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=PMU1&amp;diff=40"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Main Page|Home]] · [[Blocks|blocks]] · [[Decisions|ADRs]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== PMU1 ==&lt;br /&gt;
Power-management test chip. &#039;&#039;&#039;180nm node.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not inherit 28nm defaults&#039;&#039;&#039; — this chip has its own PDK notes and its own supply defaults. Carrying 28nm/0.9 V assumptions into PMU1 pages is an anti-pattern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — populate with 180nm PDK notes and power-management specifics.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=RC2.0&amp;diff=39</id>
		<title>RC2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=RC2.0&amp;diff=39"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Main Page|Home]] · [[Blocks|blocks]] · [[Decisions|ADRs]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== RC2.0 ==&lt;br /&gt;
Wireless variant (UWB). TSMC 28nm HPC+. &#039;&#039;&#039;Currently active.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Thin manifest — instance pages populated lazily as RC2.0 revisits each block.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=RC1.9&amp;diff=38</id>
		<title>RC1.9</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=RC1.9&amp;diff=38"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Main Page|Home]] · [[Blocks|blocks]] · [[Decisions|ADRs]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== RC1.9 ==&lt;br /&gt;
1024-channel wired AFE redesign. TSMC 28nm HPC+. &#039;&#039;&#039;Taped out.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Supply !! Status&lt;br /&gt;
|-&lt;br /&gt;
| TSMC 28nm HPC+ || 0.9 V || taped out&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Block instances ===&lt;br /&gt;
* [[Block:SC LPF RC1.9|SC LPF]]&lt;br /&gt;
* [[Block:AFE Gm-C RC1.9|AFE Gm-C]]&lt;br /&gt;
&lt;br /&gt;
=== Chip-scoped artifacts ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039; — pinout, register map, pad ring, tape-out record, errata.&lt;br /&gt;
&lt;br /&gt;
=== Acceptance tests for RC1.9 documentation ===&lt;br /&gt;
# A new student can bring RC1.9 up on the bench without asking Ronald.&lt;br /&gt;
# When RC2.0 revisits a decision, the RC1.9 reasoning is findable in under two minutes.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:EDO_Attenuator&amp;diff=37</id>
		<title>Block:EDO Attenuator</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:EDO_Attenuator&amp;diff=37"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Blocks|All blocks]] · durable page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Switched-cap charge-sharing EDO attenuator ==&lt;br /&gt;
Switched-capacitor charge-sharing attenuator for the electrode DC offset (EDO) chain.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:Bias_Bandgap&amp;diff=36</id>
		<title>Block:Bias Bandgap</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:Bias_Bandgap&amp;diff=36"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Blocks|All blocks]] · durable page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Constant-gm and bandgap biasing ==&lt;br /&gt;
Constant-gm biasing and bandgap reference, plus pseudoresistor high-pass networks.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:Stimulator&amp;diff=35</id>
		<title>Block:Stimulator</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:Stimulator&amp;diff=35"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Blocks|All blocks]] · durable page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Current-steering stimulator ==&lt;br /&gt;
Current-steering stimulator with charge balancing.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SAR_ADC&amp;diff=34</id>
		<title>Block:SAR ADC</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SAR_ADC&amp;diff=34"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Blocks|All blocks]] · durable page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SAR ADC ==&lt;br /&gt;
Successive-approximation ADC digitising the filtered AFE output.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C_RC1.9&amp;diff=33</id>
		<title>Block:AFE Gm-C RC1.9</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C_RC1.9&amp;diff=33"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← back to [[Block:AFE Gm-C|AFE Gm-C (durable)]] · [[RC1.9|chip: RC1.9]] · [[Blocks|all blocks]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== AFE Gm-C — RC1.9 instance ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Placeholder page: populated lazily.&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C&amp;diff=32</id>
		<title>Block:AFE Gm-C</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C&amp;diff=32"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Blocks|All blocks]] · durable page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== AFE — Gm-C integrator front-end ==&lt;br /&gt;
&lt;br /&gt;
AC-coupled low-noise front-end built from a transconductance (Gm) stage driving an integrating capacitor, followed by a switched-cap LPF ([[Block:SC LPF|SC LPF]]). Sits on top of electrode DC offset and electrochemistry.&lt;br /&gt;
&lt;br /&gt;
=== Design equation ===&lt;br /&gt;
Mid-band gain:&lt;br /&gt;
&amp;lt;math&amp;gt;A_v = G_m \cdot R_{out}&amp;lt;/math&amp;gt;&lt;br /&gt;
High-pass corner set by the pseudoresistor network (AC coupling) — see [[Block:Bias Bandgap|bias / pseudoresistor]] notes.&lt;br /&gt;
&lt;br /&gt;
=== Known failure modes ===&lt;br /&gt;
* DC offset overloading the input pair.&lt;br /&gt;
* Pseudoresistor corner drifting with process (weak-inversion resistor).&lt;br /&gt;
* Gm nonlinearity at large offsets.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
* [[Block:AFE Gm-C RC1.9|RC1.9]]&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC2.0&amp;diff=31</id>
		<title>Block:SC LPF RC2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC2.0&amp;diff=31"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← back to [[Block:SC LPF|SC LPF (durable)]] · [[RC2.0|chip: RC2.0]] · [[Blocks|all blocks]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SC LPF — RC2.0 instance ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039; — RC2.0 is the currently active wireless variant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Placeholder page: populated lazily when RC2.0 revisits this block.&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC1.9&amp;diff=30</id>
		<title>Block:SC LPF RC1.9</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC1.9&amp;diff=30"/>
		<updated>2026-09-04T09:17:58Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← back to [[Block:SC LPF|SC LPF (durable)]] · [[RC1.9|chip: RC1.9]] · [[Blocks|all blocks]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SC LPF — RC1.9 instance ==&lt;br /&gt;
Real component values and measured results for the RC1.9 silicon (TSMC 28nm HPC+).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Value&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;f_{clk}&amp;lt;/math&amp;gt; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;f_c&amp;lt;/math&amp;gt; (target) || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Supply || 0.9 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Post-PEX / measured ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039; — fill from the weekly slides / bench measurements.&lt;br /&gt;
&lt;br /&gt;
=== Errata ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(This page demonstrates the durable/instance split.)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF&amp;diff=29</id>
		<title>Block:SC LPF</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF&amp;diff=29"/>
		<updated>2026-09-04T09:17:57Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add breadcrumb navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;← [[Blocks|All blocks]] · durable page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Switched-Capacitor Low-Pass Filter ==&lt;br /&gt;
&lt;br /&gt;
A switched-capacitor low-pass filter follows the Gm-C integrator in the AFE to band-limit the neural/recording signal before digitisation by the [[Block:SAR ADC|SAR ADC]].&lt;br /&gt;
&lt;br /&gt;
=== Design equation ===&lt;br /&gt;
Corner frequency is set by the capacitor ratio and the switch clock:&lt;br /&gt;
&amp;lt;math&amp;gt;f_c = \frac{1}{2\pi} \cdot \frac{C_2}{C_1} \cdot f_{clk}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Budgeting procedure ===&lt;br /&gt;
# Choose &amp;lt;math&amp;gt;f_c&amp;lt;/math&amp;gt; from the signal band of interest.&lt;br /&gt;
# Pick &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; for kTC-noise floor; &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; follows from the ratio.&lt;br /&gt;
# Verify switch on-resistance gives adequate settling within the clock phase.&lt;br /&gt;
# Run kTC noise budget ([[Method:kTC noise budget|method]]) to confirm.&lt;br /&gt;
&lt;br /&gt;
=== Known failure modes ===&lt;br /&gt;
* Clock feedthrough corrupting the passband.&lt;br /&gt;
* Incomplete settling (too-high switch &amp;lt;math&amp;gt;R_{on}&amp;lt;/math&amp;gt;) causing gain error.&lt;br /&gt;
* kTC noise dominating the front-end floor if &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; is too small.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
* [[Block:SC LPF RC1.9|RC1.9]] — implemented, post-PEX verified&lt;br /&gt;
* [[Block:SC LPF RC2.0|RC2.0]] — &#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Timeline&amp;diff=28</id>
		<title>Timeline</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Timeline&amp;diff=28"/>
		<updated>2026-09-04T09:13:38Z</updated>

		<summary type="html">&lt;p&gt;Ronald: remove stray transclusion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The timeline is &#039;&#039;&#039;immutable and append-only&#039;&#039;&#039;. Weekly slides and meeting minutes are archived as-is; they are never edited, rewritten, or &amp;quot;converted&amp;quot; into wiki pages.&lt;br /&gt;
&lt;br /&gt;
* Weekly slides — original &amp;lt;code&amp;gt;.pptx&amp;lt;/code&amp;gt; archived alongside a note&lt;br /&gt;
* Meeting minutes — inputs to ADRs, never wiki content itself&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Main_Page&amp;diff=27</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Main_Page&amp;diff=27"/>
		<updated>2026-09-04T09:13:30Z</updated>

		<summary type="html">&lt;p&gt;Ronald: add clickable block diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Retina Chip Documentation System&#039;&#039;&#039; — the live, present-state knowledge base for the high-channel-count implantable neural-interface ASIC.&lt;br /&gt;
&lt;br /&gt;
The diagram below is the retina chip signal chain. &#039;&#039;&#039;Click any block&#039;&#039;&#039; to open its wiki page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;imagemap&amp;gt;&lt;br /&gt;
File:Retina-chip-signal-chain.svg|980px|center|Click any block to open its wiki page&lt;br /&gt;
desc none&lt;br /&gt;
rect 40 270 160 340 [[Blocks|Electrode (goes to AFE)]]&lt;br /&gt;
rect 230 270 360 340 [[Block:AFE Gm-C|AFE Gm-C integrator]]&lt;br /&gt;
rect 420 270 550 340 [[Block:SC LPF|Switched-cap LPF]]&lt;br /&gt;
rect 610 270 730 340 [[Block:SAR ADC|SAR ADC]]&lt;br /&gt;
rect 790 270 930 340 [[RC2.0|Wireless / UWB (RC2.0)]]&lt;br /&gt;
rect 420 420 550 490 [[Block:EDO Attenuator|EDO attenuator]]&lt;br /&gt;
rect 610 420 730 490 [[Block:Stimulator|Current-steering stimulator]]&lt;br /&gt;
rect 250 90 400 160 [[Block:Bias Bandgap|Bias / bandgap]]&lt;br /&gt;
&amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About this wiki ==&lt;br /&gt;
&lt;br /&gt;
This wiki follows two hard rules:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Two genres, never merged&#039;&#039;&#039; — the [[Timeline]] is an immutable, append-only chronological record of &#039;&#039;what was believed on a date&#039;&#039;. Wiki pages are statements of &#039;&#039;what is true now&#039;&#039;. They are never merged.&lt;br /&gt;
* &#039;&#039;&#039;Durable vs instance&#039;&#039;&#039; — every block splits into a &#039;&#039;&#039;durable&#039;&#039;&#039; page (what the block is, design equations, budgeting procedure — true independent of any chip) and &#039;&#039;&#039;instance&#039;&#039;&#039; pages (component values, sizing, post-PEX numbers, errata for a specific silicon). A chip page is a thin manifest linking to its instances.&lt;br /&gt;
&lt;br /&gt;
== The chips in scope ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Chip !! Node !! Role&lt;br /&gt;
|-&lt;br /&gt;
| [[RC1.9]] || TSMC 28nm HPC+ || 1024-channel wired AFE redesign; taped out&lt;br /&gt;
|-&lt;br /&gt;
| [[RC2.0]] || TSMC 28nm HPC+ || wireless variant (UWB); currently active&lt;br /&gt;
|-&lt;br /&gt;
| [[PMU1]] || 180nm || power-management test chip — does &#039;&#039;&#039;not&#039;&#039;&#039; inherit 28nm defaults&lt;br /&gt;
|-&lt;br /&gt;
| RC3.0 / RC3.1 || 28nm || future, scaled toward 10k+ channels&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Start here ==&lt;br /&gt;
&lt;br /&gt;
* [[Blocks]] — the signal-chain building blocks (durable theory + per-chip instances)&lt;br /&gt;
* [[Decisions]] (ADRs) — the load-bearing record of what was chosen and why&lt;br /&gt;
* [[Methods]] — cross-cutting, chip-independent procedures&lt;br /&gt;
* [[Timeline]] — the immutable weekly slides &amp;amp; meeting minutes archive&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=File:Retina-chip-signal-chain.svg&amp;diff=26</id>
		<title>File:Retina-chip-signal-chain.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=File:Retina-chip-signal-chain.svg&amp;diff=26"/>
		<updated>2026-09-04T09:13:30Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase block diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;showcase block diagram&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Category:Decisions&amp;diff=25</id>
		<title>Category:Decisions</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Category:Decisions&amp;diff=25"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Architecture Decision Records.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Category:Chips&amp;diff=24</id>
		<title>Category:Chips</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Category:Chips&amp;diff=24"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chips in scope.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Category:Blocks&amp;diff=23</id>
		<title>Category:Blocks</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Category:Blocks&amp;diff=23"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blocks in the retina signal chain.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Method:Calibre_setup&amp;diff=22</id>
		<title>Method:Calibre setup</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Method:Calibre_setup&amp;diff=22"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Calibre setup ==&lt;br /&gt;
DRC/LVS/PEX, DSPF/PEX netlist flow in the Cadence/Calibre toolchain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — flesh out.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Method:kTC_noise_budget&amp;diff=21</id>
		<title>Method:kTC noise budget</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Method:kTC_noise_budget&amp;diff=21"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== kTC noise budget ==&lt;br /&gt;
Switched-cap kTC noise budgeting procedure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_{n,kTC} = \sqrt{\frac{kT}{C}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — flesh out.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Method:PEX_pole-shift_triage&amp;diff=20</id>
		<title>Method:PEX pole-shift triage</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Method:PEX_pole-shift_triage&amp;diff=20"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PEX pole-shift triage ==&lt;br /&gt;
Procedure for diagnosing post-layout pole shifts after PEX netlist extraction.&lt;br /&gt;
&lt;br /&gt;
# Diff pre-layout vs post-PEX AC response.&lt;br /&gt;
# Identify the shifted pole; correlate to added layout parasitics (routing, via resistance).&lt;br /&gt;
# Confirm with a reduced parasitic netlist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — flesh out from Calibre/PEX workflow.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=ADR-0042&amp;diff=19</id>
		<title>ADR-0042</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=ADR-0042&amp;diff=19"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ADR-0042: Ahuja over Miller compensation for the ramp-generator OTA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ID&#039;&#039;&#039; || ADR-0042&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Status&#039;&#039;&#039; || accepted&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Date&#039;&#039;&#039; || 2026-05-20&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chips&#039;&#039;&#039; || RC2.0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Blocks&#039;&#039;&#039; || ramp-generator, OTA&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sources&#039;&#039;&#039; || [[Timeline|timeline/weekly/2026-W20.md]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Context ===&lt;br /&gt;
The ramp-generator OTA needed frequency compensation. Two candidates: classic Miller compensation, and Ahuja (cascode) compensation.&lt;br /&gt;
&lt;br /&gt;
=== Decision ===&lt;br /&gt;
Use &#039;&#039;&#039;Ahuja compensation&#039;&#039;&#039;. It gives better power-supply rejection and removes the feedforward zero that Miller introduces, at the cost of an extra bias branch.&lt;br /&gt;
&lt;br /&gt;
=== Rejected alternatives and why ===&lt;br /&gt;
* &#039;&#039;&#039;Miller compensation&#039;&#039;&#039; — simpler, but the feedforward zero degrades phase margin at the ramp speeds required, and PSRR is worse on the noisy 28nm supply.&lt;br /&gt;
&lt;br /&gt;
=== Consequences ===&lt;br /&gt;
* Extra current in the cascode branch within power budget.&lt;br /&gt;
* PSRR improved enough to sit on the dirty supply without a dedicated LDO for this block.&lt;br /&gt;
&lt;br /&gt;
=== What would make us revisit this ===&lt;br /&gt;
A move to a cleaner supply rail for the ramp generator, or a power budget cut that makes the extra branch unacceptable.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=PMU1&amp;diff=18</id>
		<title>PMU1</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=PMU1&amp;diff=18"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PMU1 ==&lt;br /&gt;
Power-management test chip. &#039;&#039;&#039;180nm node.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not inherit 28nm defaults&#039;&#039;&#039; — this chip has its own PDK notes and its own supply defaults. Carrying 28nm/0.9 V assumptions into PMU1 pages is an anti-pattern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD — populate with 180nm PDK notes and power-management specifics.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=RC2.0&amp;diff=17</id>
		<title>RC2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=RC2.0&amp;diff=17"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== RC2.0 ==&lt;br /&gt;
Wireless variant (UWB). TSMC 28nm HPC+. &#039;&#039;&#039;Currently active.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Thin manifest — instance pages populated lazily as RC2.0 revisits each block.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=RC1.9&amp;diff=16</id>
		<title>RC1.9</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=RC1.9&amp;diff=16"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== RC1.9 ==&lt;br /&gt;
1024-channel wired AFE redesign. TSMC 28nm HPC+. &#039;&#039;&#039;Taped out.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Supply !! Status&lt;br /&gt;
|-&lt;br /&gt;
| TSMC 28nm HPC+ || 0.9 V || taped out&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Block instances ===&lt;br /&gt;
* [[Block:SC LPF RC1.9|SC LPF]]&lt;br /&gt;
* [[Block:AFE Gm-C RC1.9|AFE Gm-C]]&lt;br /&gt;
&lt;br /&gt;
=== Chip-scoped artifacts ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039; — pinout, register map, pad ring, tape-out record, errata.&lt;br /&gt;
&lt;br /&gt;
=== Acceptance tests for RC1.9 documentation ===&lt;br /&gt;
# A new student can bring RC1.9 up on the bench without asking Ronald.&lt;br /&gt;
# When RC2.0 revisits a decision, the RC1.9 reasoning is findable in under two minutes.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:EDO_Attenuator&amp;diff=15</id>
		<title>Block:EDO Attenuator</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:EDO_Attenuator&amp;diff=15"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Switched-cap charge-sharing EDO attenuator ==&lt;br /&gt;
Switched-capacitor charge-sharing attenuator for the electrode DC offset (EDO) chain.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:Bias_Bandgap&amp;diff=14</id>
		<title>Block:Bias Bandgap</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:Bias_Bandgap&amp;diff=14"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Constant-gm and bandgap biasing ==&lt;br /&gt;
Constant-gm biasing and bandgap reference, plus pseudoresistor high-pass networks.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:Stimulator&amp;diff=13</id>
		<title>Block:Stimulator</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:Stimulator&amp;diff=13"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current-steering stimulator ==&lt;br /&gt;
Current-steering stimulator with charge balancing.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SAR_ADC&amp;diff=12</id>
		<title>Block:SAR ADC</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SAR_ADC&amp;diff=12"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SAR ADC ==&lt;br /&gt;
Successive-approximation ADC digitising the filtered AFE output.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C_RC1.9&amp;diff=11</id>
		<title>Block:AFE Gm-C RC1.9</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C_RC1.9&amp;diff=11"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== AFE Gm-C — RC1.9 instance ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Placeholder page: populated lazily.&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C&amp;diff=10</id>
		<title>Block:AFE Gm-C</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:AFE_Gm-C&amp;diff=10"/>
		<updated>2026-09-04T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== AFE — Gm-C integrator front-end ==&lt;br /&gt;
&lt;br /&gt;
AC-coupled low-noise front-end built from a transconductance (Gm) stage driving an integrating capacitor, followed by a switched-cap LPF ([[Block:SC LPF|SC LPF]]). Sits on top of electrode DC offset and electrochemistry.&lt;br /&gt;
&lt;br /&gt;
=== Design equation ===&lt;br /&gt;
Mid-band gain:&lt;br /&gt;
&amp;lt;math&amp;gt;A_v = G_m \cdot R_{out}&amp;lt;/math&amp;gt;&lt;br /&gt;
High-pass corner set by the pseudoresistor network (AC coupling) — see [[Block:Bias Bandgap|bias / pseudoresistor]] notes.&lt;br /&gt;
&lt;br /&gt;
=== Known failure modes ===&lt;br /&gt;
* DC offset overloading the input pair.&lt;br /&gt;
* Pseudoresistor corner drifting with process (weak-inversion resistor).&lt;br /&gt;
* Gm nonlinearity at large offsets.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
* [[Block:AFE Gm-C RC1.9|RC1.9]]&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC2.0&amp;diff=9</id>
		<title>Block:SC LPF RC2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC2.0&amp;diff=9"/>
		<updated>2026-09-04T09:13:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SC LPF — RC2.0 instance ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039; — RC2.0 is the currently active wireless variant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Placeholder page: populated lazily when RC2.0 revisits this block.&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC1.9&amp;diff=8</id>
		<title>Block:SC LPF RC1.9</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF_RC1.9&amp;diff=8"/>
		<updated>2026-09-04T09:13:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SC LPF — RC1.9 instance ==&lt;br /&gt;
Real component values and measured results for the RC1.9 silicon (TSMC 28nm HPC+).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Value&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;f_{clk}&amp;lt;/math&amp;gt; || TBD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;f_c&amp;lt;/math&amp;gt; (target) || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Supply || 0.9 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Post-PEX / measured ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039; — fill from the weekly slides / bench measurements.&lt;br /&gt;
&lt;br /&gt;
=== Errata ===&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(This page demonstrates the durable/instance split.)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Block:SC_LPF&amp;diff=7</id>
		<title>Block:SC LPF</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Block:SC_LPF&amp;diff=7"/>
		<updated>2026-09-04T09:13:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Switched-Capacitor Low-Pass Filter ==&lt;br /&gt;
&lt;br /&gt;
A switched-capacitor low-pass filter follows the Gm-C integrator in the AFE to band-limit the neural/recording signal before digitisation by the [[Block:SAR ADC|SAR ADC]].&lt;br /&gt;
&lt;br /&gt;
=== Design equation ===&lt;br /&gt;
Corner frequency is set by the capacitor ratio and the switch clock:&lt;br /&gt;
&amp;lt;math&amp;gt;f_c = \frac{1}{2\pi} \cdot \frac{C_2}{C_1} \cdot f_{clk}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Budgeting procedure ===&lt;br /&gt;
# Choose &amp;lt;math&amp;gt;f_c&amp;lt;/math&amp;gt; from the signal band of interest.&lt;br /&gt;
# Pick &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; for kTC-noise floor; &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; follows from the ratio.&lt;br /&gt;
# Verify switch on-resistance gives adequate settling within the clock phase.&lt;br /&gt;
# Run kTC noise budget ([[Method:kTC noise budget|method]]) to confirm.&lt;br /&gt;
&lt;br /&gt;
=== Known failure modes ===&lt;br /&gt;
* Clock feedthrough corrupting the passband.&lt;br /&gt;
* Incomplete settling (too-high switch &amp;lt;math&amp;gt;R_{on}&amp;lt;/math&amp;gt;) causing gain error.&lt;br /&gt;
* kTC noise dominating the front-end floor if &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; is too small.&lt;br /&gt;
&lt;br /&gt;
=== Instances ===&lt;br /&gt;
* [[Block:SC LPF RC1.9|RC1.9]] — implemented, post-PEX verified&lt;br /&gt;
* [[Block:SC LPF RC2.0|RC2.0]] — &#039;&#039;TBD&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Timeline&amp;diff=6</id>
		<title>Timeline</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Timeline&amp;diff=6"/>
		<updated>2026-09-04T09:13:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Real:Timeline_Archive}}&lt;br /&gt;
The timeline is &#039;&#039;&#039;immutable and append-only&#039;&#039;&#039;. Weekly slides and meeting minutes are archived as-is; they are never edited, rewritten, or &amp;quot;converted&amp;quot; into wiki pages.&lt;br /&gt;
&lt;br /&gt;
* Weekly slides — original &amp;lt;code&amp;gt;.pptx&amp;lt;/code&amp;gt; archived alongside a note&lt;br /&gt;
* Meeting minutes — inputs to ADRs, never wiki content itself&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Methods&amp;diff=5</id>
		<title>Methods</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Methods&amp;diff=5"/>
		<updated>2026-09-04T09:13:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cross-cutting, chip-independent procedures.&lt;br /&gt;
&lt;br /&gt;
* [[Method:PEX pole-shift triage|PEX pole-shift triage]] — diagnosing post-layout pole shifts&lt;br /&gt;
* [[Method:kTC noise budget|kTC noise budget]] — switched-cap noise budgeting procedure&lt;br /&gt;
* [[Method:Calibre setup|Calibre setup]] — DRC/LVS/PEX, DSPF/PEX netlist flow&lt;br /&gt;
&lt;br /&gt;
Toolchain: Cadence Virtuoso, Spectre (PSS/PAC/PNOISE), Calibre (DRC/LVS/PEX), Verilog-A testbenches.&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
	<entry>
		<id>https://wiki3.rohmega.com/index.php?title=Decisions&amp;diff=4</id>
		<title>Decisions</title>
		<link rel="alternate" type="text/html" href="https://wiki3.rohmega.com/index.php?title=Decisions&amp;diff=4"/>
		<updated>2026-09-04T09:13:16Z</updated>

		<summary type="html">&lt;p&gt;Ronald: showcase seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Architecture Decision Records (ADRs) are the highest-leverage layer: what was chosen, what was rejected, why, and what would force a revisit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rules:&#039;&#039;&#039; one decision per file; immutable once &#039;&#039;accepted&#039;&#039;; superseded never edited; IDs are NOT chip-scoped (use &amp;lt;code&amp;gt;ADR-0042&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;RC19-ADR-014&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ID !! Title !! Status&lt;br /&gt;
|-&lt;br /&gt;
| [[ADR-0042]] || Ahuja over Miller compensation for the ramp-generator OTA || accepted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Worked example:&#039;&#039;&#039; [[ADR-0042]] below demonstrates the full frontmatter + body structure (Context → Decision → Rejected alternatives → Consequences → What would make us revisit).&lt;/div&gt;</summary>
		<author><name>Ronald</name></author>
	</entry>
</feed>