Interactive model-to-GDS flow for mask-locked ternary inference chips
Ternary ROM encodes neural network weights into mask-programmed silicon. Instead of fetching weights from SRAM, weights are burned permanently into ROM cells—one cell per weight.
Each weight is quantized to ternary: {−1, 0, +1} (2 bits per weight = 8× memory reduction). Three cell types handle all weights:
Why ternary ROM? No multipliers needed (just add/subtract/skip). No weight fetches from SRAM. ~60% of weights are zero → zero static power for those cells.
| Property | Ternary ROM | Conventional (SRAM + FP16) |
|---|---|---|
| Weight storage | Mask-programmed ROM | SRAM |
| Bits per weight | 2 | 16 |
| Memory reduction | 8× | 1× (baseline) |
| Multiply operation | Eliminated (add/sub/skip) | Required |
| Gate count (MAC) | 103 | 360 |
| Energy per op | 22 pJ | 194 pJ |
| Weight update | New mask ($200K) | Rewrite SRAM (free) |
| Idle leakage | Zero for ~60% of cells (weight=0) | Full SRAM leakage |
Select a process to explore its cell variants (drive strength, Vt flavor, leakage, delay).
| Cell Name | Type | Vt | Drive | W × H (µm) | Area (µm²) | Transistors | Leakage (pA) | Delay (ns) |
|---|---|---|---|---|---|---|---|---|
| Select a process to view cells. | ||||||||
Live-parsed module listings from cells.v for sky130 and generic_28nm.
Loading modules…
Interactive footprint visualization parsed from LEF. Shows pin locations and cell dimensions.
A real 8×8 multiply-accumulate unit with ternary weights. These weights are literally wired to ROM cells.
Loading netlist…
The complete path from trained model to silicon.