M4 · latch structures on the dieM4 · 晶粒上的閂鎖結構
Every latch, lit up每一個閂鎖,點亮
This is the real 2C02 silicon layout — the same segment polygons the switch-level engine simulates — rendered live in your browser. On top of it, the nodes that M4's pure-topology latch scan flags are highlighted by category. Drag to pan, wheel to zoom, hover any cell for its name and which structure it belongs to. The census numbers (2,114 no-pull-up OAM cells, 819 tight races…) stop being numbers and become places. 這是真實的 2C02 矽佈局 —— 開關級引擎模擬的同一批 segment 多邊形 —— 在你瀏覽器裡即時渲染。上面疊著 M4 純拓撲閂鎖掃描標記的節點,依類別著色。拖曳平移、滾輪縮放、停在任一 cell 上看它的名字與所屬結構。那些普查數字(2,114 個無上拉 OAM cell、819 場緊湊賽跑⋯)不再是數字,而是位置。
Faint background = the die's layers (diffusion / poly / metal). Bright fills = M4-flagged nodes. A flagged node with no polygon (pure-logic, no silicon area) simply isn't drawn.暗色背景 = 晶粒各層(擴散 / 多晶矽 / 金屬)。亮色填充 = M4 標記的節點。被標記但沒有多邊形的節點(純邏輯、無矽面積)就不畫。
How the detection works偵測演算法怎麼運作
M4 is the clearest structural pattern in the toolbox: latches are pure topology, so the scan needs zero physical priors — only four graph fingerprints over the transistor connectivity the netlist states exactly. This is what m4_latch_scan.py computes; the highlights above are its output projected onto the layout.
M4 是工具箱裡最乾淨的結構性 pattern:閂鎖是純拓撲,掃描不需要任何物理先驗 —— 只要在網表明確描述的電晶體連接性上找四種圖指紋。這就是 m4_latch_scan.py 算的東西;上面的亮點就是它的輸出投影到佈局上。
| Fingerprint指紋 | The graph rule圖規則 | What it catches抓到什麼 |
|---|---|---|
| 1 · pass-fed storage1 · pass 饋入儲存 | a node whose only channel connections are signal↔signal pass devices (no direct rail driver), and that gates something節點的通道連接只有訊號↔訊號的 pass 器件(無直接電軌驅動),且它閘控某些東西 | the dynamic latch cell — holds by charge alone. 1 feed = classic latch, ≥2 = mux-fed (register-file)動態閂鎖 cell —— 靠電荷保持。1 饋入 = 經典閂鎖,≥2 = mux 饋入(暫存器檔) |
| 2 · cross-coupled pair2 · 交叉耦合對 | node a gates a pull-down of node b and b gates a pull-down of a節點 a 閘控 b 的下拉,b 閘控 a 的下拉 | the SR / regenerative pair. With a pull-up = static; without = dynamic (the 2C02's no-pull-up OAM cells)SR / 再生對。有上拉 = 靜態;沒有 = 動態(2C02 無上拉 OAM cell) |
| 3 · closing-edge race3 · 關門沿賽跑 | for each cell, does the enable's fan-in cone (depth ≤2) intersect the data's fan-in cone? shared support = one trigger can close the gate and move the data in the same settle wave每個 cell,enable 的扇入錐(深度 ≤2)是否與 data 的扇入錐相交?共同支撐 = 同一觸發可在同一 settle 波裡關閘又改資料 | the exact race the campaigns kept hitting (DL, DmcLatch, FrameIrq…)戰役一再踩到的那個賽跑(DL、DmcLatch、FrameIrq⋯) |
| 4 · pass-feedback4 · pass 回授 | the cell's own value re-enters its data cone through the pass networkcell 自己的值經 pass 網路回到它的 data 錐 | regenerative loops再生環 |
OamBlankEdge shim defends. That is the whole thesis of a structural pattern: the pattern is the physics.
掃描器根本不知道什麼是「OAM」。它只拿到連接性、別無其他 —— 指紋 2 卻畫出了 PPU 精靈記憶體的輪廓(那團紅色:4,228 個無上拉 cell = 64 精靈 × 4 byte × 8 bit + 次要 OAM)。純結構就找到了 OamBlankEdge shim 防守的那批 cell。這正是結構性 pattern 的全部命題:pattern 就是物理。
Full write-up with the class counts and the self-validation: M4 · Every latch on two dies →完整分類數字與自我驗證:M4 · 兩顆晶粒上的每一個閂鎖 →
Live layout rendering adapted from Visual6502's wires.js (Brian & Barry Silverman, MIT). Layout data derived from the Visual 2C02 netlist (CC-BY-NC-SA) — the corrected data/system-def/. Detection: WebSite/s1a/py/m4_latch_scan.py --dump-nodes.
即時佈局渲染改編自 Visual6502 的 wires.js(Brian & Barry Silverman,MIT)。佈局資料衍生自 Visual 2C02 網表(CC-BY-NC-SA)—— 修正版 data/system-def/。偵測:WebSite/s1a/py/m4_latch_scan.py --dump-nodes。