Back to the 2-bit cell: a 4-row array of 8 INT8 weights
- Question
With the dataflow understood (D1), which cell and array shape does the signed INT8 design use?
- Options
(a) stay with the 1-bit 10T cell (D4); (b) the 2-bit cell b2SRAMsbc (D3), 8 cells per row, 4 rows.
- Method
Reasoning on the mapping, then the schematic
b2SRAMsbc_INT8x8.sch, netlisted with xschem (32 cells; a script checked that every cell sits on the WL / XB / P / BL nets of its row and bit).- Result
Each cell holds bit of two weights (latch 1 and latch 0, sharing BL/BLB). Row holds (WL[], XB[], P[7:0]) and (WL[], XB[], P[7:0]); 4 rows 8 cells = 64 bits = 8 weights, BL[]/BLB[] shared down each column. Every NOR computes in the same cycle, so each bit column delivers 8 product bits per cycle: the column sum is an 8-input popcount (compressor tree), not a single add. The dot product of 8 signed terms needs bits (worst case ). Area: per bit vs. for the 10T cell.
- Decision
(b). D4's reason (the 2-bit mapping was hard to reason about) no longer holds, and the 2-bit cell is 30% smaller per bit.
- Revisit if
the shared bitlines complicate writes, or read disturb (D6) shows up in simulation.

![DRIVE2b, 4 CPP × 270 nm: VSS rail (bottom) and VDD rail (top), shared source column in the middle, outputs Z[0] / Z[1] on the M1 verticals at the edges, the two staggered input contacts between them.](https://raw.githubusercontent.com/vhdani04/notebook/main/sram-cim/data/figures/drive2b_layout.png)